←2012-09-18 2012-09-19 2012-09-20→ ↑2012 ↑all
00:08:05 <zzo38> I am writing some C program and Famicom program to make a slideshow of name tables, pattern tables, and .NSF musics, at request of someone who ask me to do this.
00:09:46 <kmc> 8:08 play drum machines every day
00:10:05 * Sgeo is pondering how to best fake return-type polymorphism in a dynamically typed language
00:10:40 <madbr> I'm trying to figure out what's the optimal kind of cpu design for when your system is 32 bits but you don't have cache
00:10:54 <madbr> starting to look suspiciously a lot like an ARM :D
00:11:30 <shachaf> If you don't have cash, you can't afford any kind of CPU design.
00:11:36 <shachaf> Those things are expensive.
00:13:42 <madbr> ahah
00:14:12 <madbr> well if you have cache the optimal design turns into something like a POWER
00:14:26 <kmc> madbr: what about ARM is optimized for no cache in particular?
00:14:36 <madbr> or some other monstruous out of order risc design with some huge ass vector processing unit
00:15:09 <madbr> kmc: thumb mode (16 bit opcode mode)
00:15:21 <kmc> ah yeah
00:16:09 <madbr> register file not too small not too large
00:16:24 <madbr> 1 or 2 instructions per cycle
00:16:34 <kmc> another reason for 16 bit instructions is that some small embedded ARM chips have only 16-bit data bus
00:16:42 <kmc> (or had, anyway)
00:19:24 <kmc> as far as i can tell, the main design criterion for ARM was basically "okay, RISC is pretty cool, now how can we be clever to work around the drawbacks"
00:20:06 <kmc> in particular arbitrary conditional instructions + selective update of condition codes
00:20:24 <kmc> to avoid pipeline stalls caused by branching
00:20:39 <kmc> sadly Thumb does away with the arbitrary conditionals :/
00:20:43 <kmc> Thumb-2 has them in a jankier way
00:21:31 <kmc> also having the program counter accessible like any other register is pretty cool
00:21:48 <madbr> yeah dunno about having PC as a register
00:22:11 <madbr> doesn't work well with my current design at least
00:22:57 <madbr> I've also considered a miniature vliw, with 32 bits instructions but 2 operations per instruction
00:23:42 <zzo38> Yes, ARM and VAX both have PC in R15; RogueVM has PC in R0. I would like to make up some CPU architecture too, but it would cost a lot to make the chip.
00:23:53 <madbr> but I'm not sure there's much gain over a 1 op/16bit instruction design if you have to load instructions at the same time
00:24:17 <madbr> zzo: you could do something that could run in a FPGA
00:24:22 <shachaf> zzo38: Should I write my programs for RogueVM instead of x86?
00:24:25 <zzo38> Put instructions on a separate bus if you want to load instruction and data at the same time.
00:24:44 <madbr> zzo: that's why most CPUs have cache
00:24:46 <zzo38> shachaf: It depends what programs you are trying to write. For some cases, neither is best.
00:25:00 <shachaf> zzo38: What if I want to write Web 2.0 applications?
00:25:17 <madbr> zzo: 2 internal buses... without having a gazillion pins (which would be expensive)
00:26:14 <zzo38> shachaf: In that case I recommend quitting. But if you want to do anyways, perhaps don't use a machine code; use an interpreted or compiled programming language.
00:26:35 <madbr> the problem with a PC register is that it gets complicated once you start doing out of order and stuff
00:26:47 <madbr> the ARM PC is barely a register at all anymore
00:26:56 <shachaf> zzo38: But it's gotta scale, though.
00:27:04 <madbr> has all sorts of occasions where using it as a register is forbidden
00:27:07 <kmc> you need json encoding as an instruction
00:27:28 <madbr> so in the end you kinda get cheated out of a register
00:27:44 <zzo38> madbr: Yes I think it can gets complicated, but I can make one that is different.
00:28:26 <madbr> the interest of having a PC register is probably doing PC relative addressing
00:29:15 -!- Jafet has quit (Quit: Leaving.).
00:29:19 <itidus21> it could be useful for uhh
00:29:27 <kmc> bonghits
00:29:40 <itidus21> yes..
00:30:07 <zzo38> RogueVM is never meant to be hardware (it is software only), so it does not have those problems when PC is R0. If you use R15 as a stack pointer, you may return from a subroutine using the (single-byte) instruction: MTR R0 R15+1
00:30:26 <madbr> yeah for software VMs the design considerations are different
00:30:35 <zzo38> With hardware CPU, the best way to do may depend to use least gate and most speeds.
00:30:53 <madbr> presumably you want to use as few opcodes as possible and as many parameters/addresses/etc as possible with a vm
00:30:57 <zzo38> Even though it may make it strange, I think.
00:31:11 <madbr> so turning flow execution into a memory location you write to probably makes sense
00:31:48 <madbr> zzo: yeah for hardware cpus... RISC tends to win
00:32:15 <madbr> except maybe before cache where everybody was CISC
00:32:22 <madbr> because denser code = faster code
00:32:41 <madbr> (not true anymore once your loop is in code cache)
00:33:18 <kmc> for VMs it helps to have complicated instructions because you reduce the interpretive overhead
00:33:32 <kmc> that's assuming you are doing a straight up interpreter and not something fancier
00:33:37 <madbr> right
00:33:41 <zzo38> For hardware CPU, I want one with self-modifying microcodes.
00:33:47 <madbr> oho
00:33:51 <Sgeo> I miss Cybertown
00:33:58 <madbr> zzo: that's an interesting idea
00:34:15 <itidus21> i have ideas about VMs. one such idea was to just build a VM on top of an API
00:34:54 <itidus21> well i didnt think of it that way before entirely
00:35:01 <kmc> the interpreter for LuaJIT decodes the next instruction just before dispatching the previous instruction
00:35:14 <kmc> in hopes of keeping the ALU busy through a mispredicted indirect jump
00:35:17 <zzo38> I have many other ideas for designing CPU hardware, too.
00:35:36 <itidus21> i think i also have an idea of a nes vm
00:35:37 <shachaf> The interpreter for LuaJIT does all sorts of nifty things.
00:36:21 <kmc> also i was reading http://wiki.luajit.org/New-Garbage-Collector today
00:36:23 <kmc> good stuff
00:36:29 <kmc> the luajit guy is some kind of wizard
00:36:53 <madbr> zzo: the problem is making it all worth it
00:38:30 <madbr> afaik the optimal circuit design is to fill it with a whole bunch of slow but efficient pipelined ALUs, but you'll never be able to write a program for that
00:38:44 <zzo38> Well, it would be worth it if: * It is for sale * GCC and/or LLVM can target it * Patent-free * Fast * Not too expensive * Not too much power use * A few other things too.
00:39:19 <kmc> http://wiki.luajit.org/New-Garbage-Collector#Bitmap-Tricks
00:39:37 <shachaf> I should write a JIT-thing sometime. It sounds like fun.
00:39:38 <zzo38> madbr: But you would need some way to read instructions too, and then you will be able to write a program for that, I think.
00:40:20 <madbr> like, supposed you doubled down on adders
00:40:53 <madbr> and made something like a 1024bit SIMD or something crazy like that
00:41:18 <madbr> but every pipelined addition takes 10 cycles to execute
00:41:32 <madbr> so you'd need 10 things going on at the same time to be efficient
00:41:40 <madbr> no compiler could target that
00:41:50 <kmc> how long before x86 SIMD registers are extended to 1024 bits
00:42:10 <zzo38> I think ALU and instruction reading is not good enough; also have multiplexing (like Muxcomp esolang), self-modifying LFSR-based PC microcodes, and a few more. And then, make multi-core, and then you would have enough.
00:42:20 <shachaf> What are they at now, 256?
00:42:23 <madbr> kmc: they're being extended to 256 atm
00:42:43 <kmc> yep
00:42:47 <shachaf> Haswell will let you do integer operations on them.
00:42:53 <shachaf> Right now you can only do some kind of boring floating point thing.
00:43:10 <madbr> 8 x float isn't boring :D
00:43:20 <kmc> 8 floats isn't cool
00:43:30 <kmc> you know what's cool? 8192 floats
00:43:39 <madbr> ahah
00:43:47 <madbr> that would never fit on any chip ever :D
00:44:19 * itidus21 . o O ( <madbr> that would never fit on any chip ever :D )
00:44:46 <shachaf> madbr: What if they were 2-bit floats?
00:44:57 <shachaf> How many bits do you need for a float to be meaningful?
00:45:05 <kmc> 0, 1, 0.5, NaN
00:45:05 <itidus21> 1
00:45:06 <madbr> what, so you get to chose between 0, 0.5, 1, and 2?
00:45:11 <madbr> ahahah nan
00:45:15 <kmc> gotta have NaN
00:45:18 <shachaf> No sign bit?
00:45:26 <itidus21> only a sign bit!
00:45:33 <madbr> +0, +Nan, -0, -Nan
00:45:44 <itidus21> -N, +N
00:46:04 <madbr> but yeah 32bit floats are kind of a sweet spots
00:46:17 <madbr> there's support for 16bit floats here and there but it's kinda specialized
00:46:21 <madbr> (gfx stuff)
00:46:47 <shachaf> Can you write a fast inverse square root for 2-bit floats?
00:46:55 <kmc> yes, it's called a lookup table
00:47:18 <shachaf> More of a look-out table.
00:47:21 <kmc> today i spent an hour looking at profiler output and learned nothing
00:47:28 <shachaf> What are you profiling?
00:47:32 <kmc> then i spent five minutes adding 'print time.time()' to my code and found the slow bits
00:47:39 <kmc> shachaf: a django app
00:47:55 <shachaf> Ah, one of those secret things.
00:48:00 <kmc> is there some trick to using profilers
00:48:02 <shachaf> Since when do people profile django apps?
00:48:07 <kmc> i've never had a really enlightening experience with one
00:48:18 <shachaf> kmc: I've derived some useful information from instruction-level profiling before.
00:48:18 <itidus21> int a=5; sign x=+,y=-; a*=y;
00:48:32 <madbr> floats are really nice for sound processing
00:48:44 <shachaf> madbr: There is nothing sound about floats.
00:48:55 <kmc> shachaf: what kind of information?
00:49:05 <shachaf> I've taken to calling them "floating-point values" instead of "floating-point numbers".
00:49:23 <kmc> floating point-values
00:49:27 <zzo38> If some CPU is made by FPGA, use some FPGA with a open specification, so that it can be dynamically reprogrammed with exactly what it decide by itself to need for some computations at some time.
00:49:32 <kmc> everything's made up and the points don't matter
00:49:42 <shachaf> kmc: I don't remember the details.
00:49:50 <madbr> zzo: except there are no open specification FPGAs afaik
00:50:01 <shachaf> In some cases it was as simple as "this is the slow part", which is useful enough.
00:50:19 <kmc> today python cProfile + kcachegrind failed to give me that basic information
00:50:31 <zzo38> madbr: Some have been reverse-engineered partially, I think.
00:50:34 <kmc> instead it gave me a lot of confusing bullshit
00:50:42 <kmc> functions which take a lot of time and seemingly have no callers
00:50:44 <shachaf> If I remember correctly it involved dividing one CPU hardware counter value by another.
00:50:52 <kmc> all buried within the std lib
00:51:05 * shachaf doesn't know about profiling Python.
00:51:17 <shachaf> I thought the rule of thumb about Python was "it's all slow".
00:51:38 <madbr> but yeah the big problem with cpu design is latency
00:51:39 <zzo38> If I could make a open specification FPGA then I think a lot of people would buy it; some people because they like open source, some because they like dynamic programming, and some for both reasons.
00:51:57 <kmc> but some bits are slower than others
00:52:09 <shachaf> kmc: I've never gotten useful information from GHC's profiler, but I've never tried very hard.
00:52:13 <kmc> in a web app it's often that you're making too many SQL queries in some particular place
00:52:23 <kmc> which is not the host language's fault
00:52:31 <zzo38> And in addition, if we can use a same format instead of changing it too often, they can even replace the FPGA chip with a newer model and it will still work OK.
00:52:36 <shachaf> Presumably if you add all the cost centres by hand or something it can work out, but I've never gotten information from it "easily".
00:53:17 <madbr> zzo: probablem is that, what if the new model has 4x more gates but they had to add in 1.2x more latency?
00:56:18 <kmc> yeah, i've never had good success with ghc's profiler either
00:56:38 <zzo38> madbr: If it was like that, there are a few possibilities: One is to include one smaller area with 1x latency. Another is to continue producing the older model too. Third is to have to rewrite the program anyways. Regardless, though, the bitstream format should be kept the same as much as possible.
00:56:46 <kmc> i guess i have successfully profiled c code in the past but i don't really remember the story
00:56:51 <zzo38> This way you can use all the same software to program it with.
00:56:55 <kmc> oftentimes manual sampling in gdb is all you need
00:57:23 <madbr> zzo: ah yeah perhaps
00:57:46 <shachaf> kmc: Yep, that's my experience too. :-)
00:57:59 <shachaf> There are so many little things you do while trying to optimize C code, and profiling can be one of them.
00:58:57 <zzo38> So even if the latency does change, you would not need an entirely new computer program to program the FPGA (you only need to change the setting), also if using dynamic programming you would only need to take into account the different latency and otherwise work the same.
00:59:09 <shachaf> kmc: Have you used "perf"?
00:59:14 <kmc> a little
00:59:26 <itidus21> i find that the internet optimizes my music access rates
01:00:06 <Sgeo> Oh for fuck's sake
01:00:28 <itidus21> eg youtube
01:00:38 <shachaf> Sgeo: What did those Clojure people do this time?
01:01:35 <Sgeo> No, it's me being weird this time
01:02:13 <itidus21> were you on worlds.com again?
01:02:35 <Sgeo> I now appear to think that my idea of a type to hold a value of a type to be determined later is possibly an applicative functor, and at the very least a functor... wait, hmm
01:03:19 <zzo38> What do you mean, how to hold a value of a type to be determined later? Wouldn't it be something with a class constraint?
01:03:58 <zzo38> How else are you supposed to determine the type after the value is written?
01:04:07 <zzo38> instead of before
01:04:20 <Sgeo> I want to replicate return-value polymorphism in a dynamically typed language. My idea comes down to just returning a type that holds a function and that function is called with the desired type, producing the result value
01:05:38 <madbr> zzo: I guess it could be a workable platform for stuff like games and synths
01:06:07 <madbr> games: game defines its own "sound chip" and "video chip" dedicated to its own specific needs
01:06:38 <madbr> synth: obviously defines its own custom targetted pipeline too
01:08:25 <kmc> perl has return-value ad-hoc polymorphism
01:08:38 <kmc> a function can determine whether it is being called in scalar or array context
01:08:42 <zzo38> madbr: Yes it could be good for those things, and perhaps find other use too.
01:08:42 <shachaf> Limited to three types, though.
01:08:55 <shachaf> Which is pretty different from type classes.
01:09:28 <shachaf> In Haskell it would be the equivalent (sort of) of returning (Scalar,Array,Hash)
01:09:42 <madbr> zzo: hm, you'd need something that's not IO-limited or memory-bandwidth-limited
01:09:53 <madbr> zzo: or calculation-latency limited
01:10:11 <zzo38> data T x y = T (forall y. x y -> y); Would something like this to do something?
01:10:49 <madbr> ?
01:11:00 <shachaf> zzo38: No.
01:11:31 <shachaf> Don't shadow in data type declarations, man. It's not polite.
01:11:33 <zzo38> shachaf: You are right; it might not do something.
01:11:48 <zzo38> What does "shadow in data type declarations" mean?
01:12:10 -!- copumpkin has quit (Ping timeout: 268 seconds).
01:12:15 <zzo38> I made a mistake anyways.
01:12:17 <madbr> zzo: essentially it would be good for the kind of stuff the CELL is used for
01:12:22 <zzo38> I meant: data T x = T (forall y. x y -> y);
01:12:43 -!- copumpkin has joined.
01:13:27 <zzo38> madbr: OK
01:14:00 <madbr> that's kinda why AVX (new x86 SIMD) did float first
01:14:13 <madbr> that's where most of the bigtime usage is
01:14:31 <shachaf> zzo38: That y inside the parentheses isn't the same as the y outside.
01:14:33 <shachaf> zzo38: Oh.
01:14:35 <madbr> (games, multimedia)
01:14:42 <madbr> other usages tend to be IO-limited
01:14:50 <zzo38> shachaf: That was a mistake. I didn't mean to put the y outside.
01:15:02 <shachaf> zzo38: That might be useful... I don't know for that.
01:15:04 <zzo38> madbr: OK
01:15:15 <zzo38> shachaf: I don't know for sure either.
01:15:38 <shachaf> It's like class Extract f where extract :: f a -> a
01:16:08 <Sgeo> Am I insane?
01:16:25 <zzo38> Yes it would be something like that, but not quite, because it is a data type instead of a class.
01:16:36 <shachaf> Right.
01:16:40 <zzo38> Sgeo: In what way? That way, or the other way?
01:16:57 <itidus21> Sgeo: no its only code and math... it's not a reflection on you personally
01:18:59 <itidus21> what i mean by that is, you can't be insane simply by choice of programming languages, or by choice of engineering problems
01:25:00 <zzo38> I think Yin Wang (the guy explaining the Yin-Yang call/cc problem) also hates layout syntax too.
01:27:58 <madbr> one neat idea I've had is to have, say, 32 ALUs, with 32 registers and 64 multiplexers
01:28:36 <madbr> each instruction is simply the OP for each alu and which register each multiplexer reads from
01:29:43 <madbr> so you could do a routine where each alu keeps the same op every cycle and it's just values trickling down the pipeline
01:44:09 -!- ais523 has quit.
01:52:43 <itidus21> i think that the linux community should plan for the release of windows8 with a plan for converting windows users
01:54:59 <kmc> who cares
01:55:02 <itidus21> with a slogan like "we don't completely hate you"
01:55:41 <kmc> microsoft is no longer the evil empire
01:55:46 <kmc> they are rapidly becoming completely irrelevant
01:55:51 <itidus21> oh...
01:56:01 <kmc> if you care about Software Freedom or whatever, then worry about converting iphone users
01:56:12 <itidus21> but iphones are stupid :P
01:56:20 <shachaf> iphone users all the time, telling them to convert. They never listen.
01:57:31 <itidus21> i admit i don't care about the fate of people using mobile devices
01:58:02 <kmc> you don't understand
01:58:13 <kmc> in another 10 years the majority of people will only own iphone-like devices
01:58:20 <kmc> they will have a small iphone that fits in their pocket
01:58:27 <kmc> and a tablet one with a detachable keyboard
01:58:30 <kmc> and one that's part of their car
01:58:31 <kmc> etc.
01:58:39 <kmc> but none of these will be user-controlled general purpose computers
01:59:26 <itidus21> i sort of see what you're saying.
01:59:51 <kmc> focusing on converting windows desktop users is hilariously '90's
02:00:14 <itidus21> im worried about the welfare of the code written by desktop users
02:00:42 <kmc> huh?
02:00:44 <kmc> written?
02:00:49 <kmc> most users don't write any code
02:00:59 <itidus21> good point
02:01:05 <itidus21> humm
02:01:10 <kmc> most users don't care about software freedom
02:01:14 <kmc> and i'm not saying they should care
02:01:24 <madbr> aparently they tried to switch to ipads in some schools and it didn't work
02:01:25 <kmc> but the kind of people who worry about "converting windows users" usually think they should
02:02:06 <itidus21> if someone writes code and the code no longer works on anyones computer a few years later, then the users are missing out :D
02:02:29 <zzo38> It is one reason I am going to make up the computer, which should have simplicity and people who know how can learn to make up their own compatible computer, or if they don't want to do that, purchase it from my company. It can also use emulators.
02:02:31 <itidus21> i dont know if code does stop working though
02:02:56 <kmc> i have no idea what you're talking about
02:03:01 <kmc> it is not exactly the first time
02:03:34 <zzo38> itidus21: I don't know either; if require you could try to use an emulator. But in some cases the code will always work, for example TeX can be updated to work on a new computer, and any Plain TeX document will continue to work exactly the same way 100 years in future as they do now (but possibly compiles faster).
02:06:15 <itidus21> each time an API is updated, a bunch of new books are published, articles and tutorials are written, and forums probably fill up discussing it.. but the cycle begins again on the next update
02:07:16 <itidus21> it would be nice if API hosts could be honest and predict when the client code would stop working
02:07:58 <itidus21> sort of an expiry date system on APIs
02:08:02 <pikhq> Fuck C++.
02:08:19 <pikhq> C++ IO is the worst IO of any language I have seen.
02:09:03 <itidus21> so Plain TeX basically doesn't expire :D
02:09:07 <itidus21> in this metric
02:11:00 <Sgeo> Is Java's IO considered decent?
02:11:39 <Sgeo> (not that I want to use Java, but Clojure tends not to wrap Java stuff like that)
02:11:40 <pikhq> I'unno. It can't be worse than C++ IO.
02:11:50 <pikhq> C++ IO is *actually worse than C's*.
02:11:55 <itidus21> kmc: so i was set off by accidently clicking a win8 article, and at the end i realized the product is expiry dates on software.
02:12:05 <pikhq> You have to god-damned work at that.
02:13:24 <itidus21> pikhq: http://tinyurl.com/6m6ent2
02:14:00 <madbr> itidus21 : sounds like same thing as apple does
02:14:36 <itidus21> madbr: hmm.... i dont see how such dates would actually help people... but it could motivate people to code on the VM level more
02:14:53 <madbr> itidus21 : it doesn't help people
02:14:57 <itidus21> or platform independant languages
02:15:22 <madbr> it helps microsoft not compete itself to death with old, well designed versions of windows (XP and 7 in particular)
02:15:43 <itidus21> im still on xp :D
02:15:50 <madbr> yeah exactly
02:17:34 <madbr> what you end up doing is that you keep your core features in portable C++ then keep doing interface for each crap platform/bunch of libraries du jour as they come and go
02:17:50 <pikhq> I should not have to go down to C just to tell if "read an int from text" actually errored or not.
02:18:54 <madbr> I'm always under the impression the text file IO in C/C++ is crap
02:19:15 <pikhq> madbr: C++'s is worse.
02:19:28 <pikhq> C is anemic, but it is possible to write correct programs in it.
02:20:05 -!- JaBoJa has quit (Read error: Connection reset by peer).
02:20:14 <madbr> something like "C sucks at strings" and "text files = bunch of strings"
02:20:15 <pikhq> C++ is full-featured, but the only types of errors you have are "bad", "fail" and "eof". And they don't even get used well...
02:20:33 <pikhq> For instance, sometimes, an EOF will set the fail error condition.
02:20:59 -!- JaBoJa has joined.
02:21:19 <pikhq> At least in C, it is possible to handle certain types of errors.
02:21:50 <pikhq> Say, you try to read an integer, from text, in...
02:21:50 <madbr> what about all the stuff like XML and JSON
02:22:00 <pikhq> In C, you'll get told there was a parse error.
02:22:10 <pikhq> In C++, you'll get told there was an error, which could be one of many things.
02:22:37 <pikhq> Not to mention, the syntax for C++ IO is itself terrible.
02:22:52 <pikhq> YOU ARE GOD DAMNED BITSHIFTING IN AND OUT OF THE IO STREAMS
02:23:00 <madbr> ahaha yeah
02:23:14 <pikhq> And so, they set an example for everyone that improper use of operator overloading is proper.
02:23:25 <madbr> are there better text file IO libs?
02:24:05 <madbr> at least they didn't mess up the vectors and maps
02:25:52 <kmc> i will invent a language where the only conditions are "awesome" and "fail"
02:26:11 <kmc> i will call it... the internet
02:26:15 <pikhq> C++ IO is *really damned close* to that. :(
02:26:34 <kmc> nah, C++ only has "good"
02:26:35 <pikhq> BTW, whoever made the fail() method return true if the failbit *or* the badbit were set, is a dick.
02:26:48 <kmc> these days, to call something merely "good" instead of "awesome" is a serious insult
02:27:21 <pikhq> Sorry for the ranting, but I'm having to do an assignment in C++ again.
02:27:39 <pikhq> And finding myself actually wishing for the sanity of C.
02:27:57 <pikhq> (I feel wrong writing C-in-C++)
02:29:41 <Sgeo> This makes me think that Maybe is a bad idea, and that Either is probably better.
02:29:52 <tswett> ap : (Box a -> b -> c) -> (a -> b) -> a -> c; ap x y z = x {z} (y z)
02:30:20 <pikhq> Sgeo: Maybe's alright for some things.
02:30:29 <tswett> Esoteric set theory.
02:30:56 <pikhq> read_and_parse_and_everything_else :: IO (Maybe [String]) -- is god damned retarded.
02:31:20 <pikhq> The issue is conflating multiple kinds of errors into one, without *any* way of telling otherwise.
02:31:21 <Sgeo> pikhq, in a dynamically typed language, I don't think having the distinction is useful, because if you want a Left that doesn't contain information, it's easy to just stuff it with nil
02:31:42 <pikhq> Sgeo: Ah.
02:31:44 <pikhq> Kay, yeah.
02:32:06 <tswett> Yeah, that should clearly be ListT (ListT (MaybeT IO)) Char.
02:32:31 <zzo38> Is ListT any good?
02:33:03 <pikhq> Remember kids: in C++, "no such file", "ran out of disk space", and "parse error" are *basically* the same thing!
02:33:16 <kmc> how come they didn't use exceptions
02:35:48 <pikhq> kmc: Oh, you can turn on exceptions.
02:35:57 <pikhq> However, there are 3 types of exceptions it'll throw.
02:36:00 <pikhq> fail, bad, and eof.
02:36:20 <pikhq> And some things set fail on eof.
02:38:26 -!- Phantom_Hoover has quit (Quit: Leaving).
02:38:51 <kmc> -_-
02:39:04 <kmc> sigh
02:45:45 -!- JaBoJa has quit (Read error: Connection reset by peer).
02:46:52 -!- JaBoJa has joined.
02:50:44 <itidus21> what was that idea i had.. oh yeah.. after the profile topic it occured to me that another type of programming game genre aside from soccer and battling to the death might be racing
02:51:53 <quintopia> or metajousting!
02:52:17 <quintopia> bfjoust is a sort of race, after all
02:53:01 <itidus21> oh i forgot, golf is racing
02:53:10 <itidus21> just a more boring name
02:53:19 <quintopia> how is golf racing
02:53:32 -!- Arc_Koen has quit (Quit: Arc_Koen).
02:53:36 <itidus21> thats why im not normal!
02:53:40 <itidus21> i make such analogies
02:53:40 <zzo38> To make few strokes?
02:53:52 <quintopia> the goal in golf is usually to do something in less code, not to do it in fewer cycles
02:54:00 <itidus21> but.. if you consider a game like snakes and ladders without the snakes and ladders
02:54:10 <quintopia> then it is boring
02:54:32 <itidus21> where.. the uhhh
02:54:43 <quintopia> of course
02:54:55 <quintopia> being a strategyless game already
02:54:56 <itidus21> it is the inverse of how many hits it takes you to sink the balls
02:54:59 <quintopia> it already is boring
02:55:16 <itidus21> whether that actually makes real sense i don't know
02:56:42 <itidus21> if the board is 100 tiles, starting at the first "tile"
02:56:59 <itidus21> and.. thinks to myself.. i really have to go out..
02:57:14 <zzo38> That is why you are not normal! Do you expect people of this channel are very normal? I think not.
02:57:23 <quintopia> are you trying to invent a programming game
02:57:26 <itidus21> smell you later
02:57:29 <zzo38> itidus21: If the board is 100 tiles and there are no teleports, the game ends in at most 99 moves.
02:57:55 <quintopia> and on average, what, a third of that?
02:57:56 <zzo38> (Assuming a standard six-sided dice)
02:58:07 <zzo38> Probably, yes.
02:58:09 <quintopia> i forget what numbers are on the spinner
02:58:39 <zzo38> I don't know the game with the spinner, or the slice ratios.
02:59:31 <zzo38> But if you have spinner with different numbers and slice ratios and teleports, then it would be more complicated to determine the mean, median, standard deviation, and so on, as well as the probability of winning from a given position.
02:59:45 -!- JaBoJa has quit (Quit: KVIrc 4.0.4 Insomnia http://www.kvirc.net/).
03:00:18 <quintopia> you're right
03:00:21 <quintopia> it usually uses dice
03:00:23 <quintopia> but still
03:00:32 <quintopia> there is no strategy in it
03:00:37 <zzo38> Especially if you add slices which have multiple numbers on them to the spinner, in which case the player selects the best choice.
03:00:43 <zzo38> quintopia: Yes, you are correct about that.
03:00:56 <zzo38> I was thinking not of strategy but of probability and statistics.
03:01:18 <zzo38> With teleports it may be possible that higher numbered positions are not always better.
03:01:55 <quintopia> is there a way to make snakes and ladders better, so that it is not completely determined by dice rolls?
03:02:25 <quintopia> The Milton Bradley version of Chutes and Ladders has 100 squares, with 19 chutes and ladders. A player will need an average of 39.6 spins to move from the starting point, which is off the board, to square 100.
03:02:29 <zzo38> Perhaps; I have some ideas: Add cards, and add some ability for the players to use these cards not only to make moves but also to manipulate the teleports.
03:02:59 <zzo38> And then the cards are hidden information; also add the backgammon doubling cube. And add multiple pieces per player.
03:03:07 <zzo38> That might improve the game.
03:03:07 <quintopia> with you, it's always about adding cards! is there a way to do it just changing the board?
03:04:13 <quintopia> Haunting House does a lot of what you say.
03:04:24 <quintopia> It has no dice.
03:04:29 <quintopia> It's a racing game.
03:04:43 <quintopia> It has no chutes or ladders, but it does have forced movement
03:04:52 <zzo38> I believe the standard game prohibits teleports with another teleport at the destination. However, you could generalize the rules to allow it; if you teleport to a teleport, the second teleport is not active (it is only active if you get there by a dice roll).
03:05:31 <quintopia> I guess I would consider Haunting House a massive rewrite of chutes and ladders
03:05:45 <zzo38> Maybe.
03:06:23 <quintopia> but I can think of middle ground: what if a player had cards to let them choose between moving their own piece, or moving the start or end of a ladder or chute to an adjacent (Moore neighborhood) square.
03:06:45 <quintopia> and no dice. Just cards.
03:07:12 <zzo38> Yes, that is an idea. I don't know quite how well it works, but it is an idea. And then perhaps improvements can be made from that too
03:07:46 <quintopia> like what
03:08:42 <zzo38> I didn't think of it right now. But one possibility is the backgammon doubling cube (although you don't have to actually use a cube; you could mark it on paper or whatever).
03:08:54 <quintopia> what does it do
03:09:42 <zzo38> On your turn, if you are not the last player to double, you can offer to double the score of the winner. The opponent may accept, in which case the game continues and whoever wins earns double points, or resign, in which case it is not doubled.
03:10:08 <quintopia> there is no score in chutes and ladders?
03:10:30 <zzo38> I know; when no score is used, a game is worth 1 point.
03:10:40 <quintopia> ah
03:11:44 <zzo38> With your idea of moving the teleports, you could use tiles which are placed on the board and have letters on them so they are paired, and then you have two possibilities to make the game: [1] Snakes remain snakes and ladders remain ladders. [2] Sources remain sources and destinations remain destinations.
03:12:27 <quintopia> i like the latter
03:14:00 <zzo38> There is also a third possibility, where both conditions must hold (and you are not allowed to make a move which results in this changing)
03:14:19 <quintopia> ehhhh
03:15:31 <zzo38> I happen to like possibility [2], though, like you do.
03:16:57 <zzo38> I am just enumerating some of the possibilities.
03:17:16 <quintopia> I think Haunting House pretty much makes all the changes I would make. It's ALMOST everything I would want in a racing game.
03:17:41 <zzo38> OK
03:18:27 <quintopia> i'll play you next time i'm in your neighborhood
03:19:03 <quintopia> In the book Winning Ways the authors show how to treat Snakes and Ladders as an impartial game in combinatorial game theory even though it is very far from a natural fit to this category. To this end they make a few rule changes such as allowing players to move any counter any number of spaces, and declaring the winner as the player who gets the last counter home. Unlike the original game, this version, which they call Adders-and-Ladders, inv
03:19:54 <quintopia> http://www.braingames247.com/playgame/4059/adders-and-ladders.html
03:20:50 -!- kinoSi has quit (Read error: Connection reset by peer).
03:21:20 -!- kinoSi has joined.
03:26:09 <zzo38> Moving up the snakes and down the ladders is like making a chess variant which is FIDE except the bishops move like FIDE knights and the knights move as FIDE bishops. It is better to simply make the variant modifying the initial position, isn't it?
03:29:18 <quintopia> i couldn't get the game to run
03:29:20 <zzo38> (Of course, with snakes and ladders, you generally use a fixed board, so you could use the same game to play the variant where you move up the snakes and down the ladders, instead of using a second board where they are transposed.)
03:29:38 <quintopia> but it does make a large difference in amount of time the game takes if you move the snakes and ladders
03:29:40 <zzo38> quintopia: I can't either, but that isn't important. I just read the description.
03:30:12 <quintopia> which tells me that just adding a rule that lets you move the sources and destinations would significantly increase the strategy
03:30:32 <zzo38> quintopia: Yes, that is true. Depending on the teleports it does change the average number of moves (like I said, with no teleports at all, the game ends in at most 99 moves)
03:31:08 <zzo38> And, yes, adding such a rule could work if done correctly. Using cards that allow it, held in your hand and hidden from the other player, may work.
03:31:24 <quintopia> zzo38: but the interesting thing is how you can lengthen the game by adding ladders and shorten a game by adding chutes
03:31:28 <zzo38> I happen to like games that involve skill, chance, and hidden information, together.
03:31:54 <quintopia> yes
03:32:04 <quintopia> but you can have a lot of chaos
03:32:06 <zzo38> quintopia: Yes. Like I said before: In the presence of teleports, higher numbered spaces are not always better.
03:32:10 <quintopia> even if you remove chance
03:32:43 <quintopia> for instance, you like MTG or at least pokemon
03:32:49 <quintopia> which does not usually involve chance
03:32:54 <zzo38> I like both Magic: the Gathering and Pokemon.
03:33:10 <quintopia> i guess
03:33:13 <quintopia> they have some chance
03:33:21 <quintopia> because of initial deck order
03:33:30 <zzo38> In both games there is chance in shuffling the cards. If playing Limited, there is also chance in what cards you manage to get.
03:34:00 <zzo38> Also in both games there are some cards involving coin tosses (a lot more in Pokemon card, but Magic: the Gathering has a few, too)
03:34:12 <quintopia> it seems like
03:34:40 <quintopia> you could craft a card game where the players intentionally pick the order of the cards
03:34:48 <quintopia> and it would be very strategic
03:36:07 <quintopia> actually
03:36:22 <quintopia> i know a game with hidden information, skill, and no chance.
03:36:22 <zzo38> I have once read about a variant of Magic: the Gathering (it works with Pokemon and other similar card games too) where both players are given equivalent decks but each can choose the initial order of the cards (the opponent won't see them) instead of shuffling.
03:36:33 <quintopia> yes exactly!
03:37:03 <quintopia> http://boardgamegeek.com/boardgame/34887/revolution there is this game
03:37:05 <quintopia> it is a betting game
03:37:14 <quintopia> no chance
03:37:30 <quintopia> it's essentially a complex rock-paper-scissors
03:37:51 <quintopia> or
03:37:55 <quintopia> a complex minority game
03:38:05 <quintopia> a mix of the two
03:38:15 -!- augur has joined.
03:38:16 <zzo38> OK
03:40:23 <zzo38> At some anime convention (many years ago, not this year) I have played a game where the board consists of a few areas which are initially set up at random, each player is dealt a single card (from a shuffled deck) which is kept secret, and the rest of game involves no chance and no hidden information.
03:41:48 <zzo38> You could win either by accumulating a number of points or by owning properties equal to what your card says (they always total the same ammount).
04:05:44 <quintopia> sounds a lot like the discworld game
04:06:01 <quintopia> although that may have randomness? i dont remember
04:13:53 <zzo38> nsfslideshow.asm is written. Now I need to write nsfslideshow.c and then I think my job is finished.
04:57:05 <zzo38> I don't know discworld game.
04:57:49 <madbr> hah I've invented the worst set of sounds for a constructed language
04:59:04 <itidus21> pzeirrvzqmziqwmiqudhuodjaniewudbuiqnwiubewybeuibiwuniusbqwiusqysvwqtysvtwqysgiewhdoiwehiownxioqmmzxiohdknuhfdshkjehlirwmcilwhmcuilrwemcljcfhuwhclmefhumcghiwmr
05:00:27 <madbr> it's got like everything :o
05:10:51 <itidus21> i didn't mean to interrupt
05:10:59 <itidus21> so to spaek
05:12:25 <madbr> like an 8 tone system :D
05:13:30 <madbr> a¯ a- ah a_ a´ a/ a` a\ (hi, med, med-low-breathy, low, high-rising, low-rising-creaky, high-falling, low-falling)
05:18:46 <madbr> and 16 vowels : (front) i é è ê a (front rounded) eu u (central) e ù (back rounded) ò o ou (back pharyngeal/wide) êu û (back pharyngeal/wide lax rounded) â ôu
05:18:53 <madbr> plus nasal vowels ofc
05:21:52 <madbr> 29 consonants: p t ts tch k b d g mb nd ng hm hn hgn hrn m n gn rn f s ch h hr v z j gh r
05:22:07 <madbr> (not counting semi-vowels like y, w)
05:22:33 <zzo38> OK, then, make a file describing what you have.
05:23:18 <madbr> I'm at the grammar step... I have all sorts of interesting ideas but it's hard to tie it all together
05:23:56 <itidus21> at least your language will be nicer than esperanto and lojban, but not klingon
05:24:26 <madbr> the idea is that the rich inventory of sounds makes it possible to keep the words short
05:25:52 <itidus21> humm
05:26:16 <madbr> so it takes more time to go though a syllable but you have less syllables in words
05:27:38 <madbr> like, the most complicated a syllable can get is consonant + diphthong
05:27:43 <itidus21> .. thinking aloud: natural language io is based on the ear and the mouth. despite each ear and each mouth being unique, they are sufficiently alike to communicate with a common set of rules
05:28:46 <madbr> compared to english where you can get consonant + consonant + consonant + diphthong + consonant + consonant + consonant :D
05:29:14 <itidus21> i suppose that audio communication of natural language is limited to things common to all ears and mouths
05:29:45 <madbr> yeah tends to use the sounds that are easy to pronounce and easy to recognise
05:29:51 <itidus21> like if some mutant human was able to hear ultrasound, then too bad.. noone will be exploiting his ability to hear ultrasound
05:30:11 <itidus21> or if some mutant human was able to speak in ultrasound then too bad
05:30:13 <madbr> but there's surprising diversity in what is easy to pronuonce
05:30:37 <madbr> like, different languages have different strategies
05:31:37 <madbr> some languages concentrate on a few easy, fast sounds, so that lots of syllables isn't a problem
05:31:40 <madbr> like japanese
05:33:02 <madbr> others let syllables have a zillion elements so that the information content ramps up quickly
05:33:06 <madbr> english is like that
05:35:41 <madbr> yet others have like 6 different sources information per syllable, each of which can vary more or less independantly, for a huge number of combinations
05:37:36 <madbr> best example is chinanteco where each syllable has consonant, vowel, nasalisation, length, tone, accent, ending glottal stop
05:38:17 <madbr> itidus: well, you're not going to play chords on a flute :D
05:38:32 <pikhq> madbr: I suggest you mandate that all strings in it are gzip'd.
05:38:33 <pikhq> :P
05:38:54 <madbr> heh
05:39:23 <madbr> actually natural language kinda does that a bit
05:39:53 <madbr> repeats of same information are compressed by being replaced by pronouns
05:40:32 <augur> or by nothing at all!
05:40:41 <madbr> more common words are shortened down by slurring, abbreviation, etc
05:41:41 <augur> madbr: also you can get CCCC codas not just CCC
05:42:24 <madbr> texts and stuff like that yeah
05:43:38 <madbr> the big one in english is that most short words are CVC instead of CV
05:43:46 <madbr> that's a huge boost in number of combinations
05:46:55 <pikhq> madbr: Yeah, but still, natural languages have quite low entropy; you should try and reduce that, to make it the worst language.
05:46:58 <pikhq> :)
05:49:00 <augur> it already exists
05:49:01 <augur> or existed
05:49:05 <augur> called Ubykh
05:49:16 <madbr> that one's a huge cheat
05:49:21 <augur> lies!
05:49:40 <madbr> reanalyse dee as "dyuh"
05:49:49 <madbr> and doo as "dwuh"
05:49:57 <madbr> and day as "dya"
05:50:05 <madbr> and doh as "dwa"
05:50:10 <augur> i was just thinking about their uvular shit
05:50:14 <augur> fuckin 16 different versions of q
05:50:39 <madbr> repeat for all consonants and you divide your vowels by 3 and multiply your consonants by 3
05:50:45 <madbr> ahahah
05:50:59 <augur> but theres also georgian
05:50:59 <pikhq> augur: *wince*
05:51:05 <madbr> well, you can definitely get... at least 8
05:51:07 <augur> gvrtskpvnis!
05:52:58 <madbr> q qh q' * q qw qj...
05:53:31 <madbr> more if you allow pharyngeals
05:53:48 <madbr> q' is really hard for me tho
05:55:20 <augur> really? huh. its quite easy for me
05:56:20 <madbr> uvular fricatives are much easier to me than stops
05:57:48 <madbr> q' and G are really hard imho
06:03:05 <madbr> order of difficulty for me: R > X > N > q > qh > NG > G > q'
06:05:13 <shachaf> kmc: Did you know DMSO is a panacea that the FDA is keeping from the people because it's too good for healing injuries?
06:05:43 <madbr> heard that kinda story before
06:05:45 <kmc> ah, that makes so much sense
06:06:22 <shachaf> A page on angelfire.com with a yellow backgroudn and animated GIFs taught me this.
06:07:45 <madbr> augur : might depend on the variety of q... seems to me that there's the "kinda like a velarized k" version and the "german ch turned into a stop" version
06:08:28 * shachaf wonders whether dhmo.org was modeled after dmso.org
06:09:47 -!- Jafet has joined.
06:17:36 <zzo38> Do you know the "Grotesque" chess game where all the black pieces are on the board, but white only has a king and a pawn (still on its initial square)?
06:25:48 -!- impomatic has joined.
06:30:47 -!- madbr has quit (Quit: Radiateur).
07:04:39 -!- zzo38 has quit (Remote host closed the connection).
07:14:45 <shachaf> kmc: Do you know that edwardk uses a type class to make error messages less scary?
07:17:40 <Sgeo> tswett, anyone else who cares but I forget who that is: update
07:17:51 <shachaf> @ask elliott UPDATE
07:17:51 <lambdabot> Consider it noted.
07:21:25 -!- Jafet has quit (Ping timeout: 252 seconds).
07:22:19 -!- Jafet has joined.
07:34:14 -!- ztirf has joined.
07:43:14 -!- FireFly has quit (*.net *.split).
07:43:14 -!- HackEgo has quit (*.net *.split).
07:43:14 -!- Sanqui has quit (*.net *.split).
07:54:22 -!- Sanqui has joined.
07:54:22 -!- FireFly has joined.
07:54:22 -!- HackEgo has joined.
08:09:22 -!- Jafet has quit (Quit: Leaving.).
08:12:40 -!- nooga has joined.
08:13:35 -!- oerjan has joined.
09:28:59 -!- ais523 has joined.
09:35:38 -!- ais523 has quit (Remote host closed the connection).
09:35:49 -!- ais523 has joined.
09:40:15 -!- ais523 has quit (Client Quit).
09:40:25 -!- ais523 has joined.
10:17:11 -!- ais523 has quit (Read error: Connection reset by peer).
10:17:23 -!- ais523 has joined.
10:27:17 -!- oerjan has set topic: I HAVE NOW, ARRR | Official channel of ESME | ESME is the best programming language. Why have you abandoned ESME? | Do not fret, ESME can forgive you. Give yourself freely to ESME. | PT6TRPA6PM6K | http://codu.org/logs/_esoteric/ | http://esolangs.org/wiki.
10:30:12 -!- oerjan has set topic: I HAVE NOW, ARRR | Happy birthday to :-) | Official channel of ESME | ESME is the best programming language. Why have you abandoned ESME? | Do not fret, ESME can forgive you. Give yourself freely to ESME. | PT6TRPA6PM6K | http://codu.org/logs/_esoteric/ | http://esolangs.org/wiki.
10:32:13 -!- ais523_ has joined.
10:32:14 -!- ais523 has quit.
10:32:28 -!- Yonkie has joined.
10:34:39 -!- ais523_ has quit (Read error: Connection reset by peer).
10:45:41 -!- Phantom_Hoover has joined.
11:06:06 <oerjan> fine mr. munroe, i give up.
11:08:29 <oerjan> i cannot get to the end of that thing without exhausting my creaky old laptop's swap. _and_ getting my rsi recharged for days.
11:09:49 <fizzie> oerjan: You quitter. It's just 165888x79872 pixels.
11:11:08 <oerjan> ...and i was only following the landscape, too; who might know what's deep in the isolated sky or earth?
11:11:26 <Phantom_Hoover> fizzie does, doubtless.
11:11:32 <oerjan> OKAY
11:11:39 <fizzie> There's floating whales all the way up there, for example.
11:11:53 <fizzie> As well as things you'd more normally expect to find in air.
11:11:57 <oerjan> i found a jellyfish, although that was close to the ground
11:12:15 <fizzie> Yes, there's that too.
11:12:30 <fizzie> There are a couple of "minimaps" around the interwebs.
11:12:37 <oerjan> naturally.
11:12:48 <fizzie> Not a very large percentage of the whole space is used.
11:12:56 <oerjan> shocking!
11:13:06 <Sgeo> http://iclub.site40.net/xkcd.html
11:13:36 -!- Arc_Koen has joined.
11:13:51 <fizzie> Sgeo: That one seems to be one of the rather memory-unfriendly ones, seeing that it loads all of the images.
11:14:09 <fizzie> http://www.mrphlip.com/xkcd1110/ has clickable separate thumbnails.
11:14:50 <Phantom_Hoover> You know, sometimes I think Munroe only writes the crap xkcds as a front for making the cool ones.
11:15:42 <fizzie> It's curious that 11n11w, 11n11e, 11s11w and 11s11e all exist, but seem to be just all-black/all-white squares.
11:17:06 <oerjan> Phantom_Hoover: wait, is this a crap or a cool one?
11:17:40 <Phantom_Hoover> It's a cool one with crap elements.
11:20:11 * oerjan finds the small part he actually managed to explore
11:20:14 <Sgeo> Would it be a terribly bad idea to use Notepad++ to edit a Lisp
11:20:26 * Sgeo assumes probably
11:20:51 <nortti> why?
11:21:10 <Sgeo> Because I'd be missing out on tight access to a REPL
11:21:33 <Sgeo> Modifying code while it runs is one of the things that draws me to Lisps
11:21:42 <Sgeo> Although in Clojure's case it's kind of iffy, really
11:28:14 <fizzie> Of the comic, I like how it's all more or less in scale. The big building is clearly Burj Khalifa of Dubai, and comparing to that, the radio mast (KVLY-TV mast of Blanchard, North Dakota) looks to be approximately the right size. (The cave-pyramid doesn't seem to be the Great Pyramid of Giza, though it could be one of the smaller ones.)
11:42:58 -!- oerjan has quit (Quit: leaving).
12:12:32 <Arc_Koen> so I have a question about thue
12:12:50 <Arc_Koen> if there are multiple ways to apply a rule, what happens?
12:13:14 -!- ais523 has joined.
12:13:36 <Arc_Koen> for instance with the program "aa::=x \n ::= \n aaaa"
12:14:06 <Arc_Koen> the first time the rule is applied, will we get xaa, aax, axa, or xx?
12:19:36 <fizzie> My *guess* would be "any one of the three first options", since the rule selection itself is explicitly nondeterministic, but the documentation doesn't exactly seem to say it out loud.
12:20:53 <Phantom_Hoover> IIRC it was specified that behaviour in that case is nondeterministic.
12:21:26 <fizzie> The reference Python interpreter seems to first make a list of all matches of all rules, and then pick a single match to replace; either the leftmost, rightmost or random, depending on mode.
12:21:52 <Arc_Koen> oh
12:22:16 <Arc_Koen> I was gonna go with "pick a rule at random, try to apply it; if you can't, pick another rule instead"
12:41:26 <Phantom_Hoover> yeah, that works
12:42:35 -!- boily has joined.
12:46:10 -!- copumpkin has quit (*.net *.split).
12:51:06 -!- copumpkin has joined.
13:01:32 -!- Phantom__Hoover has joined.
13:04:59 -!- Phantom_Hoover has quit (Ping timeout: 252 seconds).
13:08:44 -!- ztirf has quit (Quit: Nettalk6 - www.ntalk.de).
13:11:59 -!- ais523_ has joined.
13:12:25 -!- ais523 has quit (Ping timeout: 260 seconds).
13:14:34 -!- ais523_ has changed nick to ais523.
13:14:59 -!- cuttlefish has joined.
13:22:04 -!- kinoSi has quit (Read error: Connection reset by peer).
13:22:31 -!- kinoSi has joined.
13:35:08 -!- ais523 has quit (Read error: Connection reset by peer).
13:35:21 -!- ais523 has joined.
13:36:10 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
13:45:45 -!- ais523 has quit (Read error: Connection reset by peer).
13:45:59 -!- ais523 has joined.
13:56:31 -!- copumpkin has joined.
14:09:46 -!- kallisti has quit (Quit: Changing server).
14:10:05 -!- kallisti has joined.
14:10:07 -!- kallisti has quit (Changing host).
14:10:07 -!- kallisti has joined.
14:32:02 -!- FreeFull has joined.
14:34:04 <kmc> nice, i found some code that looks like: switch (x) { case FOO: ... lbl: ... break; case BAR: ... goto lbl; }
14:34:17 <nortti> ....
14:34:23 <nortti> why?
14:35:13 <kmc> because they have four or five case branches with a common suffix of code
14:35:22 <kmc> it's... not necessarily how i would write that
14:40:51 -!- ais523 has quit (Ping timeout: 256 seconds).
14:41:16 -!- Nisstyre has quit (Ping timeout: 245 seconds).
14:42:38 -!- AnotherTest has joined.
14:42:45 <AnotherTest> Hello
14:43:43 <boily> good morning.
14:46:30 -!- ais523 has joined.
14:58:09 -!- impomatic has quit (Quit: impomatic).
14:59:56 <quintopia> hi boily
15:04:13 -!- ogrom has joined.
15:05:17 -!- ogrom has quit (Client Quit).
15:08:49 -!- augur has quit (Remote host closed the connection).
15:14:46 <boily> quintopia: hi.
15:16:53 <AnotherTest> Betelgeuse is 1000 times larger than our sun, but it's only 15-20 solar masses
15:17:00 <AnotherTest> so it's density must be much lower?
15:17:12 <AnotherTest> yet it should produce heavier elements?
15:33:58 <FreeFull> AnotherTest: The density of a star isn't uniform
15:34:36 <AnotherTest> FreeFull: oh yes of cousre
15:34:38 <AnotherTest> *course
15:35:00 <FreeFull> The heat is making the outer layer expand a lot more
15:39:08 -!- Phantom_Hoover has joined.
15:41:10 -!- Phantom___Hoover has joined.
15:41:11 -!- Phantom___Hoover has quit (Client Quit).
15:41:29 -!- Phantom___Hoover has joined.
15:41:55 -!- Phantom__Hoover has quit (Ping timeout: 252 seconds).
15:44:39 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
15:46:33 -!- Phantom_Hoover has joined.
15:49:18 -!- Phantom___Hoover has quit (Ping timeout: 244 seconds).
15:50:51 -!- Phantom_Hoover has quit (Ping timeout: 244 seconds).
15:51:13 -!- Phantom_Hoover has joined.
15:52:25 <Arc_Koen> and even outer to the outer layer, the density is 0!!
16:00:30 -!- Slereah_ has joined.
16:03:23 <Phantom_Hoover> > 6.67 * 26
16:03:24 <lambdabot> 173.42
16:04:24 -!- Slereah has quit (Ping timeout: 276 seconds).
16:05:21 -!- ais523 has quit (Ping timeout: 246 seconds).
16:29:57 -!- Nisstyre has joined.
16:35:57 -!- Nisstyre has quit (Max SendQ exceeded).
16:52:10 -!- JaBoJa has joined.
16:54:53 -!- sivoais has quit (Quit: Lost terminal).
16:54:58 -!- JaBoJa has quit (Read error: Connection reset by peer).
16:55:45 -!- sivoais has joined.
16:56:53 -!- Nisstyre has joined.
16:58:50 -!- Vorpal has joined.
16:59:49 -!- JaBoJa has joined.
17:02:43 -!- zzo38 has joined.
17:19:04 -!- augur has joined.
17:35:02 -!- aloril has quit (Read error: Connection reset by peer).
17:43:36 -!- aloril has joined.
17:44:43 -!- zzo38 has quit (Remote host closed the connection).
17:56:24 -!- aloril has quit (Ping timeout: 244 seconds).
17:57:07 -!- augur has quit (Remote host closed the connection).
18:04:05 -!- atriq has joined.
18:04:45 -!- aloril has joined.
18:04:45 -!- atriq has quit (Client Quit).
18:05:05 -!- atriq has joined.
18:05:12 -!- aloril has quit (Remote host closed the connection).
18:05:56 -!- ais523 has joined.
18:06:29 -!- augur has joined.
18:08:04 <atriq> @messages?
18:08:05 <lambdabot> Sorry, no messages today.
18:10:36 -!- aloril has joined.
18:13:10 -!- augur has quit (Remote host closed the connection).
18:20:51 <atriq> @ping
18:20:51 <lambdabot> pong
18:21:12 -!- aloril has quit (Ping timeout: 244 seconds).
18:26:45 <fizzie> It's so quiet.
18:26:58 <shachaf> `quote
18:26:58 <shachaf> `quote
18:26:58 <shachaf> `quote
18:26:59 <shachaf> `quote
18:26:59 <shachaf> `quote
18:27:02 <atriq> Nah, me and lambdabot are livin' it up
18:27:02 <shachaf> @brain
18:27:03 <lambdabot> Wuh, I think so, Brain, but isn't Regis Philbin already married?
18:27:05 <kmc> `shachaf
18:27:06 <shachaf> @protontorpedo
18:27:07 <lambdabot> or does it become a mishmash of code?
18:27:25 <HackEgo> 845) <itidus21> elliott___: we have been calling a book new for 2000 years and it took einstein to figure out relativity
18:28:09 <HackEgo> 92) <Gregor> I don't know that I've ever heard apocalypi described in terms of depth ...
18:28:14 <HackEgo> 338) <Phantom_Hoover> Yeah, I went through a whole series of existential crises when I was 8 or so.
18:28:14 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: shachaf: not found
18:28:16 <HackEgo> 297) [After a long monologue] <oklopol> i think i have to escape this heated discussion before it becomes a flamewar
18:28:16 <HackEgo> 451) <monqy> rest in peace lambdabot???? <ais523> monqy: it'll probably be back later <monqy> nap in peace
18:29:29 -!- atrapado has joined.
18:30:17 <shachaf> ion: Are you the ion in http://bash.org/?152037 ?
18:31:38 <ion> shachaf: I don’t think so.
18:31:48 <ion> I don’t remember a “dm” from anywhere.
18:34:49 -!- carado has joined.
18:39:33 -!- AnotherTest has quit (Quit: Leaving.).
18:44:38 -!- augur has joined.
18:45:26 -!- augur has quit (Remote host closed the connection).
18:49:46 -!- aloril has joined.
19:26:59 -!- augur has joined.
19:27:02 -!- augur has quit (Remote host closed the connection).
19:29:37 -!- atriq has quit (Ping timeout: 240 seconds).
19:30:01 -!- atriq has joined.
19:35:29 <atriq> The trials of an obfuscated Haskell author...
19:35:30 <atriq> Occurs check: cannot construct the infinite type:
19:35:30 <atriq> t10
19:35:30 <atriq> =
19:35:30 <atriq> (((t10 -> t0) -> (t0 -> t0) -> t0)
19:35:30 <atriq> -> (t10 -> t0) -> (t0 -> t0) -> t0)
19:43:36 -!- augur has joined.
19:46:10 -!- augur has quit (Remote host closed the connection).
19:46:23 -!- oerjan has joined.
19:51:26 <oerjan> <Arc_Koen> and even outer to the outer layer, the density is 0!!
19:51:37 <Arc_Koen> hello
19:52:16 <oerjan> i would expect density 0 doesn't really exist anywhere
19:52:46 <Arc_Koen> ok, approximately 0
19:53:15 <oerjan> i vaguely think i read that the outer parts of betelgeuse are less dense than the solar atmosphere around earth's distance
19:53:54 * oerjan checks wikipedia
19:53:57 <Arc_Koen> doesn't that just solely depend on the definition of where the outer parts stop?
19:54:20 <oerjan> well you'd say they stop when they stop radiating?
19:55:08 <Arc_Koen> (my knowledge of physics is far too thin to answer that question)
19:55:15 <oerjan> i may remember wrong, though
19:56:09 -!- augur has joined.
19:56:22 -!- Lara has joined.
19:56:43 -!- Lara has left.
19:58:47 <oerjan> 'Consequently, the average density of this stellar mystery is less than twelve parts-per-billion (1.119 × 10−8) that of the Sun. Such star matter is so tenuous, in fact, that Betelgeuse has often been called a "red-hot vacuum".'
20:00:34 <oerjan> doesn't give a comparison with the solar wind, though
20:08:31 <oerjan> atriq: insufficient unsafeCoerce?
20:09:00 <atriq> oerjan, nah, I made a legitimate mistake
20:09:16 <oerjan> ok, as long as it wasn't illegitimate
20:19:00 -!- nooga has quit (Ping timeout: 244 seconds).
20:25:53 -!- nooga has joined.
20:26:19 <oerjan> > chr . read <$> words " 0 33 100 108 114 111 87 32 44 111 108 108 101 72"
20:26:21 <lambdabot> "\NUL!dlroW ,olleH"
20:27:41 <fizzie> Nuldlrow.
20:38:33 -!- Vorpal has quit (Ping timeout: 260 seconds).
20:39:35 <Arc_Koen> is that a Ftack program?
20:43:11 <oerjan> super stack!
20:43:24 <oerjan> well part of one
20:43:49 <atriq> Well, goodnight!
20:44:00 -!- atriq has quit (Quit: Leaving).
20:50:44 -!- Tod-Autojoined has joined.
20:51:20 -!- TodPunk has quit (Read error: Connection reset by peer).
21:06:32 * Arc_Koen watches Oerjan as he goes on his daily tablifying spree
21:09:36 <oerjan> >_>
21:09:58 <boily> tablifting?
21:10:26 * oerjan lifts three tabs at once
21:13:06 -!- atrapado has quit (Quit: Leaving).
21:18:48 <boily> it doesn't sound like a very threatening illicit act, but maybe oerjan is a pro tablifter.
21:26:57 -!- boily has quit (Quit: Poulet!).
21:27:10 -!- cuttlefish has quit (Remote host closed the connection).
21:29:53 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
21:40:20 -!- FreeFull has quit (Quit: Seelp).
21:48:16 * oerjan finds that :.,$g/^/.,$s/^/ / in vim actually works to turn vertical lines diagonal :P
21:51:54 -!- copumpkin has joined.
21:58:31 -!- hagb4rd has joined.
22:03:30 * Sgeo needs to destress somehow
22:04:21 <olsner> why destress when you can distress?
22:04:37 -!- nooga has quit (Ping timeout: 240 seconds).
22:13:37 -!- Yonkie has quit (Ping timeout: 256 seconds).
22:24:12 <kmc> sudden terrifying insight: Javascript's 'this' is less like C++ or Java 'this' and more like Perl's $_
22:24:47 <shachaf> It's not a whole lot like $_, is it?
22:25:46 <kmc> well for example, jQuery.each(collection, function () { this.foo(); })
22:25:59 <kmc> you can also use an explicit argument if you like
22:27:02 <shachaf> jQuery does f.call(elem, elem) or something like that?
22:27:07 <kmc> i don't know
22:27:14 <kmc> this is how you set 'this'?
22:27:33 <shachaf> Normally when you call object.method() it's set automatically to object.
22:27:48 <shachaf> You can override it with fn.call(thisval, ...) or fn.apply(thisval, args)
22:27:56 <kmc> right
22:28:32 <shachaf> If jQuery does that, I'd call that a jQuery quirk more than a JavaScript thing.
22:29:07 <shachaf> jQuery conventions are pretty different from JavaScript "conventions".
22:29:12 <kmc> fair enough
22:29:18 <kmc> i had the impression this kind of thing was common in javascript
22:29:19 <kmc> perhaps not
22:37:22 <Sgeo> I HATE INTEGRATED VIRTUAL NETWORKS
22:37:49 <Phantom_Hoover> you really need to lead into it more than that
22:37:58 <Phantom_Hoover> that just sounds crazy
22:38:10 <olsner> what's an integrated virtual network anyway?
22:38:15 <Sgeo> It's a company
22:38:56 <Sgeo> They bought Cybertown back in 2003 and put it on a subscription model. Late last year, they decided to make it free again. January of this year, it went down for a supposed server move, and never came back up.
22:38:58 <Phantom_Hoover> olsner, the inverse of a derivative neural network
22:39:04 <Phantom_Hoover> *virtual
22:39:08 <Sgeo> We're stull officially waiting for news, I think.
23:38:48 -!- ais523 has quit.
23:56:43 -!- DHeadshot has joined.
←2012-09-18 2012-09-19 2012-09-20→ ↑2012 ↑all