--- Log opened Mon Mar 26 00:00:48 2007 |
--- Day changed Mon Mar 26 2007 |
00:00 | <@McMartin> | That'll do it too. |
00:01 | <@McMartin> | MSVCRT will fragment the heap if you aren't careful, though. |
00:01 | <@McMartin> | We used to malloc() our graphics commands in UQM, but this caused heap "exhaustion" even when they were freed. |
00:22 | | Chalcedon [Chalceon@Nightstar-5724.dialup.ihug.co.nz] has joined #code |
00:22 | | mode/#code [+o Chalcedon] by ChanServ |
00:22 | | Chalcedon [Chalceon@Nightstar-5724.dialup.ihug.co.nz] has quit [Quit: ] |
00:46 | | Chalcedon [Chalceon@Nightstar-4700.dialup.ihug.co.nz] has joined #code |
00:46 | | mode/#code [+o Chalcedon] by ChanServ |
00:55 | < MyCatVerbs> | McMartin: I thought competently-designed malloc() and free() implementations were supposed to merge adjacent blocks on the free-list if possible, occasionally? |
00:56 | <@McMartin> | Uh, well, the theory's been known for awhile, but there haven't been widespread implementations of it until the mid-2000s. |
00:56 | <@McMartin> | ... in part because, IIRC, you need a huge workspace to get it working right, and space used for bookkeeping is space not available for actually handing to the program, etc. |
00:59 | | Chalcedon [Chalceon@Nightstar-4700.dialup.ihug.co.nz] has quit [Quit: ] |
01:07 | < MyCatVerbs> | McMartin: oh? Sort the free list by the starting addresses of each block, then compare pairs of adjacent free-list items to see if they point to blocks which are contiguous. The second part should be O(N) in time and O(1) in memory, while the first takes however long your sorting algorithm does. Or are there other things you need to do as well? |
01:09 | <@McMartin> | O(n) in time, where n is the size of the heap. |
01:09 | <@McMartin> | Which is, um, 2GB. |
01:09 | <@McMartin> | The "competent" algorithm you refer to is O(log n) in space and time, IIRC. |
01:09 | | * McMartin would have to check. |
01:10 | < MyCatVerbs> | Mmmmmmnuuu, not the size of the heap, the size of the *free list*. Which is a linked list referring to contiguous blocks of memory. Rather lower n value there. |
01:10 | <@McMartin> | Not if you've fragmented the heap thanks to a hojillion 40-byte mallocs. |
01:10 | <@McMartin> | Here we go. http://en.wikipedia.org/wiki/Buddy_memory_allocation |
01:11 | <@McMartin> | It was in Knuth. It wasn't in glibc until 2003 or so, and it was the first widespread C runtime I know of that used it. |
01:11 | < MyCatVerbs> | Oooooh, spiffy. Thank you. |
01:12 | < MyCatVerbs> | If I understand this correctly, Linux hands out whole memory pages and then glibc splits 'em up with BMA? |
01:13 | <@McMartin> | I'd have to check the code, but I suspect the largest buddy blocks are multiple pages long. |
01:13 | <@McMartin> | A page is only, like, 4KB, right? |
01:13 | < MyCatVerbs> | Would have to be, aye. |
01:15 | < MyCatVerbs> | If I understand this correctly, if any one human being could actually implement every single algorithm in Knuth, they'd be able to build the fastest OS in the universe? =D |
01:15 | <@McMartin> | Probably not, for several reasons. |
01:15 | <@McMartin> | (a) Knuth includes implementations |
01:16 | < MyCatVerbs> | Ooooh. Nice. |
01:16 | <@McMartin> | (b) Knuth covers way more than than way less than what a modern OS would require |
01:16 | <@McMartin> | (c) Knuth includes a great many algorithms that aren't that great either. |
01:16 | < MyCatVerbs> | ...what? |
01:16 | < MyCatVerbs> | Re: (b), but doesn't Knuth include *everything*? It's many volumes long! |
01:16 | <@McMartin> | Well, for instance, volume 2 is "seminumerical algorithms", which don't show up a lot in OS work. |
01:16 | <@McMartin> | It's three volumes long. |
01:17 | <@McMartin> | I have at least four dozen CS textbooks. |
01:17 | < MyCatVerbs> | If you have to split a book into volumes, then it is damn long. And each of Knuth's volumes is independantly capable of breaking toes. :/ |
01:17 | <@McMartin> | I haven't checked what all is in Volume 1, but Volume 2 is numerical stuff, and Volume 3 is entirely searching and sorting. |
01:18 | <@McMartin> | I don't think he particularly gets into graph theory at all, and AI and parsing are entirely untouched. |
01:18 | < MyCatVerbs> | Huh. Entirely? |
01:18 | <@McMartin> | It's a big field. |
01:18 | <@McMartin> | Mostly Dealt With now, because you either Just Use Quicksort or you maintain a red-black tree and read it in preorder. |
01:18 | < MyCatVerbs> | But >99% of the time everybody just uses quicksort, or... |
01:19 | <@McMartin> | And, uh, quicksort kind of sucks. |
01:19 | <@McMartin> | And, well, These books were first written in the 70s. |
01:19 | < MyCatVerbs> | We have anything better? |
01:19 | <@McMartin> | QS is technically O(n^2). |
01:19 | <@McMartin> | It just usually isn't. |
01:19 | <@McMartin> | Heapsort is always O(n log n). |
01:19 | < MyCatVerbs> | Worst-case. And isn't that a lower bound for all sorting algo... okay, no it isn't. |
01:19 | <@McMartin> | For specifically sorting integers, Radix Sort is O(n). |
01:20 | < MyCatVerbs> | Oh, I see. Of course, yes, 'cuz heapsort is n heap reorganisations, which are themselves logn in the worst case, right? |
01:21 | <@McMartin> | Right. |
01:22 | <@McMartin> | Merge sort can be used as a sorter in its own right too, but that's kind of perverse. |
01:22 | < MyCatVerbs> | Hee. So how come standard libraries usually include a QS implementation and only very rarely any others? |
01:23 | <@McMartin> | It's in the C standard and people inherit from that. |
01:24 | <@McMartin> | In Java, you generally maintain sorted data in red-black trees instead of arrays. |
01:25 | <@McMartin> | Also, according to wiki, C++ actually uses "introsort" which apparently uses quicksort until it starts noticing that it's sucking and then switches over to heapsort. |
01:25 | < MyCatVerbs> | Oh, sweet. Very spiffy. |
01:27 | <@McMartin> | ... and then uses insertion sort for the last three, because it's faster on non-arrays, but whatever =P |
01:27 | <@McMartin> | http://en.wikipedia.org/wiki/Introsort |
01:31 | < MyCatVerbs> | Buuuut if possible, it's fastest on huge sets to map your inputs to a range of integers and radix sort? |
01:31 | <@McMartin> | Depends on how expensive the mapping process is. |
01:32 | <@McMartin> | Also don't forget the difference between throughput and response time. |
01:32 | <@McMartin> | If objects need to be regularly inserted but don't mutate, insertion sort will beat that |
01:32 | <@McMartin> | Because each addition is O(n). |
01:32 | < MyCatVerbs> | Jah. It's *usually* possible to do so cheaply for many practical problem sets though, ne? |
01:33 | <@McMartin> | I'm not convinced that's true, but you might be able to get away with it for strings. |
01:33 | < MyCatVerbs> | Insertion sort on arrays or insertion sort on linked lists, do you mean? |
01:33 | < MyCatVerbs> | (Or is it irrelevant and I'm missing a point here?) |
01:34 | <@McMartin> | Depends on how your arrays are implemented~ |
01:34 | <@McMartin> | Linked lists was the intent, though, since if there's a continuous stream of objects arriving, whatever you're inserting into had better be growable. |
01:34 | <@McMartin> | (Ideally you'd use a binary tree of some kind so that insertion was only O(log n), but even the o(n) per insertion beats the O(1) insertion followed by O(n log n) sort) |
01:34 | | * MyCatVerbs nods. Arrrr. |
01:35 | <@McMartin> | Also, apparently the constant cost and the memory requirements of radix are so high that it's only actually an improvement on incredibly vast data sets. |
01:36 | < MyCatVerbs> | Wait, what? O(log n) per insertion is going to cost you O(nlogn) over the whole list, which is the same complexity as doing an insertion sort on a linked list, nu? |
01:36 | < MyCatVerbs> | Oh, pity. |
01:36 | <@McMartin> | Assuming you only care about it being sorted at the end. |
01:36 | <@McMartin> | If you want it sorted all the time... |
01:36 | <@McMartin> | Because, say, you are a directory of some kind in which stuff gets looked up as well as added |
01:37 | <@McMartin> | Then it needs to be re-sorted after every insertion. Unless you use a structure in which inserts retain sortedness. |
01:37 | <@McMartin> | http://en.wikipedia.org/wiki/Radix_sort |
01:37 | < MyCatVerbs> | Ah, sorted allodertime. Hadn't thought of that. |
01:39 | <@McMartin> | And radix, QS, and heapsort all fall on their face primarily when dealing with a list that is mostly-sorted to begin with. |
01:39 | <@McMartin> | (The binary tree is fast to search as well as to insert into, so it's just a win all around) |
01:40 | < MyCatVerbs> | Ahhh, I see. So this is why "Just Use Quicksort" is only a 99% of the time thing, rather than 99.5%. |
01:41 | <@McMartin> | Yes. |
01:41 | <@McMartin> | Well, there's also function call overhead, in C. |
01:41 | <@McMartin> | qsort() uses function pointers to do the comparison, which means C++ template-based versions will blow the pants off of it. |
01:41 | <@McMartin> | Since the core operations will be inlined. |
01:41 | | * MyCatVerbs nods. |
01:42 | <@McMartin> | And we've been totally ignoring stability of sorts here, but radix and merge are both stable. |
01:42 | <@McMartin> | (that is, if two things are equal, they stay in the same order as they were originally) |
01:43 | <@McMartin> | (Sometimes important for key-value pairs, I guess) |
01:43 | < MyCatVerbs> | SUB instead of CALL, POP, MOV, POP, MOV, SUB, RET? |
01:43 | <@McMartin> | Indeed. |
01:44 | <@McMartin> | (The object code size bloats, though, since it's basically generating a complete specialized function for every type you ever call qsort with) |
01:44 | <@McMartin> | (But such is the nature of the STL) |
01:44 | < MyCatVerbs> | Aaand I forgot the overhead of pushing the operands on to the stack, too. Oops. |
01:44 | <@McMartin> | We can leave it at "inlining things generally makes them faster." |
01:45 | <@McMartin> | The only times it doesn't is when it ends up inflicting Wackiness upon the instruction cache. |
01:45 | < MyCatVerbs> | Jah, but only embedded platforms and algorithms which have to fit into instruction cache ever care very much about code size any more, right? |
01:45 | <@McMartin> | Pretty much. |
01:45 | <@McMartin> | Though it will still have a noticable effect. |
01:45 | < MyCatVerbs> | But I'll be amazed should I ever see a sorting algorithm whose representation takes more than thirty kilobytes of machine code. ¬¬ |
01:45 | | * McMartin recalls a lab in which one wrote pointless array-based math programs and tweaked various parameters to get a map of the cache. |
01:46 | < MyCatVerbs> | That sounds like a lot of fun. |
01:47 | <@McMartin> | It was cool to look at at the end, anyway. |
01:47 | | * MyCatVerbs nods. |
01:48 | | * McMartin catches up on his SpeedIF archives. |
01:48 | | * McMartin also ... |
01:48 | < MyCatVerbs> | Looking at radix sort - is it the queues that make it expensive, or the fact that you do k passes for length-k keys? |
01:49 | <@McMartin> | I would guess the queues. |
01:49 | < MyCatVerbs> | Push-up stacks are expensive? |
01:49 | <@McMartin> | The MSB sort should not require much, since those "passes" would be happening during the "string compare" step of the comparison sort. |
01:50 | <@McMartin> | Well, if you don't want to be doing dynamic allocation all over the place, you're wasting space... |
01:50 | | * McMartin finds http://www.stanford.edu/~mcmartin/newguitarist.jpg while browsing his IF directory. |
01:51 | < MyCatVerbs> | Gandalf would've made a Hell of a bass player. All they need to do after that is go down to Moria for the drummers. ^^ |
01:53 | <@McMartin> | Re: the queues, even having cues means you're eating extra space, and thus makes heapsorters and quicksorters sad because both are in-place. |
01:54 | <@McMartin> | Blah |
01:54 | <@McMartin> | having queues |
01:54 | | * McMartin loses at English |
01:56 | | * MyCatVerbs loses at Pool. |
02:17 | | gnolam [Lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Quit: Z?] |
02:22 | | ReivZzz is now known as ReivClass |
02:50 | | Chalcedon [Chalceon@Nightstar-5665.dialup.ihug.co.nz] has joined #code |
02:50 | | mode/#code [+o Chalcedon] by ChanServ |
03:43 | | Chalcedon [Chalceon@Nightstar-5665.dialup.ihug.co.nz] has quit [Connection reset by peer] |
04:01 | <@Raif> | I'm not a huge fan of heapsort. |
04:01 | <@Raif> | It annoys me because it's not stable, and the only time I've ever wanted to use it was on a priority queue which needed to be stable. :) |
04:02 | <@McMartin> | In which case quicksort is even worse~ |
04:02 | <@Raif> | Yeah. |
04:26 | <@Vornicus-Latens> | Merge Sort O'Clock |
04:27 | <@Vornicus-Latens> | Well, okay, technically just sorted insertion, but |
04:30 | | Derakon [~Derakon@Nightstar-12737.sea2.cablespeed.com] has joined #code |
04:30 | | mode/#code [+o Derakon] by ChanServ |
04:30 | <@Derakon> | I have figured out why my AI ship is behaving like a dumbass! |
04:30 | <@Vornicus-Latens> | Define "dumbass" |
04:31 | <@Derakon> | It is trying to engage its "circle the player's ship" behaviour, but that behaviour is broken, causing the desired circling radius to be way too small. |
04:31 | <@Derakon> | Um, it flies parallel to the player without ever trying to aim at him. |
04:32 | <@Vornicus-Latens> | Ah |
04:40 | <@Derakon> | I hate debugging geometry... |
04:41 | <@Derakon> | This code clearly does make the ship circle the player, but the radius is far too small, and I'm not certain if that's a side-effect of continually-shifting target locations or not. |
04:41 | <@Derakon> | (Basically, every frame the ship says "I want to be at a point a distance d away from the player's ship, perpendicular to my current vector to that ship", and then aims and thrusts towards that location) |
04:42 | <@Vornicus-Latens> | But it never gets there. |
04:42 | <@Derakon> | Well, no. |
04:42 | <@Vornicus-Latens> | How close is the target. |
04:42 | <@Vornicus-Latens> | Or, rather, how small is d? |
04:42 | <@Derakon> | The radius desired is 525 pixels; the actual radius is something like 200. |
04:44 | | * Derakon ponders just having the ship aim at the player unless it's within some radius of the player or if the player is aiming at the ship. |
04:44 | <@McMartin> | Shouldn't that be if it actually is in some radius, it should aim at it and not thrust? |
04:45 | <@Derakon> | Oh, that part's easy. |
04:45 | <@Derakon> | But the thing is that I don't want the ship to aim directly at the player and just fly over it. |
04:45 | <@McMartin> | Right. |
04:45 | <@Derakon> | Continually-updating circle targets are not the answer either, it seems. |
04:46 | <@Derakon> | So maybe just "if my current vector will take me within X pixels and more than Y pixels from the player, then continue on; otherwise adjust to suit those ranges." |
04:49 | <@Derakon> | ...okay, before I start deriving a line-circle intersection test, I should find it online. |
04:52 | | * Derakon finds surprisingly little. |
04:52 | <@Vornicus-Latens> | http://mathworld.wolfram.com/Circle-LineIntersection.html |
04:52 | <@Derakon> | Ahh, excellent. |
05:07 | <@McMartin> | Inform 7 has a Linux build now. |
05:07 | <@McMartin> | "The text substitution ['] is now synonymous with [apostrophe], and makes extended runs of Cockney dialogue easier to type ("put down that bleedin['] [']eavy Joanna", and so forth)." |
05:09 | <@ToxicFrog> | ...why can't you just nest ' inside ""? |
05:10 | <@McMartin> | Because ' translates to ". |
05:10 | <@McMartin> | And " doesn't nest inside ". |
05:10 | <@Vornicus-Latens> | (that would be a trick) |
05:11 | <@McMartin> | And [] is the callout/interpolate operator, so. |
05:11 | <@ToxicFrog> | ... |
05:11 | | * ToxicFrog thwaps |
05:12 | <@McMartin> | Uh, bear in mind that the metaphor here is "written text", not "C". |
05:12 | <@McMartin> | So, no, \ is not an escape operator. |
05:12 | <@McMartin> | And nested quotes in English are done with '' on the inside. |
05:15 | <@McMartin> | Though the quote he gave ought to work anyway; it's "put down that 'eavy bleedin' Joanna" that's ambiguous. |
05:16 | <@McMartin> | (In particular, ' in possessives has always worked fine.) |
05:17 | <@Derakon> | ...okay, the "get close" code kinda works, except for the part where sometimes the ship decides that it really wants to visit Tau Ceti. |
05:18 | <@ToxicFrog> | McMartin: I don't see why nested quotes mean you have to escape ' with [] |
05:18 | <@ToxicFrog> | How is "put down that 'eavy bleedin' Joanna" ambiguous? |
05:18 | <@McMartin> | Because that is clearly: |
05:18 | <@McMartin> | put down that "eavy bleedin" Joanna |
05:18 | <@Derakon> | It's more that typing that directly would give "put down that "eavy bleedin" Joanna". |
05:19 | <@McMartin> | Presented as an inline quote, not a blockquote. |
05:19 | <@ToxicFrog> | Aah. Yes. |
05:19 | <@ToxicFrog> | See, the bit I object to here is ' getting autotranslated to " |
05:19 | <@McMartin> | The idea here is that when writing dialogue inside a string, that's how it's done. |
05:19 | <@McMartin> | Or rather, inside an inline quote. |
05:20 | <@McMartin> | And it's not really an escape. |
05:20 | <@McMartin> | It's just a particularly silly interpolation, something like "Understand ' as Unicode character 39" or something. |
05:21 | <@ToxicFrog> | ...oh, right. I see what you're saying. [[ Instead of touching the button, say "A voice behind you snaps 'Oi! Don't touch that!'" ]] |
05:21 | <@McMartin> | Like the similar ones for greek letters and what not. |
05:21 | <@McMartin> | Precisely. |
05:21 | <@McMartin> | Now, you could go the C approach and use \" |
05:21 | <@McMartin> | But the goal is to look like text and allow people who write do so according to the normal rules. |
05:21 | | * Derakon putters around with the GoW2 extras. |
05:21 | <@McMartin> | (I6 used ~ for " and ^ for line break, which is the worst of all worlds) |
05:22 | <@McMartin> | (And required unicode escapes for "~" itself, but then "~" isn't in ZSCII.) |
05:22 | <@ToxicFrog> | Right. My argument is that ' should render as ' and you can use ["] as nested doublequotes, which are, IME, much less common than apostrophes. |
05:22 | <@ToxicFrog> | Alternately, permit [[ say 'A voice behind you snaps "Oi! Don't touch that!"' ]] a la bash or Lua. |
05:23 | <@McMartin> | again, ' only translates at (apparently) word edges, and it should really be modal and only translate first at a word beginning and then at a word end. |
05:23 | <@McMartin> | I'm pretty sure WSIF uses " more than word-edged 's. |
05:23 | <@McMartin> | Since the word-edged 's are all either (a) plural possessives, which are rare, or (b) scare quotes being used inside dialogue. |
05:24 | <@McMartin> | Dialogue is pretty common. |
05:24 | <@McMartin> | [] is also used for style markers, like [italic type], and you can hook in arbitrary string-generating code to them as well. |
05:36 | | * Vornicus-Latens should play more IF. |
05:37 | <@Vornicus-Latens> | Only problem is I keep constantly running into "There's a right word for this but I have no idea what it is at all" |
05:37 | <@Vornicus-Latens> | Even on games that are supposedly without "guess the verb" problems. |
05:38 | <@McMartin> | Key word, "supposedly"~ |
05:39 | <@McMartin> | Have you cleared Dreamhold? |
05:40 | <@Vornicus-Latens> | No, never heard of it |
05:40 | <@ToxicFrog> | I actually found Dreamhold to be a much worse game than Spider and Web. ;.; |
05:41 | <@ToxicFrog> | Andrew Plotkin game. Meant to be an introduction to IF. |
05:41 | | * Vornicus-Latens even got aggravated at Spider and Web for this sort of thing. "what the hell words /do/ you know, you infernal device!?" |
05:41 | <@ToxicFrog> | Serves well as such except that it's also full of bizarre guess-the-world-mechanics puzzles in the latter half or so. |
05:42 | <@McMartin> | Well, that's for the Discoveries Bonus Ending. |
05:43 | <@McMartin> | Plotkin, I note, tends to disable many default Inform actions. |
05:44 | <@McMartin> | http://www.eblong.com/zarf/if.html |
05:45 | <@Vornicus-Latens> | oh look, a z8 |
05:46 | <@ToxicFrog> | McMartin: "bonus ending"? ISTR there being three endings but I don't recall any of them being more correct than the others. |
05:46 | | * McMartin also recommends Lists and Lists. |
05:47 | <@McMartin> | TF: The one where you personally stride into the heavens. |
05:47 | <@McMartin> | As opposed to the ones where you fix the portal. |
05:47 | <@Vornicus-Latens> | that's the one that's a scheme tutorial? |
05:47 | <@McMartin> | Vorn: Yes. |
05:48 | <@McMartin> | It also has an astonishingly long piece of doggerel at the end when you answer all the questions. |
06:14 | | * Derakon mutters, considers adding a "draw circle" function to the engine so he can better debug this "AI". |
06:25 | <@Derakon> | I don't *think* I've made any mistakes in my implementation of the math Vorn linked, but this is clearly not working: http://pastie.caboo.se/49499 |
06:28 | <@Derakon> | ...oh, duh. That page assumes circles are centered on the origin. >.< |
06:29 | | * McMartin finds a bug in Linux!I7. |
06:30 | <@Vornicus-Latens> | yes, translate the coordinates so that you work from the center of the circle. |
06:30 | <@Derakon> | Yep. |
06:30 | | ReivClass is now known as Reiver |
06:32 | <@Vornicus-Latens> | Really the most graceful of the three intersection types is Circle-Circle. |
06:32 | <@Derakon> | And then Line-Line. |
06:33 | < Reiver> | ? |
06:33 | <@Derakon> | You have Circle-Circle, Line-Line, and Line-Circle, Reiver. |
06:33 | < Reiver> | ok. |
06:33 | | Syloq [Syloq@NetAdmin.Nightstar.Net] has quit [Connection reset by peer] |
06:33 | <@Derakon> | And then there's axis-aligned bounding boxes, which are almost as trivial as circle-circle. |
06:33 | <@Vornicus-Latens> | or, more precisely, you have intersections between circle and circle. |
06:33 | <@Vornicus-Latens> | etc |
07:12 | <@Raif> | Oriented bounding boxes, while not trivial, are also quite elegant. |
07:12 | | Derakon is now known as Derakon[AFK] |
07:13 | | * McMartin likes OBBs. |
07:13 | <@Raif> | Me too. |
07:13 | <@Raif> | There's very little you can't do with them. |
07:13 | < Doctor_Nick> | object boobie boobs |
07:14 | <@Raif> | OBB hierarchies with bounding spheres pretty much covers any shape you can imagine without too much fudge. |
07:14 | < Doctor_Nick> | bounding spheres :D |
07:14 | <@Raif> | Hm? |
07:14 | <@Raif> | For trivial rejection... spheres are really easy to test. :) |
07:15 | < Doctor_Nick> | double entendres ;o |
07:15 | <@McMartin> | SVAF uses nested OBBs coated in an AABB. |
07:15 | <@McMartin> | AABBs are even easier to test. |
07:15 | <@McMartin> | Well, sort of. |
07:15 | <@McMartin> | Depends on how expensive your multiplier is. |
07:16 | <@Raif> | SVAF? |
07:17 | <@McMartin> | Simple Vector Array Format, the 3d model format I've been designing on and off (mostly off). |
07:17 | <@Raif> | I always prefer the largest primitive to be a sphere... you don't have to recalculate it every time the model reorients. |
07:17 | <@McMartin> | Basically an abstraction of Sable's graphics engine. |
07:17 | | * McMartin ndos |
07:17 | <@McMartin> | nods, too |
07:17 | <@Raif> | It's only used for a rough ballpark anyway. |
07:20 | <@ToxicFrog> | AABB? |
07:20 | <@ToxicFrog> | Oh. |
07:20 | <@ToxicFrog> | Axis-aligned. |
07:20 | <@McMartin> | Yeah |
08:06 | | Chalcedon [Chalceon@Nightstar-6030.dialup.ihug.co.nz] has joined #code |
08:06 | | mode/#code [+o Chalcedon] by ChanServ |
08:23 | | Chalcedon [Chalceon@Nightstar-6030.dialup.ihug.co.nz] has quit [Quit: gone] |
08:24 | < Reiver> | What's the minimum practical size you can get away with for an XP, and Ubuntu install? |
08:25 | < Reiver> | In the context of "Determining respective partition sizes". |
08:25 | < Reiver> | With personal files, etc, to be stored on a 3rd partition. |
08:25 | < Reiver> | 3 for XP, 2 for Ubuntu? More, less? |
08:26 | <@Vornicus-Latens> | How big is yoru hard drive? |
08:31 | <@Serah> | XP 3.5 |
08:32 | <@Serah> | If you pan to patch. |
08:32 | <@Serah> | Otherwise you can go with 1.5 for SP1 and 2 for SP2 |
08:32 | <@Serah> | plan* |
08:32 | <@Serah> | I also suggest getting partition magic, it can change the partition sizes after formatting without breaking anything. |
08:36 | < Reiver> | 40GB. |
08:42 | <@Serah> | My C: drive is 3.5GB, and contains nothing but XP ( -SP2 ) and I have 100 megs left. |
08:49 | < Doctor_Nick> | the ubuntu beta just came out |
08:49 | < Doctor_Nick> | and you get alot more bang for your buck with the default ubuntu install :P |
08:49 | < Doctor_Nick> | (your buck being the cost of the cd-r, i guess) |
08:51 | < Doctor_Nick> | but yeah, ubuntu is around 2 gb |
09:28 | <@Vornicus-Latens> | I'd recommend about 5GB a pop. |
09:28 | <@Vornicus-Latens> | If you had a bigger drive I'd recommend 10GB per. |
09:55 | | * Reiver nods to Vorn. |
09:55 | < Reiver> | Nick: This machine requires the ability to boot to windows, even though the creator would rather prefer not. |
09:56 | < Reiver> | cf: Specialist software, and OpenOffice can't quite match Excel - not least because the standard format assumed is frequently horridly complicated Excel sheets. |
09:56 | < Reiver> | (This is for Chalcy, who has to deal with Scientific stuff a lot.) |
09:56 | | * Reiver nod, though. |
09:56 | < Reiver> | I suggested 4-5GB for Windows, 3-4 for Ubuntu. |
09:57 | < Reiver> | It sounds like at the very worst, I didn't screw up completely. :) |
10:10 | <@Vornicus-Latens> | Also, for scientific applications I would never go with less than 200GB drive. |
10:10 | <@Vornicus-Latens> | Personally. |
10:16 | | KBot [~karma.bot@Nightstar-29561.neoplus.adsl.tpnet.pl] has joined #Code |
10:16 | | AnnoDomini [~farkoff@Nightstar-28964.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
10:16 | < KBot> | KarmaBot v1.19. online and ready. Type "!help commands" for command list. |
10:16 | | KarmaBot [~karma.bot@Nightstar-28964.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
10:17 | | KBot is now known as KarmaBot |
10:20 | < Doctor_Nick> | !help commands |
10:20 | < KarmaBot> | List of commands: !fs; !calc; !roll (!dice and !pice also supported); !incant; !incantx; !spellcost; !xpreq; !gold; !day; /ctcp KarmaBot JOIN #channel; /ctcp KarmaBot PART #channel; !flipon; !flipoff; !8Ball; !schlock; !dmbot; !pointvalue (!pointbuy also works); !autofire; !music; !stopmusic; !listmusic; |
10:21 | < Doctor_Nick> | !pice |
10:21 | < Doctor_Nick> | !dice |
10:21 | < Doctor_Nick> | !roll |
10:21 | < Doctor_Nick> | >:( |
10:21 | < Doctor_Nick> | !dice 1d20 |
10:21 | < KarmaBot> | [Doctor_Nick] rolled 1d20: (2) = 2. |
10:21 | < Doctor_Nick> | !dice 1d20 |
10:21 | < KarmaBot> | [Doctor_Nick] rolled 1d20: (6) = 6. |
10:21 | < Doctor_Nick> | !dice 3d6 1d4 |
10:21 | < KarmaBot> | [Doctor_Nick] rolled 3d6 1d4: ((4+2+4)) = 10. |
10:22 | < Doctor_Nick> | ? |
10:22 | < Doctor_Nick> | !dice 3d6 |
10:22 | < KarmaBot> | [Doctor_Nick] rolled 3d6: ((6+6+3)) = 15. |
10:22 | < Doctor_Nick> | !dice 1d4 |
10:22 | < KarmaBot> | [Doctor_Nick] rolled 1d4: (2) = 2. |
10:22 | | AnnoDomini [~farkoff@Nightstar-29561.neoplus.adsl.tpnet.pl] has joined #Code |
10:22 | | mode/#code [+o AnnoDomini] by ChanServ |
10:22 | < Doctor_Nick> | !dice 1d6 1d20 |
10:22 | < KarmaBot> | [Doctor_Nick] rolled 1d6 1d20: (1) = 1. |
10:22 | < Doctor_Nick> | eh |
10:23 | < Doctor_Nick> | !dice 3d73 |
10:23 | < KarmaBot> | [Doctor_Nick] rolled 3d73: ((13+8+65)) = 86. |
11:36 | | gnolam [Lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
11:36 | | mode/#code [+o gnolam] by ChanServ |
11:58 | | Doctor_Nick [~fdsaf@Nightstar-27777.rag-a.fsu.edu] has quit [Ping Timeout] |
12:30 | | Doctor_Nick [~fdsaf@Nightstar-27777.rag-a.fsu.edu] has joined #code |
13:32 | | * Vornicus-Latens plays Dreamhold. |
14:00 | | * Vornicus-Latens gets a bit lost, makes a map. |
14:22 | | Reiver is now known as ReivZzz |
14:35 | <@Vornicus-Latens> | ...hey, that's actually a sensical map. |
14:56 | | * Vornicus-Latens empties vast quantities of black stuff into I don't know where. |
15:16 | | * Vornicus-Latens gets the fifth mask, tries to figure out the river, the pyramid and translucent dome, the lead door, and the iron corridor. |
15:21 | | * Vornicus-Latens figures out the river. |
15:25 | | * Vornicus-Latens finds the 7th mask, tries to figure out how to get to it. |
15:35 | | * Vornicus-Latens has seven masks. |
15:50 | | * Vornicus-Latens tries to determine what it is about the masks... |
15:57 | | * Vornicus-Latens Gets it. |
16:06 | <@Vornicus-Latens> | ...okay now I'm impressed with the Inform library. |
16:06 | <@Vornicus-Latens> | >take gum |
16:06 | <@Vornicus-Latens> | Which do you mean, the small gum blob or the big gum blob? |
16:06 | <@Vornicus-Latens> | >both |
16:06 | <@Vornicus-Latens> | small gum blob: Taken. |
16:06 | <@Vornicus-Latens> | big gum blob: Taken. |
16:21 | | * Vornicus-Latens needs another gum. |
16:24 | | Vornicus-Latens is now known as Vornicus |
16:43 | | * Vornicus win. |
16:43 | <@Vornicus> | I still need to figure out a few things, though - the plant, the harp, and the apple; the lead door; catwalk repairs. |
17:06 | <@Vornicus> | oh, and the basket in the dome. |
17:12 | <@Vornicus> | oh, and the pit, but I think that's a red herring. |
17:13 | | * ToxicFrog tries to remember where the basket in the dome is |
17:13 | <@ToxicFrog> | The thing for fire marbles? |
17:13 | <@Vornicus> | The Dark Dome has five regions - east west north south and center. |
17:13 | <@Vornicus> | THe center has a pyramid, and if you open the pyramid there is a wire basket that you can't move in it. |
17:14 | <@ToxicFrog> | Aah. Yes, that's what I was thinking of. |
17:14 | <@Vornicus> | I couldn't think of anything useful to do with it. |
17:14 | <@ToxicFrog> | You put stuff in it. |
17:14 | <@Vornicus> | Meanwhile, I need an egg-sized piece of gum to fit the third hole in the catwalk, and then there's the plant the harp the apple and the lead door. |
17:15 | <@ToxicFrog> | I don't remember what you do with/to the plant, harp, or apple, and the lead door is openable but, again, I don't remember how. |
17:15 | <@Vornicus> | right |
17:15 | <@ToxicFrog> | For plugging the last hole I think you use something other than gum, you won't find a blob of gum that large. |
17:16 | <@Vornicus> | Right, I figured that. |
17:16 | <@ToxicFrog> | I *do* remember what you need to put in the wire basket, and I think I remember what it does. |
17:16 | | MyCatVerbs [~mycatownz@Nightstar-13709.lurkingfox.co.uk] has quit [Ping Timeout] |
17:17 | | MyCatVerbs [~mycatownz@Nightstar-13709.lurkingfox.co.uk] has joined #code |
17:17 | | * Vornicus never picked the fire berries. |
17:20 | <@ToxicFrog> | Not those, although they also have their use - you haven't lit the beacon yet? |
17:21 | | * ToxicFrog thought you needed to in order to get a certain mask |
17:21 | <@Vornicus> | The beacon you can light with the torch, which you can light by stuffing it in the fireberry bush. |
17:21 | <@ToxicFrog> | Aah. |
17:21 | <@ToxicFrog> | Anyways, the berries aren't what goes in the wire basket. |
17:21 | <@ToxicFrog> | You should have seen something similar earlier in the game :P |
17:22 | <@Vornicus> | Hrm... |
17:24 | <@Vornicus> | there's the cage, but I don't think that moves. |
17:26 | <@ToxicFrog> | > x fireplace |
17:26 | <@Raif> | wield fireplace |
17:27 | <@Vornicus> | ...I didn't think of that. |
17:27 | <@ToxicFrog> | *** you have combusted *** |
17:27 | <@ToxicFrog> | Vornicus: examining the fireplace? |
17:27 | <@Vornicus> | Yeah |
17:27 | <@ToxicFrog> | It's a fire in a *wizard's house* |
17:27 | <@Vornicus> | I examined the landscape. |
17:27 | <@ToxicFrog> | Of course it's going to be interesting! |
17:27 | <@Raif> | ... |
17:27 | <@Vornicus> | ...well, yes, but |
17:27 | | * Raif shames vorn in the name of text adventure players everywhere. |
17:28 | <@Vornicus> | Raif: I'm the kind of text adventure player that even in games where they only use standard verbs, I don't know what verb to use. |
17:28 | <@Raif> | Usually "fuck" |
17:29 | <@Raif> | In ballyhoo when I had to use that one on the giant woman under the bigtop, I had great sadness. |
17:29 | <@Raif> | Except that they refused to recognize my attempt at thinking outside the box. |
17:29 | <@Vornicus> | namely? |
17:30 | <@Raif> | Well she was a huge woman. The tent was basically her fluffed out skirt. |
17:30 | <@Vornicus> | ...madness. |
17:31 | <@Raif> | I figured if I satisfied her in the carnal way that she might Get the Fuck Out Of My Way. |
17:31 | <@Raif> | Though the actual line of thinking was closer to: |
17:31 | <@Raif> | > W |
17:31 | <@Raif> | There is a gigantic fat woman in your way. |
17:31 | <@Raif> | Go around woman |
17:32 | <@Raif> | Which direction would you like to go? |
17:32 | <@Raif> | > FUCK THE WOMAN |
17:32 | <@Raif> | I'm sorry. I don't recognize that sentence. |
17:32 | <@Vornicus> | Sad |
17:32 | <@Vornicus> | Nah, I was quite pleased with Inform's library a couple hours ago. |
17:32 | <@Raif> | It occurs to me that infocom games were, essentially, advanced Eliza bots. |
17:33 | <@Vornicus> | "Which one?" "Both" "big gum blob taken. small gum blob taken." |
17:34 | <@Raif> | Yeah, that was cool. |
17:34 | <@Vornicus> | Anyway, storetime. |
17:34 | <@Raif> | Worktime for me. Have fun. |
17:34 | <@Vornicus> | ...except that I don't really know what I want. |
17:35 | <@Raif> | I highly recommend food. |
17:35 | <@Vornicus> | Well, duh. |
17:36 | <@Raif> | And shiny new cutlery. |
17:36 | <@Vornicus> | I don't need, nor can I afford, new cutlery. |
17:36 | <@Raif> | Everyone needs new cutlery. |
17:37 | <@Raif> | Imagine the satisfaction of slicing into those veggies (or someone's head) with little or no effort. |
17:37 | <@Vornicus> | When did you become a cutlery salesman, anyway? |
17:37 | <@Raif> | Careful when skinning people's faces off that you don't hit the bone... it'll dull the blade. |
17:37 | <@Raif> | When I got a new knife. :) |
17:38 | <@Raif> | Anyhoo, to work... |
17:38 | <@Vornicus> | byee |
17:57 | | GeekSoldier [~Rob@Nightstar-3024.pools.arcor-ip.net] has joined #code |
18:26 | | Gashach [Gashach@Nightstar-4768.nycap.res.rr.com] has joined #Code |
18:35 | | GeekSoldier [~Rob@Nightstar-3024.pools.arcor-ip.net] has quit [Quit: For Sale: Parachute. Only used once, never opened, small stain.] |
18:51 | | Gashach [Gashach@Nightstar-4768.nycap.res.rr.com] has left #Code [] |
18:54 | <@Serah> | Cutlery isn't expensive here. |
18:55 | <@Vornicus> | It's more expensive than using what I've got. |
18:55 | <@Serah> | ;) |
18:55 | <@gnolam> | Cheap IKEA knives FTW. |
18:56 | <@gnolam> | It costs me less - even in the long term - to buy a new knife than to buy a knife sharpening kit. |
18:56 | <@Serah> | Yes indeed. |
18:58 | | GeekSoldier [~Rob@Nightstar-3024.pools.arcor-ip.net] has joined #code |
19:13 | <@McMartin> | Ah, alpha testers. |
19:13 | <@McMartin> | "You have failed to make > KUNG FU a synonym for > ATTACK." |
19:15 | <@Vornicus> | pfff |
19:16 | < GeekSoldier> | hehe. |
19:16 | <@McMartin> | (This is somewhat more justified given that both > NINJ and > PWNZ0R are recognized, and at one point so are the PC's L33t N1nj4 sk1llz.) |
19:17 | <@McMartin> | (And your inventory will list Superior fighting technique or L33t n1nj4 sk1llz depending on how you last referred to them) |
19:17 | <@Vornicus> | Heee |
19:18 | <@McMartin> | Thus, although it is not a necessary command to win, > PWNZ0R BIZNATCH WITH L33T N1NJ4 SK1LLZ is a parsed command with a sensible response. |
19:18 | <@McMartin> | (The usual version being > ATTACK NPC) |
19:19 | <@gnolam> | :D |
19:19 | <@McMartin> | Also, Vorn, all the things you listed in Dreamhold but the catwalk repairs are red herrings. |
19:19 | <@Vornicus> | okay. |
19:20 | <@McMartin> | However, there's a bunch of stuff you probably didn't run into, like the Subterrene world and the unearthly world. |
19:20 | <@Vornicus> | probably not. |
19:20 | <@Vornicus> | I'm wandering through trying a few extra things now. |
19:20 | | * Vornicus just activated the dark dome. |
19:21 | <@McMartin> | IIRC, you can do stuff with the final configuration. |
19:21 | <@Vornicus> | I'm looking around trying to find the missing piece of the last mask. |
19:21 | <@McMartin> | That only appears in Expert Mode. |
19:22 | <@Vornicus> | I turned off the tutorial. |
19:22 | <@McMartin> | Expert Mode is different from Tutorial Off. |
19:22 | <@Vornicus> | ah |
19:22 | <@McMartin> | ... and come to think of it may also be why your catwalk isn't repairing. |
19:22 | <@Vornicus> | aha |
19:23 | <@Vornicus> | What do I have to do to get expert mode? |
19:23 | <@McMartin> | Enter > EXPERT as your first command. |
19:23 | <@Vornicus> | aha |
19:23 | <@McMartin> | The masks will be in somewhat different locations as well. |
19:23 | <@McMartin> | (You can also enter > IMPOSSIBLE as your first command, but it isn't kidding.) |
19:23 | <@Vornicus> | heh |
19:25 | <@McMartin> | "Minor changes to 'Garibaldi' examples to correct a terrible error (the Medlab being called Sickbay, in violation of the game's nominal setting)." |
19:25 | <@Vornicus> | pff |
19:38 | | * Vornicus gets a credit reciept instead of a mask. Hm. |
19:39 | | MahalWork is now known as Mahal |
19:43 | | * Vornicus discovers that the blue mask is harder to get too. |
19:53 | <@Vornicus> | ...and the gold mask. hm. |
19:54 | | * Vornicus gets the gold one, anyway. resonance is your friend |
20:16 | <@Vornicus> | Okay. 4/7 got, one more that I can't yet figure out how to get, and two I haven't seen yet - one of which I forget how to get in the first place. |
20:19 | <@Vornicus> | ...ooooh. |
20:21 | | * Vornicus discovers the Planetarium. a nifty touch. |
20:22 | | Derakon[AFK] [~Derakon@Nightstar-12737.sea2.cablespeed.com] has quit [Connection reset by peer] |
20:24 | <@Vornicus> | ...pff. Silly myth |
20:25 | <@McMartin> | Hm? |
20:26 | <@Vornicus> | Light the planetarium, stand in the center, x bull |
20:26 | <@Vornicus> | ..well, okay, no real spoilers |
20:26 | <@Vornicus> | The Bull and Cow are small star-groups near the zenith. Jernos desired Seroa, the wife of the Southern king. She turned herself into a sparrow and fled; he turned himself into a horhawk and followed her. Seroa hid herself in many other shapes, but each time Jernos changed into something that could find her. Finally she turned herself into a bull. Jernos turned into a cow, but a cow was too stupid to chase Seroa further. Seroa-the-bull mounted the Jer |
20:26 | <@Vornicus> | w and sired eight brass calves. |
20:26 | <@Vornicus> | You've never been quite sure what the moral of that story was supposed to be. |
20:29 | <@McMartin> | Don't turn into a cow. |
20:30 | <@Vornicus> | ...evidently. |
20:30 | | * Vornicus fiddles with the orrery. |
20:30 | <@Vornicus> | okay, I can't climb it - at least, not unassisted. |
20:34 | <@Vornicus> | also, this is a huge list of language changes. |
20:34 | <@McMartin> | Indeed. |
20:37 | <@Vornicus> | It looks like they've been saving them up for a long time so that they could release them all at once. |
20:37 | <@McMartin> | Sort of. |
20:37 | <@McMartin> | At some point it clearly got into Nelson's head that he would fix Everything Pending, so he did. |
20:37 | <@McMartin> | At the time of 4S08's release, there were no open bugs on the list. |
20:38 | <@Vornicus> | ...damn |
20:47 | | * Vornicus fiddles with the orrery some more. |
20:47 | <@Vornicus> | Idunno, this thing is not giving me any hints as to how to get that thing. |
20:48 | <@McMartin> | The orrery is moving, right? |
20:48 | <@Vornicus> | Of course. |
20:48 | <@Vornicus> | The mask is not. |
20:48 | <@McMartin> | You should be able to play synchronization games to get at the highest possible point. I think it requires some shuffling back and forth though. |
20:49 | <@Vornicus> | shuffling of what? I can't climb the orrery, and the mask is on the blue globe. |
20:49 | <@Vornicus> | the one in the middle, that is stationery. |
20:49 | <@McMartin> | You can ride the smaller globes. |
20:49 | <@Vornicus> | I can't get purchase on anything. |
20:49 | <@McMartin> | At least one has rungs. |
20:49 | <@Vornicus> | one has rings. |
20:50 | <@McMartin> | You can grab those. |
20:51 | | Mahal is now known as MahalWork |
20:51 | <@Vornicus> | ah, so I can |
20:51 | | * Vornicus tries to get the cord now, but he's too far. |
20:51 | <@McMartin> | This is where you have to do sync work~ |
20:53 | <@Vornicus> | ...I don't see how it is possible to adjust the orbit.. |
20:57 | <@Vornicus> | no, I'm definitely missing something. I can't affect the orbit at all. |
20:57 | <@McMartin> | You don't need to. |
20:58 | <@McMartin> | By "do sync work" I mean you, Vorn, on a pad of paper. |
20:58 | < Doctor_Nick> | >:| |
20:58 | <@Vornicus> | well, I can only use one globe, and it never gets close enough to the cable. |
21:01 | <@McMartin> | Hmm. Can you drop onto the other one when it's underneath you? |
21:02 | <@Vornicus> | apparently not. |
21:02 | <@Vornicus> | it is out of reach. |
21:03 | <@Vornicus> | Anyway it wouldn't get me any higher - the tan globe is at quadrature at the apex, and I need it at opposition. |
21:09 | | GeekSoldier [~Rob@Nightstar-3024.pools.arcor-ip.net] has quit [Quit: Not that there is anything wrong with that] |
21:09 | | * Vornicus fiddles |
21:11 | <@Vornicus> | I got nothing |
21:12 | | * Vornicus just tries jumping off at every point, undoing if it's not useful. |
21:13 | <@Vornicus> | ah, there we go. |
21:14 | | * Vornicus now hunts down the remaining two: brown, which was supposed to be in the painting, and red, which is... well, I forget. |
21:15 | <@Vornicus> | oh, it's in the catwalk room... and beyond what I can get to because of the weak floor. |
21:17 | | * Vornicus tries to figure out where to get a thing to fill that hole in. |
21:21 | <@Vornicus> | ...AH |
21:21 | | * Vornicus figures it out |
21:21 | <@Vornicus> | ...sorta. |
21:23 | <@Vornicus> | gah, it's like cheap clingwrap. |
21:28 | | * Vornicus hunts for an object with certain properties. |
21:30 | <@Vornicus> | can't take that one. |
21:35 | <@Vornicus> | is there anything metal in this entire place that I can take with me? |
21:39 | <@Vornicus> | ...speaking of which I seem to have forgotten where to get the iron key, unless of course I don't get that in an obvious place this time. |
21:40 | <@Vornicus> | also, oh my god, my character has become television. |
21:46 | <@McMartin> | Whut |
21:46 | <@Vornicus> | Got the black chart? |
21:46 | | Thaqui [~Thaqui@Nightstar-18229.jetstream.xtra.co.nz] has quit [Ping Timeout] |
21:51 | <@Vornicus> | take that, particularly the name of the rift (and the 'familiar' handwriting of the note below), correlate it with what we know about this person. |
21:58 | <@Vornicus> | gnar. There is nothing. |
22:04 | < Doctor_Nick> | yeah |
22:05 | | * Vornicus hunts for anything of use. |
22:09 | <@Vornicus> | Idunno, I seem to have exhausted all the possibilities here. |
22:10 | <@McMartin> | There's a walkthrough floating around somewhere if you're basically done and just want to see stuff. |
22:11 | <@McMartin> | http://webhome.idirect.com/~dswxyz/sol/dreamhold.html |
22:11 | <@Vornicus> | I still haven't found the brown mask in expert |
22:12 | <@McMartin> | That's 'cause you've been looking in the wrong painting. |
22:12 | <@Vornicus> | ... |
22:12 | <@Vornicus> | gah, dammit |
22:13 | < Doctor_Nick> | :D :E |
22:15 | <@Vornicus> | :G |
22:15 | <@Vornicus> | ...that one's kinda wacky |
22:17 | < Doctor_Nick> | it looks like you developed some hideous scar tissue |
22:17 | <@Vornicus> | heh |
22:17 | | * Vornicus finds the seventh mask. Now what... |
22:18 | <@Vornicus> | ah, still need to try to repair the black mask.. |
22:28 | < Doctor_Nick> | "Programmed it myself in the D-O-D approved, MIL-STANDARD-1815A, Ada programming language. It's the only language for serious software engineering. C and C++ are for bed-wetting little hackers and academics." |
22:29 | < Doctor_Nick> | ahahahahah |
22:29 | <@McMartin> | Ada gets a slightly worse rap than it deserves. |
22:29 | <@McMartin> | I haven't used it, but I've studied the syntax and the like. |
22:29 | <@McMartin> | C and C++ are for people who don't care if their program explodes every 15 minutes~ |
22:31 | < Doctor_Nick> | i was watching a really bad sc-fi movie earlier and that was one of the lines |
22:35 | | gnolam [Lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Ping Timeout] |
22:40 | | Vornicus is now known as Vornicus-Latens |
22:51 | | Thaqui [~Thaqui@Nightstar-12000.jetstream.xtra.co.nz] has joined #code |
22:51 | | mode/#code [+o Thaqui] by ChanServ |
23:08 | | gnolam [Lenin@Nightstar-13557.8.5.253.se.wasadata.net] has joined #Code |
23:08 | | mode/#code [+o gnolam] by ChanServ |
23:17 | | AnnoDomini [~farkoff@Nightstar-29561.neoplus.adsl.tpnet.pl] has quit [Connection reset by peer] |
23:18 | | AnnoDomini [~farkoff@Nightstar-29561.neoplus.adsl.tpnet.pl] has joined #Code |
23:18 | | mode/#code [+o AnnoDomini] by ChanServ |
23:21 | < MyCatVerbs> | McMartin: how does Ada stop your code exploding? Incorrect algorithms are equally useless in all languages. :/ |
23:22 | <@McMartin> | Ada better about not relying on easily-go-wild pointers, and had a particularly fascist way of doing multithreading that made it much more difficult to deadlock. |
23:23 | < MyCatVerbs> | Heee. Sounds good. But I've heard that Ada's multithreading primitives were such PITAs that people hacked about to simulate (very slow) locks with 'em? |
23:24 | <@McMartin> | The only thing I remember about them was that the primitive was "rendezvous", and I think it was closer to condvars than mutexes. |
23:24 | <@McMartin> | But it's been a goodly while. |
23:25 | | * MyCatVerbs nods. |
23:25 | <@McMartin> | So, yeah, take all that with entire shakers of salt. |
23:25 | < MyCatVerbs> | I supposed I should just write off anyone who ever used high-level constructs to emulate low-level constructs as loonies. |
23:26 | <@McMartin> | Nah, multithreading's a special case. |
23:26 | <@McMartin> | There are something like a half dozen "ultimate primitives", each of which is expressible in terms of any of the others. |
23:28 | <@McMartin> | ... mostly. There's some reason Compare-and-swap is better than Test-and-set, but I can't remember the counterexample offhand. |
23:31 | < MyCatVerbs> | Jah, but you always lose the whole reentrancy thing in the process. |
23:32 | <@McMartin> | Hmm, maybe you're right; maybe it was just that you could do optimistic concurrency better with C&S. |
23:33 | | gnolam [Lenin@Nightstar-13557.8.5.253.se.wasadata.net] has quit [Ping Timeout] |
23:33 | <@McMartin> | You can certainly use either to do mutexes directly, and mutexes give you semaphores and recursive locks, and semaphores + mutexes give you condition variables. |
23:33 | < MyCatVerbs> | I thought semaphores were a general case of mutexes? I'm very likely wrong. |
23:34 | <@McMartin> | No, you're right. |
23:34 | <@McMartin> | But you can use the specific case to build the general one. |
23:34 | < MyCatVerbs> | Oh, cool. semaphores as to mutexes as coroutines to functions. Spiffy! |
23:35 | <@McMartin> | (Basically, use a simple mutex to control the chunk of memory that says how many times you can set the semaphore before it will block the setter.) |
23:35 | | * MyCatVerbs nods. "Semaphores simulating mutexes must be faster than the converse though, right?" |
23:35 | < MyCatVerbs> | Or is it really hard to implement semaphores directly? |
23:36 | <@McMartin> | I believe that mutex is simpler to implement in hardware. |
23:36 | <@McMartin> | I may be wrong, but I believe it to be the case |
23:36 | <@McMartin> | Since the hardware support tends to be just for mutex (C&S and T&S are both basically simple mutex) |
23:37 | <@McMartin> | My intuition -- which may be way off -- is that semaphores are more efficient when they can tell the OS to wake them up at the appropriate time, while mutex can be sensibly spinlocked for at least short periods. |
23:39 | < MyCatVerbs> | Spinlock!? Aaaaa! |
23:39 | <@McMartin> | At the end of the day, you've got to have them. |
23:39 | < MyCatVerbs> | Noooo, my preccccioussss cyclesssss! |
23:39 | <@McMartin> | Just, in the very core of the kernel. |
23:39 | < MyCatVerbs> | Even with a *really* good scheduler? |
23:39 | <@McMartin> | Because the process scheduler needs some way to synchronize, and it can't very well hand itself to itself. |
23:40 | < MyCatVerbs> | ...heh. =D |
23:40 | <@McMartin> | Probably other places too, for things that the scheduler is implemented in terms of or something. |
23:40 | <@McMartin> | I bet you could grep the kernel source for "spin" and find the places that have to call it. |
23:43 | < MyCatVerbs> | BogoMIP counter. |
23:43 | < MyCatVerbs> | =D |
--- Log closed Tue Mar 27 00:00:31 2007 |