--- Log opened Sat Jun 09 00:00:08 2012 |
00:12 | | Attilla [Obsolete@Nightstar-52ef0425.as43234.net] has quit [Ping timeout: 121 seconds] |
00:17 | | Attilla [Obsolete@Nightstar-58ca13fd.as43234.net] has joined #code |
00:21 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Connection reset by peer] |
00:22 | | ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code |
00:22 | | mode/#code [+o ToxicFrog] by ChanServ |
00:32 | | io|afk is now known as iospace |
00:43 | <&McMartin> | http://arstechnica.com/gaming/2012/06/gorgeous-unreal-engine-4-brings-direct-pro gramming-indirect-lighting/ is a fun read |
00:55 | <&McMartin> | In unrelated news it turns out that flash drives work better if you plug them into a machine that is actually on |
00:59 | < Rhamphoryncus> | go figure |
01:14 | <~Vornicus> | heh |
01:33 | | You're now known as TheWatcher[T-2] |
01:37 | | You're now known as TheWatcher[zZzZ] |
02:33 | | Attilla [Obsolete@Nightstar-58ca13fd.as43234.net] has quit [Ping timeout: 121 seconds] |
02:35 | < celticminstrel> | XD |
02:36 | <&McMartin> | OK, time to test the connection post-utter-clusterfuck |
02:39 | | Attilla [Obsolete@Nightstar-5ca589d7.as43234.net] has joined #code |
02:57 | | Attilla [Obsolete@Nightstar-5ca589d7.as43234.net] has quit [Ping timeout: 121 seconds] |
03:35 | | Kindamoody[zZz] is now known as Kindamoody |
04:19 | | Vash [Vash@Nightstar-241cb5d4.wlfrct.sbcglobal.net] has joined #code |
04:19 | | mode/#code [+o Vash] by ChanServ |
04:27 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [[NS] Quit: Well, most things get better when I kick them!] |
04:48 | <&McMartin> | Hey, cool |
04:48 | <~Vornicus> | ? |
04:49 | | * McMartin flips through the disassembly of an old Atari 2600 ROM, finds a nearly-direct implementation of a technique he had worked out back in his Ophis-testing binge. |
04:49 | <~Vornicus> | Cool. |
04:49 | <~Vornicus> | Which ROM? |
04:50 | <&McMartin> | Air-Sea Battle - it's a basic technique for doing multisprite and precisely positioning stuff on a scanline with procedurally generated cyclecount delays. |
04:51 | <&McMartin> | This was done better in later years - it looks like the best one found by the old Stella list was Battlezone's, which not only does the autodelay but will also autocompute the values to jam into the fine control registers later, and fast enough to let you do this every scanline if you were so inclined. |
05:14 | <&McMartin> | Also, sweet |
05:14 | | * McMartin got his first bug identified by his unit tests. |
05:17 | <~Vornicus> | Man, Air Sea Battle |
05:32 | | Vash [Vash@Nightstar-241cb5d4.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
06:23 | <&McMartin> | fg |
06:26 | <&McMartin> | oops |
06:31 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
06:31 | | Kindamoody is now known as Kindamoody|breakfast |
07:09 | | Kindamoody|breakfast is now known as Kindamoody |
08:31 | | Kindamoody is now known as Kindamoody|out |
09:13 | | You're now known as TheWatcher |
09:20 | | RichyB [MyCatVerbs@Nightstar-32e483b9.range81-153.btcentralplus.com] has joined #code |
09:35 | | * McMartin Writes A Book. |
09:39 | | RichyB [MyCatVerbs@Nightstar-32e483b9.range81-153.btcentralplus.com] has quit [[NS] Quit: Leaving] |
09:46 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has quit [Ping timeout: 121 seconds] |
09:52 | | Rhamphoryncus [rhamph@Nightstar-5697f7e2.abhsia.telus.net] has quit [Client exited] |
09:59 | | himi [fow035@Nightstar-5d05bada.internode.on.net] has joined #code |
09:59 | | mode/#code [+o himi] by ChanServ |
10:30 | | * McMartin blinks again, wonders if he wrote this code before he saw it in Gradius. |
11:28 | | * McMartin finishes his book, announces it here instead of the wrong channel |
11:28 | <&McMartin> | https://hkn.eecs.berkeley.edu/~mcmartin/ophismanual.pdf |
11:36 | | Attilla [Obsolete@Nightstar-b09560bd.as43234.net] has joined #code |
12:28 | <&McMartin> | Also, woohoo, I have found the first bug in my unit tests that *completely blindsided me* |
12:29 | <&McMartin> | s/in/with/ |
12:30 | <&McMartin> | (To wit: when dumping binary to stdout, you have to dick around with msvcrt functions to not fuck it up - while popen can compensate for that, subprocess *can't* and subprocess is more representative of an unknown client.) |
12:31 | | Attilla [Obsolete@Nightstar-b09560bd.as43234.net] has quit [Ping timeout: 121 seconds] |
12:36 | | Attilla [Obsolete@Nightstar-0ba771bb.as43234.net] has joined #code |
13:12 | | Attilla [Obsolete@Nightstar-0ba771bb.as43234.net] has quit [Ping timeout: 121 seconds] |
13:17 | | Attilla [Obsolete@Nightstar-7a7f2080.as43234.net] has joined #code |
13:30 | <&jerith> | McMartin: Yay unit tests! |
13:31 | <&jerith> | Is this your first foray into decent test coverage, or just your first on this project? |
13:48 | | Attilla [Obsolete@Nightstar-7a7f2080.as43234.net] has quit [Ping timeout: 121 seconds] |
13:53 | | Attilla [Obsolete@Nightstar-0dcac30b.as43234.net] has joined #code |
15:01 | | Vash [Vash@Nightstar-241cb5d4.wlfrct.sbcglobal.net] has joined #code |
15:01 | | mode/#code [+o Vash] by ChanServ |
15:01 | | * froztbyte looks into options to getting a php codebase converted from lots of ereg_replace to preg_replace |
15:02 | < froztbyte> | (because I'm not sure if these patterns are even all valid PCRE) |
15:27 | | ForgeAus [forgeaus@Nightstar-1226a595.tpgi.com.au] has joined #code |
15:28 | < ForgeAus> | any particular language here? |
15:28 | <@Tamber> | Hand-forged machine-code. |
15:28 | < ForgeAus> | you mean assembly? |
15:29 | <&jerith> | ForgeAus: No, machine code. We hex-edit binaries directly. ^.^ |
15:29 | | * Tamber hands ForgeAus a stack of punch-cards. |
15:29 | <&jerith> | Actually, we're a pretty diverse bunch. |
15:29 | < ForgeAus> | ok so well how do you know what the hex stuff is actually meant to be doing? |
15:30 | <@Tamber> | Depends. If you're hardcore, you have all the opcodes memorised. |
15:30 | < ForgeAus> | wouldn't that depend on what processor architecture your using? |
15:30 | <&jerith> | Yup. |
15:30 | <@Tamber> | Of course. |
15:30 | <&jerith> | For example, McMartin over there has a fondness for the 6502. |
15:30 | < ForgeAus> | uh, and? which one would that be? |
15:30 | | iospace is now known as io|FOOD |
15:31 | <&jerith> | I'm more partial to 8-bit AVRs, myself. |
15:31 | < ForgeAus> | I don't know what an AVR is lol |
15:31 | < froztbyte> | ForgeAus: I prefer to drop-cast my CPUs as mechanical interactive machines |
15:31 | < froztbyte> | takes a while to finish a compile though |
15:31 | <&jerith> | I haven't actually built a microprocessor in a number of years. |
15:31 | < froztbyte> | jerith: we should do that water-CPU idea of mine sometime |
15:31 | < froztbyte> | it's completely batshit. |
15:31 | | * Tamber really should get around to figuring out how to do about that mechanical computer... |
15:32 | <@Tamber> | Because I find the idea of having to shovel coal into a steam-engine to make my processing happen to be kinda neat! |
15:32 | <&jerith> | Tamber: You live near enough to London that you can go look at the Difference Engine there. |
15:32 | <@Tamber> | Indeed. |
15:32 | < ForgeAus> | Tamber you like your machines to actually be mechanical rather than electronic? |
15:33 | <@Tamber> | I don't mind either way; but there's just something... more tangible about mechanical bits. |
15:33 | < ForgeAus> | somehow I think your using a PC of some description to chat on IRC :) |
15:33 | <@Tamber> | Of course. |
15:34 | < ForgeAus> | it would have to be a very special mechanical device (non electronic) to do something like that |
15:35 | <@Tamber> | There would, naturally, have to be an electromechanical interface between it and a more 'standard' PC. (Probably something like a serial link.) |
15:36 | < ForgeAus> | oh yeah for the network device, so your allowed a network adapter and power supply to it ... |
15:36 | <~Vornicus> | (the 6502 and its friends were used in the commodore 64 and the NES, among others) |
15:36 | < ForgeAus> | NES wow, |
15:36 | < ForgeAus> | aren't they Z80-based? |
15:36 | <@Tamber> | However, I haven't gotten anywhere with figuring out how to go about said mechanical computer; I have more important things paged in at this time~ |
15:37 | < ForgeAus> | its almost not beyond reason to run a *nix os on a Z80 |
15:37 | <@Tamber> | That would depend on where you draw the line of reason, surely? |
15:37 | < ForgeAus> | true |
15:37 | <&jerith> | ForgeAus: I think you need hardware memory management. |
15:38 | <@ToxicFrog> | ForgeAus: nope, the NES was a modified 6502 with a bunch of coprocessors |
15:38 | <~Vornicus> | game boy was z80 |
15:38 | < ForgeAus> | I'm not entirely sure about that but I know sharp mz series was z80 based at least at the time of MZ700 |
15:38 | <~Vornicus> | z80 is one of the most popular architectures out there. |
15:38 | <&jerith> | There's a guy who got Linux running on an AVR, but he did it by writing an emulator for a more competent microprocessor. |
15:39 | <@ToxicFrog> | The gameboy was actually a weird 8080/Z80 hybrid |
15:39 | < ForgeAus> | and MZ800 (the next model up) had a project (never completed) to build a Unix port or derivative of some kind |
15:39 | <@ToxicFrog> | The SMS was Z80, though, and the Megadrive/Genesis used the Z80 as the SPU. |
15:40 | <@ToxicFrog> | (and to address your original question, we talk everything from gate design to lisp here, as well as language-agnostic design stuff) |
15:41 | <@Tamber> | Rather, you lot do; and most of it goes over my head. @_@ (One thing I do know is that I don't know a lot.) |
15:41 | < ForgeAus> | apparnetly the spectum had a Unix or Linux of some kind |
15:44 | <&jerith> | Tamber: Ask more questions, then. :-) |
15:44 | <&jerith> | Also, http://programming-motherfucker.com/become.html |
15:44 | <&jerith> | Not sure if that's been pasted in here yet. |
15:45 | <@Tamber> | *chuckle* |
15:46 | < ForgeAus> | wow Xenix was on Apple Lisa! |
15:48 | <&jerith> | The Lisa was a 68k machine, I believe. |
15:48 | <@Tamber> | jerith, I go digging into things, learn how it works; then it promptly tumbles out of the other ear because my attention flits elsewhere... <_> |
15:48 | | celticminstrel [celticminst@Nightstar-5d22ab1d.cable.rogers.com] has joined #code |
15:48 | <&jerith> | Tamber: I recommend large doses of Ritalin.~ |
15:50 | < ForgeAus> | yeah probably 68k since it was the pre-Macintosh Macintosh pretty much afaik |
15:52 | <~Vornicus> | seeing as the z80 was supposed to be an 8080 clone in the first place... |
15:52 | <@Tamber> | Anyway, I should go bash at this pastebin a little more... *sigh* I added something similar to Watcher's "Are you human?" box, it stopped all but one... I add reCAPTCHA as part of a rewrite, and it's busted already. Getting spam all over the place. |
15:52 | < ForgeAus> | also before it was Microsoft it was micro-soft |
15:56 | < ForgeAus> | Altair systems were 8080 :) |
15:58 | < ForgeAus> | thats where it all started, at least the whole DOS and MS Basic thing ... |
16:03 | < ForgeAus> | ahh so thats where WINE probably got the idea from, XINU ... although the WINE one is a lie |
16:03 | < ForgeAus> | Wine calls itself a ABI but it does use Windows Emulation to achieve it |
16:07 | <@ToxicFrog> | Recursive acronyms predate both WINE and XINU. |
16:08 | <@ToxicFrog> | And Wine is not, in fact, an emulator, except in the "wine libraries emulate the functionality of windows system libraries" sense that makes, for example, lesstif a Motif emulator. |
16:08 | < ForgeAus> | ok they're the only ones I've come across |
16:08 | <&jerith> | GNU? |
16:09 | < ForgeAus> | I would agree there that lesstif is a motif emulator but I get what you mean |
16:09 | <&jerith> | GNU's Not Unix. |
16:09 | < ForgeAus> | oh yeah |
16:09 | < ForgeAus> | I think I did know that .. |
16:12 | <@ToxicFrog> | ForgeAus: well, it's an 'emulator' in the dictionary sense but not in the sense that anyone actually means 'emulator' when talking about emulation software, which is why we have the seperate 'compatibility layer' terminology |
16:13 | <@ToxicFrog> | wine and lesstif are both fundamentally different from, say, snes9x, or qemu. |
16:24 | | RichyB [MyCatVerbs@Nightstar-32e483b9.range81-153.btcentralplus.com] has joined #code |
16:31 | | io|FOOD is now known as iospace |
16:36 | | Kindamoody|out is now known as Kindamoody |
17:51 | | * Tamber takes a deep breath, screams at the PHP. |
17:52 | <@Tamber> | I don't know if it's actually PHP's fault, but it deserves it anyway. |
17:55 | <@Tamber> | Apparently, a string comparison will work in testing; but not in 'production'. I don't think I have enough alcohol to deal with this... |
18:00 | <@ToxicFrog> | The problem is in your php.ini. Or possibly in your Apache mod_php configuration, or your site-specific configuration files. Or your environment variables. |
18:00 | <@ToxicFrog> | Or your php compile-time options, if testing and production aren't using the same builds. |
18:01 | <@ToxicFrog> | Basically what I am saying here is that PHP is for masochists~ |
18:01 | <@ToxicFrog> | And speaking of masochism |
18:01 | | * ToxicFrog starts implementing a format string parser in C ;.; |
18:02 | <@Tamber> | TF: In short, the problem is PHP. |
18:02 | <@Tamber> | Which is made of spiders and bat-shit. |
18:04 | <@Tamber> | And glued together with the tears of everyone who tried to do anything in it. |
--- Log closed Sat Jun 09 18:14:45 2012 |
--- Log opened Sat Jun 09 18:26:07 2012 |
18:26 | | TheWatcher [chris@Nightstar-3762b576.co.uk] has joined #code |
18:26 | | Irssi: #code: Total of 25 nicks [7 ops, 0 halfops, 0 voices, 18 normal] |
18:26 | | mode/#code [+o TheWatcher] by ChanServ |
18:26 | | Irssi: Join to #code was synced in 36 secs |
18:29 | | Vash [Vash@Nightstar-241cb5d4.wlfrct.sbcglobal.net] has quit [[NS] Quit: I lovecraft Vorn!] |
18:37 | | Kindamoody is now known as Kindamoody[zZz] |
18:38 | | RichyB [MyCatVerbs@Nightstar-32e483b9.range81-153.btcentralplus.com] has quit [[NS] Quit: Leaving] |
18:41 | <&jerith> | Tamber: The fact that there are so many ways PHP can screw this up *without* you putting the file in the wrong place says quite a lot. |
18:41 | <@Tamber> | Indeed. |
18:41 | < froztbyte> | no |
18:42 | < froztbyte> | the fact that there are still people willing to ARGUE with you about that says a lot Q_Q |
18:55 | <@ToxicFrog> | Yeah, I think PHP has the highest ratio of rabid defenders to actual quality I've seen |
18:56 | <@ToxicFrog> | I mean, FORTRAN still gets used a lot but I don't think I know anyone who actually defends it as a language. But PHP? They come out of the woodwork. |
18:56 | <@rms> | IMO the issue with that is it is popular and a bunch of the arguments aren't really that good. |
18:57 | <@rms> | So it becomes mostly reactionary to people making moronic comments like "variable variables are stupid and I don't like them." |
18:57 | <@rms> | Rather than legitimate failings of the language. |
18:58 | <@ToxicFrog> | Not in my experience. |
18:58 | <@ToxicFrog> | I mean, yes, there are people saying things like that and getting flamed for it |
18:59 | <@ToxicFrog> | But exactly the same people say exactly the same things when people bring up legitimate issues with PHP |
18:59 | <@rms> | As I said, it becomes a programmed reaction. |
18:59 | <@rms> | IE: PAvlov. |
18:59 | <@ToxicFrog> | And I mean, yes, any language will have its defenders |
18:59 | <@ToxicFrog> | But PHP has so many |
19:00 | <@ToxicFrog> | And I don't really see this effect with, say, the Python community, which gets a lot of people saying "wtf mandatory indentation python sux" and is entirely happy to deploy the smackdown on them, but is also willing to admit that python is not in fact The Best Language. |
19:01 | <@ToxicFrog> | Or Lua, which gets a lot of people who are inordinately angry at the fact that it uses keywords rather than braces to delimit blocks. |
19:02 | <@rms> | IMO it's just a vocal sub-group |
19:02 | <@rms> | PHP just happens to have a large enough main-group to make the vocal group look huge. |
19:03 | <@ToxicFrog> | Except, again, other very popular languages like Python don't seem to have this issue. |
19:03 | <@ToxicFrog> | Or if they do, they don't have it to nearly the same degree. |
19:03 | <@rms> | Python doesn't get a huge amount of flack either. |
19:03 | <@rms> | The two languages that I always see getting flack are: PHP and VB. |
19:04 | <@rms> | Only negative I've ever seen for Python is the lack of braces actually. |
19:05 | <@ToxicFrog> | I see people having a crazy about Python's mandatory significant whitespace fairly frequently |
19:06 | <@ToxicFrog> | (I mean, disregarding actually legitimate complaints) |
19:06 | <@ToxicFrog> | VB I actually haven't seen discussion of in ages. Maybe it's dying out. |
19:07 | <@ToxicFrog> | (I'd rather see PHP die out than VB~) |
19:07 | < Rhamphoryncus> | Python deserves a lot of flack for its crappy threading, but nobody understands threading so they rarely comment |
19:08 | < Rhamphoryncus> | When they do the arguments from both sides are pretty inane though |
19:08 | <@ToxicFrog> | I don't python a lot but I was under the impression that that was a cpython implementation issue and not a language issue |
19:09 | <@ToxicFrog> | Unlike, say, function scope and terrible support for anonymous functions |
19:10 | < Rhamphoryncus> | cpython is the canonical implementation and it definitely exhibits it, but the threading API is pretty bad too |
19:11 | < Rhamphoryncus> | Memory semantics were never defined but there's sort of an assumption of certain things being atomic.. some of which aren't on other implementations |
19:11 | <@ToxicFrog> | Oh joy |
19:11 | < Rhamphoryncus> | If the language had a concept of isolation it'd be a lot easier to have scalable implementation |
19:12 | <@ToxicFrog> | (local memory only with message passing 4 life) |
19:12 | < Rhamphoryncus> | Not to mention being easier to use |
19:12 | < Rhamphoryncus> | ToxicFrog: how do you pass class objects and instances? |
19:14 | < Rhamphoryncus> | Answering that led to the design of python-safethread |
19:14 | <@ToxicFrog> | What do you mean? |
19:15 | < Rhamphoryncus> | Global state such as module and class objects are mutable, so they're not thread-safe, nor can they be copied to every thread for message passing |
19:15 | | * rms wonders if Perl 6 works now |
19:15 | <@ToxicFrog> | "how does the programmer pass them" - the same way you pass anything else, they're just values like any other. "how does the implementor pass them" - I don't know enough about python internals to say, but there's no shortage of languages that do the equivalent and I've written the equivalent for luapilot |
19:16 | <@ToxicFrog> | Erm |
19:16 | <@ToxicFrog> | <ToxicFrog> (local memory only with message passing 4 life) |
19:16 | < Rhamphoryncus> | Yeah, my context is python, yours is not :) |
19:17 | <@ToxicFrog> | I guess you can have some immutable globals like interpreter version information shared across threads if you really want but that's an implementation detail |
19:17 | <@ToxicFrog> | Ok, I'm missing something here |
19:18 | < Rhamphoryncus> | I was extending python, so there were limitations in how much I could change it |
19:18 | <@ToxicFrog> | Because you seem to be approaching this from the stance of "any parallel python program must have at least some mutable state shared across threads" |
19:18 | <@ToxicFrog> | Ok, so what I'm missing is that you're talking about something unrelated, gotcha |
19:18 | < Rhamphoryncus> | The entire module and class system in python is built around being mutable |
19:19 | <@ToxicFrog> | "mutable" isn't the problem, "shared" is |
19:19 | < Rhamphoryncus> | shared too |
19:19 | <@ToxicFrog> | Untrue, or Pylot wouldn't work |
19:20 | < Rhamphoryncus> | Good question, how does it work? |
19:21 | < Rhamphoryncus> | The way you scale up in python is a) do it in C, or b) fork |
19:21 | <@ToxicFrog> | By forking. |
19:21 | < Rhamphoryncus> | forking means make a copy of the entire global state |
19:21 | <@ToxicFrog> | That said, my understanding is that this is a limitation of cpython (you can't have more than one isolated interpreter per process) and not all python terps have this limitation. |
19:21 | <@ToxicFrog> | Yes? |
19:22 | < Rhamphoryncus> | It's a very heavy solution, considering COW doesn't work for refcounting |
19:22 | < Rhamphoryncus> | (at least not when the refcount is stored with every object) |
19:22 | < Rhamphoryncus> | Calling it a limitation of cpython is academic |
19:22 | < Rhamphoryncus> | Jython may not have it but pypy does |
19:23 | <@ToxicFrog> | I don't even know what you're trying to argue anymore |
19:24 | < Rhamphoryncus> | Theory vs practice I guess. Sure, in theory you could make a python who's threading scales, but in practice it doesn't |
19:25 | < Rhamphoryncus> | CPython is *the* implementation. Probably around 99.99% of the usage, considering it's installed by default on many distros and used by distro tools |
19:25 | <@ToxicFrog> | Ok, so, first of all, I'm talking more about ease of use than scalability, since it already doesn't scale |
19:26 | < Rhamphoryncus> | You could also argue that you could have a C implementation that applies pointer safety. They do exist. Very obscure though |
19:26 | <@ToxicFrog> | My argument being that a local-memory-message-passing threading API would remove, for example, the atomicity concerns you cited as problems with the existing API |
19:27 | < Rhamphoryncus> | Ahh, you mean message passing as a style/technique? |
19:27 | <@ToxicFrog> | Secondly, Pylot was actually developed for high-performance supercomputing clusters and in that context it scales just fine :P |
19:27 | <@ToxicFrog> | (although you will probably want the heavy lifting on individual nodes to happen in numpy or cython) |
19:28 | <@ToxicFrog> | Yes, what did you think I meant? |
19:28 | < Rhamphoryncus> | Interprocess message passing is several orders of magnitude slower than local memory access, so yes it works if you do relatively little of it, but doesn't if you need to do it a lot |
19:29 | < Rhamphoryncus> | Language design? |
19:29 | <@ToxicFrog> | As in, you thought I meant message passing in the Smalltal sense, which is basically what python already does? |
19:30 | < Rhamphoryncus> | huh? |
19:31 | <@ToxicFrog> | <Rhamphoryncus> Interprocess message passing is several orders of magnitude slower... Yes, but again, I'm talking ease of use/correctness, not performance; in the case of Pylot it's often a message pass over the network which is even slower, which is why you try to minimize the amount of message passing you do relative to computation. In a language or implementation that doesn't have the one-environment-per-process limitation, of co |
19:31 | <@ToxicFrog> | urse, you can get away with a memcpy() (fast) or, for immutables, a pointer copy (super fast). |
19:32 | | * Rhamphoryncus nods |
19:32 | < Rhamphoryncus> | I'm all for message passing in that environment |
19:32 | <@ToxicFrog> | <Rhamphoryncus> huh? -- I mean, I meant message passing as in send-receive (as opposed to lock-modify-unlock) parallel programming. You said you thought I meant it "as in language design", which I'm interpreting to mean "message passing" in the sense of, say, Smalltalk's dynamic method dispatch. |
19:32 | <@ToxicFrog> | If you didn't think I meant either, what did you mean? |
19:34 | < Rhamphoryncus> | Python is oriented towards locks, not message passing, so it's fragile |
19:35 | <@ToxicFrog> | Python's threading implementation, you mean |
19:35 | < Rhamphoryncus> | .. no, the language design as a whole |
19:36 | < Rhamphoryncus> | There's a massive amount of shared mutable state |
19:39 | <@ToxicFrog> | That state doesn't need to be shared, though! It is not the case that, for example, every process in a python program needs to have the same modules loaded. |
19:40 | <@ToxicFrog> | Also, sudden terrible/wonderful thought |
19:40 | < Rhamphoryncus> | That's just multiprocessing. It has nothing to do with python |
19:40 | < Rhamphoryncus> | You could apply the same argument to every language |
19:40 | <@ToxicFrog> | I think we're arguing at complete cross purposes |
19:40 | <@ToxicFrog> | I say "send-receive is a better parallel programming API than lock-modify-unlock" |
19:41 | <@ToxicFrog> | And you respond with "but cpython is built around lock-modify-unlock" |
19:41 | < Rhamphoryncus> | yeah |
19:41 | < Rhamphoryncus> | I'm coming at it from language design. It should support and encourage send-receive rather than lock-modify-unluck |
19:50 | <@ToxicFrog> | Right. But what I'm getting at is that at the language level, disregarding all the implementation stuff, python works Just Fine with send-receive |
19:50 | <@ToxicFrog> | Anyways, the terrible/wonderful thought |
19:50 | <@ToxicFrog> | send-receive and lock-modify-unlock are the two main schools of parallel programming |
19:51 | <@ToxicFrog> | However, lock-modify-unlock is also one of the main version control architectures |
19:51 | <@ToxicFrog> | The other being copy-modify-merge |
19:51 | <@ToxicFrog> | I wonder what a copy-modify-merge parallel programming architecture would look like? |
19:53 | < Rhamphoryncus> | It works fine for the app you mentioned. It's totally inadequate for YASTTC |
19:54 | < Rhamphoryncus> | probably STM :) |
19:55 | <@ToxicFrog> | STM? |
19:55 | < Rhamphoryncus> | software transactional memoroy |
19:56 | <@ToxicFrog> | Goddamnit, someone beat me to it |
19:56 | < Rhamphoryncus> | It's all the rare, heh |
19:56 | < Rhamphoryncus> | rage* |
20:44 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has joined #code |
20:50 | < Rhamphoryncus> | mmm truth tables |
21:05 | < Rhamphoryncus> | Haw. Just went in a circle. Need a memory layout to backup the mixed-row iteration, one that I can easily rotate. Ended up with the subdivides-into-4 structure and figured out the bit ops to rotate those coordinates. However, I never figured out how to translate mixed-row iteration into that |
21:29 | | cpux [cpux@Nightstar-c5874a39.dyn.optonline.net] has quit [[NS] Quit: Leaving] |
21:39 | < celticminstrel> | How can I tell git that a file it thinks is binary is in fact text? Or does it just not understand UTF-16? |
21:44 | <~Vornicus> | It may not understand UTF-16 |
21:44 | <~Vornicus> | Does it have a BOM at the beginning? |
21:44 | <@ToxicFrog> | celticminstrel: http://stackoverflow.com/questions/777949/can-i-make-git-recognize-a-utf-16-file -as-text |
21:45 | <@ToxicFrog> | (note: first google result for 'git utf-16') |
21:45 | <@ToxicFrog> | Short answer: you need to (a) configure git to recognize that file as text and (b) configure it to use external diff tools that understand UTF-16 |
21:45 | <@ToxicFrog> | A better solution is probably to not use UTF-16, considering how much of a headache it is. |
21:49 | | Attilla_ [Obsolete@Nightstar-faef4021.as43234.net] has joined #code |
21:50 | | Attilla [Obsolete@Nightstar-0dcac30b.as43234.net] has quit [Ping timeout: 121 seconds] |
22:13 | < celticminstrel> | I have no idea whether it needs to be UTF-16; it's the InfoPlist.Strings file that Xcode puts in a project. I don't even know if I need it for anything. |
22:33 | | Attilla_ is now known as Attilla |
22:34 | < ForgeAus> | part of the app most mac apps have that stuff |
22:34 | < ForgeAus> | in the .app bundle |
22:34 | < ForgeAus> | some have several |
22:39 | < celticminstrel> | Does it need to be UTF-16? |
22:55 | < Namegduf> | Why do you need it to recognise it as text? |
22:55 | < Namegduf> | Is it commonly going to need merging? |
22:58 | < celticminstrel> | I don't expect to to ever change, to be honest. |
22:58 | < celticminstrel> | ^it |
22:59 | < Namegduf> | Then I wouldn't bother. |
22:59 | < celticminstrel> | Eh, I guess. |
23:00 | < Namegduf> | Treat it like you would any other kind of weird database file which happens to contain a representation of text somewhere in it. |
23:00 | < Namegduf> | And just not bother having git merging integrate with it. |
23:01 | < celticminstrel> | I'm getting SIGABORT in a compiler-generated destructor... |
23:03 | < celticminstrel> | In free. |
23:03 | < celticminstrel> | It's a call to the delete operator, but does this actually mean the pointer being deleted is invalid? The destructor is invoked before the memory is freed, right? |
23:04 | | ForgeAus [forgeaus@Nightstar-1226a595.tpgi.com.au] has quit [[NS] Quit: ] |
23:11 | <@ToxicFrog> | celticminstrel: yes. Are you sure you aren't deleting the same object twice? |
23:11 | < Rhamphoryncus> | Hrm. I've figured out my translation but so far I've only got a recursive (or looping) algorithm. I could generate a lookup table though.. |
23:11 | <@ToxicFrog> | Memoize! |
23:12 | < Rhamphoryncus> | .. no :) |
23:12 | <@ToxicFrog> | Why not? |
23:13 | < Rhamphoryncus> | For 3 stages of subdivision there's only 64 targets |
23:15 | < Rhamphoryncus> | And saturation will be 100% |
23:15 | < Rhamphoryncus> | So there's no reason to fill it lazily rather than eagerly |
23:15 | < Rhamphoryncus> | I also might need this in GLSL. DUnno yet. |
23:16 | < celticminstrel> | I'm not sure, no. It doesn't look like I am, though. |
23:16 | < celticminstrel> | That said, I've just decided to use shared_ptrs and see if that magically fixes it. |
23:17 | | * Rhamphoryncus notes that exponential hurts. subdivision of 4 gives 256 targets. 8 gives 65536 |
23:17 | < Rhamphoryncus> | 16.. well, not so nice ;) |
23:18 | < Rhamphoryncus> | But I don't want that much loaded at once anyway |
23:19 | < celticminstrel> | That seems to have fixed the issue. |
23:19 | <@ToxicFrog> | celticminstrel: woo |
23:19 | <@ToxicFrog> | (also valgrind and gdb are your friends) |
23:20 | <@ToxicFrog> | (I think. Does valgrind support c++?) |
23:20 | < celticminstrel> | I guess somehow I was deleting it twice? |
23:20 | < celticminstrel> | I have no idea. |
23:20 | <@ToxicFrog> | Probably, yes |
23:20 | < celticminstrel> | I tried using the Instruments tool with Xcode, but that was kinda complicated and confusing. |
23:20 | <@ToxicFrog> | IME the most typical cause of this is "object is inserted into container, container is deleted and deletes all of its contents automatically, object is later deleted by original creator' |
23:20 | < celticminstrel> | Ah. |
23:21 | <@ToxicFrog> | But this is just one of the many, many ways manual memory management can go horribly wrong! |
23:21 | < celticminstrel> | Not sure if that could've been what happened here, but maybe. There were three lists and a string in the class being destructed. |
23:22 | < celticminstrel> | And yes. That's why I've been shifting towards shared_ptr and reference counting. :P |
23:22 | < celticminstrel> | I think there's one or two places I've yet to make the switch. |
23:23 | < celticminstrel> | Not counting the ObjC objects used in reading a plist. |
23:29 | < Namegduf> | Valgrind does. |
23:31 | < celticminstrel> | if(A); else if(B) {...} is equivalent to... if(!A && B)? |
23:32 | <@ToxicFrog> | Yes. |
23:34 | | iospace is now known as io|FOOD |
--- Log closed Sun Jun 10 00:00:06 2012 |