00:03:10 Taneb: where are you going? 00:03:28 Taneb: also would you like to join #trains 00:04:07 kmc, I'm going back and forth between Hexham and York 00:04:34 And I feel like I would be out of place in #trains 00:04:59 Taneb: it's just more of me and kmc having the same conversations about rust :P 00:05:19 I'LL JOIN THE CHANNEL ON TRIAL 00:08:07 -!- Bicyclidine has quit (Ping timeout: 265 seconds). 00:08:12 mcpherrin: I think we should try not to talk about Rust so much there 00:08:15 It's also a channel on t'rail 00:08:31 (I am in Yorkshire, after all) 00:10:20 i've been thinking about complexity vs. lines of code 00:10:24 sometimes more code is less complex 00:10:29 -!- oerjan has joined. 00:10:41 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 this is the supposed benefit of all the AbstractSingletonFactoryProxyBean verbosity I guess 00:11:20 but they take it way too far in Java because the language doesn't have the power to define /concise/ abstractions 00:11:32 but still, concise abstractions are more code than no abstraction at all 00:11:48 (in many cases) 00:13:44 kmc: yeah I'm pretty bad at randomly picking channels to talk about things in 00:14:43 (and not noticing when people are annoyed on IRC; hard to emotions with words) 00:16:53 how hard would it be to make a language with zero aliasing, without being functional like haskel 00:17:10 madbr: Fortran? 00:17:15 hm 00:17:29 Or some subset of Rust 00:17:57 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 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 not good 00:20:53 you'd need some way to have it as an argument but hide it 00:21:35 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 alias kills 00:28:04 alias is why the fastest CPU is still a souped up P2 00:28:46 I do not entirely understand how and why. 00:28:50 alias is why x86 was never left in the dust because other architecture never got faster than x86 00:29:01 ok let me explain 00:29:15 once you pass the first pass of C++ compilation, your program is in SSA form 00:29:24 ie every varaible is assigned once 00:29:33 I know LLVM, which is using SSA form 00:29:50 you'd want the compiler to be able to do nice optimizations like auto-vectorization 00:30:04 kmc, help I have drawn someone to #trains 00:30:22 probably 00:30:42 most of the time this is impossible because your loop to be optimized is going to do memory reading/writing 00:31:11 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 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 because they are sandwitched between unmovable memory operations 00:32:28 that means also that all your memory operations cannot be grouped together and turned into SIMD 00:32:40 In some cases you can tell what a pointer is not pointing to, though. 00:32:58 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 (Even if you don't know what it is pointing to) 00:34:04 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 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 so a gpu-style massively parallel CPU is impossible 00:34:43 to make it possible you need to be able to group memory loads/stores 00:34:54 and do SIMD 00:35:10 Then make the command in the programming language, to group memory loads/stores. 00:35:28 kmc: is it the &'s that cause cancer 00:35:47 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 zzo38 : already exists 00:35:58 SSE intrinsics 00:36:06 And to explicitly specify what a pointer doesn't point to 00:36:07 problem: very few people use them 00:36:26 Will SSE intrinsics work on non-SSE computers? 00:36:42 non-SSE computers are very rare by now 00:36:50 everything that's x64 has SSE2 00:37:42 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 zzo38 : then you can never go faster than dumb C++ code compiled by MSVC and running on a Pentium2 derivative 00:38:43 Intel wins 00:39:47 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 they have a list of the uops they've discovered 00:40:24 crazy 00:40:25 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 woah marss86 looks super neato 00:40:47 pcwalton told me it's within 5-10% of real instruction timings 00:40:56 zzo38 : that's why I'm talking about designing a language with no aliasing 00:41:20 wait wait, so the x86 risc core thingie? 00:41:20 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 Bike: roughly yeah 00:41:39 coooool 00:41:40 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 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 of course it would break all existing code including the whole stdlib 00:42:14 note to self: throw "restrict" on everything and see what happens 00:42:25 #define int int restrict 00:42:26 kmc : yeah exactly 00:42:33 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 it's hard to have aliasing "just somewhere" 00:43:11 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 madbr: C and Rust both have it, though 00:43:23 actually this might actually be relevant, since i'm doing dsp... though with no realtime restrictions 00:43:46 also not overwriting earlier parts of the signal but who knows how smart gcc is i guess 00:43:59 atm the best way to do it is SSE intrinsics 00:44:11 do what 00:44:12 x86 only but it works on GCC and MSVC 00:44:18 fast DSP code 00:44:32 oh. hell i fi know. i just grabbed a book on DSp since i know basically nothing about it 00:44:35 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 also everything is nonlinear, dunno if sse cares about that 00:44:56 nonlinear? 00:45:01 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 zzo38 : there's no point 00:45:30 It is why I suggest other ways to do it 00:45:36 zzo38 : essentially the only opcodes that will probably give you a gain is SSE operations 00:46:00 madbr: I doubt it 00:46:47 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 Bit reverse? 00:47:52 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 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 zzo38 : yeah that's why those intrinsics exist 00:48:40 nonlinear? <-- i dunno, i say "nonlinear" and everyone's liek "shit that's hard" 00:49:00 nonlinear in what way? 00:49:01 And what about, BCD arithmetic? Sometimes I want to use it. 00:49:23 i dunno 00:49:26 just no lines in this shit 00:49:33 ???? 00:50:00 zzo38 : heh, I kinda wonder 00:50:24 i started today, ok, gimme some slack 00:50:34 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 bitcoin looks to still be in a growth period, 50% up in the last month (mostly last 14 days) 00:52:26 you'd think the bcd opcodes would help but sometimes those opcodes are implemented in some super slow way 00:52:28 WebRTC is poorly named, it has uses other than real-time communication 00:52:53 or even like some ~5 cycle per operation way that's still going to lose to some fast table lookup 00:53:19 Sgeo: well WebRTC is really the name of the project/goal, and encapsulates teh tech needed to get that 00:53:29 oerjan: nice $666 buy price on coinbase 00:53:42 [revelations quote] 00:53:51 the blockchain: tool of the antichrist 00:54:02 zzo38 : actually maybe you should check if there are some intrinsics for that 00:54:47 or get some ibm clunker server that has, like, hardware decimal floating point (which exists! - unfortunately) 00:55:02 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 Goodnight 00:58:26 Bike: well millionfold increase is just 20 doublings with a moore's law thing going 00:58:46 madbr: I don't know, sorry 00:58:59 lol cell recordings arne't photolithography 00:59:30 Bike: i understand genome sequencing has a pretty good growth rate, so it's not _just_ electronics... 00:59:38 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 wow that was supposed to be "ain't", what the hell did i type 01:00:51 zzo38 : it's possible, it's just... hard to justify the development time 01:01:01 http://upload.wikimedia.org/wikipedia/commons/b/b7/DNA_Sequencing_Cost_per_Genome_Over_Time.jpg lol 01:01:39 i guess the dive is where they gave up on sanger 01:02:00 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 what's sanger 01:03:07 http://en.wikipedia.org/wiki/Sanger_sequencing the original method basically 01:06:11 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 wtf is with that external links section 01:08:10 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 zzo38 : yeah 01:08:50 irl most architectures are becoming more or less the same now 01:08:57 due to out of order crazyness 01:09:17 x86, mips, arm, power, various other riscs... 01:09:41 if 68000 was still around it would end up in cpus that look like nowadays cpus too 01:10:02 Um. 01:10:06 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 Why does Chrome play MIDIs so differently from foobar2000? 01:10:22 Not just midis 01:10:25 Ogg too 01:10:25 sgeo : nothing plays midi the same 01:10:35 zzo38: didn't it turn out to be 616? https://en.wikipedia.org/wiki/Number_of_the_beast#616 01:10:44 sgeoL if ogg is different then one of the programs has a post processing filter 01:10:47 or there is some controversy anyway 01:10:56 Sgeo : like a reverb or something like that 01:11:05 or maybe automatic gain control 01:11:12 zzo38: nero is like a good guess given the time in history but there's not really any evidence whatsoever 01:12:40 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 wtf is with that external links section <-- it happens on science articles 01:13:08 whereas it was possible with the x86 (has 8 registers which is just enough) and the 68k 01:14:11 I think Cube Slam is using some custom MIDI playing thingy 01:14:41 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 (major problem on the 386 and such) 01:15:57 If you're doing an out of order architecture everything is the same because everything gets remapped to micro-ops anyways 01:16:05 and all your registers are renamed 01:16:14 so x86, arm, power, mips etc become the same 01:16:40 it's really in the "middle band" of cpus that you see a difference 01:17:07 the Pentiums and in-order ARMs and MIPS kind of performance band 01:17:25 Note, some 386 systems had cache. 01:17:34 (external, on the motherboard, but still) 01:18:03 pikhq : but not all of them :o 01:18:09 True. 01:18:18 286 have that problem too 01:19:10 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 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 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 maybe it's really 686 01:21:13 the progenitor of all modern x86 01:21:19 madbr: I would also have microcodes reprogrammable at runtime, explicit caching, and BCD arithmetic, in my design. 01:21:39 One of my coworkers was telling me about when he worked on the IBM system 360 01:21:43 "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 The first two are really tricky. 01:21:52 BCD arithmetic is a standard feature of x86. 01:21:52 it's hard to make reprogrammable microcodes woth it 01:21:55 apparently the microcode for the 360 was basically on punchcards 01:22:04 and you could physically swap out parts of it for debug routines 01:22:13 nice 01:22:15 mcpherrin: s/was/is/ 01:22:20 mcpherrin : crazy 01:22:48 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 zzo38 : explicit caching appears from time to time 01:22:51 http://en.wikipedia.org/wiki/File:IBM_360_20_TROS.jpg 01:22:55 here's a picture of the microcode 01:23:04 zzo38 : see: nintendo GBA 01:23:16 i have a punchcard. good bookmark. 01:23:27 Technically z/System machines aren't *really* using punchcards, but rather "80 column records" and such, but... 01:23:30 it has 32k of SRAM (fast single cycle 32 bits) and 256k of DRAM (slow 16 bits) 01:23:35 there's a decent chance it's older than i am 01:23:40 but i have GAINED ITS POWER 01:24:18 the name = Intel brand chips, the mark = clones, the number = virtualized 01:24:32 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 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 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 zzo38 : it's not a function of single or multi tasking 01:25:14 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 The SRAM wasn't used as a cache for anything typically, just as "faster RAM". 01:25:28 -!- tertu has joined. 01:25:41 it's a function of "on a console most of the workload is drawing graphics and mixing sound" 01:25:43 It is also designed for direct access to hardware in nearly all cases 01:26:02 ie most of the cpu usage goes through only a few for(){} loops 01:26:05 Also drawing graphics and mixing sound can be done on a separate unit 01:26:07 Yep. Minimize latency at all costs. 01:26:34 zzo38 : if that's the case then you could just as well use a mips :( 01:26:36 There is a separate microcode RAM (and therefore also a separate cache) for supervisor and user mode. 01:26:59 supervisor is for multi tasking systems no? 01:27:08 *cough*N64*cough* 01:27:13 A few functions (such as disk access) use the BIOS, which is what the supervisor mode is for. 01:27:13 it doesn't really make sense unless you have a memory managing unit 01:28:04 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 mhm 01:29:00 It also prevent the hard disk files from being mixed up too much 01:29:31 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 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 It also allows testing how well the program works in different hardware configurations, which the BIOS will emulate. 01:30:53 So it can be used both for development and for end-user. 01:30:59 mhm 01:31:05 And it allows it to work even if the hard disk physical interface changes. 01:31:21 how will the redefinable microcodes work? 01:31:25 Those are many reasons why to have supervisor mode. 01:31:36 madbr: That I don't quite know yet, but probably some kind of VLIW 01:32:14 hmmmmm 01:32:45 is the goal to be able to use existing code? 01:32:52 ie 6502 code, z80 code etc 01:34:21 -!- ter2 has joined. 01:34:21 -!- tertu has quit (Disconnected by services). 01:35:38 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 so essentially you'd come up with some mips-like opcode set for general C++ code 01:37:01 and then some special opcodes for filling the screen and drawing graphics 01:37:05 Bike: i think that's basically a variant of naturals being the free monoid on a single generator 01:37:18 and mixing sound 01:39:06 probably something to read a whole bunch of memory addresses, and then write a whole bunch of memory addresses 01:39:15 plus something to deal efficiently with transparency 01:39:20 -!- tertu3 has joined. 01:39:30 Yes 01:41:28 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 reprogrammable microcode? 01:55:15 burroughs small systems? 01:56:57 tertu : kinda wondering how you can make it efficient 01:57:00 it sounds hard 01:57:39 -!- ter2 has quit (Ping timeout: 252 seconds). 01:57:47 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 i don't know how feasible it would be except at very low clock speeds 01:59:57 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 I'm not sure you could detect the separate sticks 02:00:58 if you had microcode in sram that you could read every cycle 02:01:09 from basically arbitrary positions 02:01:35 ter2 : but then how do you deal with complex operations? 02:01:43 ter2: That was basically like my idea 02:02:02 madbr: Presumably using VLIW? 02:02:02 uh 02:02:10 the same way every microcode architecture does? 02:02:23 you just replace the microcode rom/flash rom with ram 02:02:36 i mean modern x86 chips have replaceable microcode 02:02:53 hm 02:03:19 perhaps you could implement another architecture, but chances are that would not be possible 02:03:29 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 I guess you could have opcodes turn into different sets of hardware uops 02:03:48 ter2: It would make it slow anyways if it is possible, but sometimes that doesn't matter if it is slow 02:03:57 but that makes sense for an out of order architecture only 02:04:22 if its in order your uops are going to be more or less defined by your pipeline 02:06:51 maybe implement some messy grid of multiplexers and register files and multipliers and ALUs 02:07:06 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 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 okay but you're going to need some special way to spill out the whole pipeline if an interrupt happens 02:09:37 Yes, I certainly did think of that. 02:09:59 probably something like freezing the whole cpu and emptying each pipeline one by one 02:10:14 Yes that was the idea I thought of at first 02:12:25 -!- vyv has quit (Ping timeout: 276 seconds). 02:12:35 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 zzo38 : how are you going to do it? 02:16:23 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 `coins 02:16:40 ​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 Mostly just the things already mentioned 02:21:19 -!- zzo38 has quit (Ping timeout: 260 seconds). 02:22:21 madbr, ter2: have you seen http://inertiawar.com/microcode/ 02:24:02 same microcode format for p4 and core2? :o 02:28:26 -!- zzo38 has joined. 02:28:31 Why does the moden keep crashing? 02:28:39 s/moden/modem/ 02:28:45 i do not know 02:29:27 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 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 http://www.somethingawful.com/fakesa/10x/ 02:33:08 I want to figure out how to put a watchdog timer on it 02:36:14 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 o_O 02:36:35 why 02:36:38 Do you know if any other programming language has such a thing? 02:36:44 I hope not 02:37:06 o.O 02:37:22 copumpkin understands 02:37:48 The original reason for it was for the purpose of the Write procedure, but it can be used with any one. 02:37:53 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 I think it is not so bad idea though. 02:38:07 why not 02:38:59 If you want to call the same subroutine many times then it can help a lot 02:40:47 it's basically mapM_, right? 02:40:53 with a slightly funky syntax 02:41:55 I suppose it is like that, although not what I was thinking of 02:54:47 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 I don't know 02:56:28 why not openGL on regular C++? 02:56:48 what about irregular C++ 02:57:23 Because I like Javascript better >.> 02:57:39 Also by learning I mean reading 02:58:19 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 Javascript is ... ...pluginy, in a way that C isn't 02:59:23 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 I'm pretty sure gouging out your own eyes is preferable to C++. :P 02:59:50 C++ is a hot mess 03:00:01 Though, so is Javascript. 03:00:08 Synchronet also allows server-side Javascript programs for webpages too though 03:00:24 JS is just a mess :P 03:00:24 It's a hot mess that's still better than event-system-but-no-closures-lsl 03:00:27 true but 3d code doesn't involve too many of C++'s pitfalls 03:00:38 since it's generally math-y 03:00:47 I've never before seen javascript described as a hot mess. 03:00:53 http://en.wikipedia.org/wiki/Linden_Scripting_Language#Default_LSL_script 03:01:04 Yes, 3D code is where you are crazy if you write C++-that's-not-trivially-transformable-to-C. 03:01:05 I don't really dislike JavaScript much; it is better than PHP at least 03:01:15 that's not really saying much 03:01:18 How do you bring data across event handlers? GLOBAL VARIABLES! 03:01:56 Yeaaaah, Second Life is utterly incompetently designed. 03:02:11 zzo38: Few things are worse than PHP. 03:02:16 And yet I love SL and wrote a bunch of code in it 03:02:22 pikhq : true but it made it to market 03:02:36 whereas the other presumably much better competitors haven't 03:02:37 Well yes. SL is terrible, but there's nothing else that really does what it does around. 03:03:01 CloudParty (dead), MetaPlace (dead and not 3d) 03:03:10 I think Second Life client is license by GPL? Therefore, things wrong with the client program can be fixed at least 03:03:16 ActiveWorlds (if you count external clients running things) 03:03:33 pikhq : does it have anything to do aside from typesex? 03:03:36 zzo38: Yes, the SL client is GPL, and there are third-party SL servers. 03:03:59 CloudParty dying took me by surprise 03:04:09 pikhq: Then you can also use other server if one of them is no good, too. 03:04:13 I was there for the beginning and end of Metaplace, but not for Cloudparty 03:05:30 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 RIP Alexander Shulgin 03:47:07 :/ 03:49:06 -!- not^v has joined. 03:50:35 Drugs kill you, QED. 03:51:06 c.c 03:51:37 Being live for too long kill you, QED. 03:52:11 indeed 04:14:24 oh, tikhal right 04:15:19 sheeit, he was born in 25 04:16:09 -!- ter2 has joined. 04:16:49 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 My goal is to win, not to knock out your pokemon. Didn't you know that? 04:22:01 what's your cpu architecture going to be geared towards? 04:22:19 like, what's going to be your limiting factor that everything else is going to be designed from :D 04:32:46 (without cache, probably memory access o_O) 04:34:06 no memory, perfect for finite transduction 04:34:56 what's that 04:35:54 -!- edwardk has joined. 04:37:04 http://en.wikipedia.org/wiki/Finite_state_transducer 04:37:53 heh 04:38:05 no it presumably has memory 04:38:10 just no cache 04:38:26 except something like 16k on chip but it's explicit 04:38:42 ie it resides in some address range and if you want to use it you have to put stuff 04:38:43 in there 04:41:01 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 yeah in that case 16 bit opcodes might make sense 04:46:40 (that's why super H had 16bit opcodes despite being a RISC... and why ARM had thumb mode) 04:55:14 `unidecode → 04:55:15 ​[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 `addquote My goal is to win, not to knock out your pokemon. Didn't you know that? 05:25:18 1201) My goal is to win, not to knock out your pokemon. Didn't you know that? 05:25:23 `quote 05:25:27 1124) sometimes i think fizzie twiddling fungot's knobs behind the scenes 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 `quote 05:25:33 991) metar lead to canada, more metar and cows 05:25:39 `quote 05:25:41 32) `translatefromto hu en Hogy hogy hogy ami kemeny How hard is that 05:26:16 hi kmc 05:27:55 hichaf 05:28:16 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 it's because you touch yourself at night 05:28:32 apparently. 05:30:10 Sgeo: cause they're usually pretty simple, so they can use hella-big models and textures 05:30:38 Bike: you can run a finite state transducer backwards 05:31:23 finite state ductranser 05:31:39 finite state cisducer 05:32:06 fungot: we, alone on earth, have the power to free ourselves from the tyranny of the selfish replicators 05:32:06 kmc: i mean, not walking... around... the a2 has a 1024x768 viewfinder but my a1 has some vga crap :p 05:33:32 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 ꙮ_ꙮ 05:34:48 i wish i could talk to people i don't know in bars 05:35:10 kmc: I just realized a YOLO function should be an unsafe once fn 05:35:22 why bars 05:35:24 unsafeTalkToStranger 05:37:36 mcpherrin: :D 05:37:57 kmc: my current rustc accepts YOLO as a synonym for unsafe 05:38:25 :D 05:38:28 did you submit an RFC 05:38:30 `coins 05:38:33 request for coins 05:38:38 kmc: haha not yet 05:38:42 HackEgo: … 05:38:48 ​supercoin phabettercoin smithcoin yablcoin redgewallcoin dclynometramiroverseymounumerdiologcoin roncoin faucoin schocoin flariocoin huntcoin prevacoin datercoin yablingcoin fovecoin sbeecoin hancoin comensifcoin tkrcoin monommencoin 05:38:50 ty 05:41:54 sgeo : because webgl models only do one thing 05:42:17 whereas a game does a lot of stuff and it has to work together 05:42:37 also a lot of game elements are actually quite nice in isolation 05:43:00 fungot: i want a god that stays dead, not plays dead 05:43:00 kmc: do you prefer it, go for it"? why?. what's openfts? what's alatheia? equations? but you can construct 05:43:07 but when you put the whole together the artificiality somehow shows 05:43:15 maybe it's the wooden character animation 05:44:29 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 HackEgo!!! 05:51:57 i must eat ice cream 05:52:50 the ice cream i bought yesterday has become soup but that is okay 05:53:19 kmc: http://mcpherrin.ca/tmp/yolo.patch.txt.html 05:53:40 c.c 05:54:41 whoa what is this about putting 'reserved: in the middle of a static 05:55:04 kmc: it's a weird macro 05:55:16 stuff below that are reserved keywords 05:55:46 it's like (whatever)* 'reserved (whatever)* in the MBE 05:56:02 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 https://gist.github.com/mcpherrinm/e833906f12a9471ae880 06:01:29 more permanent YOLO patch url :-P 06:02:13 I should make one that has ☢ or ☢ 06:02:21 ☣ 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 `unidecode ⚠ 06:06:34 ​[U+26A0 WARNING SIGN] 06:09:37 WebGL is officially a drug 06:09:38 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 Sgeo: explain 06:10:55 -!- shikhin has joined. 06:10:59 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 ok 06:14:07 haha wacky. musta been on the big drug to think of something so weird. 06:14:15 the big drug 06:14:19 the big u 06:16:01 -!- shikhin has joined. 06:16:30 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 Bike: why doesn't your stupid state have any actual weed stores yet 06:20:11 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 `coins 06:23:43 ​lection2coin rientcoin reimaccoin intenecoin pomercoin fmgcoin selfgcoin golgenomagecoin jellcoin risincoin kayakatcoin flecoin ajjcoin mycecoin homecoin consuecoin encecoin soreenmadbillcoin tanemicoin kuhecoin 06:23:45 So pretty https://www.shadertoy.com/view/lssGDX 06:24:26 "Q: Can I incorporate marijuana sales into my existing business?" 06:28:50 can you! 06:29:57 like.. as part of a logo? 06:30:07 as a structural component? 06:31:13 kmc: nope 06:31:25 which seems like a weird rule to me, but such is #drugz 06:35:19 The metaball sub is the most popular product at Subway. 06:35:30 -!- mhi^ has joined. 06:36:10 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 fizzie: I believe it. 06:38:02 Sgeo: I think firefox hangs while it compiles the shaders 06:38:30 I wish the gallery pages and any page except the page for a specific shader would just show a screensht 06:38:31 shot 06:38:41 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 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 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 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 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 Aaaaaah why do I need to convert from base 55 to base 8 09:15:50 s/8/2/ 09:15:56 impomatic: well that depends on where you are I guess, but I have talked code with bar strangers plenty :p 09:16:08 SF can be like that :p 09:16:14 (Waterloo too) 09:16:43 Taneb: why 55? 09:16:53 lifthrasiir, I don't know 09:17:01 Looking at a past paper for an exam I have this evening 09:17:21 "Convert the following numbers into a signed 8 bit binary representation.: 021(base 55)" 09:17:37 eh. 09:18:07 wow, searching for "base 55" gives something like this: https://github.com/zmallen/SecurityChallenges/blob/master/challenges/ISTS10/encode1/encodesub.py 09:19:44 I think it might be to make sure we understand the principle of converting between bases 09:20:38 021(base 55(base 111(base 2))) 09:20:57 Oh god I hope not 09:22:27 Things about being at University of York: there is one black swan. 09:22:53 There are like 20 in the UK 09:23:05 There was two at the start of the year but one of them died 09:23:10 But the other has cygnets! 09:24:36 Well, I presume the cygnets are the children of both the black swans 09:24:46 Anyway, that's irrelevant to like everything 09:30:11 I,I http://math.stackexchange.com/questions/257334/teaching-children-to-convert-between-number-bases 09:32:05 `? I,I 09:32:28 HackEgo are you dead again 10:04:40 Taneb: there's a town in Devon (Dawlish) with 10-15 black swans. We visited last year. 10:05:49 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 boily: damn straight. one doesn't program in c... 10:36:45 fungot: one doesn't program in C. one becomes one with C. 10:36:46 boily: they could be 10:36:58 fungot: it doesn't seem, but it do. 10:36:59 boily: using scsh? or did you pay? :) ( but why do you ask 10:37:18 fungot: I didn't ask. you asked. but I should ask. should I? 10:37:18 boily: that's really all of it? 10:37:30 fungot: that's all of it, and two toasts with nutella. 10:45:28 fizzie: did you change fungot's speech patterns recently? 10:47:26 -!- nooodl has joined. 10:52:00 -!- shikhin has joined. 10:55:39 Not that I know of. 10:56:30 ^style 10:56:30 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 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 ^style ic 11:32:38 Selected style: ic (INTERCAL manual) 11:33:01 fungot: how are you? 11:33:01 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 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 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 yer a black swan 14:19:00 Racist 14:26:10 -!- MindlessDrone has quit (Quit: MindlessDrone). 14:31:31 slereah_: you're an overgrown ape who can't climb very well. 14:32:18 "The current global population is estimated to be up to 500,000 individuals." 14:33:00 population of what? 14:33:13 I guess the actual black swans win that one. 14:33:25 oh 14:33:38 -!- Sprocklem has joined. 14:34:00 when you said "actual black swans" i read it as "actual impactful events that could not have been predicted in advance" 14:36:59 V_V 14:42:50 huh. 14:49:13 taneb said there's only about 20 black swans in the U.K. 14:50:30 you didn't specify a scope for your question, so I assumed worldwide. 14:51:55 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 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 `dis86 b303b06ecd80faebfe 17:05:53 -!- ter2 has joined. 17:11:37 `nasm 17:12:55 whither HackEgo 17:13:56 mov bl,0x3 / mov al,0x6e / int 0x80 / cli / jmp $ 17:14:06 yep 17:15:07 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 "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 hth 17:40:54 (admittedly it helps to remember that 127 is 01111111) 17:46:39 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 yeah idk 17:51:31 I didn't write the code 17:52:40 -!- Sprocklem has joined. 17:53:35 -!- mihow has joined. 18:05:09 ᕕ(ᐛ)ᕗ 18:13:29 -!- MindlessDrone has quit (Quit: MindlessDrone). 18:43:49 -!- oerjan has quit (Quit: leaving). 18:46:31 kmc: you should sell scp on rust hth 18:49:55 -!- conehead has quit (Quit: Textual IRC Client: www.textualapp.com). 18:51:10 scp? 18:57:53 o_O 19:17:17 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 http://jsfiddle.net/B85pH/ javascript is fucked up, volume 315 19:42:22 nice. 19:52:26 -!- ais523 has quit (Remote host closed the connection). 19:53:38 -!- ais523 has joined. 19:56:00 How do C local static variables and threading interact/ 19:56:09 I went to the library this evening and took out a couple of books 19:57:05 Bicyclidine: the static overrides the local 19:57:12 so they're shared between all threads 19:57:29 One enigmatically entitled "Categories", and the other being the first volume of TAoCP 19:57:31 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 Bicyclidine: pre-C11, the spec says nothing about concurrency, and I don't know what C11 says 20:15:49 but in practice they are just like globals that can only be used in that function 20:15:53 so they're shared by all threads 20:16:29 void f() { static int x; ... } is much like int __x_for_f; void f() { ... } 20:16:44 okay, i figured. 20:16:47 thanks. 20:17:07 kind of puts a damper on all this DSP stuff i have 20:17:15 a common pattern for (non-threadsafe) singletons in C++ is Foo* getFoo() { static Foo x; return &x; } 20:17:24 there's a keyword __thread in C11 that makes them specific to each threa 20:17:25 which I believe is spec'd as construct on first use 20:17:27 *thread 20:17:32 Oh, hm... 20:17:43 well this code is supposed to be c89 i guess so lol 20:17:50 ye olde c 20:18:21 "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 yeah 20:18:52 I believe thread-local storage is usually a bit slower to access 20:18:54 but not terribly 20:20:04 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 heh the second google hit for ulrich drepper is https://sourceware.org/bugzilla/show_bug.cgi?id=10134 20:20:54 i'm confused that this was resolved FIXED rather than WONTFIX or WORKSFORME 20:36:37 `ping 20:39:22 hwh. 20:39:23 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 *** glibc detected *** /us/rlocal/MATLAB[...]: malloc(): smallbin double linked list corrupted 21:45:03 ain't ffi grand 21:46:39 depends on the language 21:47:10 haskell, for example, has a great FFI as long as you stay away from libgmp 21:53:28 most FFIs I've used are pretty pleasant, relative to the inherent pain of C anyway 21:53:36 which is mainly Haskell's, Rust's, and Python ctypes 21:54:12 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 oh, I used JNI a bit, which is pretty un-pleasant 21:54:29 I guess I blocked out those memories 21:54:37 I want a higher level Haskell↔Rust FFI which can marshal algebraic data and integrates memory management and such 21:54:46 like i guess i wrote over malloc overhead?? 21:54:56 Bicyclidine: seems like 21:54:59 Bicyclidine: now write an exploit 21:55:15 haha it's matlab, it's one giant attack surface 21:55:30 I managed to get matlab to dump Java stack traces to its console, once 21:55:46 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 oh, this time i got an abort signal and a crash, rather than having to kill the process 21:56:02 you could send unique-boxed Rust objects to Haskell as ForeignPtrs 21:56:21 and you could have refcounted Rust objects where some refs are held by the GHC heap 21:56:50 this time it was a bad free... what the hell am i doing 21:56:54 and you could lend Haskell objects to Rust if you have a way to root them in the GHC GC 21:57:01 kind of like how we lend JS objects to Rust in Servo 21:57:29 a rewrite of the GHC RTS in Rust would also be pretty neat, though a ton of work 21:57:50 as I recall SPJ spoke favorably of that idea 21:58:01 Heh, that would be interesting. 21:58:09 most of Rust's RTS is written in Rust :) 21:58:17 but Rust doesn't have much RTS, and it's mostly optional 21:58:52 What is GHC's RTS written in? 21:59:11 C and assembly 21:59:13 Mandarin 21:59:14 oh. 21:59:17 K 21:59:23 it's about 50 kLOC iirc 21:59:31 Hmm, I happen to know some people intending on writing a Haskell compiler 21:59:50 Taneb: feel free to put them in contact with me 21:59:58 since I know and like Rust and I know a fair bit about the things a Haskell RTS has to do 22:00:26 taneb: What’s their motivation for another Haskell compiler? 22:00:32 ion, fun, mostly 22:00:33 is it named YAHC 22:00:39 taneb: Fair enough :-) 22:00:45 Also sadness at the fact that YHC is really unmaintained 22:00:48 I started writing a Haskell compiler named THC 22:01:15 Does THC stand for THC Haskell Compiler? 22:01:27 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 please, no 22:01:31 oh thank god. 22:02:42 "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 "The biggest challenge for Yhc was the build system - we ended up with 10,000 lines of Python Scons scripts." 22:03:21 D: 22:03:35 So you understand why we want to start again 22:03:42 How do I figure out where gcc is getting includes from, again 22:03:50 now I wonder how aimake would react to it 22:04:21 ais523, here's the webpage: http://www.cs.york.ac.uk/fp/darcs/yhc/web/ 22:04:28 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 i don't like that method :( 22:04:42 Feel free to put the two in your program accelerator 22:04:46 i just want to know where mex.h is. 22:05:12 Bicyclidine: I wrote two screenfuls of comments on why those five files specifically 22:05:34 why do i ask questions here 22:08:39 Taneb: good name for a compiler 22:08:51 FireFly, I think it was my suggestion 22:09:20 Either me or one other person it could have been 22:15:16 nice https://github.com/asciimoo/drawille 22:15:44 -!- ais523 has quit. 22:15:50 IF ONLY TELNET WERE A DECENT PROTOCOL 22:15:57 * Taneb breaks down into mostly irrelevant tears 22:16:07 taneb gon bring down the wrath of zzo 22:16:22 I thought zzo was more of a gopher chap? 22:16:42 anyway did you get anything good at the library 22:16:45 e.g. pornography 22:16:57 Not as far as I am aware 22:17:06 all bad things, huh 22:18:11 OK, telnet is not as bad as I thought 22:21:15 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 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 Bicyclidine: what are you FFIing? 22:42:02 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 ion: it was TriBeCa Haskell Compiler 22:42:43 at the moment, i'm calling a middle ear simulator written in C, from matlab. 22:43:27 fun 22:43:55 Bicyclidine: what do you mean? you can put __attribute__((noreturn)) on the decl in a header 22:44:02 i mean it's not my header. 22:44:29 hm, I'm not sure how gcc feels about re-declaring functions 22:44:40 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 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 #define mex_error_Thing lol_screw_u #include "mex.h" #undef mex_error_Thing __attribute__((noreturn)) void mex_error_Thing(...) 22:46:00 i'll try it. #yolo 22:46:13 that is kind of the worst thing ever 22:46:15 but I'm proud of it 22:46:28 just redeclaring might also work. 22:46:30 actually, first i'll just redo the declaration to see what gcc does 22:46:32 yeah 22:46:39 THEN i'll betray god with this code of yours. 22:46:44 or you know, edit the header. 22:46:49 or copy-paste the header into your file and then edit it 22:46:50 pshhhhhhh 22:47:03 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 or use some pragma nonsense to disable the warning 22:47:31 you could write your own ((noreturn)) wrapper which calls mex_error_Thing(); exit(1); or so 22:47:38 or even while(1) mex_error_Thing(); 22:47:39 :3 22:47:43 ;_; 22:48:08 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 or a dummy initialization? 22:48:19 it probably does 22:48:25 so I wonder how it manages that 22:48:31 possibly setjmp / longjmp 22:48:50 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 a function which calls longjmp is a valid use case for noreturn, aiui 22:49:04 initialize to dummy and then assert that they aren't dummy before you use them? 22:49:12 i guess taht would make sense. 22:49:19 they're all doubles, so i guess i can make them nans 22:50:02 of course, there are eighteen of these, so it's gonna be annoying any way i do it haaaaa 22:50:08 bleh 22:50:11 macro time! 22:50:31 heh. yeah, it's doing matrix multiplication, so that would work fine probably. 22:50:51 well, something resembling matrix multiplication at least 22:50:56 can yout ell i don't know what i'm doing 22:51:24 you seem to know what you're doing a lot better than most scientists who code 22:51:45 i try! 22:52:00 this code also has a couple casts from doubles to ints, so like, lol. 22:52:11 i think even matlab doesn't actually want you to do that 22:53:43 lolwut 22:54:10 well, (int) 3.0 will do a conversion in C 22:54:13 not a reinterpret 22:54:16 fuck C, by the way 22:54:20 I don't... know what that means 22:54:26 like, it will give you the int 3 22:54:31 Huh. Weird. 22:54:32 never mind that it's represented by completely different bits 22:54:34 C casts do like 3 unrelated thing 22:54:35 Don't worry though. THe doubles are actually ints to begin with. 22:54:37 Hell yeah. 22:54:38 which is really annoying to everyone 22:54:55 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 god, i know exactly what you're talking about 22:55:10 "how do i convert a string to an int" i have bad news 22:55:11 kmc: eugh double - int casts in C make me sad 22:55:14 yeah 22:55:20 http://www.haskell.org/haskellwiki/FAQ#Does_Haskell_have_type_casts.3F 22:55:25 though I suppose they do what you want most of the time 22:56:09 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 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 wowwwww matlab uses a custom linker script for ld 23:02:02 wowwwww someone's using matlab 23:02:10 work, man. 23:02:18 or non-man. i don't rcognize you. 23:02:20 heh, i guessed as much ;-) 23:02:52 blitter64: hi! who are you? 23:03:01 this is the first time i've seen a ld script in the wild 23:03:05 though it looks pretty simplistic. 23:03:24 hi boily. i'm me! 23:03:27 aka chaiomanot 23:03:40 Bicyclidine: since gender is constructed we can't apply the law of the excluded middle! 23:03:41 "This is the symbol export map file for glibc Linux MEX-files with Fortran gateways" god help me 23:03:43 :) 23:03:51 psssssssh constructivists 23:04:18 principle of explosion sounds p. good in a gender context 23:04:34 >_< 23:05:50 blitter64: I vaguely recall having seen a chaiomanot somewhere. maybe. 23:05:53 Does Rust's linker have scripts and weird bullshit like that 23:05:57 Bicyclidine: exploding genders??? 23:06:13 yes 23:06:17 also matlab uses this for some reason http://www.hwaci.com/sw/mkhdr/ 23:06:31 certainly explains lacking attributes... 23:08:00 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.