←2014-06-02 2014-06-03 2014-06-04→ ↑2014 ↑all
00:03:10 <kmc> Taneb: where are you going?
00:03:28 <kmc> Taneb: also would you like to join #trains
00:04:07 <Taneb> kmc, I'm going back and forth between Hexham and York
00:04:34 <Taneb> And I feel like I would be out of place in #trains
00:04:59 <mcpherrin> Taneb: it's just more of me and kmc having the same conversations about rust :P
00:05:19 <Taneb> I'LL JOIN THE CHANNEL ON TRIAL
00:08:07 -!- Bicyclidine has quit (Ping timeout: 265 seconds).
00:08:12 <kmc> mcpherrin: I think we should try not to talk about Rust so much there
00:08:15 <Taneb> It's also a channel on t'rail
00:08:31 <Taneb> (I am in Yorkshire, after all)
00:10:20 <kmc> i've been thinking about complexity vs. lines of code
00:10:24 <kmc> sometimes more code is less complex
00:10:29 -!- oerjan has joined.
00:10:41 <kmc> 200 lines where you only need to understand 10 lines to make a single change, vs 100 lines where you need to understand it all
00:11:01 <kmc> this is the supposed benefit of all the AbstractSingletonFactoryProxyBean verbosity I guess
00:11:20 <kmc> but they take it way too far in Java because the language doesn't have the power to define /concise/ abstractions
00:11:32 <kmc> but still, concise abstractions are more code than no abstraction at all
00:11:48 <kmc> (in many cases)
00:13:44 <mcpherrin> kmc: yeah I'm pretty bad at randomly picking channels to talk about things in
00:14:43 <mcpherrin> (and not noticing when people are annoyed on IRC; hard to emotions with words)
00:16:53 <madbr> how hard would it be to make a language with zero aliasing, without being functional like haskel
00:17:10 <mcpherrin> madbr: Fortran?
00:17:15 <madbr> hm
00:17:29 <mcpherrin> Or some subset of Rust
00:17:57 <madbr> I'm jungling with some design wher everything is copy-on-write
00:18:09 -!- edwardk has quit (Quit: Computer has gone to sleep.).
00:19:01 <madbr> but then the problem is if you did something like, say, call some opengl function way down deep the call tree, then every level needs to have the whole opengl context as an argument
00:19:02 <madbr> not good
00:20:53 <madbr> you'd need some way to have it as an argument but hide it
00:21:35 <madbr> like the compiler figures out your function down the call tree needs the opengl context and adds it as a hidden argument to all the call tree levels in between
00:27:49 <madbr> alias kills
00:28:04 <madbr> alias is why the fastest CPU is still a souped up P2
00:28:46 <zzo38> I do not entirely understand how and why.
00:28:50 <madbr> alias is why x86 was never left in the dust because other architecture never got faster than x86
00:29:01 <madbr> ok let me explain
00:29:15 <madbr> once you pass the first pass of C++ compilation, your program is in SSA form
00:29:24 <madbr> ie every varaible is assigned once
00:29:33 <zzo38> I know LLVM, which is using SSA form
00:29:50 <madbr> you'd want the compiler to be able to do nice optimizations like auto-vectorization
00:30:04 <Taneb> kmc, help I have drawn someone to #trains
00:30:22 <kmc> probably
00:30:42 <madbr> most of the time this is impossible because your loop to be optimized is going to do memory reading/writing
00:31:11 <madbr> due to the fact that in C++ pointers can point essentially everywhere, it's impossible to change the order of memory reads and writes
00:31:56 <madbr> which means that even if you unroll the loop to be optimized you can't group your math operations together and do SIMD because those math operations can't be moved
00:32:10 <madbr> because they are sandwitched between unmovable memory operations
00:32:28 <madbr> that means also that all your memory operations cannot be grouped together and turned into SIMD
00:32:40 <zzo38> In some cases you can tell what a pointer is not pointing to, though.
00:32:58 <madbr> which means that no matter what you do your code is going to contain a ton of individual 32bit loads and stores
00:32:59 <zzo38> (Even if you don't know what it is pointing to)
00:34:04 <madbr> if you consider that a L1 cache can do 1 operation per cycle (or possibly 2 in recent intel cpus) that means if your code is 33% memory loads then you can never do more than 3 operations per cycle
00:34:09 <kmc> fn check_decl(&mut self, cx: &Context, d: &ast::Decl) { cx.span_lint(d.span, "This declaration contains chemicals known to the State of California to cause cancer and birth defects or other reproductive harm"); }
00:34:28 <madbr> so a gpu-style massively parallel CPU is impossible
00:34:43 <madbr> to make it possible you need to be able to group memory loads/stores
00:34:54 <madbr> and do SIMD
00:35:10 <zzo38> Then make the command in the programming language, to group memory loads/stores.
00:35:28 <oerjan> kmc: is it the &'s that cause cancer
00:35:47 <madbr> but if you make an architecture like that the C++ can't compile code that's going to go faster than x86 because it can't group loads/stores
00:35:52 <madbr> zzo38 : already exists
00:35:58 <madbr> SSE intrinsics
00:36:06 <zzo38> And to explicitly specify what a pointer doesn't point to
00:36:07 <madbr> problem: very few people use them
00:36:26 <zzo38> Will SSE intrinsics work on non-SSE computers?
00:36:42 <madbr> non-SSE computers are very rare by now
00:36:50 <madbr> everything that's x64 has SSE2
00:37:42 <zzo38> But you might want to run a program on non-SSE computers, especially if someone also make up the new one like that
00:38:40 <madbr> zzo38 : then you can never go faster than dumb C++ code compiled by MSVC and running on a Pentium2 derivative
00:38:43 <madbr> Intel wins
00:39:47 <kmc> madbr: did you know there's apparently a roughly accurate microarchitectural simulator for Core? http://www.marss86.org/~marss86/index.php/Home
00:40:17 <kmc> they have a list of the uops they've discovered
00:40:24 <madbr> crazy
00:40:25 <zzo38> You don't have to necessarily using C++ then anyways. It could be programming language that doesn't require SSE intrinsics, it could do differently, in a way compatible with any computer.
00:40:31 <mcpherrin> woah marss86 looks super neato
00:40:47 <kmc> pcwalton told me it's within 5-10% of real instruction timings
00:40:56 <madbr> zzo38 : that's why I'm talking about designing a language with no aliasing
00:41:20 <Bike> wait wait, so the x86 risc core thingie?
00:41:20 <zzo38> Such as make a block that hint to the compiler that it doesn't matter what order they are in. Such optimization hint can help even with processor that don't do any such thing.
00:41:31 <kmc> Bike: roughly yeah
00:41:39 <Bike> coooool
00:41:40 <madbr> zzo38 : if your language has aliasing it essentially turns into C++ and then you can't go faster than C++ code compiled on MSVC runnning on a Pentium2 derivative, intel wins, microsoft wins
00:41:59 <kmc> madbr: hm, you could easily add a lint to Rust which forbids immutable & pointers, at which point you'd have approximately no aliasing
00:42:09 <kmc> of course it would break all existing code including the whole stdlib
00:42:14 <Bike> note to self: throw "restrict" on everything and see what happens
00:42:25 <kmc> #define int int restrict
00:42:26 <madbr> kmc : yeah exactly
00:42:33 <zzo38> You might want aliasing though, but it can help to be able to specify, which things a pointer doesn't point to.
00:42:59 <madbr> it's hard to have aliasing "just somewhere"
00:43:11 <zzo38> madbr: Microsoft isn't the only C++ compiler. There is also GCC and clang. And there is also other programming languages than C++, such as C and Forth.
00:43:15 <kmc> madbr: C and Rust both have it, though
00:43:23 <Bike> actually this might actually be relevant, since i'm doing dsp... though with no realtime restrictions
00:43:46 <Bike> also not overwriting earlier parts of the signal but who knows how smart gcc is i guess
00:43:59 <madbr> atm the best way to do it is SSE intrinsics
00:44:11 <Bike> do what
00:44:12 <madbr> x86 only but it works on GCC and MSVC
00:44:18 <madbr> fast DSP code
00:44:32 <Bike> oh. hell i fi know. i just grabbed a book on DSp since i know basically nothing about it
00:44:35 <zzo38> madbr: That's too bad if you cannot do it in a system-independent way. That is why it is never used.
00:44:46 <Bike> also everything is nonlinear, dunno if sse cares about that
00:44:56 <madbr> nonlinear?
00:45:01 <zzo38> If you want a x86 program you can also write in x86 assembly language and take advantage of every single instruction even though the C compiler won't do.
00:45:18 <madbr> zzo38 : there's no point
00:45:30 <zzo38> It is why I suggest other ways to do it
00:45:36 <madbr> zzo38 : essentially the only opcodes that will probably give you a gain is SSE operations
00:46:00 <zzo38> madbr: I doubt it
00:46:47 <madbr> zzo38 : everything else, except a few special cases (like bit reverse or count-leading-bits opcodes) you're not going to gain anything over C++
00:47:25 <zzo38> Bit reverse?
00:47:52 <madbr> in fact if it's not number crunching code your chances of winning anything are slim because it's probably going to be bottlenecked by the latency level of some level of cache
00:48:06 <zzo38> I know GCC has builtins for count-leading-bits, and Black-C has a compiler hint to specify that a given function implements count-leading-bits (resulting in undefined behavior if the function does not, in fact, implement that)
00:48:30 <madbr> zzo38 : yeah that's why those intrinsics exist
00:48:40 <Bike> nonlinear? <-- i dunno, i say "nonlinear" and everyone's liek "shit that's hard"
00:49:00 <madbr> nonlinear in what way?
00:49:01 <zzo38> And what about, BCD arithmetic? Sometimes I want to use it.
00:49:23 <Bike> i dunno
00:49:26 <Bike> just no lines in this shit
00:49:33 <madbr> ????
00:50:00 <madbr> zzo38 : heh, I kinda wonder
00:50:24 <Bike> i started today, ok, gimme some slack
00:50:34 <madbr> if you compare the speed of code that uses BCD opcodes vs code that doesn't, which one is going to be faster?
00:52:15 <oerjan> bitcoin looks to still be in a growth period, 50% up in the last month (mostly last 14 days)
00:52:26 <madbr> you'd think the bcd opcodes would help but sometimes those opcodes are implemented in some super slow way
00:52:28 <Sgeo> WebRTC is poorly named, it has uses other than real-time communication
00:52:53 <madbr> or even like some ~5 cycle per operation way that's still going to lose to some fast table lookup
00:53:19 <mcpherrin> Sgeo: well WebRTC is really the name of the project/goal, and encapsulates teh tech needed to get that
00:53:29 <elliott> oerjan: nice $666 buy price on coinbase
00:53:42 <Bike> [revelations quote]
00:53:51 <Bike> the blockchain: tool of the antichrist
00:54:02 <madbr> zzo38 : actually maybe you should check if there are some intrinsics for that
00:54:47 <madbr> or get some ibm clunker server that has, like, hardware decimal floating point (which exists! - unfortunately)
00:55:02 <Bike> also, note to transhuman dorks: sejnowski thinks we might be able to record a million (whoa) neurons simultaneously by 2030. get hype!!
00:56:14 -!- tertu has joined.
00:58:05 <Taneb> Goodnight
00:58:26 <oerjan> Bike: well millionfold increase is just 20 doublings with a moore's law thing going
00:58:46 <zzo38> madbr: I don't know, sorry
00:58:59 <Bike> lol cell recordings arne't photolithography
00:59:30 <oerjan> Bike: i understand genome sequencing has a pretty good growth rate, so it's not _just_ electronics...
00:59:38 <zzo38> I tried to make these and other improvement in the Black-C specification, which allows you to give a hint to use decimal arithmetic for a specified variable; if that is not possible, the hint is ignored without any warning or error message.
00:59:57 <Bike> wow that was supposed to be "ain't", what the hell did i type
01:00:51 <madbr> zzo38 : it's possible, it's just... hard to justify the development time
01:01:01 <Bike> http://upload.wikimedia.org/wikipedia/commons/b/b7/DNA_Sequencing_Cost_per_Genome_Over_Time.jpg lol
01:01:39 <Bike> i guess the dive is where they gave up on sanger
01:02:00 <zzo38> madbr: If a C compiler supports the syntax of Black-C attributes, even if it ignores all of them, then it will still work, just not as well as if it can understand some of them too.
01:02:43 <oerjan> what's sanger
01:03:07 <Bike> http://en.wikipedia.org/wiki/Sanger_sequencing the original method basically
01:06:11 <zzo38> But programs can also be written for other computer anyways, such as for Nintendo Family Computer; it is still done and I do it too. Therefore it can run on an actual hardware (or clone) or on an emulator. It is a much slower computer, but it works without worrying about SSE or about differences between computers
01:07:06 <oerjan> wtf is with that external links section
01:08:10 <zzo38> I have read that the reason Revelation says 666 is the number of beast is because it is Nero's name in Hebrew letters converted into their numerical values. I do not know if this is true or not, but what the number is meaning depend on context anyways. Mixing contexts of numbers that don't go together is called numerology, isn't it?
01:08:24 <madbr> zzo38 : yeah
01:08:50 <madbr> irl most architectures are becoming more or less the same now
01:08:57 <madbr> due to out of order crazyness
01:09:17 <madbr> x86, mips, arm, power, various other riscs...
01:09:41 <madbr> if 68000 was still around it would end up in cpus that look like nowadays cpus too
01:10:02 <Sgeo> Um.
01:10:06 <zzo38> Well, if I make the computer, it has no out of order execution or implicit caching or implicit pipeline stalls or other thing like that.
01:10:13 <Sgeo> Why does Chrome play MIDIs so differently from foobar2000?
01:10:22 <Sgeo> Not just midis
01:10:25 <Sgeo> Ogg too
01:10:25 <madbr> sgeo : nothing plays midi the same
01:10:35 <kmc> zzo38: didn't it turn out to be 616? https://en.wikipedia.org/wiki/Number_of_the_beast#616
01:10:44 <madbr> sgeoL if ogg is different then one of the programs has a post processing filter
01:10:47 <kmc> or there is some controversy anyway
01:10:56 <madbr> Sgeo : like a reverb or something like that
01:11:05 <madbr> or maybe automatic gain control
01:11:12 <oerjan> zzo38: nero is like a good guess given the time in history but there's not really any evidence whatsoever
01:12:40 <madbr> zzo38 : the reason why the 6502/65816 architecture and the z80 never made it to the "modern world" is that they can't make a rougly powerful architecture in that category of power
01:12:47 -!- Phantom__Hoover has quit (Read error: Connection reset by peer).
01:13:00 <Bike> wtf is with that external links section <-- it happens on science articles
01:13:08 <madbr> whereas it was possible with the x86 (has 8 registers which is just enough) and the 68k
01:14:11 <Sgeo> I think Cube Slam is using some custom MIDI playing thingy
01:14:41 <madbr> essentially if you're doing a cacheless architecture, your performance is going to be similar no matter the architecture because everything is bottlenecked by the ram anyways
01:14:55 <madbr> (major problem on the 386 and such)
01:15:57 <madbr> If you're doing an out of order architecture everything is the same because everything gets remapped to micro-ops anyways
01:16:05 <madbr> and all your registers are renamed
01:16:14 <madbr> so x86, arm, power, mips etc become the same
01:16:40 <madbr> it's really in the "middle band" of cpus that you see a difference
01:17:07 <madbr> the Pentiums and in-order ARMs and MIPS kind of performance band
01:17:25 <pikhq> Note, some 386 systems had cache.
01:17:34 <pikhq> (external, on the motherboard, but still)
01:18:03 <madbr> pikhq : but not all of them :o
01:18:09 <pikhq> True.
01:18:18 <madbr> 286 have that problem too
01:19:10 <madbr> that's why the 386 has some 7 cycle opcodes for really common stuff
01:19:17 -!- conehead has quit (Ping timeout: 240 seconds).
01:19:44 <madbr> you have to load in the opcode and the data from memory so it's not going to be bottlenecked by the 7 cycle execution anyways
01:20:33 <zzo38> kmc: I have read that it depends how the name is transliterated; I also see in some bibles that have a footnote saying that some manuscripts say 616 instead.
01:20:52 <kmc> maybe it's really 686
01:21:13 <kmc> the progenitor of all modern x86
01:21:19 <zzo38> madbr: I would also have microcodes reprogrammable at runtime, explicit caching, and BCD arithmetic, in my design.
01:21:39 <mcpherrin> One of my coworkers was telling me about when he worked on the IBM system 360
01:21:43 <kmc> "And that no man might buy or sell, save he that had the mark, or the name of the beast, or the number of his name."
01:21:44 <pikhq> The first two are really tricky.
01:21:52 <pikhq> BCD arithmetic is a standard feature of x86.
01:21:52 <madbr> it's hard to make reprogrammable microcodes woth it
01:21:55 <mcpherrin> apparently the microcode for the 360 was basically on punchcards
01:22:04 <mcpherrin> and you could physically swap out parts of it for debug routines
01:22:13 <kmc> nice
01:22:15 <pikhq> mcpherrin: s/was/is/
01:22:20 <madbr> mcpherrin : crazy
01:22:48 <zzo38> mcpherrin: I like that. However, that doesn't allow it to be reprogrammed in software, so it isn't as good as my idea
01:22:51 <madbr> zzo38 : explicit caching appears from time to time
01:22:51 <mcpherrin> http://en.wikipedia.org/wiki/File:IBM_360_20_TROS.jpg
01:22:55 <mcpherrin> here's a picture of the microcode
01:23:04 <madbr> zzo38 : see: nintendo GBA
01:23:16 <Bike> i have a punchcard. good bookmark.
01:23:27 <pikhq> Technically z/System machines aren't *really* using punchcards, but rather "80 column records" and such, but...
01:23:30 <madbr> it has 32k of SRAM (fast single cycle 32 bits) and 256k of DRAM (slow 16 bits)
01:23:35 <Bike> there's a decent chance it's older than i am
01:23:40 <Bike> but i have GAINED ITS POWER
01:24:18 <kmc> the name = Intel brand chips, the mark = clones, the number = virtualized
01:24:32 <madbr> zzo38 : if you're going to have control of the whole system (ie a video game console) then explicit caching is usable
01:24:42 <zzo38> I wish to not overcomplicate it, for one thing. Explicit caching shall be done in microcode RAM, for one thing.
01:24:49 * pikhq hesitates to call that "explicit caching" though...
01:24:53 <zzo38> madbr: Yes, it is designed for a single-tasking system
01:25:02 -!- tertu has quit (Read error: Connection reset by peer).
01:25:12 <madbr> zzo38 : it's not a function of single or multi tasking
01:25:14 <kmc> When John, he saw the numbers he lied / Made up the whole thing, he failed when he tried / To cash in on his cautious new fame / Always the numbers but never the name
01:25:25 <pikhq> The SRAM wasn't used as a cache for anything typically, just as "faster RAM".
01:25:28 -!- tertu has joined.
01:25:41 <madbr> it's a function of "on a console most of the workload is drawing graphics and mixing sound"
01:25:43 <zzo38> It is also designed for direct access to hardware in nearly all cases
01:26:02 <madbr> ie most of the cpu usage goes through only a few for(){} loops
01:26:05 <zzo38> Also drawing graphics and mixing sound can be done on a separate unit
01:26:07 <pikhq> Yep. Minimize latency at all costs.
01:26:34 <madbr> zzo38 : if that's the case then you could just as well use a mips :(
01:26:36 <zzo38> There is a separate microcode RAM (and therefore also a separate cache) for supervisor and user mode.
01:26:59 <madbr> supervisor is for multi tasking systems no?
01:27:08 <pikhq> *cough*N64*cough*
01:27:13 <zzo38> A few functions (such as disk access) use the BIOS, which is what the supervisor mode is for.
01:27:13 <madbr> it doesn't really make sense unless you have a memory managing unit
01:28:04 <zzo38> It is for security function so that the BIOS can be overridden by the user with debugging routines and the program running in user mode won't be affected, resulting in maximum compatibility with hardware revisions and other things.
01:28:24 <madbr> mhm
01:29:00 <zzo38> It also prevent the hard disk files from being mixed up too much
01:29:31 <zzo38> And ensure that a copy of a copy of a copy of a CD or DVD runs the same as the original
01:30:08 <Bike> FOUNDATIONAL MATHS QUESTION: has anyone defined the naturals as solutions to "f has period T -> f has period x*T" and gone from there
01:30:35 <zzo38> It also allows testing how well the program works in different hardware configurations, which the BIOS will emulate.
01:30:53 <zzo38> So it can be used both for development and for end-user.
01:30:59 <madbr> mhm
01:31:05 <zzo38> And it allows it to work even if the hard disk physical interface changes.
01:31:21 <madbr> how will the redefinable microcodes work?
01:31:25 <zzo38> Those are many reasons why to have supervisor mode.
01:31:36 <zzo38> madbr: That I don't quite know yet, but probably some kind of VLIW
01:32:14 <madbr> hmmmmm
01:32:45 <madbr> is the goal to be able to use existing code?
01:32:52 <madbr> ie 6502 code, z80 code etc
01:34:21 -!- ter2 has joined.
01:34:21 -!- tertu has quit (Disconnected by services).
01:35:38 <zzo38> madbr: Well, 6502 is slow enough that probably it can be done, and that may be a use of such thing, but mainly the intention is that you can reprogram the microcode for whatever program you are writing and can even have self-modifying microcodes if that would help you.
01:36:47 <madbr> so essentially you'd come up with some mips-like opcode set for general C++ code
01:37:01 <madbr> and then some special opcodes for filling the screen and drawing graphics
01:37:05 <oerjan> Bike: i think that's basically a variant of naturals being the free monoid on a single generator
01:37:18 <madbr> and mixing sound
01:39:06 <madbr> probably something to read a whole bunch of memory addresses, and then write a whole bunch of memory addresses
01:39:15 <madbr> plus something to deal efficiently with transparency
01:39:20 -!- tertu3 has joined.
01:39:30 <zzo38> Yes
01:41:28 <madbr> sound boils down to "load from kinda randomish memory addresses, do something like 3 multiplies, add, load output buffer, add, store to output buffer, increment, repeat"
01:42:17 -!- ter2 has quit (Ping timeout: 240 seconds).
01:42:20 -!- tertu has joined.
01:44:17 -!- tertu3 has quit (Ping timeout: 240 seconds).
01:45:23 -!- ter2 has joined.
01:45:24 -!- tertu has quit (Disconnected by services).
01:54:46 -!- tertu3 has joined.
01:55:00 -!- tertu3 has changed nick to tertu.
01:55:09 <tertu> reprogrammable microcode?
01:55:15 <tertu> burroughs small systems?
01:56:57 <madbr> tertu : kinda wondering how you can make it efficient
01:57:00 <madbr> it sounds hard
01:57:39 -!- ter2 has quit (Ping timeout: 252 seconds).
01:57:47 <madbr> I guess explicit pipelining would do it but then dealing with interrupts will probably be horrible
01:59:04 -!- ter2 has joined.
01:59:05 -!- tertu has quit (Disconnected by services).
01:59:27 <ter2> i don't know how feasible it would be except at very low clock speeds
01:59:57 <Bike> Is there any way in Linux to see how the physical RAM is laid out? Like, "two sticks of 4 GB" sorta thing.
02:00:38 <madbr> I'm not sure you could detect the separate sticks
02:00:58 <ter2> if you had microcode in sram that you could read every cycle
02:01:09 <ter2> from basically arbitrary positions
02:01:35 <madbr> ter2 : but then how do you deal with complex operations?
02:01:43 <zzo38> ter2: That was basically like my idea
02:02:02 <zzo38> madbr: Presumably using VLIW?
02:02:02 <ter2> uh
02:02:10 <ter2> the same way every microcode architecture does?
02:02:23 <ter2> you just replace the microcode rom/flash rom with ram
02:02:36 <ter2> i mean modern x86 chips have replaceable microcode
02:02:53 <madbr> hm
02:03:19 <ter2> perhaps you could implement another architecture, but chances are that would not be possible
02:03:29 <zzo38> No, it has both ROM and RAM microcode and you can switch which one you want. Also the microcode is open documented and 100% same per hardware revision/implementation.
02:03:46 <madbr> I guess you could have opcodes turn into different sets of hardware uops
02:03:48 <zzo38> ter2: It would make it slow anyways if it is possible, but sometimes that doesn't matter if it is slow
02:03:57 <madbr> but that makes sense for an out of order architecture only
02:04:22 <madbr> if its in order your uops are going to be more or less defined by your pipeline
02:06:51 <madbr> maybe implement some messy grid of multiplexers and register files and multipliers and ALUs
02:07:06 <madbr> and let the implementer figure out how he wants to connect things
02:08:17 -!- ter2 has quit (Ping timeout: 252 seconds).
02:08:21 <zzo38> Another thing I would have is, no pipeline stalls; each instruction is defined precisely and any valid implementation has to follow exactly how many clock cycles something takes and everything else like that too, including the contents of ROM (which would be in public domain, but trademarked)
02:09:24 <madbr> okay but you're going to need some special way to spill out the whole pipeline if an interrupt happens
02:09:37 <zzo38> Yes, I certainly did think of that.
02:09:59 <madbr> probably something like freezing the whole cpu and emptying each pipeline one by one
02:10:14 <zzo38> Yes that was the idea I thought of at first
02:12:25 -!- vyv has quit (Ping timeout: 276 seconds).
02:12:35 <madbr> or banking every pipeline for supervisor mode... and then empting each one of them on context switch anyways
02:14:06 -!- vyv has joined.
02:15:04 <madbr> zzo38 : how are you going to do it?
02:16:23 <zzo38> I do not entirely know yet; for now mostly it is just the ideas. But I did think of some possible ways that some of it can be done
02:16:39 <kmc> `coins
02:16:40 <HackEgo> endejxcoin um-32coin grascecoin p''coin gecrusicacoin deltseacoin harnarcoin befamcoin rmacoin liquecoin excelcoin slasscoin ratifcoin onozontoncoin miccoin dractracoin thersetcoin boolcoin dotcoin ookcoin
02:16:48 <zzo38> Mostly just the things already mentioned
02:21:19 -!- zzo38 has quit (Ping timeout: 260 seconds).
02:22:21 <kmc> madbr, ter2: have you seen http://inertiawar.com/microcode/
02:24:02 <madbr> same microcode format for p4 and core2? :o
02:28:26 -!- zzo38 has joined.
02:28:31 <zzo38> Why does the moden keep crashing?
02:28:39 <zzo38> s/moden/modem/
02:28:45 <kmc> i do not know
02:29:27 <zzo38> Sometimes it just crashes and tries to restart but never reaches beyond the third step of starting up, unless I unplug and replug it.
02:31:53 <kmc> I used to have my cable modem plugged in through an X10 outlet thingy connected to an X10 Firecracker so that I could make a cron job power cycle it
02:32:30 <kmc> http://www.somethingawful.com/fakesa/10x/
02:33:08 <zzo38> I want to figure out how to put a watchdog timer on it
02:36:14 <zzo38> Ada/CS has a feature which C doesn't have and nor does others I have seen; you can use semicolons in the list of parameters to a function call to cause it to call the function multiple times with different values
02:36:34 <kmc> o_O
02:36:35 <kmc> why
02:36:38 <zzo38> Do you know if any other programming language has such a thing?
02:36:44 <kmc> I hope not
02:37:06 <copumpkin> o.O
02:37:22 <kmc> copumpkin understands
02:37:48 <zzo38> The original reason for it was for the purpose of the Write procedure, but it can be used with any one.
02:37:53 <kmc> <Bike> Is there any way in Linux to see how the physical RAM is laid out? Like, "two sticks of 4 GB" sorta thing. <-- dmidecode
02:37:55 <zzo38> I think it is not so bad idea though.
02:38:07 <kmc> why not
02:38:59 <zzo38> If you want to call the same subroutine many times then it can help a lot
02:40:47 <elliott> it's basically mapM_, right?
02:40:53 <elliott> with a slightly funky syntax
02:41:55 <zzo38> I suppose it is like that, although not what I was thinking of
02:54:47 <Sgeo> Is learning raw WebGL at least a good way to learn how 3d stuff works in general, even if for practical purposes I would use an abstraction?
02:56:17 <zzo38> I don't know
02:56:28 <madbr> why not openGL on regular C++?
02:56:48 <kmc> what about irregular C++
02:57:23 <Sgeo> Because I like Javascript better >.>
02:57:39 <Sgeo> Also by learning I mean reading
02:58:19 <Sgeo> I feel like Javascript should have been my dream environment, considering how much I've toyed with LSL despite it being worse than Javascript IMO, and liking the Smalltalk environment
02:58:38 <Sgeo> Javascript is ... ...pluginy, in a way that C isn't
02:59:23 <zzo38> Well, Synchronet door programs can be written in Javascript, so if you want to write Synchronet door programs then you can do that (although there wouldn't be any use of OpenGL with that)
02:59:42 <pikhq> I'm pretty sure gouging out your own eyes is preferable to C++. :P
02:59:50 <kmc> C++ is a hot mess
03:00:01 <pikhq> Though, so is Javascript.
03:00:08 <zzo38> Synchronet also allows server-side Javascript programs for webpages too though
03:00:24 <kmc> JS is just a mess :P
03:00:24 <Sgeo> It's a hot mess that's still better than event-system-but-no-closures-lsl
03:00:27 <madbr> true but 3d code doesn't involve too many of C++'s pitfalls
03:00:38 <madbr> since it's generally math-y
03:00:47 <elliott> I've never before seen javascript described as a hot mess.
03:00:53 <Sgeo> http://en.wikipedia.org/wiki/Linden_Scripting_Language#Default_LSL_script
03:01:04 <pikhq> Yes, 3D code is where you are crazy if you write C++-that's-not-trivially-transformable-to-C.
03:01:05 <zzo38> I don't really dislike JavaScript much; it is better than PHP at least
03:01:15 <kmc> that's not really saying much
03:01:18 <Sgeo> How do you bring data across event handlers? GLOBAL VARIABLES!
03:01:56 <pikhq> Yeaaaah, Second Life is utterly incompetently designed.
03:02:11 <pikhq> zzo38: Few things are worse than PHP.
03:02:16 <Sgeo> And yet I love SL and wrote a bunch of code in it
03:02:22 <madbr> pikhq : true but it made it to market
03:02:36 <madbr> whereas the other presumably much better competitors haven't
03:02:37 <pikhq> Well yes. SL is terrible, but there's nothing else that really does what it does around.
03:03:01 <Sgeo> CloudParty (dead), MetaPlace (dead and not 3d)
03:03:10 <zzo38> I think Second Life client is license by GPL? Therefore, things wrong with the client program can be fixed at least
03:03:16 <Sgeo> ActiveWorlds (if you count external clients running things)
03:03:33 <madbr> pikhq : does it have anything to do aside from typesex?
03:03:36 <pikhq> zzo38: Yes, the SL client is GPL, and there are third-party SL servers.
03:03:59 <Sgeo> CloudParty dying took me by surprise
03:04:09 <zzo38> pikhq: Then you can also use other server if one of them is no good, too.
03:04:13 <Sgeo> I was there for the beginning and end of Metaplace, but not for Cloudparty
03:05:30 <zzo38> Therefore, the problem is a bit less bad than it would be if they make a mess of it and don't release the codes for someone to fix. (Not by all that much, but it is a bit. Also you can easily then see how is protocol working, and even write the entirely new one over the same protocol, if that will help.)
03:12:18 -!- Slereah has joined.
03:13:38 -!- Slereah_ has quit (Ping timeout: 245 seconds).
03:38:06 -!- Sorella has quit (Quit: It is tiem!).
03:47:05 <kmc> RIP Alexander Shulgin
03:47:07 <kmc> :/
03:49:06 -!- not^v has joined.
03:50:35 <ion> Drugs kill you, QED.
03:51:06 <kmc> c.c
03:51:37 <zzo38> Being live for too long kill you, QED.
03:52:11 <kmc> indeed
04:14:24 <Bike> oh, tikhal right
04:15:19 <Bike> sheeit, he was born in 25
04:16:09 -!- ter2 has joined.
04:16:49 <Bike> haha, i looked him up in my library and they don't have the books but they do have a shitload of articles like "Possible Implication of Myristicin as a Psychotropic Substance"
04:18:29 <zzo38> My goal is to win, not to knock out your pokemon. Didn't you know that?
04:22:01 <madbr> what's your cpu architecture going to be geared towards?
04:22:19 <madbr> like, what's going to be your limiting factor that everything else is going to be designed from :D
04:32:46 <madbr> (without cache, probably memory access o_O)
04:34:06 <Bike> no memory, perfect for finite transduction
04:34:56 <madbr> what's that
04:35:54 -!- edwardk has joined.
04:37:04 <Bike> http://en.wikipedia.org/wiki/Finite_state_transducer
04:37:53 <madbr> heh
04:38:05 <madbr> no it presumably has memory
04:38:10 <madbr> just no cache
04:38:26 <madbr> except something like 16k on chip but it's explicit
04:38:42 <madbr> ie it resides in some address range and if you want to use it you have to put stuff
04:38:43 <madbr> in there
04:41:01 <zzo38> Yes, you have to put stuff in there yourself if you want to use it
04:41:19 -!- zzo38 has quit (Quit: Sorry, I am going to sleep now).
04:45:34 -!- edwardk has quit (Quit: Computer has gone to sleep.).
04:46:15 <madbr> yeah in that case 16 bit opcodes might make sense
04:46:40 <madbr> (that's why super H had 16bit opcodes despite being a RISC... and why ARM had thumb mode)
04:55:14 <oerjan> `unidecode →
04:55:15 <HackEgo> ​[U+2192 RIGHTWARDS ARROW]
05:09:12 * Sgeo thinks it's a bit ironic that a WebGL demo would feature the IE logo
05:25:16 <kmc> `addquote <zzo38> My goal is to win, not to knock out your pokemon. Didn't you know that?
05:25:18 <HackEgo> 1201) <zzo38> My goal is to win, not to knock out your pokemon. Didn't you know that?
05:25:23 <kmc> `quote
05:25:27 <HackEgo> 1124) <shachaf> sometimes i think fizzie twiddling fungot's knobs behind the scenes <fungot> shachaf: because he is in the way of eventual development of ai on par with e.g. ( sqrt square double), and the
05:25:32 <kmc> `quote
05:25:33 <HackEgo> 991) <olsner> metar lead to canada, more metar and cows
05:25:39 <kmc> `quote
05:25:41 <HackEgo> 32) <ehird> `translatefromto hu en Hogy hogy hogy ami kemeny <HackEgo> How hard is that
05:26:16 <shachaf> hi kmc
05:27:55 <kmc> hichaf
05:28:16 <Sgeo> Why do webgl demos consistently have the best graphics I've ever seen? Is it because I always play games that suck graphically?
05:28:30 <kmc> it's because you touch yourself at night
05:28:32 <Bike> apparently.
05:30:10 <mcpherrin> Sgeo: cause they're usually pretty simple, so they can use hella-big models and textures
05:30:38 <kmc> Bike: you can run a finite state transducer backwards
05:31:23 <Bike> finite state ductranser
05:31:39 <kmc> finite state cisducer
05:32:06 <kmc> fungot: we, alone on earth, have the power to free ourselves from the tyranny of the selfish replicators
05:32:06 <fungot> kmc: i mean, not walking... around... the a2 has a 1024x768 viewfinder but my a1 has some vga crap :p
05:33:32 <Bike> finite state (−)-(6aR,10aR)-6,6,9-Trimethyl-3-pentyl-6a,7,8,10a-tetrahydro-6H-benzo[c]chromen-1-ol
05:33:59 -!- HackEgo has quit (Remote host closed the connection).
05:34:09 -!- HackEgo has joined.
05:34:38 <kmc> ꙮ_ꙮ
05:34:48 <kmc> i wish i could talk to people i don't know in bars
05:35:10 <mcpherrin> kmc: I just realized a YOLO function should be an unsafe once fn
05:35:22 <shachaf> why bars
05:35:24 <ion> unsafeTalkToStranger
05:37:36 <kmc> mcpherrin: :D
05:37:57 <mcpherrin> kmc: my current rustc accepts YOLO as a synonym for unsafe
05:38:25 <kmc> :D
05:38:28 <kmc> did you submit an RFC
05:38:30 <kmc> `coins
05:38:33 <kmc> request for coins
05:38:38 <mcpherrin> kmc: haha not yet
05:38:42 <kmc> HackEgo: …
05:38:48 <HackEgo> supercoin phabettercoin smithcoin yablcoin redgewallcoin dclynometramiroverseymounumerdiologcoin roncoin faucoin schocoin flariocoin huntcoin prevacoin datercoin yablingcoin fovecoin sbeecoin hancoin comensifcoin tkrcoin monommencoin
05:38:50 <kmc> ty
05:41:54 <madbr> sgeo : because webgl models only do one thing
05:42:17 <madbr> whereas a game does a lot of stuff and it has to work together
05:42:37 <madbr> also a lot of game elements are actually quite nice in isolation
05:43:00 <kmc> fungot: i want a god that stays dead, not plays dead
05:43:00 <fungot> kmc: do you prefer it, go for it"? why?. what's openfts? what's alatheia? equations? but you can construct
05:43:07 <madbr> but when you put the whole together the artificiality somehow shows
05:43:15 <madbr> maybe it's the wooden character animation
05:44:29 <kmc> focus follows fungus
05:45:19 -!- kmc has set topic: focus follows fungot | brainfuck survey: https://www.surveymonkey.com/s/L82SNZV | https://dl.dropboxusercontent.com/u/2023808/wisdom.pdf http://codu.org/logs/_esoteric/ http://tunes.org/~nef/logs/esoteric/.
05:48:23 -!- HackEgo has quit (Ping timeout: 265 seconds).
05:51:16 <kmc> HackEgo!!!
05:51:57 <kmc> i must eat ice cream
05:52:50 <kmc> the ice cream i bought yesterday has become soup but that is okay
05:53:19 <mcpherrin> kmc: http://mcpherrin.ca/tmp/yolo.patch.txt.html
05:53:40 <kmc> c.c
05:54:41 <kmc> whoa what is this about putting 'reserved: in the middle of a static
05:55:04 <mcpherrin> kmc: it's a weird macro
05:55:16 <mcpherrin> stuff below that are reserved keywords
05:55:46 <mcpherrin> it's like (whatever)* 'reserved (whatever)* in the MBE
05:56:02 <kmc> i never metaprogram I didn't like
05:58:56 -!- shikhin has joined.
06:00:33 -!- shikhin has quit (Read error: Connection reset by peer).
06:01:22 <mcpherrin> https://gist.github.com/mcpherrinm/e833906f12a9471ae880
06:01:29 <mcpherrin> more permanent YOLO patch url :-P
06:02:13 <mcpherrin> I should make one that has ☢ or ☢
06:02:21 <mcpherrin>
06:02:59 -!- HackEgo has joined.
06:03:02 -!- shikhin has joined.
06:06:22 -!- shikhin has quit (Read error: Connection reset by peer).
06:06:24 <mcpherrin> `unidecode ⚠
06:06:34 <HackEgo> ​[U+26A0 WARNING SIGN]
06:09:37 <Sgeo> WebGL is officially a drug
06:09:38 <Sgeo> http://betanews.com/2013/05/23/internet-explorer-uses-its-ongoing-vine-series-to-tease-webgl-support/
06:09:57 -!- not^v has quit (Quit: http://i.imgur.com/Akc6r.gif).
06:10:29 <kmc> Sgeo: explain
06:10:55 -!- shikhin has joined.
06:10:59 <Sgeo> The "vine" depicts an older IE holding up a bag containing HTML5 and asking "HTML5? What's next, WebGL?"
06:11:00 -!- shikhin has quit (Read error: Connection reset by peer).
06:11:40 <kmc> ok
06:14:07 <Bike> haha wacky. musta been on the big drug to think of something so weird.
06:14:15 <kmc> the big drug
06:14:19 <kmc> the big u
06:16:01 -!- shikhin has joined.
06:16:30 <Bike> that's right, i'm talking about... marijuhwana
06:17:11 -!- shikhin has quit (Read error: Connection reset by peer).
06:18:36 -!- edwardk has joined.
06:18:51 <kmc> Bike: why doesn't your stupid state have any actual weed stores yet
06:20:11 <Bike> too busy arguing over how the booze stores work
06:20:59 -!- shikhin has joined.
06:21:25 -!- MoALTz has quit (Quit: Leaving).
06:23:42 <kmc> `coins
06:23:43 <HackEgo> lection2coin rientcoin reimaccoin intenecoin pomercoin fmgcoin selfgcoin golgenomagecoin jellcoin risincoin kayakatcoin flecoin ajjcoin mycecoin homecoin consuecoin encecoin soreenmadbillcoin tanemicoin kuhecoin
06:23:45 <Sgeo> So pretty https://www.shadertoy.com/view/lssGDX
06:24:26 <Bike> "Q: Can I incorporate marijuana sales into my existing business?"
06:28:50 <kmc> can you!
06:29:57 <newsham> like.. as part of a logo?
06:30:07 <newsham> as a structural component?
06:31:13 <Bike> kmc: nope
06:31:25 <Bike> which seems like a weird rule to me, but such is #drugz
06:35:19 <fizzie> The metaball sub is the most popular product at Subway.
06:35:30 -!- mhi^ has joined.
06:36:10 <Sgeo> Why is my browser struggling with shadertoy?
06:36:19 -!- shikhin has quit (Ping timeout: 276 seconds).
06:36:46 -!- shikhin has joined.
06:37:28 -!- shikhin has quit (Read error: Connection reset by peer).
06:37:31 <kmc> fizzie: I believe it.
06:38:02 <mcpherrin> Sgeo: I think firefox hangs while it compiles the shaders
06:38:30 <Sgeo> I wish the gallery pages and any page except the page for a specific shader would just show a screensht
06:38:31 <Sgeo> shot
06:38:41 <Bike> http://liartownusa.tumblr.com/post/87674487235/signs
06:42:11 -!- shikhin has joined.
06:42:13 -!- shikhin has quit (Read error: Connection reset by peer).
06:47:11 -!- shikhin has joined.
06:47:12 -!- edwardk has quit (Quit: Computer has gone to sleep.).
06:49:24 -!- shikhin has quit (Read error: Connection reset by peer).
06:51:01 -!- edwardk has joined.
06:57:20 -!- shikhin has joined.
07:00:22 -!- password2 has joined.
07:20:19 -!- madbr has quit (Quit: Rouringu de hajikunda!).
07:21:24 -!- augur has quit (Remote host closed the connection).
07:21:51 -!- augur has joined.
07:22:34 -!- shikhin has quit (Ping timeout: 240 seconds).
07:26:27 -!- augur has quit (Ping timeout: 252 seconds).
07:27:21 -!- oerjan has quit (Quit: leaving).
07:28:07 <shachaf> kmc: "noöp" has science gone too far
07:28:33 -!- slereah_ has joined.
07:39:56 -!- shikhin has joined.
07:42:37 -!- HackEgo has quit (Ping timeout: 276 seconds).
07:43:18 -!- password2 has quit (Ping timeout: 240 seconds).
07:46:58 -!- shikhin has quit (Ping timeout: 240 seconds).
07:47:28 -!- shikhin has joined.
07:47:48 -!- shikhin has quit (Read error: Connection reset by peer).
07:56:20 -!- password2 has joined.
07:57:51 -!- shikhin has joined.
07:58:08 -!- shikhin has quit (Read error: Connection reset by peer).
08:00:17 -!- shikhin has joined.
08:25:30 -!- Patashu has joined.
08:26:29 <impomatic> kmc: talking to strangers in bars is overrated. They just talk about sport, tv and other boring stuff...
08:27:49 -!- Patashu has quit (Disconnected by services).
08:27:49 -!- Patashu_ has joined.
08:30:57 <mcpherrin> impomatic: depends what bars you go to :p
08:31:25 -!- drdanmaku has quit (Quit: Connection closed for inactivity).
08:34:50 -!- augur has joined.
08:35:55 -!- shikhin has quit (Ping timeout: 276 seconds).
08:36:21 -!- shikhin has joined.
08:43:11 <impomatic> mcpherrin: if you know a bar where strangers talk about coding stuff, please let me know :-)
08:43:31 -!- password2 has quit (Ping timeout: 260 seconds).
08:54:56 -!- shikhin has quit (Remote host closed the connection).
08:58:22 -!- shikhin has joined.
08:58:48 -!- ter2 has quit (Ping timeout: 240 seconds).
09:14:16 -!- shikhin has quit (Ping timeout: 276 seconds).
09:15:43 <Taneb> Aaaaaah why do I need to convert from base 55 to base 8
09:15:50 <Taneb> s/8/2/
09:15:56 <mcpherrin> impomatic: well that depends on where you are I guess, but I have talked code with bar strangers plenty :p
09:16:08 <mcpherrin> SF can be like that :p
09:16:14 <mcpherrin> (Waterloo too)
09:16:43 <lifthrasiir> Taneb: why 55?
09:16:53 <Taneb> lifthrasiir, I don't know
09:17:01 <Taneb> Looking at a past paper for an exam I have this evening
09:17:21 <Taneb> "Convert the following numbers into a signed 8 bit binary representation.: 021(base 55)"
09:17:37 <FireFly> eh.
09:18:07 <lifthrasiir> wow, searching for "base 55" gives something like this: https://github.com/zmallen/SecurityChallenges/blob/master/challenges/ISTS10/encode1/encodesub.py
09:19:44 <Taneb> I think it might be to make sure we understand the principle of converting between bases
09:20:38 <lifthrasiir> 021(base 55(base 111(base 2)))
09:20:57 <Taneb> Oh god I hope not
09:22:27 <Taneb> Things about being at University of York: there is one black swan.
09:22:53 <Taneb> There are like 20 in the UK
09:23:05 <Taneb> There was two at the start of the year but one of them died
09:23:10 <Taneb> But the other has cygnets!
09:24:36 <Taneb> Well, I presume the cygnets are the children of both the black swans
09:24:46 <Taneb> Anyway, that's irrelevant to like everything
09:30:11 <shachaf> I,I http://math.stackexchange.com/questions/257334/teaching-children-to-convert-between-number-bases
09:32:05 <FireFly> `? I,I
09:32:28 <FireFly> HackEgo are you dead again
10:04:40 <impomatic> Taneb: there's a town in Devon (Dawlish) with 10-15 black swans. We visited last year.
10:05:49 <Taneb> Wikipedia says there's 9 breeding pairs in the UK
10:14:11 -!- boily has joined.
10:36:22 * boily focuses on fungot, as it seems to be the Norm and the Topic told me so.
10:36:22 <fungot> boily: damn straight. one doesn't program in c...
10:36:45 <boily> fungot: one doesn't program in C. one becomes one with C.
10:36:46 <fungot> boily: they could be
10:36:58 <boily> fungot: it doesn't seem, but it do.
10:36:59 <fungot> boily: using scsh? or did you pay? :) ( but why do you ask
10:37:18 <boily> fungot: I didn't ask. you asked. but I should ask. should I?
10:37:18 <fungot> boily: that's really all of it?
10:37:30 <boily> fungot: that's all of it, and two toasts with nutella.
10:45:28 <boily> fizzie: did you change fungot's speech patterns recently?
10:47:26 -!- nooodl has joined.
10:52:00 -!- shikhin has joined.
10:55:39 <fizzie> Not that I know of.
10:56:30 <boily> ^style
10:56:30 <fungot> Available: agora alice c64 ct darwin discworld enron europarl ff7 fisher fungot homestuck ic irc* iwcs jargon lovecraft nethack oots pa qwantz sms speeches ss wp youtube
10:56:38 <boily> oh. irc.
11:01:26 -!- boily has quit (Quit: STORMY CHICKEN).
11:11:19 -!- Sorella has joined.
11:11:45 -!- ais523_ has joined.
11:32:37 <FireFly> ^style ic
11:32:38 <fungot> Selected style: ic (INTERCAL manual)
11:33:01 <FireFly> fungot: how are you?
11:33:01 <fungot> FireFly: if you like.) by default. to be able to match a onespot variable if it happens to be deleted, as a whole, which cannot expand any further).
11:53:37 -!- Sgeo has quit (Read error: Connection reset by peer).
12:08:14 <Melvar> It occurs to me that regarding zzo32’s question of lists in argument lists calling the function multiple times, that idris’ ! syntax could make this work, of a sort, in a context that allows multiple values …
12:08:14 -!- drdanmaku has joined.
12:13:05 -!- blitter64 has joined.
12:25:00 <Melvar> Well, I seem to have found a bug trying to make it work.
12:32:48 -!- blitter64 has quit (Ping timeout: 245 seconds).
12:35:57 -!- blitter64 has joined.
12:53:20 -!- spiette has quit (Remote host closed the connection).
12:59:34 -!- M28_ has joined.
12:59:45 -!- M28 has quit (Ping timeout: 252 seconds).
13:04:49 -!- spiette has joined.
13:09:23 -!- blitter64 has quit (Ping timeout: 255 seconds).
13:17:21 -!- Patashu_ has quit (Ping timeout: 252 seconds).
13:32:21 -!- `^_^v has joined.
13:32:42 -!- yorick has joined.
13:40:24 -!- MindlessDrone has joined.
13:41:38 -!- `^_^v has quit (Ping timeout: 240 seconds).
13:43:34 -!- `^_^v has joined.
13:44:36 -!- M28_ has changed nick to M28.
13:52:22 * impomatic wonders if there's more pubs called the black swan than actual black swans
13:57:18 -!- ter2 has joined.
14:16:31 <Quintopia> yer a black swan
14:19:00 <slereah_> Racist
14:26:10 -!- MindlessDrone has quit (Quit: MindlessDrone).
14:31:31 <Quintopia> slereah_: you're an overgrown ape who can't climb very well.
14:32:18 <int-e> "The current global population is estimated to be up to 500,000 individuals."
14:33:00 <Quintopia> population of what?
14:33:13 <int-e> I guess the actual black swans win that one.
14:33:25 <Quintopia> oh
14:33:38 -!- Sprocklem has joined.
14:34:00 <Quintopia> when you said "actual black swans" i read it as "actual impactful events that could not have been predicted in advance"
14:36:59 <Bike> V_V
14:42:50 <int-e> huh.
14:49:13 <impomatic> taneb said there's only about 20 black swans in the U.K.
14:50:30 <int-e> you didn't specify a scope for your question, so I assumed worldwide.
14:51:55 <int-e> which makes it an interesting question ... the estimates for the number of pubs worldwide differ by several orders of magnitude (partly because people do not agree on a single definition of the term "pub")
14:56:18 <impomatic> int-e: was continuing the discussion from several hours ago about black swans in the U.K.
14:58:15 -!- ter2 has quit (Read error: Connection reset by peer).
14:58:45 -!- ter2 has joined.
15:02:12 -!- tertu3 has joined.
15:03:16 -!- mihow has joined.
15:03:38 -!- ter2 has quit (Ping timeout: 245 seconds).
15:03:39 -!- tertu3 has quit (Read error: Connection reset by peer).
15:04:03 -!- tertu3 has joined.
15:16:12 -!- ais523_ has quit (Quit: Page closed).
15:16:18 -!- ter2 has joined.
15:19:22 -!- tertu3 has quit (Ping timeout: 240 seconds).
15:35:28 -!- vyv has quit (Quit: leaving).
15:51:34 -!- edwardk has quit (Quit: Computer has gone to sleep.).
15:55:51 -!- ter2 has quit (Ping timeout: 252 seconds).
16:00:34 -!- slereah_ has quit (Quit: Leaving).
16:12:55 -!- shikhout has joined.
16:15:55 -!- shikhin has quit (Ping timeout: 252 seconds).
16:24:39 -!- edwardk has joined.
16:27:45 -!- shikhout has quit (Ping timeout: 252 seconds).
16:32:12 -!- MoALTz has joined.
16:34:35 -!- edwardk has quit (Ping timeout: 255 seconds).
16:48:37 -!- MindlessDrone has joined.
16:52:12 -!- edwardk has joined.
16:56:14 <kmc> `dis86 b303b06ecd80faebfe
17:05:53 -!- ter2 has joined.
17:11:37 <int-e> `nasm
17:12:55 <kmc> whither HackEgo
17:13:56 <int-e> mov bl,0x3 / mov al,0x6e / int 0x80 / cli / jmp $
17:14:06 <kmc> yep
17:15:07 <kmc> which is (base64'd for spoilers) aW9wbCgzKTsgYXNtKCJjbGkiKTsgd2hpbGUgKDEpOwo=
17:23:05 -!- Sprocklem has quit (Ping timeout: 264 seconds).
17:23:46 -!- realz has quit (Quit: realz).
17:28:52 -!- mihow has quit (Quit: mihow).
17:29:32 -!- Sprocklem has joined.
17:35:05 -!- oerjan has joined.
17:39:28 <oerjan> <Taneb> "Convert the following numbers into a signed 8 bit binary representation.: 021(base 55)" <-- oh come on two digits is trivial regardless of base. i can do that one in my head.
17:39:34 -!- conehead has joined.
17:39:39 <oerjan> hth
17:40:54 <oerjan> (admittedly it helps to remember that 127 is 01111111)
17:46:39 <int-e> kmc: isn't a bit dangerous to assume that the upper 24 bits of eax are already zero?
17:50:53 -!- Sprocklem has quit (Ping timeout: 252 seconds).
17:51:28 <kmc> yeah idk
17:51:31 <kmc> I didn't write the code
17:52:40 -!- Sprocklem has joined.
17:53:35 -!- mihow has joined.
18:05:09 <Slereah> ᕕ(ᐛ)ᕗ
18:13:29 -!- MindlessDrone has quit (Quit: MindlessDrone).
18:43:49 -!- oerjan has quit (Quit: leaving).
18:46:31 <shachaf> kmc: you should sell scp on rust hth
18:49:55 -!- conehead has quit (Quit: Textual IRC Client: www.textualapp.com).
18:51:10 <kmc> scp?
18:57:53 <scp> o_O
19:17:17 <olsner> heh, "This call is necessary to allow 8514-compatible X servers to run under Linux."
19:23:09 -!- Bicyclidine has joined.
19:28:24 -!- ais523 has joined.
19:41:30 <kmc> http://jsfiddle.net/B85pH/ javascript is fucked up, volume 315
19:42:22 <Bicyclidine> nice.
19:52:26 -!- ais523 has quit (Remote host closed the connection).
19:53:38 -!- ais523 has joined.
19:56:00 <Bicyclidine> How do C local static variables and threading interact/
19:56:09 <Taneb> I went to the library this evening and took out a couple of books
19:57:05 <ais523> Bicyclidine: the static overrides the local
19:57:12 <ais523> so they're shared between all threads
19:57:29 <Taneb> One enigmatically entitled "Categories", and the other being the first volume of TAoCP
19:57:31 <Bicyclidine> by 'local' i mean like in a function scope.
19:58:42 -!- Sprocklem has quit (Quit: Stuff to do).
20:00:55 -!- Zuu has joined.
20:00:56 -!- Zuu has quit (Changing host).
20:00:57 -!- Zuu has joined.
20:11:23 -!- realzies has joined.
20:15:35 <kmc> Bicyclidine: pre-C11, the spec says nothing about concurrency, and I don't know what C11 says
20:15:49 <kmc> but in practice they are just like globals that can only be used in that function
20:15:53 <kmc> so they're shared by all threads
20:16:29 <kmc> void f() { static int x; ... } is much like int __x_for_f; void f() { ... }
20:16:44 <Bicyclidine> okay, i figured.
20:16:47 <Bicyclidine> thanks.
20:17:07 <Bicyclidine> kind of puts a damper on all this DSP stuff i have
20:17:15 <kmc> a common pattern for (non-threadsafe) singletons in C++ is Foo* getFoo() { static Foo x; return &x; }
20:17:24 <ais523> there's a keyword __thread in C11 that makes them specific to each threa
20:17:25 <kmc> which I believe is spec'd as construct on first use
20:17:27 <ais523> *thread
20:17:32 <Bicyclidine> Oh, hm...
20:17:43 <Bicyclidine> well this code is supposed to be c89 i guess so lol
20:17:50 <kmc> ye olde c
20:18:21 <Bicyclidine> "The __thread storage class marks a static variable as having thread-local storage duration. This means that, in a multi-threaded application, a unique instance of the variable is created for each thread that uses it, and destroyed when the thread terminates. " oh, that's nice and straightforward.
20:18:34 <kmc> yeah
20:18:52 <kmc> I believe thread-local storage is usually a bit slower to access
20:18:54 <kmc> but not terribly
20:20:04 <kmc> you can look up the TLS ABI for Linux/glibc by Ulrich Drepper if you want your eyes to melt and fall out
20:20:31 <kmc> heh the second google hit for ulrich drepper is https://sourceware.org/bugzilla/show_bug.cgi?id=10134
20:20:54 <kmc> i'm confused that this was resolved FIXED rather than WONTFIX or WORKSFORME
20:36:37 <nortti> `ping
20:39:22 <Bicyclidine> hwh.
20:39:23 <Bicyclidine> heh*
20:40:28 -!- nortti has changed nick to hvidie.
20:40:50 -!- hvidie has changed nick to nortti.
20:58:41 -!- nortti has changed nick to testasdasdasdsa.
20:58:48 -!- testasdasdasdsa has changed nick to nortti.
21:08:52 -!- Slereah_ has joined.
21:10:21 -!- Slereah has quit (Ping timeout: 252 seconds).
21:29:03 -!- Phantom_Hoover has joined.
21:40:10 -!- M28_ has joined.
21:40:11 -!- M28 has quit (Read error: Connection reset by peer).
21:40:51 -!- M28_ has quit (Read error: Connection reset by peer).
21:41:10 -!- M28_ has joined.
21:44:58 <Bicyclidine> *** glibc detected *** /us/rlocal/MATLAB[...]: malloc(): smallbin double linked list corrupted
21:45:03 <Bicyclidine> ain't ffi grand
21:46:39 <int-e> depends on the language
21:47:10 <int-e> haskell, for example, has a great FFI as long as you stay away from libgmp
21:53:28 <kmc> most FFIs I've used are pretty pleasant, relative to the inherent pain of C anyway
21:53:36 <kmc> which is mainly Haskell's, Rust's, and Python ctypes
21:54:12 <Bicyclidine> i know, it's just that when i fuck up i get errors i'd never have seen in either C or the other languae
21:54:22 <kmc> oh, I used JNI a bit, which is pretty un-pleasant
21:54:29 <kmc> I guess I blocked out those memories
21:54:37 <kmc> I want a higher level Haskell↔Rust FFI which can marshal algebraic data and integrates memory management and such
21:54:46 <Bicyclidine> like i guess i wrote over malloc overhead??
21:54:56 <kmc> Bicyclidine: seems like
21:54:59 <kmc> Bicyclidine: now write an exploit
21:55:15 <Bicyclidine> haha it's matlab, it's one giant attack surface
21:55:30 <ais523> I managed to get matlab to dump Java stack traces to its console, once
21:55:46 <ais523> also confused it to the point it thought minus infinity was greater than 0 (it segfaulted soon after), purely trying to use it in normal operation
21:56:00 <Bicyclidine> oh, this time i got an abort signal and a crash, rather than having to kill the process
21:56:02 <kmc> you could send unique-boxed Rust objects to Haskell as ForeignPtrs
21:56:21 <kmc> and you could have refcounted Rust objects where some refs are held by the GHC heap
21:56:50 <Bicyclidine> this time it was a bad free... what the hell am i doing
21:56:54 <kmc> and you could lend Haskell objects to Rust if you have a way to root them in the GHC GC
21:57:01 <kmc> kind of like how we lend JS objects to Rust in Servo
21:57:29 <kmc> a rewrite of the GHC RTS in Rust would also be pretty neat, though a ton of work
21:57:50 <kmc> as I recall SPJ spoke favorably of that idea
21:58:01 <ion> Heh, that would be interesting.
21:58:09 <kmc> most of Rust's RTS is written in Rust :)
21:58:17 <kmc> but Rust doesn't have much RTS, and it's mostly optional
21:58:52 <Taneb> What is GHC's RTS written in?
21:59:11 <kmc> C and assembly
21:59:13 <Bicyclidine> Mandarin
21:59:14 <Bicyclidine> oh.
21:59:17 <Taneb> K
21:59:23 <kmc> it's about 50 kLOC iirc
21:59:31 <Taneb> Hmm, I happen to know some people intending on writing a Haskell compiler
21:59:50 <kmc> Taneb: feel free to put them in contact with me
21:59:58 <kmc> since I know and like Rust and I know a fair bit about the things a Haskell RTS has to do
22:00:26 <ion> taneb: What’s their motivation for another Haskell compiler?
22:00:32 <Taneb> ion, fun, mostly
22:00:33 <kmc> is it named YAHC
22:00:39 <ion> taneb: Fair enough :-)
22:00:45 <Taneb> Also sadness at the fact that YHC is really unmaintained
22:00:48 <kmc> I started writing a Haskell compiler named THC
22:01:15 <ion> Does THC stand for THC Haskell Compiler?
22:01:27 <Taneb> As it is a new Haskell compiler written in the University of York, it is of course called the New York Haskell Compiler
22:01:29 <Bicyclidine> please, no
22:01:31 <Bicyclidine> oh thank god.
22:02:42 <Taneb> "Someone recently asked on the Yhc mailing list if Yhc was dead. The answer is yes, noone has been working on the compiler for several years."
22:03:12 <Taneb> "The biggest challenge for Yhc was the build system - we ended up with 10,000 lines of Python Scons scripts."
22:03:21 <Bicyclidine> D:
22:03:35 <Taneb> So you understand why we want to start again
22:03:42 <Bicyclidine> How do I figure out where gcc is getting includes from, again
22:03:50 <ais523> now I wonder how aimake would react to it
22:04:21 <Taneb> ais523, here's the webpage: http://www.cs.york.ac.uk/fp/darcs/yhc/web/
22:04:28 <ais523> Bicyclidine: my method was to compile a test program that includes iso646.h, limits.h, sys/types.h, setjmp.h, and zlib.h
22:04:37 <Bicyclidine> i don't like that method :(
22:04:42 <Taneb> Feel free to put the two in your program accelerator
22:04:46 <Bicyclidine> i just want to know where mex.h is.
22:05:12 <ais523> Bicyclidine: I wrote two screenfuls of comments on why those five files specifically
22:05:34 <Bicyclidine> why do i ask questions here
22:08:39 <FireFly> Taneb: good name for a compiler
22:08:51 <Taneb> FireFly, I think it was my suggestion
22:09:20 <Taneb> Either me or one other person it could have been
22:15:16 <kmc> nice https://github.com/asciimoo/drawille
22:15:44 -!- ais523 has quit.
22:15:50 <Taneb> IF ONLY TELNET WERE A DECENT PROTOCOL
22:15:57 * Taneb breaks down into mostly irrelevant tears
22:16:07 <Bicyclidine> taneb gon bring down the wrath of zzo
22:16:22 <Taneb> I thought zzo was more of a gopher chap?
22:16:42 <Bicyclidine> anyway did you get anything good at the library
22:16:45 <Bicyclidine> e.g. pornography
22:16:57 <Taneb> Not as far as I am aware
22:17:06 <Bicyclidine> all bad things, huh
22:18:11 <Taneb> OK, telnet is not as bad as I thought
22:21:15 <Bicyclidine> man i don't know what the hell i'm doing to matlab, this is almost funny
22:21:30 -!- Phantom_Hoover has quit (Remote host closed the connection).
22:21:50 -!- M28_ has changed nick to M28.
22:23:38 <Taneb> G'night
22:31:47 -!- edwardk has quit (Ping timeout: 265 seconds).
22:33:54 -!- boily has joined.
22:36:23 -!- Phantom_Hoover has joined.
22:40:26 -!- not^v has joined.
22:41:34 <kmc> Bicyclidine: what are you FFIing?
22:42:02 <Bicyclidine> well i fixed the error through some method that indicates i don't understand this program. is there any good way to declare a function declared in a header __attribute__((noreturn)) or should i do something else
22:42:26 <kmc> ion: it was TriBeCa Haskell Compiler
22:42:43 <Bicyclidine> at the moment, i'm calling a middle ear simulator written in C, from matlab.
22:43:27 <kmc> fun
22:43:55 <kmc> Bicyclidine: what do you mean? you can put __attribute__((noreturn)) on the decl in a header
22:44:02 <Bicyclidine> i mean it's not my header.
22:44:29 <kmc> hm, I'm not sure how gcc feels about re-declaring functions
22:44:40 <Bicyclidine> the only warnings i'm getting are about a variable being uninitialized; i have code like if (species is out of range) mex_error_Thing() else if (species == ...) initialize else if (species == ...) initialize
22:45:06 <Bicyclidine> i don't know the best way to fix this. i'm guessing gcc doesn't know that mex_error_thing aborts but i don't technically know that
22:45:35 <kmc> #define mex_error_Thing lol_screw_u #include "mex.h" #undef mex_error_Thing __attribute__((noreturn)) void mex_error_Thing(...)
22:46:00 <Bicyclidine> i'll try it. #yolo
22:46:13 <kmc> that is kind of the worst thing ever
22:46:15 <kmc> but I'm proud of it
22:46:28 <kmc> just redeclaring might also work.
22:46:30 <Bicyclidine> actually, first i'll just redo the declaration to see what gcc does
22:46:32 <Bicyclidine> yeah
22:46:39 <Bicyclidine> THEN i'll betray god with this code of yours.
22:46:44 <kmc> or you know, edit the header.
22:46:49 <kmc> or copy-paste the header into your file and then edit it
22:46:50 <Bicyclidine> pshhhhhhh
22:47:03 <Bicyclidine> anyway is there some other way to do what i'm doing? I don't know if it's best practice or whatever.
22:47:10 <kmc> or use some pragma nonsense to disable the warning
22:47:31 <kmc> you could write your own ((noreturn)) wrapper which calls mex_error_Thing(); exit(1); or so
22:47:38 <kmc> or even while(1) mex_error_Thing();
22:47:39 <kmc> :3
22:47:43 <Bicyclidine> ;_;
22:48:08 <Bicyclidine> mex error thing returns to matlab, which is why i'm a bit worried about declaring mex noreturn. i think the C might live in the same process as matlab? i kind of don't want to know honestly
22:48:10 <kmc> or a dummy initialization?
22:48:19 <kmc> it probably does
22:48:25 <kmc> so I wonder how it manages that
22:48:31 <kmc> possibly setjmp / longjmp
22:48:50 <Bicyclidine> i was gonna do a dummy but then i'm worried that if i change things around later i might actually leave them with the dummy values, which would be annoying to debug
22:48:51 <kmc> a function which calls longjmp is a valid use case for noreturn, aiui
22:49:04 <kmc> initialize to dummy and then assert that they aren't dummy before you use them?
22:49:12 <Bicyclidine> i guess taht would make sense.
22:49:19 <Bicyclidine> they're all doubles, so i guess i can make them nans
22:50:02 <Bicyclidine> of course, there are eighteen of these, so it's gonna be annoying any way i do it haaaaa
22:50:08 <kmc> bleh
22:50:11 <kmc> macro time!
22:50:31 <Bicyclidine> heh. yeah, it's doing matrix multiplication, so that would work fine probably.
22:50:51 <Bicyclidine> well, something resembling matrix multiplication at least
22:50:56 <Bicyclidine> can yout ell i don't know what i'm doing
22:51:24 <kmc> you seem to know what you're doing a lot better than most scientists who code
22:51:45 <Bicyclidine> i try!
22:52:00 <Bicyclidine> this code also has a couple casts from doubles to ints, so like, lol.
22:52:11 <Bicyclidine> i think even matlab doesn't actually want you to do that
22:53:43 <kmc> lolwut
22:54:10 <kmc> well, (int) 3.0 will do a conversion in C
22:54:13 <kmc> not a reinterpret
22:54:16 <kmc> fuck C, by the way
22:54:20 <Bicyclidine> I don't... know what that means
22:54:26 <kmc> like, it will give you the int 3
22:54:31 <Bicyclidine> Huh. Weird.
22:54:32 <kmc> never mind that it's represented by completely different bits
22:54:34 <kmc> C casts do like 3 unrelated thing
22:54:35 <Bicyclidine> Don't worry though. THe doubles are actually ints to begin with.
22:54:37 <Bicyclidine> Hell yeah.
22:54:38 <kmc> which is really annoying to everyone
22:54:55 <kmc> because people show up asking "how do I do casts in language X" and you have to figure out what the hell they actually mean
22:55:03 <Bicyclidine> god, i know exactly what you're talking about
22:55:10 <Bicyclidine> "how do i convert a string to an int" i have bad news
22:55:11 <mcpherrin> kmc: eugh double - int casts in C make me sad
22:55:14 <kmc> yeah
22:55:20 <kmc> http://www.haskell.org/haskellwiki/FAQ#Does_Haskell_have_type_casts.3F
22:55:25 <mcpherrin> though I suppose they do what you want most of the time
22:56:09 <Bicyclidine> anyway as far as i see the code does something like this: matlab puts an int somewhere. matlab calls my C. the C retrieves the value using mxGetPr, which returns a double*. then i (int)that[0]. so it's never actually a double.
22:56:32 <Bicyclidine> there's an mxGetData that returns a void* that you're supposed to use so i'll use that once i get anything working
22:57:19 -!- blitter64 has joined.
22:57:54 -!- mhi^ has quit (Quit: Lost terminal).
23:01:37 <Bicyclidine> wowwwww matlab uses a custom linker script for ld
23:02:02 <blitter64> wowwwww someone's using matlab
23:02:10 <Bicyclidine> work, man.
23:02:18 <Bicyclidine> or non-man. i don't rcognize you.
23:02:20 <blitter64> heh, i guessed as much ;-)
23:02:52 <boily> blitter64: hi! who are you?
23:03:01 <Bicyclidine> this is the first time i've seen a ld script in the wild
23:03:05 <Bicyclidine> though it looks pretty simplistic.
23:03:24 <blitter64> hi boily. i'm me!
23:03:27 <blitter64> aka chaiomanot
23:03:40 <kmc> Bicyclidine: since gender is constructed we can't apply the law of the excluded middle!
23:03:41 <Bicyclidine> "This is the symbol export map file for glibc Linux MEX-files with Fortran gateways" god help me
23:03:43 <kmc> :)
23:03:51 <Bicyclidine> psssssssh constructivists
23:04:18 <Bicyclidine> principle of explosion sounds p. good in a gender context
23:04:34 <kmc> >_<
23:05:50 <boily> blitter64: I vaguely recall having seen a chaiomanot somewhere. maybe.
23:05:53 <Bicyclidine> Does Rust's linker have scripts and weird bullshit like that
23:05:57 <boily> Bicyclidine: exploding genders???
23:06:13 <Bicyclidine> yes
23:06:17 <Bicyclidine> also matlab uses this for some reason http://www.hwaci.com/sw/mkhdr/
23:06:31 <Bicyclidine> certainly explains lacking attributes...
23:08:00 <Bicyclidine> oh cool i don't actually have write access to this header anyway! yay having a boss who knows how to computer
23:12:01 -!- esowiki has joined.
23:12:05 -!- esowiki has joined.
23:12:05 -!- esowiki has joined.
23:12:33 -!- esowiki has joined.
23:12:37 -!- esowiki has joined.
23:12:38 -!- esowiki has joined.
23:13:18 -!- esowiki has joined.
23:13:22 -!- esowiki has joined.
23:13:23 -!- esowiki has joined.
23:14:01 -!- esowiki has joined.
23:14:05 -!- esowiki has joined.
23:14:06 -!- esowiki has joined.
23:14:45 -!- esowiki has joined.
23:14:49 -!- esowiki has joined.
23:14:50 -!- esowiki has joined.
23:15:29 -!- esowiki has joined.
23:15:33 -!- esowiki has joined.
23:15:34 -!- esowiki has joined.
23:16:14 -!- esowiki has joined.
23:16:18 -!- esowiki has joined.
23:16:18 -!- esowiki has joined.
23:16:57 -!- esowiki has joined.
23:17:01 -!- esowiki has joined.
23:17:02 -!- esowiki has joined.
23:17:41 -!- esowiki has joined.
23:17:45 -!- esowiki has joined.
23:17:46 -!- esowiki has joined.
23:18:23 -!- esowiki has joined.
23:18:27 -!- esowiki has joined.
23:18:28 -!- esowiki has joined.
23:19:14 -!- esowiki has joined.
23:19:18 -!- esowiki has joined.
23:19:19 -!- esowiki has joined.
23:20:09 -!- esowiki has joined.
23:20:13 -!- esowiki has joined.
23:20:13 -!- esowiki has joined.
23:21:16 -!- esowiki has joined.
23:21:20 -!- esowiki has joined.
23:21:21 -!- esowiki has joined.
23:21:56 -!- esowiki has joined.
23:22:00 -!- esowiki has joined.
23:22:01 -!- esowiki has joined.
23:22:55 -!- esowiki has joined.
23:22:59 -!- esowiki has joined.
23:22:59 -!- esowiki has joined.
23:23:44 -!- esowiki has joined.
23:23:48 -!- esowiki has joined.
23:23:48 -!- esowiki has joined.
23:24:24 -!- esowiki has joined.
23:24:28 -!- esowiki has joined.
23:24:28 -!- esowiki has joined.
23:24:59 -!- esowiki has joined.
23:25:00 -!- glogbot has joined.
23:25:03 -!- esowiki has joined.
23:25:03 -!- esowiki has joined.
23:25:11 -!- Sgeo has joined.
23:40:07 -!- BeingToDeath has joined.
23:41:24 -!- aretecode has quit (Remote host closed the connection).
23:58:06 -!- nooodl has quit (Quit: Ik ga weg).
23:59:59 -!- conehead has joined.
←2014-06-02 2014-06-03 2014-06-04→ ↑2014 ↑all