--- Log opened Mon Sep 27 00:00:54 2010 |
00:11 | | AnnoDomini [annodomini@Nightstar-0fc74017.adsl.tpnet.pl] has quit [[NS] Quit: leaving] |
00:12 | | You're now known as TheWatcher[T-2] |
00:13 | | You're now known as TheWatcher[zZzZ] |
00:15 | | * Vornicus gives Kaura a cheese(), too. |
00:19 | | RichardBarrell [mycatverbs@Nightstar-689c9c54.cable.virginmedia.com] has joined #code |
00:22 | | * McMartin ponders an ancient game idea he once worked on. Wonders if it's salvagable. |
00:30 | | * McMartin also wonders if there's an easy way to map cartesian coordinates to a hex grid without basically doing polygon/point intersection. |
00:30 | <@Derakon> | A hex grid can be indexed using XY coordinates... |
00:30 | <@Derakon> | Not sure if that's what you meant by "map" though. |
00:30 | <@McMartin> | I want to map mouse clicks to the hex they clicked in. |
00:30 | <@Derakon> | The only difficulty is that every other row in the Cartesian coordinates is visually...oh. |
00:31 | <@McMartin> | The sleazy thing to do is to inscribe a circle or box inside of them and check for intersection with *that* |
00:31 | <@Derakon> | Inscribed circle intersection? *shrug* |
00:31 | <@Derakon> | Heh. |
00:33 | | * Vornicus knows this one. |
00:33 | <@McMartin> | Hmm. If I build the grid out of rectangular tiles I can do a tile-collision on that, actually, and then it's either "you're in this tile, you clicked this hex", or "you're in this diagonal of this tile, so it was this hex" |
00:34 | < Vornicus> | yep! |
00:34 | <@ToxicFrog> | :wtc: |
00:35 | <@ToxicFrog> | I found out where my password reset emails from GOG were going. |
00:35 | <@ToxicFrog> | An upstream misconfiguration on one of my accounts was deleting spam instead of just flagging it as spam. |
00:35 | <@ToxicFrog> | "But why", you ask, "would mail from GOG be flagged as spam?" |
00:36 | <@ToxicFrog> | Check this shit out: |
00:36 | <@ToxicFrog> | X-Spam-Status: Yes, score=6.5 required=5.0 tests=BAYES_50,FS_START_DOYOU2, |
00:36 | <@ToxicFrog> | HTML_MESSAGE,MIME_HTML_ONLY,MIME_HTML_ONLY_MULTI,MPART_ALT_DIFF autolearn=no |
00:36 | <@ToxicFrog> | version=3.2.5 |
00:36 | <@ToxicFrog> | X |
00:36 | <@ToxicFrog> | * 3.1 FS_START_DOYOU2 Subject starts with Do you dream,have,want,love, |
00:36 | <@ToxicFrog> | * 1.5 MPART_ALT_DIFF BODY: HTML and text parts are different |
00:36 | <@ToxicFrog> | * 1.9 MIME_HTML_ONLY BODY: Message only has text/html MIME parts |
00:36 | <@ToxicFrog> | So yeah, it's a multipart message with only one part, which is HTML. |
00:37 | < celticminstrel> | Meaning...? |
00:38 | <@ToxicFrog> | celticminstrel: that's the list of spamassassin flags it tripped. |
00:39 | <@ToxicFrog> | This is literally the only multipart single-part HTML-only message I have ever recieved that isn't spam. |
00:39 | < celticminstrel> | So, what was the subject line? |
00:40 | <@McMartin> | [GOG] Good morning my friend I require your kind assistance in recovering your password |
00:46 | <@McMartin> | The project I was considering, incidentally, was my old Hex-Othello game. |
01:05 | < celticminstrel> | This is probably a stupid question, but how do I centre a table on the page using CSS? |
01:05 | < celticminstrel> | I can't seem to figure it out. |
01:07 | < Vornicus> | margin-left: auto; margin-right: auto |
01:08 | <@ToxicFrog> | celticminstrel: "Do you want to reset your password?" |
01:08 | < celticminstrel> | ...oh wow, that works! |
01:09 | < celticminstrel> | What about vertically? The obvious extension doesn't seem to work. |
01:10 | < Vornicus> | Vertically's harder because the browser usually doesn't care about the height of the page box. |
01:16 | < celticminstrel> | Is there some way to do it? |
01:18 | < Vornicus> | Not that I'm aware of. |
01:21 | <@McMartin> | Actually, the easiest way to get my hex grid is to have GM8 do sprite collision for me. |
01:22 | | Tarinaky [Tarinaky@Nightstar-f349ca6d.plus.com] has joined #code |
01:39 | < celticminstrel> | Hm, maybe I can get the height of the window with JavaScript... <_< |
01:42 | <@ToxicFrog> | |
01:42 | <@ToxicFrog> | What exactly are you trying to do here? |
01:43 | < celticminstrel> | Center it on the page. |
01:49 | <@McMartin> | Hm. Part of me says I should be able to do this with OpenGL. |
01:49 | <@McMartin> | But then I'd have to figure out how to deal with a lot of crap I'd really just as soon not deal with just now. |
01:49 | <@McMartin> | In particular I want nothing at all to do with GL pick functions. |
01:54 | <@McMartin> | ... hm. |
01:54 | <@McMartin> | OK, this is a really dumb question, but |
01:55 | <@McMartin> | Modern monitors displaying resolutions appropriate for their aspect ratio all have square pixels, right? |
01:56 | < Vornicus> | I am not entirely certain but I suspect 1280x1024 might be problematic. |
01:56 | <@ToxicFrog> | That's not AR-appropriate, though. |
01:56 | <@ToxicFrog> | Or at least I've never seen a monitor where it is. |
01:57 | <@ToxicFrog> | Although I suppose there might be some 5:4 LCD monitors somewhere. |
01:57 | < Vornicus> | The monitors at school have a natural resolution of 1280x1024. |
01:57 | < Vornicus> | I'm not sure if their AR is 5:4 or 4:3 though |
01:57 | < Vornicus> | I can find out when I go to work tomorrow. |
01:57 | <@ToxicFrog> | I suspect if you measure them you'll find it's 5:4. |
01:57 | <@ToxicFrog> | I hope so, anyways. |
01:57 | <@McMartin> | Basically, I've got my basic code for rendering hex grids up and running but am worried that I've been setting up my sprite ratios such that the pixels are square. |
01:57 | <@McMartin> | Well, not "up and running" |
01:58 | <@McMartin> | Specced out and ready to test once I actually prepare the resources they work on. |
01:58 | <@ToxicFrog> | As a general rule you can assume that pixels are square, since pretty much everything is written based on that assumption and, consequently, most monitors adhere to it as well. |
01:58 | <@McMartin> | Hokay |
01:58 | <@ToxicFrog> | This isn't the bad old days where 4:3 320x200 is a valid resolution. |
01:59 | <@McMartin> | (One that that would be nice, but which I would hold off on until I left the prototype stage, would be automatically adjusting the location of the game board upon window resize, including going fullscreen on a variant-AR monitor.) |
01:59 | < Vornicus> | On the other hand my monitor -- which, I grant, is 12 years old at this point and still going strong -- is 4:3 and I tend to keep it in 1280x1024. |
02:00 | <@McMartin> | You, sir, get to have squished hexes |
02:00 | | * Derakon snerks. |
02:00 | < Vornicus> | OH NOES 15/16 AS TALL |
02:00 | <@ToxicFrog> | More to the point, while your stuff won't look quite right on a monitor with nonsquare pixels, neither will anyone else's. |
02:00 | <@ToxicFrog> | And thus, presumably they don't notice or don't care, or they would have replaced their monitor by now. :P |
02:00 | < Vornicus> | Yeah I'm not too worried about it. |
02:04 | | * McMartin eyes this loop |
02:04 | <@McMartin> | You know, this would be a lot easier to handle if I make (0,0) be the center of the board. |
02:05 | <@ToxicFrog> | Doesn't everyone?~ |
02:05 | <@McMartin> | I don't actually plan to for the internal representation. |
02:06 | <@McMartin> | This is for rendering. |
02:06 | < Tarinaky> | Heya. |
02:06 | <@McMartin> | As everyone knows, (0,0) is the lower left corner. |
02:06 | <@McMartin> | (When doing OpenGL iso pages, anyhow.) |
02:06 | < Tarinaky> | SDL has (0,0) in the upper left corner. |
02:07 | <@McMartin> | SDL tracks traditional window coordinates. |
02:07 | <@McMartin> | (So does Direct3D, actually; OpenGL uses an inverted y axis so that mathematical transformations work the way you expect.) |
02:07 | < gnolam> | Tarinaky: in general, all raster systems use (0, 0) as the upper left corner. An artefact of the CRT era. |
02:08 | <@ToxicFrog> | Cairo also has (0,0) as the top left. |
02:08 | < Tarinaky> | gnolam: I know. But it was a reply to "Doesn't everyone [place the origin in the bottom left]" |
02:08 | <@McMartin> | When dealing with placing viewports on the screen (as opposed to in the model space), so does OpenGL. |
02:08 | <@McMartin> | Tarinaky: there was a certain degree of tongue-in-cheekness there; the only people who put it there are mathematicians and OpenGL. |
02:09 | < Vornicus> | PostScript. |
02:09 | < Tarinaky> | Eh. I thought Mathematicians placed it wherever they damn well pleased? (Wherever is makes the maths easiest~) |
02:09 | <@McMartin> | Mathematicians when drawing stuff out, positive Y direction is up. |
02:09 | < Vornicus> | By convention, +x is right and +y is up on the plane. |
02:09 | <@McMartin> | On a raster system, positive Y direction is down. |
02:10 | < Tarinaky> | Vornicus: Yeah, but placing the origin in the middle of a thing rather than bottom-left is perfectly reasonable. |
02:10 | <@McMartin> | Yeah. |
02:10 | < Tarinaky> | Lots of stuff place the origin in the middle of a circle/sphere >.> |
02:11 | <@McMartin> | When setting up an application window, though, you traditionally don't want negative window coordinates. |
02:11 | <@McMartin> | And in this particular case, I want to be able to represent the board as a 2D array, and those don't like negative indices either. |
02:11 | < Tarinaky> | Makes sense then. |
02:11 | < gnolam> | And then there's BMP. I've never understood why they store their pixels upside-down. |
02:12 | <@McMartin> | What I need to do is set up my offsets so that my draw_board() function takes the center of the board - the board is radially symmetric - as its "where to draw" argument, but which nevertheless handles board position (0,0) as the top left corner. |
02:12 | <@McMartin> | Well. As the northwest corner. The board is a hexagon. |
02:16 | < Vornicus> | oh, tarinaky, did you get my email. |
02:16 | < Tarinaky> | Quite possibly. |
02:16 | < Tarinaky> | I've not checked. |
02:17 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection] |
02:18 | <@McMartin> | Argh, I'm doing it wrong. |
02:18 | <@McMartin> | I'll have to go back to formula, but first I need to make sure this other part works. |
02:18 | < Tarinaky> | Vornicus: "You shouldn't mention the shelf in the primary inventory list for the stateroom;" I'm not sure I understand what that means. |
02:19 | <@McMartin> | Brooks's Second Law still applies. |
02:20 | <@McMartin> | Hrm. Actually, this part can be salvaged. After all, I don't need to consult the array for this part. |
02:20 | < Vornicus> | You can see a stateroom door to the west, wooden shelf, your broken wooden bookcase (in which is wooden shelf)," |
02:20 | <@McMartin> | I'm just incorrectly thinking out how to represent the board. |
02:20 | < Vornicus> | Both of those are vaguely redundant. |
02:20 | <@McMartin> | Hm. |
02:20 | <@McMartin> | That looks automatically generated |
02:21 | <@McMartin> | Is that two separate objects? |
02:21 | <@McMartin> | (The latter bit is autogenerated and turning it off is a little tricky. |
02:21 | <@McMartin> | You may want to make some of these things scenery anyhow. |
02:21 | <@McMartin> | Making the broken wooden bookcase scenery will also hide its contents. |
02:21 | <@McMartin> | (Supporters don't do that - this is a wild quirk of the default library and there's some stock code for turning that off. |
02:21 | < Tarinaky> | Vornicus: Oh. No. Those're different items. |
02:22 | < Vornicus> | Okay, they also need indefinite articles. |
02:22 | <@McMartin> | You're risking getting a question like "which wooden shelf do you mean, the wooden shelf or the wooden shelf?" |
02:22 | < Tarinaky> | I should probably change it to wooden shelves though. |
02:23 | < Tarinaky> | Vornicus: Also - you can't finish the game yet. I'd only finished the stuff to allow you to move onto the Main Deck. |
02:23 | < Tarinaky> | Hence, finished one level >>. |
02:23 | < Tarinaky> | *>.> |
02:24 | <@McMartin> | The traditional term in adventure games is "scene" or "area" or "zone", idly~ |
02:25 | < Tarinaky> | It's a region. |
02:25 | <@McMartin> | "Scene" implies more that it's bounded in time, while "zone/area/region" that it's bounded in space |
02:25 | <@McMartin> | Yeah |
02:25 | < Tarinaky> | I don't understand why you were having issues with the pills though. |
02:25 | < Tarinaky> | Understand "opiates" and "bottle" and "bottle of opiates" and "Yterterbindriolphine" as pills |
02:26 | <@McMartin> | You might want "pill" in there too~ |
02:26 | <@McMartin> | So "take pill" works. |
02:26 | <@McMartin> | Or "eat pill" |
02:26 | < Tarinaky> | Point. |
02:26 | < celticminstrel> | Isn't that assumed? |
02:27 | < Vornicus> | None of them worked. |
02:29 | <@McMartin> | AHA |
02:29 | < Tarinaky> | Interesting :/ |
02:29 | < Tarinaky> | Maybe I added them after I sent it you? |
02:29 | | * McMartin gets his map from square to hex working. |
02:29 | < Vornicus> | http://pastebin.starforge.co.uk/372 |
02:29 | <@McMartin> | If the object is named "pills" it won't guess the singular |
02:30 | <@McMartin> | It will guess plurals for kinds, but only them and you'll usually want to hand specify anyway just to leave no margin for error. |
02:30 | <@McMartin> | (After all, you wouldn't want them to WEAR TROUSER) |
02:31 | < Tarinaky> | I dunno. wear trouser looks like an obvious typo :/ |
02:31 | <@McMartin> | Up to the designer to decide how to handle that. |
02:32 | <@McMartin> | (There is some fairly complicated logic when dealing with kinds generally) |
02:32 | <@McMartin> | Some of the basic stuff will let you do things like, say, in a Zork-style thing, DROP ALL TREASURES BUT THE MING VASE |
02:34 | < Vornicus> | I never got very far in Zork. |
02:35 | <@McMartin> | Actually, my example is really from Adventure~ |
02:35 | < Vornicus> | I never got very far in that either. |
02:35 | <@McMartin> | (Which traditionally didn't have that level of parser in the original FORTRAN) |
02:35 | < Vornicus> | I did get the vase and the pillow though. |
02:35 | <@McMartin> | Time to go get dinner, I think. |
02:35 | | * McMartin waves |
02:38 | | Derakon is now known as Derakon[Fud] |
02:43 | < Tarinaky> | Vornicus: When finished the goal will be to get the distress signal going, put coulomb in the cryobed and optionally kill the monster. |
02:44 | < Vornicus> | Yay monsterkillin' |
02:46 | < Vornicus> | But you're going to want to make that a puzzle too -- fighting doesn't tend to work well in IF. |
02:46 | < Tarinaky> | Yes. |
02:46 | < Tarinaky> | The monster will be waiting for you in a random room. When you enter that room it'll attack you and flee. |
02:47 | < Tarinaky> | If you encounter it while carrying a weapon you'll fend of its attack (usually damaging the weapon in the process). |
02:48 | < Tarinaky> | So really the monster's more a time limit :/ |
03:00 | < Tarinaky> | How do I remove/replace a verb? Attempting to add a stand :/ |
03:01 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
03:28 | < Tarinaky> | Ahah. Understand the command .. as something new. |
03:37 | | Derakon[Fud] is now known as Derakon |
03:47 | <@McMartin> | Holy crap, tired |
03:51 | < Tarinaky> | Vornicus: Need to define the control panel. << I don't understand? |
03:54 | < Tarinaky> | "Ship's Common Room description and first entrance text should be more tightly put together. " << Again, not sure what you mean >.< |
03:54 | < Tarinaky> | Also Vornicus: Thanks for the help :p just incase I didn't already say. |
03:54 | | kaura [kaura@Nightstar-fd82400d.snfc21.sbcglobal.net] has quit [Ping timeout: 121 seconds] |
03:59 | < Vornicus> | examining the stateroom door (at least, from within the stateroom) mentiones a control panel. |
03:59 | < Vornicus> | Examining the control panel says "I don't see that" |
04:00 | < Tarinaky> | Ahhh. Would understand "control panel" as door be good? |
04:00 | < Vornicus> | The common room is where you and the rest of the crew spend most of their time. |
04:00 | < Vornicus> | A wide open space lined with doors and plants. |
04:01 | < Vornicus> | THere's a blank space there that didn't get pasted, but as you can see that's kinda awkward. |
04:01 | < Tarinaky> | YEs. |
04:06 | < Tarinaky> | I'm not sure how to hide his keycard though. |
04:06 | <@Derakon> | Put it in his sock drawer. |
04:07 | < Vornicus> | Don't place it until the player has interacted with the pharma cabinet. |
04:09 | < Vornicus> | At which point you say "The only one with access is the doctor; you'll need his keycard." or something similar. |
04:09 | < Tarinaky> | That's a bit of a cop-out isn't it? |
04:09 | < Tarinaky> | Not placing it in the world until the player's been in the medbay doesn't seem... right. |
04:10 | <@Derakon> | It's perfectly fine to not mention things the character doesn't know are notable. |
04:10 | < Vornicus> | What Der said. |
04:16 | < Tarinaky> | I'm also not sure how to do that either >.> |
04:22 | < Tarinaky> | Also, even if I do that. |
04:23 | < Tarinaky> | Coulomb's keycard will still show up when you l at the common room. |
04:23 | < Tarinaky> | So there's still no reall... well... puzzle. |
04:23 | < Tarinaky> | Since the only thing you -can- do from the Medbay is go out again. |
04:24 | < Vornicus> | Right now the keycard is "hidden" on Coulomb -- you don't see it unless you examine him. What I want is so that even examining him only checks on his condition and doesn't loot his pockets until you know you need to. |
04:29 | < Tarinaky> | Instead of examining Coulomb, say "[description][if medical bay is visited and coulomb's keycard is inside coulomb][paragraph break]Coulomb's keycard is in his jumpsuit's pockets.". |
04:33 | < Tarinaky> | Fixes the problem of the keycard being 'inside' coulomb. |
04:33 | <@McMartin> | Hm. It's a little primitive, but it does basically what I need. http://hkn.eecs.berkeley.edu/~mcmartin/playfield.jpg |
04:34 | <@Derakon> | Nifteh. |
04:34 | < Tarinaky> | Some kind of hex-based space game? |
04:34 | <@McMartin> | I think I need to crop the column spacing a little. |
04:34 | < Vornicus> | Shineh |
04:34 | <@McMartin> | Tarinaky: I've had a Reversi variant that plays on hex grids built on pen-and-paper for ages. |
04:34 | <@Derakon> | It does look like there's a wider horizontal gap than there is vertical between h exes. |
04:34 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
04:35 | <@McMartin> | Yeah, it's going based on the sprite I'm using for the hex tile. |
04:35 | <@McMartin> | Which has the root-3-to-2 ratio that the hex itself has. |
04:35 | < Tarinaky> | Ahh. Fun. The background made me think it was space-themed :p |
04:35 | <@McMartin> | The space backgrounds are purely for pomposity~ |
04:35 | <@McMartin> | (See also: Bejeweled 2) |
04:38 | <@Derakon> | BTW, McM, here's the original page for that image: http://antwrp.gsfc.nasa.gov/apod/ap061229.html |
04:38 | <@McMartin> | Nice |
04:41 | | * McMartin tweaks the sprite dimensions, gets a better image. Same URL. |
04:41 | < Vornicus> | Much nicer. |
04:42 | | * McMartin managed to get that going from zero in about 20 minutes. \o/ for GM8. |
04:42 | <@McMartin> | I'll probably recode it in SDL once it's actually done, but for now this totally the way to go. |
04:46 | < Vornicus> | One hting I learned in doing VornSettlers is actually you don't need to make your hexagons perfect unless you intend on live-rotating them. |
04:46 | <@McMartin> | "live-rotating"? |
04:46 | < Vornicus> | Spinning them. With smooth animation. |
04:47 | <@McMartin> | Oh. |
04:47 | <@McMartin> | Yeah, no. |
04:47 | <@McMartin> | This is a static playfield. |
04:47 | <@McMartin> | Now, right now, they're each just sprites being drawn by the gamemaster object; I need to instead make them each be their own thing and respond to mouse clicks. Then I can have that be "make this move". |
04:48 | < Vornicus> | because diagonal lines aren't easy for your mind to line up; but horizontal ones -- it'll become immediately apparent they're not perfect when two edges are horizontal but the remaining corners aren't also on a horizontal line. |
04:49 | <@McMartin> | This is as perfect as pixel quantizations of irrational numbers can get, anyhow. |
04:49 | <@McMartin> | However, I've now proven to my satisfaction that I can chop the corners off a square array to get a hexagon, and then render that hexagon on the playfield. |
04:49 | < Vornicus> | Yay! |
04:50 | <@McMartin> | (The honeycomb is because under reversi rules, those holes will never be valid moves. A completed game produces that honeycomb grid.) |
04:50 | < Tarinaky> | Vornicus: Thanks for the help. You want me to send you the next one once I've finished the next region? |
04:50 | < Vornicus> | Why wouldn't they be valid moves? |
04:50 | <@McMartin> | The initial condition is alternating black and white around the central hole. |
04:51 | <@McMartin> | From that starting condition, it turns out that those points are never legal moves. |
04:51 | < Vornicus> | And then you always have to play so you get a line that goes yours-theirs-yours. got it. |
04:51 | | * McMartin was unable to develop a starting position that was symmetrical, fair, and fit for Reversi. |
04:51 | <@McMartin> | Ataxx is something else entirely, and Hex-Ataxx was the initial inspiration for this. |
04:52 | <@McMartin> | (for that the initial condition is each player controls alternating corners.) |
04:58 | | kaura [kaura@Nightstar-fd82400d.snfc21.sbcglobal.net] has joined #code |
05:00 | <@McMartin> | I should probably add pieces to this next. |
05:00 | < Vornicus> | I'd just make white and black hexes, personally. |
05:04 | <@McMartin> | I could, but I'd rather try to do layered rendering because I can~ |
05:04 | <@McMartin> | If I did this with OpenGL it would totally be spinny hexes, and with an axis that's on the surface of the screen, but... |
05:04 | < kaura> | ...a Reversi variant using a hexagonal playfield with regular "holes" in it, eh? I see how that'd work. |
05:05 | < Vornicus> | The holes actually turn out to be never filled from the starting position. |
05:05 | < Vornicus> | Had you placed tiles there. |
05:06 | | * Tarinaky goes abck to playing Vampire. With any luck he can (re)complete it in a couple of days. |
05:06 | | Tarinaky [Tarinaky@Nightstar-f349ca6d.plus.com] has quit [Connection closed] |
05:06 | < Vornicus> | Anyway. Last time, we were working on creating a thing that reads stuff from the user and dispatches it. |
05:08 | < kaura> | Aye. |
05:09 | < Vornicus> | I don't actually remember how far we got in that though, so if you could be so kind as to dump all your code at me, that'd be nice. :) |
05:10 | < kaura> | Sure thing. http://pastebin.starforge.co.uk/373 We were at the request input function (though I'm pretty sure I don't yet have a grasp on that quite yet. Was I suppose to /define/ the function, or...) |
05:11 | < Vornicus> | Ah so. raw_input returns a string; assign it to something like "command" |
05:11 | < kaura> | Ah. |
05:12 | < kaura> | And then from there, we basically have to tell it that string1 = function1, or something like that, right? |
05:13 | < Vornicus> | Yes, actually! But not yet. |
05:14 | < kaura> | Right. |
05:14 | < Vornicus> | Because first we have to do some processing on the input so that we get a command and its parameters from it. |
05:15 | < Vornicus> | So that "draw 3" gives us ["draw", "3"]; and "search Priest of Titania" gives us ["search", "Priest of Titania"] |
05:15 | < Vornicus> | We've done this elsewhere in this program. |
05:15 | < kaura> | Right, at the start. |
05:17 | < Vornicus> | okay, so what you'll want to do is assign the result of that to something like command_parameters. |
05:21 | < kaura> | Hm. Lesse if I'm following this correctly.. http://pastebin.starforge.co.uk/374 |
05:22 | < Vornicus> | Good, but it's got weaknesses. |
05:22 | < kaura> | Thought it might. >_> |
05:22 | < Vornicus> | What happens if I give that "shuffle" |
05:23 | < kaura> | You said to fake parameters for the ones that didn't have them, right? |
05:23 | < Vornicus> | And, actually, you've gone off the deep end with the loop and while we're at it /still/ failing to assign the result of raw_input to anything. |
05:23 | < kaura> | ...damn. |
05:23 | < Vornicus> | And your names are all over the map. |
05:23 | < kaura> | Wait, what was so good about it then? >_O |
05:24 | < Vornicus> | You used split, and you got the assignments right. |
05:25 | < Vornicus> | If you want to do stuff with /anything/ you have to assign the result somewhere. |
05:26 | <@Derakon> | Not if you use Perl~ |
05:26 | < Vornicus> | Der, you're fired. |
05:26 | < kaura> | L-let's not get into Perl. Perl has a faintly disturbing aura to it. |
05:27 | | * Derakon flrrd |
05:28 | < kaura> | Right. So assign raw_input(), fix the loop, fix the names, and make sure it works for user_shuffle() |
05:29 | < Vornicus> | Make sure it works, in general, with no-parameter commands. I'll show you how this is done shortly! |
05:30 | < kaura> | hr... complicated. brb, need ice water. Stupid heat wave. |
05:31 | < Vornicus> | Just deal with the fixes first. |
05:35 | < Vornicus> | Making sure it works in all the special cases requires a little ingenuity and a little bit of stuff I'm not sure I ever showed you! |
05:40 | | Rhamphoryncus [rhamph@Nightstar-473f8685.abhsia.telus.net] has joined #code |
05:44 | < kaura> | Vorn: Eh, I'm sure I can figure it out. Or hack it out, at any rate. |
05:44 | < Vornicus> | Okay, how do you tell how many things are in a list. |
05:45 | < kaura> | Hrn... len(), I think? |
05:46 | < Vornicus> | Right. Okay, and how long is a command with a parameter? |
05:46 | < Vornicus> | (having been split) |
05:46 | < kaura> | 2, right? |
05:47 | < Vornicus> | and a command without a parameter? |
05:47 | < kaura> | 1. So we need to have something that checks length then. |
05:47 | < Vornicus> | And no command at all? (say we accidentally hit enter) |
05:48 | < kaura> | Shouldn't that just return a blank line? |
05:49 | < Vornicus> | It'll return a blank line, but then how long will the list be? |
05:49 | < kaura> | 0 |
05:51 | < Vornicus> | All right. So our thing has to have three cases: len(split_command) == 0, len(split_command) == 1, and len(split_command) == 2. |
05:51 | < Vornicus> | actually I think you called yours "order" |
05:53 | < kaura> | Well, the names were all over the place, so they can be swapped out easy enough. |
05:54 | < Vornicus> | It doesn't matter that much. Anyway! For now, just put "pass" (without quotes) inside each condition except for 2, which will have the original parcelling out of command and parameter. |
05:55 | < Vornicus> | (pass tells the computer that you know it expects something there, but you don't have anything for it to do.) |
05:56 | < kaura> | So, literally "pass by this one." |
05:56 | < Vornicus> | Right. |
06:01 | < Vornicus> | anyway paste that when you've got it set up. |
06:08 | < kaura> | ...hrm. Still looks messy. http://pastebin.starforge.co.uk/375 |
06:09 | < Vornicus> | don't use a for loop. |
06:09 | < kaura> | Ah? Alright. |
06:10 | < Vornicus> | Since there's only one command, x is the command, not a list of commands. And call it something cooler than x. |
06:10 | < Vornicus> | Then the function and parameter assigns go into the 2, and why the heck are you splitting line? line doesn't exist. Split x. |
06:11 | < kaura> | Whups, right. Should've caught that. |
06:12 | < Vornicus> | (but, again, call it something cooler than x. "command" works.) |
06:13 | < kaura> | Went with command(order), so order = raw_input(), and split_cmnd= order.split(None, 1) |
06:14 | < Vornicus> | Works. Okay. Move the assignments to function and parameter down into the 2 section; while we're at it, also put the function one into the 1 section. |
06:16 | < kaura> | Done. |
06:19 | < Vornicus> | Now: we need to add somehing to the 1 section that will set up parameter for use in other things. I recommend setting parameter to "" |
06:22 | < Vornicus> | And then the 0 section, just put return "No command given." |
06:23 | < kaura> | Replacing "pass" for both of them, right? |
06:23 | < Vornicus> | Oh, right, I forgot to describe what request_input returns: It will return a string that describes the result of the input. |
06:23 | < Vornicus> | Yes, we no longer need "pass" |
06:26 | < Vornicus> | Anyway show me that when you're done. |
06:29 | < kaura> | Lesse... http://pastebin.starforge.co.uk/376 |
06:30 | < Vornicus> | There you go. |
06:30 | < Vornicus> | Okay. Now it's time to write our dispatcher. |
06:32 | < kaura> | Right. |
06:32 | < Vornicus> | Outside of request_input, we need a dictionary: strings representing command names ("draw", "search") with the user_ functions that they are about. |
06:32 | < Vornicus> | so {"draw": user_draw, ...etc... } |
06:33 | < kaura> | Thought we might have. Alright. |
06:33 | | cpux is now known as shade_of_cpux |
06:33 | < Vornicus> | Note: there's no parentheses on the function names in the dictionary: we're not /calling/ the functions, we're /talking about/ them. |
06:35 | < kaura> | Right. It references them, not calls up their operations. |
06:35 | < Vornicus> | Right. This is part 1 of the Most Awesome Thing Ever. |
06:35 | <@Derakon> | A.k.a. functions as objects. |
06:35 | < Vornicus> | (or at least, it blew me away.) |
06:36 | <@Derakon> | It's one of my favorite things about programming too. |
06:36 | <@ToxicFrog> | Ditto. |
06:36 | <@ToxicFrog> | First class functions == yummy. |
06:38 | < Vornicus> | Show me that dictionary when you're done with it. |
06:39 | <@Derakon> | I can't count the number of times at work I've made a list of tuples something like (label of form input, tooltip text, constructor to call to make form input, function to call when form input is modified) and used it to generate a smart form. |
06:39 | <@Derakon> | So much easier than creating each input one by one with much code copying. |
06:39 | < kaura> | Vorn: The dictionary should be before the function, right? |
06:40 | < Vornicus> | Technically it doesn't matter -- it /does/ matter that it comes after all the functions it names, though. |
06:41 | <@Derakon> | At the time you create a variable, everything the variable references must already be defined. At the time you call a function, everything that function references must already be defined. |
06:41 | <@Derakon> | So functionOne can itself call functionTwo, even though functionTwo is defined later in the file, so long as you don't call functionOne before defining functionTwo. |
06:43 | < kaura> | Right. So, lesse... http://pastebin.starforge.co.uk/377 |
06:45 | < Vornicus> | Good. Note that a dictionary literal doesn't have to be on one line, though. THis is equivalent, and a fair sight easier to read: http://pastebin.starforge.co.uk/378 |
06:46 | < kaura> | ...hah, so it is. |
06:47 | | Derakon is now known as Derakon[AFK] |
06:48 | < Vornicus> | Anyway, back over to request_input, we're now going to write the line of code that figures out what function to call, and calls it. |
06:49 | < Vornicus> | (and returns the result of that call!) |
06:49 | < kaura> | I suspect it'll involve something new~ |
06:49 | < Vornicus> | Nope. Everything we need for this code we've already done. |
06:49 | < Vornicus> | 1. how do you get a function from the dictionary, given a string? |
06:49 | < Vornicus> | 2. how do you call a function? |
06:49 | < Vornicus> | 3. how do you return the result of something? |
06:53 | < Vornicus> | Answer those three questions, and you are 90% of the way there. |
06:53 | < kaura> | Hrn... |
06:54 | < Vornicus> | --don't overthink it. Answer each question in turn first. |
06:55 | < kaura> | Trying not to. Lesse.. how'd I do it last time... |
06:56 | < Vornicus> | (last time, iirc, was in the playing cards script.) |
06:58 | < kaura> | It was. In such a case, calling a string from the dictionary was a matter of DICT_NAME[parameter[index#]] I believe. |
06:59 | < Vornicus> | A bit more austere than that -- we don't have an index number now, or a parameter thing; all we have is a string. |
07:00 | < kaura> | So just DICT_NAME('string')? |
07:00 | < Vornicus> | well yeah, but the string we have is in a variable. |
07:01 | < Vornicus> | Oh, and [] |
07:01 | < Vornicus> | not () |
07:01 | < kaura> | Ah. |
07:02 | < kaura> | Oh. CMND_NAMES[order] then? |
07:03 | < Vornicus> | nope, order's a list; we just want the name of the thing that we're going to do. |
07:03 | < Vornicus> | Which, if you remember, we assigned to its own place. |
07:04 | < Vornicus> | (and while we're in there: the "command" function doesn't take anything in; you don't want to put "order" in the signature.) |
07:08 | < kaura> | ...hrn. More ice water as I try to unstick my brain. |
07:31 | | * Vornicus gives kaura's brainpan a liquid cooling system. With LN2. |
07:32 | | Anno[Laptop] [annodomini@Nightstar-f5d6e71d.adsl.tpnet.pl] has joined #code |
07:35 | < kaura> | ...hrn. CMND_NAMES[split_cmnd[0]]? |
07:35 | < Vornicus> | Didn't we call split_cmnd[0] something? |
07:36 | < kaura> | Oh, hah. So we did. Why'm I inputting it raw? |
07:37 | < kaura> | So it's CMND_NAMES[function] |
07:37 | < Vornicus> | Right. Okay, so that comes back as a function. How do we call it. |
07:39 | < kaura> | Erm. Append it to a for loop? |
07:39 | < Vornicus> | ...no. How do you call a function. |
07:40 | < kaura> | ...feck. I think you've asked this of me before in relation to something else. |
07:41 | < Vornicus> | You call functions rather often. |
07:45 | < kaura> | Oh, wait. Just add parentheses to the end of CMND_NAMES[function]? Like "CMND_NAMES[function]()"? Then add "parameter" between the parenthesis? |
07:45 | < Vornicus> | Exactly. |
07:45 | < Vornicus> | And now how do we return a result? |
07:46 | < kaura> | Just tack on "return" at the start of that line, right? |
07:46 | < Vornicus> | Yep. |
07:47 | < Vornicus> | And that's part 2. We just called a function without actually putting its name on the line it's getting called on. |
07:49 | < Vornicus> | All right! We're starting to get somewhere here. It's time to write our main loop. |
07:50 | < kaura> | ...oh-hoh. And it works. command(), then it provides a blank line, then draw 7 gives me exactly what I wanted... |
07:52 | < Vornicus> | Okay, paste all the code again. |
07:53 | < kaura> | http://pastebin.starforge.co.uk/379 |
07:54 | < Vornicus> | Okay. Waaay down at the bottom, outside of any functions, put "while True:" |
07:55 | < kaura> | It's going to be something like "while True: run command()," I think? |
07:55 | < Vornicus> | while True: print command() |
07:55 | < kaura> | Ah. |
07:55 | < Vornicus> | You know what "while True:" does? |
07:57 | < kaura> | Vaguely. So long as the operation is valid (or true), it'll run it? |
07:57 | < Vornicus> | Right, so... |
07:58 | < Vornicus> | Now here's the thing. |
08:00 | < Vornicus> | Because that'll run forever, we need something that will get out of there. Since this is the main loop, we want to end the script entirely. |
08:00 | < Vornicus> | And for /this/ we need a function we haven't met before. |
08:00 | < Vornicus> | So way up at the top: import sys |
08:01 | < Vornicus> | Then we need a user_ function that calls sys.exit() |
08:01 | < Vornicus> | and then we need to add that to our dictionary. |
08:03 | < kaura> | Ah, so a new user_ function and add to dictionary. So when you input it in command(), it shuts off the main loop. |
08:03 | < Vornicus> | Not just shuts off the main loop: ends the program entirely. |
08:03 | < kaura> | Oh, closes IDLE? |
08:04 | < Vornicus> | Nope. IDLE will actually say "a script is trying to exit. Should I exit too?" |
08:04 | < kaura> | Ahh. |
08:05 | < Vornicus> | Once you've got those three things in, pastebin the code. |
08:05 | < kaura> | Oh, actually, it doesn't. It just prints out "SystemExit" in red. |
08:06 | < Vornicus> | Works for me! |
08:06 | < Vornicus> | (I think, now that I think about it, that the other common Python terp/ide does the ask.) |
08:06 | < kaura> | http://pastebin.starforge.co.uk/380 |
08:07 | < Vornicus> | Congratulations. You just finished Kaura's DeckMangler 1.0 |
08:07 | < kaura> | Bwahahaha! |
08:07 | < Vornicus> | There's still a lot of work to be done though. We'll get to those next time. |
08:08 | < kaura> | The program should probably tell the user what commands it'll listen to, for example. >_> But I think that's just a matter of s = "block of text," right? |
08:10 | < Vornicus> | We'll be writing a help command, cleaning up the outputs of certain other commands, doing some error correcting, adding some data to the input report, adding short mnemonics for the commands, adding a default to the draw command, making the program ask what file to load, give the ability to load a fresh deck mid-program -- and to reload decks. |
08:10 | < kaura> | ...yeah, that's a lot of work alright. ...heh. |
08:10 | < Vornicus> | But the hard part - getting the command structure in - is already done. |
08:11 | < Vornicus> | Most of this work is modifying existing functions. |
08:12 | < Vornicus> | The short mnemonics is just adding stuff like "d": user_draw to the dispatch dictionary. |
08:13 | < kaura> | Ah, a mnemonics library. |
08:13 | < kaura> | Or, well, just a beefed up library I guess. |
08:13 | < Vornicus> | Yep. |
08:14 | < Vornicus> | But congratulations: you just wrote a hundred-line program that does genuinely useful things! |
08:15 | < Vornicus> | (so, our estimate on code size was a little short. No big deal.) |
08:15 | < Vornicus> | (If that ever /didn't/ happen, there'd be something wrong.) |
08:16 | < Vornicus> | (or, alternatively, something truly amazing.) |
08:18 | < Vornicus> | Anyway. I must to bed. Try not to accidentally wake up in Las Vegas tomorrow morning. |
08:18 | < kaura> | Haha, alright. G'night. |
08:18 | | Vornicus is now known as Vornicus-Latens |
08:26 | < Alek> | hrm. |
08:26 | < Alek> | any Kipling fans here? |
08:27 | < Orthia> | As in, Have You Ever Kippled? |
08:27 | < Alek> | as in, I'm trying to remember the name or any of the verse of one poem, but all I remember is the plot. -_- |
08:27 | < Alek> | and that it's 99% likely to be Kipling's. |
08:28 | <@McMartin> | Quote it |
08:29 | < Alek> | a company or some small army group hunting for some outlaws, but making friends with them instead. |
08:29 | < Alek> | or something like that. |
08:29 | < Alek> | it's on the tip of my brain... just out of reach. -_- |
08:30 | < Alek> | aha |
08:30 | < Alek> | the ballad of boh da thone |
09:06 | | You're now known as TheWatcher |
09:46 | | * McMartin updates his playfield image with the initial position. |
09:47 | | RichardBarrell [mycatverbs@Nightstar-689c9c54.cable.virginmedia.com] has quit [Ping timeout: 121 seconds] |
10:06 | | Anno[Laptop] [annodomini@Nightstar-f5d6e71d.adsl.tpnet.pl] has quit [[NS] Quit: Going to Uni.] |
10:11 | <@McMartin> | Booyah! |
10:12 | < kaura> | ? |
10:12 | <@McMartin> | That took the better part of an hour to do, but I've reworked that ReverseX board so that it's no longer a mockup and now reacts to mouse clicks. |
10:12 | <@McMartin> | In fact, it correctly registers every part of the hex. |
10:13 | | * McMartin sets it up so that clicking a hex alternates it between blank, white stone, and black stone. |
10:14 | <@McMartin> | http://hkn.eecs.berkeley.edu/~mcmartin/playfield.jpg |
10:14 | < kaura> | Ooh, nice. |
10:14 | <@McMartin> | This is now at Apprentice levels, where two people could use it as a board to play each other on, but it doesn't know the rules. |
10:14 | <@McMartin> | That's step 2, but it's also not tonight. |
10:16 | <@McMartin> | Well. |
10:16 | <@McMartin> | Step 3. |
10:16 | < kaura> | Step 3: sell to Zynga or other flash game group. (formerly known as step ???) Step 4: $$$ |
10:16 | <@McMartin> | Step 2 was make it react |
10:16 | <@McMartin> | Nah. Step 4 is "write an AI to play against", and Step 5 is to rewrite the whole mess in a real language so it can be distributed more cleanly. |
10:17 | < kaura> | Always so many steps between "brainstorm" and "profit." :( |
10:17 | <@McMartin> | (Though I did in fact to register GM8; I could probably just do "Random Stuff On The Internet" with it.) |
10:17 | | Tarinaky [Tarinaky@Nightstar-f349ca6d.plus.com] has joined #code |
10:18 | <@McMartin> | (If I'm at that level and don't care about Mac support, I can ship the prototype.) |
10:19 | < kaura> | What is the overarching intent? To have written a Cool Thing? |
10:19 | <@McMartin> | More or less~ |
10:20 | <@McMartin> | It's not like I don't do a lot of that already. |
10:20 | < kaura> | Heh. |
10:20 | <@McMartin> | I have no idea whether or not this game is even going to be any fun or if it's going to degenerate because of lessened flexibility in moves. |
10:22 | < kaura> | 's what beta tests are for. But I rather liked Reversi. |
10:23 | <@McMartin> | Once I get the game logic and UI working, I'll probably do a quick reboot with no UI so I can run AIs against each other to see how they do and what is, in fact, a decent strategy. |
10:23 | | * McMartin has written real Reversi AIs before and while they weren't *awesome* they were not completely terrible either. |
10:25 | <@McMartin> | Oooh, I could put in netplay. The registered version of GM8 has support for that. |
10:25 | < Tarinaky> | Unemployment is driving me barmy. |
10:26 | < Namegduf> | No luck finding a job? |
10:29 | < Tarinaky> | Aye. |
10:29 | < Tarinaky> | Can't even get xmas temping :/ |
10:29 | < Namegduf> | That sucks. |
10:43 | | Rhamphoryncus [rhamph@Nightstar-473f8685.abhsia.telus.net] has quit [Client exited] |
11:01 | | Anno[Laptop] [annodomini@F67919.F326B3.98D923.BDA7B6] has joined #code |
11:02 | <@McMartin> | A quick few matches against myself seem to indicate that it's much easier to get into a situation in which you are either forced to repeatedly pass or are forced to take moves that will devastate you, |
11:09 | < kaura> | Take out a few of the blanks then? They were originally situated because they weren't accessible from the opening play, right? |
11:30 | | Anno[Laptop] [annodomini@F67919.F326B3.98D923.BDA7B6] has quit [[NS] Quit: I can barely work in these conditions.] |
12:25 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
12:46 | | Anno[Laptop] [annodomini@Nightstar-f5d6e71d.adsl.tpnet.pl] has joined #code |
13:57 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
14:59 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
15:42 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code |
16:22 | | Tarinaky [Tarinaky@Nightstar-f349ca6d.plus.com] has quit [Client closed the connection] |
16:30 | < gnolam> | (TTF) Text output under OpenGL. Unicode (or rather: UTF-8) support a must. Suggestions? |
16:31 | < gnolam> | SDL_TTF seems geared towards non-GL SDL. |
16:39 | <@TheWatcher> | http://homepages.paradise.net.nz/henryj/code/index.html - give that a look, it's the one I've messed with |
16:40 | <@TheWatcher> | (s'kinda old, but it works) |
16:52 | < gnolam> | Argh. For certain values of "works", I see. |
16:54 | < gnolam> | As in "I will have to hand-edit the sln files to hopefully get it to compile, since the person who made them is utterly incompetent" |
16:57 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
17:09 | < gnolam> | Blargh. |
17:09 | < gnolam> | Maybe it's time to learn how to use raw FreeType then. :P |
17:10 | < Anno[Laptop]> | Make a custom function for drawing fonts, letter by letter. |
17:11 | < gnolam> | That is pretty much what I will have to do. |
17:11 | < Anno[Laptop]> | void drawA(int x, int y)... |
17:11 | < Anno[Laptop]> | I wasn't being serious. ;_; |
18:38 | <@McMartin> | Kaura: They aren't accessible *ever* - if you fill them in, no game will produce a move that leads there |
18:46 | < gnolam> | Argh. |
18:46 | < gnolam> | Bad FreeType, bad! No biscuit for you! |
18:47 | < gnolam> | typedef struct FT_FaceRec_* FT_Face; |
18:48 | | * ToxicFrog pokes the OSX users in here. |
18:48 | <@ToxicFrog> | Two simple questions: |
18:48 | <@ToxicFrog> | - how do you start the X server |
18:48 | <@ToxicFrog> | - does OSX come with: scp, rsync, ssh, git, hg |
18:49 | < gnolam> | There should be a feature in every compiler that gives severe electric shocks to people who think it's a good idea to hide the pointer status of a types by typedefing it. :P |
18:49 | < gnolam> | -a |
18:49 | < gnolam> | Err |
18:49 | < gnolam> | -s |
19:15 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has joined #code |
19:34 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds] |
19:36 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
19:57 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has quit [Connection closed] |
19:57 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has joined #code |
20:11 | | Stalker [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code |
20:31 | | Rhamphoryncus [rhamph@Nightstar-473f8685.abhsia.telus.net] has joined #code |
20:31 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has quit [[NS] Quit: Bye] |
20:47 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection] |
20:47 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has joined #code |
21:14 | | RichardBarrell [mycatverbs@Nightstar-3b2c2db2.bethere.co.uk] has joined #code |
21:21 | < gnolam> | Oh well, I have 7-bit ASCII output sort of working now anyway. |
21:25 | < jeroid> | Why not 6-bit? |
21:32 | < gnolam> | Err... why 6 bit? |
21:34 | | Tarinaky [Tarinaky@Nightstar-f349ca6d.plus.com] has joined #code |
21:39 | | jeroid [jerith@687AAB.998A7C.D2B8BA.291AD6] has quit [[NS] Quit: Bye] |
22:14 | | McMartin [mcmartin@Nightstar-3c18b210.pltn13.sbcglobal.net] has quit [Ping timeout: 121 seconds] |
22:16 | <@jerith> | gnolam: Why not? |
22:16 | | McMartin [mcmartin@Nightstar-3c18b210.pltn13.sbcglobal.net] has joined #code |
22:16 | | mode/#code [+o McMartin] by Reiver |
22:16 | <@jerith> | ToxicFrog: Fire up something that uses X. You minght need to install it first, though -- I think it's an extra these days. |
22:17 | <@jerith> | It comes with ssh and scp, I think. I'm pretty sure I had to install rsync from elsewhere. hg, git, etc. are definitely extras. |
22:17 | < gnolam> | Because then I won't even have regular punctuation? |
22:19 | <@jerith> | Pah! Punctuation is for lamers who don't understand how to communicate on the internet. |
22:47 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
23:14 | | Vornicus-Latens is now known as Vornicus |
23:43 | | shade_of_cpux is now known as cpux |
23:43 | < Vornicus> | I have rsync on mine but I ron't remember installing it |
23:45 | < Tarinaky> | punctuation is for people who want their points to be clear concise and devoid of ambiguity without punctuation it becomes much harder to read complex points and ideas they become almost incommunicable |
23:46 | | You're now known as TheWatcher[T-2] |
23:47 | < Tarinaky> | English without punctuation is like C without ';' '{', '}' '(' and ')' (or anything to replace them). Completely ambiguous. |
23:52 | | You're now known as TheWatcher[zZzZ] |
23:58 | <@ToxicFrog> | jerith: does OSX come with a graphical sftp client? |
23:59 | < Vornicus> | Not that I'm aware of. |
--- Log closed Tue Sep 28 00:00:17 2010 |