--- Log opened Sun May 08 00:00:01 2011 |
--- Day changed Sun May 08 2011 |
00:00 | | You're now known as TheWatcher[T-2] |
00:02 | | You're now known as TheWatcher[zZzZ] |
00:08 | | Attilla_ [Some.Dude@Nightstar-febccc15.cable.virginmedia.com] has joined #code |
00:09 | | Attilla [Some.Dude@2D9A5E.A969A9.115770.24F3F1] has quit [Ping timeout: 121 seconds] |
00:56 | | gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?] |
01:00 | | Kindamoody is now known as Kindamoody[zZz] |
--- Log closed Sun May 08 01:20:09 2011 |
--- Log opened Sun May 08 01:20:14 2011 |
01:20 | | TheWatcher[zZzZ] [chris@Nightstar-b4529b0c.zen.co.uk] has joined #code |
01:20 | | Irssi: #code: Total of 22 nicks [1 ops, 0 halfops, 0 voices, 21 normal] |
01:20 | | Irssi: Join to #code was synced in 46 secs |
01:51 | | Attilla_ is now known as Attilla |
01:58 | < McMartin> | JavaScript running a PDP-11 emulator running UNIX V6 with AJAX handling disk processes: http://pdp11.aiju.de |
01:59 | < ToxicFrog> | I'm not sure whether to be impressed, or horrified. |
02:00 | < McMartin> | It is a reminder that we live in The Future. |
02:00 | <@Namegduf> | Why must the future be written in JavaScript? |
02:01 | <@Namegduf> | WHY!? |
02:01 | < McMartin> | Given that the PDP-11's instruction set is the direct inspiration for the 65xx (NES, C64, Apple 2, etc.), and the Z-Machine emulates in JavaScript just fine, it's not too surprising |
02:01 | < McMartin> | Namegduf: Because the alternatives appear to be Flash and Silverlight. =( |
02:02 | < celticminstrel> | Isn't Flash sort of also run in JavaScript? <_< |
02:03 | <@Namegduf> | No. |
02:04 | | celticminstrel is now known as celmin|Civ4 |
02:05 | | Attilla [Some.Dude@Nightstar-febccc15.cable.virginmedia.com] has quit [Ping timeout: 121 seconds] |
02:08 | | * ToxicFrog eyes celtic |
02:09 | < McMartin> | Flash's ActionScript is part of the same language family as JavaScript, but it is not actually JavaScript. |
02:10 | < McMartin> | IIRC, both implement some of the relevant ECMA standards. |
02:12 | < celmin|Civ4> | Hence why I said "sort of". <_< |
03:58 | | celmin|Civ4 is now known as celticminstrel |
06:01 | < Vornicus> | JS itself is really not that horrible. |
06:02 | <@Namegduf> | Oh yes it is. |
06:02 | < Vornicus> | --to the point where I created anonymous functions in it, the right way, the first time, having never read that it even /had/ that ability, without thinking about it. |
06:02 | <@Namegduf> | That doesn't make it "not horrible". |
06:02 | <@Namegduf> | It makes it intuitive in that particular way. |
06:02 | < Vornicus> | Straightforward, anyway. |
06:03 | <@Namegduf> | JS optional semicolons are handled by detecting a *syntax error* and going back and inserting them. |
06:03 | < Vornicus> | I mean okay, if i ruled the world there would be no such thing as a globals-by-default language. |
06:04 | | * Reivles sits Vornicus atop a throne, gives him a crown. |
06:04 | < Vornicus> | :D |
06:04 | | Stalker [Z@2C3C9C.B2A300.F245DE.859909] has quit [Ping timeout: 121 seconds] |
06:06 | <@Namegduf> | Also lack of typesafety and Python-esque "you can add bits to types that weren't originally there at runtime" to make static analysis much harder. |
06:07 | <@Namegduf> | Coupled with a lack of decent unit testing frameworks... |
06:08 | < celticminstrel> | [May 08@01:03:04am] Namegduf: JS optional semicolons are handled by detecting a *syntax error* and going back and inserting them. |
06:08 | < celticminstrel> | ^ That's just a matter of a bad implementation though, isn't it? :/ |
06:08 | <@Namegduf> | No, it isn't. |
06:08 | < celticminstrel> | How isn't it? |
06:08 | <@Namegduf> | That is how JavaScript optional semicolons work. There are no language rules to permit them to work otherwise. |
06:08 | <@Namegduf> | There are no rules for where semicolons will be inserted or not in the language spec. |
06:09 | < celticminstrel> | Can't rules for that be imagined by an implementor? |
06:09 | < celticminstrel> | ^ -er |
06:09 | <@Namegduf> | Um, no, not if you want to run other people's JavaScript. |
06:09 | < celticminstrel> | Why's that? |
06:10 | <@Namegduf> | Because you're changing the way existing JavaScript will be executed? |
06:10 | <@Namegduf> | It would be a change in the accepted language, not the implementation. |
06:10 | < celticminstrel> | Why can't you just imagine rules that don't change the way it's executed? |
06:11 | <@Namegduf> | You can't. |
06:11 | < celticminstrel> | Why not? |
06:11 | < celticminstrel> | Why is "detecting a syntax error and going back and fixing it" the only way? |
06:11 | < celticminstrel> | Is it really the only way? |
06:11 | <@Namegduf> | Because the way it is currently executed is "semicolons are inserted only where their absence would create a syntax error"> |
06:12 | <@Namegduf> | And any change to semicolon insertation behaviour would be a change to the language accepted. |
06:12 | <@Namegduf> | You could do it another way if you looked ahead however far it took to verify there was no syntax error, at the end of every line. |
06:13 | <@Namegduf> | But since my complaint was about the insertation behaviour, not the implementation... that wouldn't solve anything. |
06:14 | < celticminstrel> | Well, if the syntax error is detected at the beginning of the next line in the majority of cases, it's not that bad. |
06:14 | | kwsn [kwsn@BAD19E.B5A83A.180240.E5184B] has joined #code |
06:14 | <@Namegduf> | Well, if you don't think that's a horrible way to design a language, that's fine. |
06:14 | <@Namegduf> | I disagree. |
06:15 | <@Namegduf> | It's just one of the more stupid things about the language. |
06:15 | < celticminstrel> | I still don't see why you can't write rules that are equivalent without requiring some way of detecting the syntax error. |
06:15 | <@Namegduf> | The rules *are what I am complaining about*. |
06:16 | < celticminstrel> | So why can't they be refactored? |
06:16 | <@Namegduf> | Because existing code relies on the rules. |
06:16 | < celticminstrel> | But if you have an alternate set of rules that are exactly equivalent, that won't be a problem. |
06:16 | <@Namegduf> | Changing the rules to equivalent rules does absolutely nothing, because they're still ugly and arbitrary and lead to nasty bugs. |
06:17 | <@Namegduf> | They also won't be any better because they'll be equivalent. |
06:17 | < celticminstrel> | Is it truly impossible to refactor them into a ruleset that's less ugly but still equivalent? |
06:17 | <@Namegduf> | Also you really need to stop saying "Why can't you" without demonstrating that you CAN. |
06:17 | <@Namegduf> | Yes, it is. |
06:18 | < celticminstrel> | Eh, fine. |
06:18 | <@Namegduf> | The "ugliness" comes from the arbitrary and bug-friendly nature of the rules, not their written formulation, and these things will remain equally true for anything equivalent to them. |
06:19 | <@Namegduf> | Why can't you replace C++ with a language with much simpler rules that is equivalent? |
06:19 | <@Namegduf> | You're not asking simple things. |
06:19 | < celticminstrel> | Some people actually did that. Sort of. |
06:20 | <@Namegduf> | Without breaking any existing code? |
06:21 | < celticminstrel> | Technically, yes, but only by including a switch to revert to the old rules, so it might not count. |
06:21 | < celticminstrel> | (An in-code switch.) |
06:22 | < celticminstrel> | Pretty sure it never caught on anywhere. |
06:22 | <@Namegduf> | That's a "technically, no" |
06:22 | <@Namegduf> | Because existing code will break until the switch is added. |
06:22 | < celticminstrel> | I don't remember the details; it might've defaulted to the old rules rather than the new, or had some method of detecting which were in use. Or maybe not. |
06:23 | <@Namegduf> | At any rate, doesn't sound equivalent. |
06:24 | < McMartin> | What you describe is a source-to-source compiler, and those are not terribly exciting, and it isn't changing the target language in any way. |
06:24 | < celticminstrel> | Yeah, pretty much like a source-to-source compiler. |
06:24 | < McMartin> | Yeah, that's not "fixing C++" any more than Gambit, a Scheme compiler that's source-to-source through C, "fixes C". |
06:24 | < celticminstrel> | Heh. |
06:27 | <@Namegduf> | My point is that while it's really hard to prove that a bunch of complex logic doesn't have a simpler form for some definition of simpler, "convert it to a simpler but equivalent form" is not really a feasible way to fix it being complex, let alone any flaws which are shared by anything equivalent. |
06:36 | | UndeadAnno [annodomini@D553D1.9D4909.31D578.ED796F] has joined #code |
06:49 | | celticminstrel [celticminst@1526F6.37AB0D.97233B.788A64] has quit [[NS] Quit: And lo! The computer falls into a deep sleep, to awake again some other day!] |
07:36 | | kwsn is now known as kw\t-2 |
07:38 | | kw\t-2 is now known as moo |
07:38 | | moo [kwsn@BAD19E.B5A83A.180240.E5184B] has quit [[NS] Quit: moo] |
07:56 | < Reivles> | Hiyas |
07:56 | < Reivles> | Nein, I do not have a pastie |
07:56 | < Reivles> | Because I was trying to figure out how the things work so I could type them in~ |
07:56 | < Vornicus> | Heh |
07:57 | < Reivles> | So, Pathfinder dispenses with the need to significantly look at the Monster Manual for Wildshape/Polymorph. |
07:57 | < Vornicus> | Okay. |
07:58 | | Vash[Working] [Vash@DCDEB4.EE4823.60FBD5.24F5B1] has joined #code |
07:59 | < Reivles> | Instead, you take a base creatures stats in relation to Size, Movement, Natural Attacks and special rules, and apply them via set rules to yourself: Medium is +2str, +1 NA, Small is +2 Dex, for example, and gives you the natural weapons and things like "If the critter has it, you get up to Fly 30ft, Climb 30ft, Poison, Disease, Improved Grab", etc |
07:59 | < Vornicus> | Okay. I presume you have a table of what hte sizes do for you. |
08:00 | < Reivles> | Yes, I do. |
08:00 | < Vornicus> | Pastie that. |
08:01 | < Reivles> | http://pastebin.starforge.co.uk/461 has some of it |
08:02 | < Reivles> | What I will have is the Size Table, the Critter Table (AKA what attacks, special rules, etc does this thing have) and the Base Table (AKA my stats, so I know what I'm adding/subtracting to) as base data. |
08:02 | < Vornicus> | Okay. |
08:02 | < Reivles> | I intend to output data for AC, attacks, damage etc accordingly. |
08:04 | < Reivles> | AC and attacks and damage is trivial, of course - as a D&D player we've been doing it in our heads, nevermind in code - but to get to that point I'd rather like to be able to load shit in and start applying the third value in the fifth column of Size to the X of Y in Base, then stick in the foo of Critters. |
08:05 | < Vornicus> | All right, let's look at this here. |
08:05 | < Reivles> | Preferably, for instance, by calling critterDamage + baseStr + sizeStr, or acSize + acDex + acNat etc~ |
08:05 | < Reivles> | Would be real, real nice. |
08:06 | < Vornicus> | So this first csv is a table; you wish to index the table via size and attribute. |
08:06 | < Reivles> | Right. |
08:06 | < Vornicus> | All right, let's see if I can figure out how I'd do this. |
08:07 | < Reivles> | I can easily enough rig csv tables for Critters and even a csv row for Base Stats, if it helps. |
08:07 | < Reivles> | (I haven't, because I wanted to know How I'd Do This before I wasted time getting carried away~) |
08:07 | < Reivles> | Of course, each table has its own set of attributes - size doesn't care about special attacks, for instance. |
08:12 | | * Vornicus does some fiddling, finds his toys. Okay, this is a doable thing. |
08:12 | < Vornicus> | http://www.python.org/doc//current/library/csv.html let's start here. |
08:13 | < Vornicus> | Now, there's two things we want to do here: we want to get the data, and we want to figure out what piece of information is the "key" |
08:13 | < Vornicus> | And then we want to use these two things to build a dictionary of dictionaries. |
08:14 | < Vornicus> | So I'm going to use a DictReader and a given key string. |
08:16 | < Vornicus> | First off we'll open the csv using the csv DictReader class; this makes it so we can read off our dictionary one line at a time. |
08:17 | < Reivles> | O-Kay, that sounds good |
08:17 | < Reivles> | For size and critter, yes? |
08:18 | < Vornicus> | Yeah. Though for right now I'm just writing a function that all it does is dump a csv table. |
08:19 | < Vornicus> | It takes a filename and a string that is the key. |
08:19 | < Reivles> | Nice. |
08:20 | < Reivles> | erk BRB young lass returned, will be a few mins |
08:20 | < Reivles> | (Orthia says hi~) |
08:20 | < Vornicus> | reader = csv.DictReader(open(filename)) <-- so first all I'm going to do is make the reader via the filename. |
08:20 | < Vornicus> | (HI ORTHIA) |
08:26 | | * Vornicus gets that to work. Bad news however: the data comes in as strings. |
08:27 | < Vornicus> | Still, not bad for 8 lines of code. |
08:30 | | * Vornicus adds 2 more lines and gets it to turn things into the appropriate types as given in a schema dictionary. |
08:48 | < Vornicus> | There. 9 lines. Might want to generalize it some more, really, or hunt up how to do named tuples to make it somewhat different, but this will do everything we need. |
08:49 | < Vornicus> | named tuple is not what I want. |
08:49 | < Vornicus> | Actual Objects, really, is what I'd want, with slots & shit, but. |
09:02 | < Vornicus> | Anyway. |
09:32 | | Kindamoody[zZz] is now known as Kindamoody |
09:41 | | gnolam [lenin@9D46A2.F4E9D7.E4B4CF.2072AD] has joined #code |
09:55 | < Vornicus> | Looks like reivles isn't goingto be back before I go to bed. :( |
09:59 | < Reivles> | I return! |
09:59 | < Reivles> | The lass had a few complications. |
09:59 | < Vornicus> | Ah. |
10:00 | < Vornicus> | Well all right, let's talk about what we have to do here. I have my code written but I'm not going to show it to you because then it wouldn't be very teachy. |
10:00 | < Vornicus> | :P |
10:01 | < Reivles> | Bastard :D |
10:02 | < Vornicus> | All right so let's get this started. First off we're going to need a function. It'll take a filename and the name of the primary key... so when I call it on this data here I'd say csv_database_reader("size.csv", "size") |
10:04 | < Vornicus> | (er, with the case correct on the actual field name there) |
10:05 | < Vornicus> | So write the definition and we'll get going. |
10:10 | | * Vornicus pokes at reiver |
10:10 | | Attilla [Some.Dude@Nightstar-febccc15.cable.virginmedia.com] has joined #code |
10:13 | < Reivles> | hm |
10:13 | | * Reivles is kind of trying to research the definition. >_> |
10:14 | < Alek> | aie complications? |
10:14 | < Alek> | ?_? |
10:14 | < Vornicus> | Trying to figure out how to define a function? |
10:14 | < Reivles> | In python, yes |
10:14 | < Reivles> | You don't have all the handy static int void main() crap to use as a template~ |
10:14 | < Vornicus> | def <function name>(<param 1>, <param 2>, <optional param> = <initial value>) |
10:15 | < Vornicus> | Oh, with a : on the end. |
10:15 | < Reivles> | Oh. |
10:15 | < Reivles> | csv_database_reader(fileName,keyName): |
10:16 | < Vornicus> | right, but there should be a def at the beginning. |
10:16 | < Reivles> | whoops, OK |
10:16 | < Reivles> | def csv_database_reader(fileName,keyName): |
10:16 | < Vornicus> | Just like that. |
10:17 | < Reivles> | Righto |
10:17 | < Vornicus> | Okay, now. in Python, things that happen "within" other things, instead of being surrounded by braces, are simply indented. The conventional indentation amount is 4 spaces per level. |
10:18 | < Reivles> | Yeah, I know the indentation trick |
10:19 | < Reivles> | Especially because when I hit enter on that line it tabbed in for me~ |
10:19 | < Vornicus> | Heh |
10:19 | < Vornicus> | Okay, so next we want to do two things: 1. we want to create an empty dictionary in which we will put our database; 2. we want to open up our csv and prepare to walk through it. |
10:20 | < Vornicus> | Creating an empty dictionary is pretty simple; {} is an empty dictionary, just assign it to something. |
10:22 | < Reivles> | suggestions on names? |
10:22 | < Vornicus> | I called mine "db" |
10:23 | < Reivles> | oh, haha |
10:23 | < Reivles> | I see what you did there |
10:23 | < Reivles> | OK |
10:24 | < Vornicus> | whut? |
10:24 | < Vornicus> | okay, next we have to do a couple things. |
10:24 | < Reivles> | Right |
10:24 | < Vornicus> | We have to open the file and feed it to csv.DictReader, and assign that to something. |
10:25 | < Vornicus> | That's rather a few things, and I suspect you know how to call functions, so I just pasted that earlier. |
10:27 | | * gnolam rages at the lack of a good open source bitmap graphics editor. |
10:27 | < Reivles> | righto |
10:28 | < Reivles> | (Orthia is wondering if you heard about her graduation on Thursday) |
10:28 | < Vornicus> | (I had!) |
10:28 | | You're now known as TheWatcher |
10:29 | | Vash[Working] is now known as Vash[Sleeping] |
10:29 | < Reivles> | (Jolly good~) |
10:29 | < Reivles> | So anyway, which file am I opening today |
10:29 | < Vornicus> | Okay, next we're going to iterate over the reader; it will produce dictionaries. |
10:30 | < Vornicus> | The file that the function tells you to open. |
10:30 | < Reivles> | Uh, OK |
10:30 | < Vornicus> | We're being generic here; first we're building a thing that turns a csv into a database. Next time (which is not today) we'll use this for specific things. |
10:30 | < Reivles> | OK |
10:31 | < Reivles> | fileName it is |
10:31 | < Reivles> | Iterating is for "row in reader:" ? |
10:31 | < Reivles> | er |
10:31 | < Reivles> | Iterating is "for row in reader:" ? |
10:34 | < Vornicus> | Just so. |
10:34 | < Reivles> | Right |
10:34 | < Vornicus> | And then indent appropriately. |
10:34 | < Reivles> | Now what do I do to each row~ |
10:34 | < Vornicus> | 1. extract the key from that row. |
10:35 | < Vornicus> | Reading a value from a dictionary is just like indexing an array. |
10:36 | < Vornicus> | I called what I got out of that "current_key" |
10:38 | < Vornicus> | 2. add this row to the db, with the key you just extracted as the key. |
10:39 | < Vornicus> | Anyway, what've you got? |
10:43 | < Reivles> | http://pastebin.starforge.co.uk/462 |
10:44 | < Vornicus> | We can assign to individual keys in a dictionary the same way you would assign to an array index in most other languages. |
10:44 | < Vornicus> | and we just want to stuff the whole row in there. |
10:45 | | froztbyte [froztbyte@Nightstar-dc394964.za.net] has quit [Ping timeout: 121 seconds] |
10:45 | | froztbyte [froztbyte@C06FE3.42F507.FF17E9.235A4E] has joined #code |
10:45 | < Reivles> | Oh. So, uh, db[0] = currentKey? |
10:46 | < Vornicus> | no. |
10:46 | < Vornicus> | db[currentKey] = row |
10:47 | < Reivles> | Oh, right. |
10:47 | < Reivles> | Yon Dolt. >.> |
10:47 | < Vornicus> | But anyway after that we're pretty well done. get out of the loop, return db, and the function is (for now) done. |
10:48 | < Vornicus> | Now. Before we do any testing, there's something wrong with your size table. |
10:48 | < Reivles> | for row in reader: |
10:48 | < Reivles> | currentKey = row[keyName] |
10:48 | < Reivles> | db[currentKey] = row |
10:48 | < Reivles> | That... doesn't look right |
10:48 | < Reivles> | row[keyName] ain't an integer. |
10:49 | < Vornicus> | You're right. But this is a dictionary. |
10:49 | < Vornicus> | A dictionary can have any kind of key it wants, so long as it's hashable. |
10:49 | < Vornicus> | Numbers, strings, booleans, None, tuples, frozensets... |
10:49 | < Vornicus> | All at once. |
10:49 | < Reivles> | ... hunh. |
10:50 | < Reivles> | So that's correct? Funktastic. |
10:50 | < Reivles> | What is keyName doing? Things like AC etc? |
10:50 | < Vornicus> | keyName in this case, um |
10:50 | < Vornicus> | Okay first off what we're going to do is correct the table. |
10:50 | < Reivles> | OK |
10:51 | < Reivles> | Let's do that then~ |
10:51 | < Vornicus> | The difficulty is in the top row. See if you can figure out what it is. |
10:51 | < Reivles> | Assuming the top row is the one I think you are referring to, you are referring to the table headers? |
10:52 | < Vornicus> | Yes. |
10:52 | < Reivles> | In that they are table headers? |
10:52 | < Reivles> | As opposed to Name,-X,-Y,+Z etc? |
10:52 | < Vornicus> | No, they're perfectly acceptable to be table headers |
10:52 | < Vornicus> | Indeed we're depending on that |
10:52 | < Reivles> | OK |
10:52 | < Reivles> | er |
10:52 | < Vornicus> | But there's something wrong with the headers themselves. |
10:53 | < Reivles> | Oh, hahaha |
10:53 | < Reivles> | That's the old copy with two 'Size' |
10:53 | < Reivles> | Meant to be Size,StrMod,DexMod,SizeMod,NA |
10:54 | < Vornicus> | There you go. |
10:54 | < Reivles> | Took me a moment because I already fixed that once~ |
10:54 | < Vornicus> | Okay. Oh, do you have "import csv" in the top of the file with the function in it. |
10:54 | < Reivles> | yup |
10:54 | < Reivles> | It may need fixing though, given we have a fancypants import function now. |
10:55 | < Vornicus> | No, that will do nicely. |
10:55 | < Vornicus> | Okay. Save the file with the function in it, in the same folder as the csv. |
10:55 | | Kindamoody is now known as KiMo|out |
10:55 | < Reivles> | aight |
10:55 | < Vornicus> | (I called them csvdb.py and size.csv) |
10:55 | < Vornicus> | Okay, now we're going to write a single line of testing goce. |
10:56 | < Vornicus> | code. "goce"? wtf? |
10:56 | < Reivles> | snrk |
10:56 | < Reivles> | go for it |
10:56 | < Vornicus> | size_table = csv_database_reader("size.csv", "Size") |
10:56 | < Vornicus> | print size_table["Tiny"]["DexMod"] |
10:57 | < Vornicus> | That goes into csvdb.py for now. |
10:58 | < Reivles> | This is a seperate file to the main one, or this is the main one? |
10:58 | < Vornicus> | csvdb.py will be separate, eventually; but for now it's the only thing we have written, so put the testing code in there. |
10:59 | < Vornicus> | (also, making sure: you have a return in your csv_database_reader code, correct?) |
11:01 | < Vornicus> | Anyway once you've written that, fire the script and see what you get. |
11:03 | < Reivles> | size_table = csv_database_reader("sizeMod.csv","Size") |
11:03 | < Reivles> | NameError: name 'csv_database_reader' is not defined |
11:04 | < Vornicus> | Are you still in the same file? |
11:05 | < Reivles> | yeah, sec |
11:05 | < Vornicus> | ...and are you putting it at the bottom? |
11:06 | < Reivles> | ... er, no~ |
11:07 | < Reivles> | I forget Python sticks things in funny places. |
11:07 | < Reivles> | I'm a little too used to having a main()~ |
11:07 | < Vornicus> | Heh. |
11:07 | < Reivles> | haha, cute. |
11:07 | < Reivles> | A dict of dicts! |
11:08 | < Vornicus> | That wasn't so hard, was it. |
11:08 | < Vornicus> | Now, you're actually going to have a bit of trouble with this as-is; the stuff's coming in as strings. |
11:08 | < Vornicus> | We'll deal with that some other time, the sun's up and I need sleep. |
11:08 | < Reivles> | Though they're not in order; I presume that is from the hashing sillyness? |
11:09 | < Reivles> | No worries, thank you! |
11:09 | < Reivles> | Anything I can poke at in your abscence? |
11:09 | < Vornicus> | That's from hashing silliness and frankly there's no need for order. |
11:09 | < Reivles> | Just checking. |
11:09 | < Reivles> | For example, rigging base.csv or critter.csv? |
11:09 | < Vornicus> | You'll want to make sure that the table is sensibly named and so forth, obviously. |
11:10 | < Reivles> | Righto |
11:10 | < Reivles> | And I do want a base.csv yes? |
11:10 | < Reivles> | Even if it's a row of headers and one line. |
11:10 | < Vornicus> | Uh.... possibly. |
11:11 | < Vornicus> | We'll look into that later. If you're guaranteed to only need one record for that table there's probably a different tack that will work more obviously. |
11:12 | < Reivles> | No worries |
11:12 | < Reivles> | Pretty sure it's only ever the one, but yeah. |
11:12 | < Reivles> | Ni! |
11:13 | < Vornicus> | Just make sure your shit's lined up in your critter.csv and work out the interactions that you need and we'll work on those later. |
11:13 | < Vornicus> | oh and. |
11:14 | < Vornicus> | You'll want to make sure that you can, um. rebuild things that are numbery without too much hassle. I say a situation where you would normally write "2d6" should be 2 columns. possibly 3 if there's also a bonus. |
11:14 | | Vornicus is now known as Vornicus-Latens |
11:28 | < Reivles> | Duly noted. :) |
11:48 | <@Namegduf> | Is it terribly wrong of me to implement unit tests of a small C program (using flex and bison) by compiling separate binaries for a lexer and parser printing the tokens/tree respectively to stdout and using a shell script coupled with input and expected output files? |
11:49 | <@Namegduf> | It works nicely but I'm wondering if there's some... nicer solution I should know. |
12:05 | | * TheWatcher eyes this VFs code, has the distinct impression that he may be making it far more complicated than it needs to be |
12:06 | < TheWatcher> | *VFS |
13:02 | < gnolam> | So it's a WTFVFS? |
13:03 | < UndeadAnno> | OMGWTFVFS. |
13:09 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code |
14:24 | | UndeadAnno is now known as AnnoDomini |
14:25 | | AnnoDomini is now known as UndeadAnno |
15:12 | | * UndeadAnno ponders how to remove authorship signatures from a PDF file generated by OO.org. |
15:17 | | AquaFox [NSwebIRC@Nightstar-6960068f.ip.windstream.net] has joined #code |
15:18 | < AquaFox> | guess this isnt an active channel... |
15:20 | < UndeadAnno> | It's plenty active. |
15:20 | < UndeadAnno> | Just not now. |
15:20 | < AquaFox> | ahhhh whens it usually active? |
15:20 | <@Namegduf> | And just not within 60 seconds of joining before you've said anything to reply to. |
15:21 | < ToxicFrog> | Evenings/nights EST are probably the most common times for activity, but the real answer is "when interesting things are being discussed". |
15:21 | | AquaFox [NSwebIRC@Nightstar-6960068f.ip.windstream.net] has left #code [""] |
15:21 | < ToxicFrog> | ... |
15:23 | <@Namegduf> | Yeah, someone who says "Guess it isn't active" within 60 seconds of joining isn't going to have the patience. |
15:24 | < ToxicFrog> | I have to say, it's not uncommon for someone to join a channel, say/ask something, and then quit in impatience when they don't get an immediate reply |
15:24 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
15:24 | < ToxicFrog> | But I think this is the first time I've seen someone declare a channel dead as soon as they join, without even saying anything. |
15:25 | < Reivles> | That's a pretty cute trick, that. |
15:28 | < EvilDarkLord> | Maybe he's used to greeter bots. |
15:30 | < Reivles> | Or channels filled with a hundred users and text flooding the screen at several dozen lines per minute. |
15:31 | < Reivles> | Which is kind of funny, because Nightstarian channels seem to actively *avoid* such chatrates, and start to splinter into specialisations if they ever get that loud... |
15:31 | < EvilDarkLord> | Do we actually have enough people on the network that that could become a problem? |
15:33 | < Reivles> | Once or twice, we've had megachannels try to join up. |
15:34 | < Reivles> | Then generally leave, because we're not really that kinda folk. |
15:34 | | KiMo|out is now known as Kindamoody |
15:47 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code |
16:56 | | Kindamoody is now known as Kindamoody|nap |
17:55 | | Vornicus-Latens is now known as Vornicus |
17:58 | < Kazriko> | ToxicFrog, I've seen it frequently over on Aniverse. heh |
17:59 | < Kazriko> | The other annoying thing there is the people who join, type !list, then leave 30 seconds later. heh. |
18:03 | | UndeadAnno is now known as Birds |
18:03 | < celticminstrel> | What? |
18:03 | | EvilDarkLord is now known as Shield |
18:13 | < Kazriko> | celticminstrel, someone dropped in, 60 seconds later said the channel was dead. heh |
18:28 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [[NS] Quit: If the world didn't suck, we'd all fall off.] |
18:32 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code |
18:36 | | Vash[Sleeping] is now known as Vash[Out] |
18:43 | < celticminstrel> | I hate it when people expect an instant response to their arrival and assume it's dead if they don't get it. |
18:43 | < celticminstrel> | What does !list mean by the way? |
18:45 | < Tamber> | It's a bot command, other than that, I have no idea. |
18:46 | < Tamber> | Wild guess as to what would be expected from that command: a list of all the available commands. |
18:48 | | * Tamber raises an eyebrow at the email just received. |
18:50 | < Tamber> | 1. Why am I being used as the point of contact for this request, my name's only in the AUTHORS because I fixed one or two things, I have no idea how most of the codebase works. I've not looked. 2. How does one jump from "There is a filetype array here that tells the server what handler to use on a certain file" to "adding a new filetype to that array magically makes all clients understand that ... |
18:50 | < Tamber> | ... they need to feed these certain files that they have received through man"? |
18:56 | < celticminstrel> | ? |
18:56 | < ToxicFrog> | celticminstrel: in channels populated by f-serv and XDCC bots (typically, warez channels), !list is "send me a list of all of your available files"; it will result in all active bots in-channel telling you what they have for download. |
18:56 | < celticminstrel> | Ahh. |
18:56 | < Tamber> | Oh, I was close(!) |
18:56 | < Tamber> | :) |
18:57 | < Tamber> | celticminstrel, I've got a mail from some guy wanting to make a change to server software I've done a little work on, a "simple as adding a few lines to" type of change. |
18:59 | < Tamber> | What he /wants/ is impossible, he wants to make a change on the server that makes every gopher client ever magically understand that it needs to feed a certain type of file through a man-page parser. |
19:03 | < Tamber> | And, because I can just about hear everyone thinking it: Yes, gopher. It still exists. |
19:03 | < Tamber> | ;) |
19:04 | < celticminstrel> | I've never really know what gopher is. <_< |
19:04 | < celticminstrel> | ^known |
19:04 | < celticminstrel> | Except that it's a protocol of some sort. |
19:06 | | * Tamber flails about trying to describe it, gives up. http://en.wikipedia.org/wiki/Gopher_%28protocol%29 |
19:06 | < celticminstrel> | XD |
19:09 | < gnolam> | Tamber: heh, you /did/ manage to read my mind. |
19:09 | | Kindamoody|nap is now known as Kindamoody |
19:10 | < Tamber> | :) |
20:35 | | celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [Client closed the connection] |
20:35 | | celticminstrel [celticminst@1526F6.37AB0D.97233B.788A64] has joined #code |
20:40 | | Vash[Out] is now known as Vash[Decorating] |
20:53 | | Stalker [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds] |
20:56 | | Attilla_ [Some.Dude@Nightstar-febccc15.cable.virginmedia.com] has joined #code |
20:56 | | Attilla [Some.Dude@Nightstar-febccc15.cable.virginmedia.com] has quit [Ping timeout: 121 seconds] |
20:57 | | Birds is now known as AnnoDomini |
20:58 | | Shield is now known as EvilDarkLord |
21:16 | | Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Connection closed] |
21:27 | | Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code |
21:28 | | Syloqs_AFH is now known as Syloqs-AFH |
22:00 | | Stalker [Z@2C3C9C.B2A300.F245DE.859909] has joined #code |
22:42 | | UndeadAbu [annodomini@D553D1.41311B.77F236.FFFE2E] has joined #code |
22:43 | | Stalker [Z@2C3C9C.B2A300.F245DE.859909] has quit [Connection reset by peer] |
22:43 | | Stalker [Z@2C3C9C.B2A300.F245DE.859909] has joined #code |
22:45 | | AnnoDomini [annodomini@D553D1.9D4909.31D578.ED796F] has quit [Ping timeout: 121 seconds] |
22:48 | | UndeadAbu [annodomini@D553D1.41311B.77F236.FFFE2E] has quit [[NS] Quit: leaving] |
23:18 | | You're now known as TheWatcher[T-2] |
23:25 | | You're now known as TheWatcher[zZzZ] |
23:59 | | Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed] |
--- Log closed Mon May 09 00:00:58 2011 |