--- Log opened Sat Dec 09 00:00:02 2006 |
00:31 | | AnnoDomini [~fark.off@Nightstar-28974.neoplus.adsl.tpnet.pl] has quit [Quit: Some people find sanity a little confining.] |
00:50 | < Takyoji> | Hmm.. I cant decide.. "PHP" by O'Rielly or "PHP Cookbook" by O'Rielly |
00:53 | < Takyoji> | or "Learning PHP 5" |
00:55 | < Takyoji> | erm, published by O'Reilly |
00:55 | <@ToxicFrog> | The cookbook will, AFAIR, be a set of useful programs, functions and algorithms for use by someone already fluent in the language. |
00:57 | < Takyoji> | just small code snippits, or like a +30 lined application? |
00:57 | <@ToxicFrog> | Unsure. It's been quite some time. |
00:57 | <@ToxicFrog> | However, as you are still learning PHP, it is unlikely to be of more use to you than the others. |
00:58 | <@ToxicFrog> | As Vorn and I said, O'Reilly is mainly reference materials for stuff you *already know*, not teaching materials. |
00:58 | < Takyoji> | ahh |
00:58 | | * Vornicus doesn't know really of any books that are that useful for actually learning to program. |
00:59 | <@Vornicus> | But there's the Pragmatic Programmer, which is a heaping pile of best practices. |
00:59 | < Takyoji> | Because I understand all the primary commands, and all. But not the less common ones |
00:59 | <@ToxicFrog> | Vornicus: there's SICP. |
00:59 | < Takyoji> | PHP is quite simple |
01:00 | < Takyoji> | Well, I suppose both probably.. I'm not sure |
01:00 | <@Vornicus> | PHP is scary shit, IMO |
01:00 | < Takyoji> | xD and why'd that be? |
01:01 | <@ToxicFrog> | But, I don't really know either, I picked up programming from my dad. So. |
01:01 | <@ToxicFrog> | Yes. |
01:01 | <@ToxicFrog> | It combines all the worst elements of bash and perl. |
01:01 | <@ToxicFrog> | <ToxicFrog> It combines all the worst elements of bash and perl. |
01:01 | < Takyoji> | so its missing? |
01:01 | < Takyoji> | rephrase: So then what is it missing? |
01:01 | <@ToxicFrog> | ... |
01:01 | <@Vornicus> | Missing? Nothing. |
01:02 | <@Vornicus> | It's not features |
01:02 | <@ToxicFrog> | Since you clearly aren't actually listening to me, I'm going back to FFX now. Ta. |
01:02 | <@Vornicus> | It's cleanliness, generality, usefulness in generic programming problems, readability... |
01:02 | < Takyoji> | *smacks head into desk* Then what's the worst elements of it? |
01:03 | < Takyoji> | ahh |
01:03 | < Takyoji> | and a suggested alternative would be? |
01:03 | < Takyoji> | (I don't have ASP) |
01:03 | <@Vornicus> | Ruby, Python |
01:03 | < Takyoji> | ahh |
01:04 | <@Vornicus> | Any of a hundred general purpose medium-to-high level languages. |
01:04 | <@ToxicFrog> | Vorn is all about the Ruby these days :P |
01:04 | | ReivOut is now known as Reiver |
01:04 | | * Vornicus likes Ruby. |
01:04 | < Takyoji> | heh |
01:04 | | * ToxicFrog favours Lua for CGI programming, but by all accounts RoR kicks a whole mess of ass. |
01:05 | < Takyoji> | It's just that the company that hosts our website doesn't support Ruby on Rails I believe |
01:05 | <@Vornicus> | Having looked into RoR I am... not a great fan, mainly because it does a lot of magic. |
01:05 | <@ToxicFrog> | ...and won't let you install it? |
01:05 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
01:05 | < Takyoji> | well.. in what way is it installed? |
01:06 | < Takyoji> | Does it have to be a running application with Apache |
01:06 | < Takyoji> | for the parser |
01:06 | <@Vornicus> | Do you have shell access, or just ftp? |
01:07 | < Takyoji> | FTP atm, but I can have SSL access |
01:08 | < Takyoji> | oh its though CGI? |
01:08 | <@ToxicFrog> | SSH access, you mean? |
01:08 | <@ToxicFrog> | And, yes, you've been working with CGI this whole time. |
01:08 | <@ToxicFrog> | Haven't you noticed? |
01:09 | < Takyoji> | erm |
01:09 | < Takyoji> | Just.. kill me |
01:11 | < Takyoji> | I've never looked into RoR |
01:11 | <@ToxicFrog> | o.O |
01:12 | < Takyoji> | Nobody tells me to |
01:12 | < Takyoji> | I'm just surrounded by people who rely on software rather than make it where I live |
01:13 | | * ToxicFrog eyes these docs. Ruby has a "clean and simply syntax"? Ahahahahahahahahahahahahahahahaa |
01:14 | <@Vornicus> | It's getting cleaner. The block thing is insano though |
01:14 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
01:15 | <@ToxicFrog> | (and, er...I seem to recall some effort at pointing you away from PHP when you started this project) |
01:15 | < Takyoji> | Would you say it parses faster? y/n? |
01:15 | <@Vornicus> | Ruby? It's probably the slowest serious language. Unless you're doing a lot of stuff, though, it's not too big a deal. |
01:16 | <@ToxicFrog> | ...I have no idea, how is the parse speed relevant? |
01:16 | < Takyoji> | I am going to finish the e-commerce application in PHP of course, then play with other languages |
01:16 | < Takyoji> | I mean, like for saving to databases or something? |
01:17 | <@ToxicFrog> | I think we have a terminology problem here. |
01:17 | <@ToxicFrog> | "Parsing" is the process of taking a sequence of tokens and turning them into an abstract syntax tree or other code representation. |
01:17 | < Takyoji> | oh. Sorry. |
01:18 | <@ToxicFrog> | It's the second step in turning source code into bytecode or machine code, after lexing. |
01:18 | <@Vornicus> | lex -> parse -> compile -> run. |
01:18 | < Takyoji> | ahh |
01:18 | <@ToxicFrog> | A fast parser gives no benefit if the code runs slowly, and similarly, a slow parser isn't a problem if you can precompile your code. |
01:19 | <@Vornicus> | compile-> run is often replaced with interpret in high-level languages - PHP and Ruby |
01:20 | < Reiver> | Is there an explicit advantage to leaving out the 'compile' bit? |
01:20 | <@ToxicFrog> | You can't "leave it out" |
01:20 | <@ToxicFrog> | You can however defer it until runtime. |
01:20 | <@ToxicFrog> | Vornicus: those compile to bytecode and run in a VM, I thought. |
01:21 | < Takyoji> | I'm basically a mess about learning programing and such because: 1) Our local library lacks programming books, 2) I have NO classes I can choose from and I dont even think there's a damned college that teaches programming in this city |
01:21 | <@ToxicFrog> | It doesn't execute the AST directly. |
01:21 | <@ToxicFrog> | Or does it? |
01:21 | <@Vornicus> | Ruby executes its AST |
01:21 | < Takyoji> | 3) None of my friends know how to program |
01:21 | <@ToxicFrog> | Aah. Ok. |
01:21 | <@ToxicFrog> | In that case, parsing is also compilation. |
01:21 | <@Vornicus> | There are something like /five/ projects to create a virtual machine; the current leader pulls off a tenfold increase in all but the most whack of situations. |
01:22 | <@Vornicus> | tenfold increase in speed, rather. |
01:22 | <@ToxicFrog> | Impressive. |
01:23 | <@Vornicus> | And that, I believe, is without actually doing any optimization on the output bytecode. |
01:23 | | TakyojiClone [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has joined #code |
01:23 | <@ToxicFrog> | Although this may say less about the speed of the VM and more about the speed of the AST executor. |
01:24 | <@Vornicus> | Well, yes. |
01:24 | <@Vornicus> | I think the executor is not done right in some ways, but I don't know. |
01:25 | | Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has quit [Ping Timeout] |
01:28 | <@ToxicFrog> | Reiver: ok, so while it can be done, it doesn't appear to confer any benefit in the current implementations. |
01:28 | <@ToxicFrog> | Although I bet you could do some twisted things with self-modifying code in a 'terp that let you access the AST directly. |
01:29 | <@Vornicus> | One advantage is that if you don't compile it you don't need to write a damn virtual machine. |
01:29 | <@Vornicus> | Another is that you can do some twisted things with self-modifying code. See scheme. |
01:29 | <@ToxicFrog> | Well, you still need parts of one. It has to maintain state, etc. |
01:29 | <@ToxicFrog> | But yeah, you don't need a full-blown VM. |
01:39 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: Clair jouets voire] |
01:39 | < TakyojiClone> | So what are classes supposed to be? |
01:40 | < TakyojiClone> | in PHP and so on |
01:40 | < TakyojiClone> | (just curious) |
01:40 | <@Vornicus> | in PHP they're tacked on. |
01:41 | < TakyojiClone> | I mean, in general, what are classes? |
01:41 | <@Vornicus> | Oh |
01:41 | <@Vornicus> | A class is a specification of a /kind/ of object. |
01:41 | | * ToxicFrog ponders how best to explain this |
01:41 | <@Vornicus> | All objects of a class look the same; they have the same variables, they have the same methods with the same signatures. |
01:42 | <@Vornicus> | A class encapsulates behavior and information into one coherent package. |
01:43 | < TakyojiClone> | What would be an example of what a class would be used for? |
01:43 | <@ToxicFrog> | Any time you need to have something that both "is" and "does". |
01:43 | <@Vornicus> | Here's one I wrote the other day: |
01:44 | <@ToxicFrog> | Ok, I was writing an example but let's go with Vorn's. |
01:44 | < TakyojiClone> | no, you can continue if you want to |
01:44 | <@Vornicus> | a player is the avatar a user has in a particular game. |
01:44 | < TakyojiClone> | ohh |
01:44 | <@Vornicus> | The player has a name, a turn order, a pawn color, a pile of resources... |
01:44 | < TakyojiClone> | I thin I know where you're going with this |
01:45 | < TakyojiClone> | think* |
01:45 | <@Vornicus> | A player may trade with other players; he may spend resources; he may... |
01:46 | <@Vornicus> | So I have a class, and it defines various attributes - the color of his pawn, the resources he has. |
01:46 | < TakyojiClone> | I see |
01:47 | <@Vornicus> | And it defines methods: ones that say "buy a road!" or something, ones that define the player's interaction with other players. |
01:47 | < TakyojiClone> | ahh |
01:47 | < TakyojiClone> | in general, a key thing for game programming? |
01:47 | < TakyojiClone> | And as another question what is "Object-Orientated Programming" |
01:48 | <@Vornicus> | Object-oriented programming is what you get when you use classes and objects properly. |
01:48 | < TakyojiClone> | ahh |
01:49 | <@ToxicFrog> | Some mention of inheritance should also be made here. |
01:49 | <@Vornicus> | It is an important thing for most modern programming. I used a game example because it's what I'm writing. |
01:50 | <@ToxicFrog> | You can define classes in terms of what other classes can do. |
01:50 | <@ToxicFrog> | So for example, you can say "An animal is a type of thing. An animal can attack." And then "A cat is a type of animal. A cat can purr." And since it's an animal, it can also attack even though you haven't explicitly said so. |
01:50 | < Reiver> | Question for folks that understand how IP addresses actually work. Mind if I butt in? |
01:51 | <@ToxicFrog> | Go ahead. |
01:51 | < Reiver> | I currently have a laptop that usually is jacked into an ethernet cable. However, as part of a fortuitous accident I currently have two Bluetooth dongles, and am using them to create a bluetooth wireless network thingy. (Why? Because I could, shut up already.) |
01:52 | < Reiver> | However, I wish to get it to connect to the internet via this. I can get to the settings to do so, but my question is - should I use the same IP address for the laptop in both ethernet /and/ bluetooth connections, or explicitly different ones? |
01:52 | <@ToxicFrog> | Correct me if I'm wrong, but isn't bluetooth for peripherals, not networking? |
01:52 | <@ToxicFrog> | You should, ideally, have them both set for DHCP. |
01:52 | < Reiver> | No DHCP server on the network. |
01:52 | < Reiver> | >.> |
01:52 | < Reiver> | And yes, it is, but it's able to give you a 1Mbps link anyway. |
01:53 | < Reiver> | This isn't an intentional network, this is a "I wonder if you can do that" hackjob. |
01:53 | <@Vornicus> | Technically you should be /getting/ multiple IP addresses if you have multiple network appliances. |
01:53 | < Reiver> | Vorn: I'm hand-typing the IP addresses, so |
01:54 | <@Vornicus> | I am not aware of a situation where you would get identical IP addresses from two locations and it would actually work. |
01:54 | < Reiver> | I'm just wondering how one configures IPs when you can have a computer connected two different ways simultaneously. Two IPs (One for each connection), or one IP for each, giving your computer two IP addresses? |
01:54 | <@ToxicFrog> | Those are the same thing. |
01:54 | <@ToxicFrog> | "one IP for each connection" and "one IP for each connection" |
01:54 | < Reiver> | Er |
01:54 | <@ToxicFrog> | Generally, each connection has a different IP. |
01:54 | | Vornicus [~vorn@Nightstar-18307.slkc.qwest.net] has quit [Quit: ] |
01:55 | < Reiver> | One IP for each connection, or the same IP. |
01:55 | <@ToxicFrog> | Giving them the same IP means getting into bridging wackiness. |
01:55 | < Reiver> | I screwed up the syntax, sorry. >.> |
01:55 | < Reiver> | OK. |
01:55 | < Reiver> | Just checking. Thanks. |
01:56 | <@ToxicFrog> | ...and, yes, as Tekkie said, how does the BT card talk to the modem? |
01:58 | < Reiver> | ...Uh. Whoops. Yes. Er. |
01:58 | < Reiver> | It'll be trying to go via a different computer. |
01:58 | < Reiver> | I have my main boxen plugged into a switch plugged into the router. It has a bluetooth dongle attached. |
01:58 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
01:59 | <@ToxicFrog> | Aah. So you've set your main machine up as a gateway. |
02:00 | < Reiver> | ... Not yet. It was only just Tekkie's query that reminded me that I'd need to. >.< |
02:05 | < TakyojiClone> | So in general, what's a good GUI driven programming language for Windows? |
02:05 | < TakyojiClone> | C#, C, C++, VB, ...? |
02:07 | < TakyojiClone> | well? |
02:16 | <@ToxicFrog> | Ok, first of all, what do you mean by "GUI driven"? |
02:16 | <@ToxicFrog> | If you mean "has good GUI libraries", there's no such thing. |
02:17 | <@ToxicFrog> | Probably the closest would be C++ using Glade. |
02:17 | <@ToxicFrog> | I favour Lua using GTK+ directly. |
02:17 | <@ToxicFrog> | Of note is that both glade and GTK+ are cross-platform. |
02:18 | <@ToxicFrog> | If you're after /graphics/ rather than a GUI, SDL is your tiny god. |
02:19 | <@ToxicFrog> | But, again, that's a library, not a language. |
02:24 | < TakyojiClone> | hmm |
02:25 | < TakyojiClone> | So basically Lua? |
02:25 | < TakyojiClone> | and so.. is GTK+ a library/extension to it? |
02:25 | < Vornicus-Latens> | For Windows specifically, you can probably use MS' Form Designer. |
02:25 | <@ToxicFrog> | It depends on what you're doing. As I said, I favour Lua. |
02:25 | < Vornicus-Latens> | But. |
02:26 | <@ToxicFrog> | GTK+ is a graphical interface library. |
02:26 | < TakyojiClone> | ahh |
02:26 | < Vornicus-Latens> | GTK+ is a GUI library with bindings to a lot of languages. |
02:26 | < Vornicus-Latens> | and it is cross-platform. |
02:26 | <@ToxicFrog> | It is Windows/Linux/OSX cross-platform, and has native bindings for C and C++ and additional bindings for lots of other stuff. |
02:26 | < TakyojiClone> | ahh |
02:26 | <@ToxicFrog> | Glade is a supplementary library, which lets you put together interfaces in a handy designer program and then load them into your GTK-and-Glade-based program. |
02:27 | | Vornicus-Latens is now known as Vornicus |
02:27 | < TakyojiClone> | stupid question but, can you execute MySQL queries through it? |
02:27 | < Vornicus> | through... gtk? |
02:27 | <@ToxicFrog> | ...no? GTK is a GUI library. |
02:27 | < Vornicus> | what? |
02:27 | < TakyojiClone> | Through Lua |
02:27 | <@ToxicFrog> | Yes. |
02:27 | < TakyojiClone> | woo |
02:27 | <@ToxicFrog> | Or rather, there is an SQL library for Lua. |
02:27 | <@ToxicFrog> | Called LuaSQL, oddly enough. |
02:27 | < TakyojiClone> | What is the compiler like, text only? |
02:27 | | * Vornicus prefers Postgres to Mysql |
02:27 | < TakyojiClone> | ahh |
02:28 | <@ToxicFrog> | Vornicus: it supports both Postgres- and my- |
02:28 | < Vornicus> | awesomeland |
02:28 | <@ToxicFrog> | And, like, a dozen other database types as well. |
02:28 | < TakyojiClone> | ahh |
02:28 | < TakyojiClone> | Any good books on Lua? |
02:28 | <@ToxicFrog> | Lua is interpreted, not compiled. It does have a compiler you can use if you want to strip down the interpreter or speed up execution by skipping lex/parse/code generation. |
02:28 | <@ToxicFrog> | http://www.lua.org/manual/5.1/ |
02:29 | < TakyojiClone> | ohh |
02:29 | < TakyojiClone> | So, for example, in order to run the application you'd have to load it through an intrepreter? |
02:29 | <@ToxicFrog> | Also, I have lying around a program (written in Lua) - you feed it Lua code, and it generates C code that loads that code into memory and executes it. |
02:30 | <@ToxicFrog> | In general, yes. |
02:30 | <@ToxicFrog> | If you don't want to do that, see above. |
02:30 | <@ToxicFrog> | You use the wrapper program to generate C code and then compile that into a binary, which you then distribute. |
02:31 | <@ToxicFrog> | Depending on how you use this this can either be "I have packaged my entire Lua program into a single executable binary containing all the Lua source", or "I am distributing my program with a standard Lua terp that is hard-coded to load program.lua when it starts", or anything in between. |
02:32 | <@ToxicFrog> | In truth, I am unsure whether Lua would work well for you. |
02:33 | < TakyojiClone> | brb |
02:33 | | MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has joined #code |
02:35 | < TakyojiClone> | So basically, you can choose to have it compiled, otherwise have it in an excutable which contains the interpreter and interpret it, right? |
02:35 | <@ToxicFrog> | No, no. |
02:35 | < TakyojiClone> | or is the interpreter a seperate application as well as the code? |
02:36 | <@ToxicFrog> | Ok. Under normal circumstances, you write Lua code, you run it through the interpreter /usr/bin/lua which executes the code. |
02:36 | <@ToxicFrog> | You can choose to compile it, but this compiles to Lua VM bytecode, not machine code. |
02:36 | < TakyojiClone> | oh |
02:36 | <@ToxicFrog> | So the compiled Lua code /also/ runs in the interpreter. |
02:36 | <@ToxicFrog> | It just does so faster and lets you create a smaller, custom interpreter. |
02:36 | <@ToxicFrog> | Now, Lua is meant to interact closely with C and C++ programs. |
02:37 | <@ToxicFrog> | Basically, it was originally envisioned as a way to add scripting support to such programs. |
02:37 | <@ToxicFrog> | So, you can write a C program that loads a block of Lua code into memory and then executes it using lua_pcall() |
02:37 | < TakyojiClone> | ahh |
02:38 | <@ToxicFrog> | The wrapper program blcgen simply automates this process: you feed it Lua code, and it spits out a C program that contains that code and lua_pcall()s it when run. |
02:40 | < MyCatOwnz> | ...can the Lua interpreter be made to do JIT compilation? Or has that not been done by anyone (yet)? |
02:40 | <@ToxicFrog> | This has not yet been done. I am unsure it would be practical with the current codebase, but I haven't studied the terp guts much. |
02:41 | | Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
02:45 | < MyCatOwnz> | Fair 'nuff. Out of curiosity, what linguistic class is Lua? LR(1), like C? |
02:47 | < TakyojiClone> | Give a couple primary examples of what you'd say Lua is good for, and a couple things that aren't the best to be made in Lua (if any) |
02:49 | < MyCatOwnz> | TakyojiClone: scripting engine for videogames. |
02:49 | < MyCatOwnz> | TakyojiClone: that's what is it brilliant for and precisely what it was designed for. |
02:49 | < TakyojiClone> | oh |
02:49 | < MyCatOwnz> | Bad: anything math-intensive that has to be done in real-time. |
02:50 | < TakyojiClone> | ahh |
02:50 | < TakyojiClone> | any suggestable alternatives? |
02:50 | < MyCatOwnz> | Also bad: anything which you'd need to use inline assembley for. |
02:50 | <@ToxicFrog> | I find that it's good for small-to-medium sized stand-alone programs, too. |
02:50 | <@ToxicFrog> | Basically, bad for stuff where low-level or high-performance is an isue. |
02:50 | < MyCatOwnz> | TakyojiClone: well, the canonical method for videogames is called the "alternating hard and soft layers" pattern. |
02:51 | <@ToxicFrog> | Both of these are what C/C++ is for. |
02:51 | < TakyojiClone> | ahh |
02:51 | < TakyojiClone> | Not like for making Maya 8 or something, right? ;P |
02:51 | < MyCatOwnz> | TakyojiClone: you write the high-level stuff, such as scripted sequences and so on, in a language that's cheap to write programs in, such as Lua. |
02:52 | < MyCatOwnz> | TakyojiClone: you write the mid-level stuff, such as your netcode and loading/saving code in something reasonably nippy, like C or C++. |
02:52 | <@ToxicFrog> | You write the low-level stuff, like the sound/graphics/physics/input subsystems, in a low-level, fast language like C++. |
02:52 | < TakyojiClone> | ahh |
02:52 | < MyCatOwnz> | TakyojiClone: you then profile the C stuff to see which bits the CPU spends most of its time in. |
02:53 | <@ToxicFrog> | That's optimization, not design. |
02:53 | < MyCatOwnz> | TakyojiClone: and then on the most heavily taxed bits (e.g. inner loops in the physics engine) you go absolutely balls-to-the-wall and do it in very thoroughly reviewed assembley. |
02:53 | < MyCatOwnz> | ToxicFrog: optimization is part of the design when realtime is involved. :/ |
02:54 | < MyCatOwnz> | ToxicFrog: (though yes, all the usual warnings about premature optimization still apply) |
02:54 | <@ToxicFrog> | ... |
02:54 | <@ToxicFrog> | "doing it in assembly" hasn't been the best way for quite some time. |
02:54 | <@ToxicFrog> | At least on modern processors, the compiler is much better at optimization that you are. |
02:54 | < MyCatOwnz> | Yes. Of course it is. |
02:56 | <@ToxicFrog> | So, keeping this in mind, you would use assembly for performance reasons...why? |
02:56 | < MyCatOwnz> | After all, there's no way on Earth you could ever do something crazy like, oh, I dunno, take the compiler's assembley output (-s or whatever equivalent flag), tweak it by hand, build the program, run a profiler to see if anything improved or not and thus be guaranteed as good as or better than runtime speed than the compiler. |
02:56 | < TakyojiClone> | Well, I suppose the question would be... "What is a good program for doing simple tasks that is bindable to MySQL for a considerable novice?" |
02:56 | <@ToxicFrog> | The "considerable novice" part rules out Lua. |
02:56 | <@ToxicFrog> | The "good" part rules out Perl ¬¬ |
02:56 | < Vornicus> | Python and Ruby are both very nice to beginners. |
02:57 | < Vornicus> | And both have top-quality tutorials on the net |
02:57 | <@ToxicFrog> | Python might have easily acessible database bindings; talk to Vorn. |
02:57 | < MyCatOwnz> | ToxicFrog: because the compiler isn't very good at cache size optimization tricks, alignment tricks, usage of obscure opcodes, usage of bleeding-edge crap (e.g. many SIMD instructions). |
02:57 | <@ToxicFrog> | Bleeding-edge crap I will grant you, but the rest? |
02:57 | < MyCatOwnz> | There's lots of stuff if you take a peeksee at researchers' sites. |
02:57 | < Vornicus> | Ruby perhaps has the nicest db bindings of all, see ActiveRecord |
02:58 | <@ToxicFrog> | There's also the fact that even if, by some miracle, you manage to squeeze more performance out of it than the compiler could, you are making your code many orders of magnitude less readable and maintainable and completely nonportable for a trivial performance increase. |
02:59 | < MyCatOwnz> | e.g. people whine like crazy about the floating-point stack on x86 chips, because they're hard and their compilers tend to get poor results with them. But a very clever person with Asperger's Syndrome, a +5 Hat of Being Really Smart and a CPU scheduling cheatsheet can squeeze beautiful performance out of it. |
03:00 | < MyCatOwnz> | Trivial? We're talking gains of roughly twenty percent for a good compiler and a crap programmer, right up to performance doubling (or possibly better, much better if you have a cache-management God on your team) for a realistic compiler and a very good programmer. |
03:01 | < MyCatOwnz> | Of course it's nonportable. Taking advantage of your target chip's idiosyncrasies for the sake of performance is always nonportable, |
03:02 | < MyCatOwnz> | This is why you a) run unit tests to ensure that the assembley code always gives the same result as the readable, clean C version and b) surround the nonportable bits with scary looking #ifdefs. |
03:03 | < MyCatOwnz> | To be fair to you, though, I can quite easily see how a team might completely omit to do step a), as well as see the horrible problems that would inevitably result. |
03:04 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
03:04 | | mode/#code [+o Reiver] by ChanServ |
03:11 | <@ToxicFrog> | Actual hard numbers with source code would be appreciated. |
03:12 | | * Vornicus ponders the value of putting the game rules into the SQL component, over putting the game rules in the script and having it tell the SQL what to do. |
03:12 | <@ToxicFrog> | Along with an example of a situation where it is, in fact, better to run twice as fast one a single version of a single implementation of a single architecture, and poorly if at all on everything else, while being at least twice as hard to maintain.l |
03:12 | < Vornicus> | Aircraft |
03:12 | | Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
03:12 | < MyCatOwnz> | ToxicFrog: does Quake I count? |
03:12 | <@ToxicFrog> | Vornicus: yes, but he's not talking about embedded systems. |
03:13 | <@ToxicFrog> | He's talking about game engines. |
03:13 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
03:13 | | mode/#code [+o Reiver] by ChanServ |
03:13 | < Vornicus> | Quake I: designed to run full software 3d on a 30MHz computer. |
03:13 | < TakyojiClone> | holy crap |
03:14 | <@ToxicFrog> | It looked like ass, yes, but it was playable. |
03:14 | < MyCatOwnz> | ToxicFrog: Carmack took all the critical inner-loops and rearranged the machine code so that one floating point instruction would be emitted on every even cycle and one integer instruction would be emitted on every odd cycle. |
03:14 | <@ToxicFrog> | However, this does not prove that improved performance > improved portability, just that some designers choose to go that way. |
03:14 | <@ToxicFrog> | And it definitely doesn't say anything about the speed of the hand-optimized assembly vs the speed of compiler-optimized assembly using a modern compiler. |
03:14 | < MyCatOwnz> | ToxicFrog: thus handily making the thing fly on the P1, which had seperate one instruction wide FPU and CPU pipelines. |
03:15 | < MyCatOwnz> | ToxicFrog: ummm, does nobody buying your fucking game count? 'Cause nobody would've bought Quake I if it hadn't run on their shitty 66MHz P1 boxes. |
03:16 | < MyCatOwnz> | ToxicFrog: and yes, the principle still holds with modern compilers. The chips move faster than the compilers can keep up with. It's just that the cases optimized for nowadays are somewhat more difficult. |
03:16 | <@ToxicFrog> | You still have offered exactly no compelling evidence that the hand-optimization was in fact necessary to accomplish this, and even less to indicate that if it was, it would still be necessary today. |
03:17 | < MyCatOwnz> | ToxicFrog: "No C compiler on Planet Earth circa 1995 would've produced that interleaved microcode for him." That's the answer to point one. |
03:18 | | Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
03:18 | < MyCatOwnz> | ToxicFrog: "Altivec on PPC chips, for example, lets FPU-bound code such as image processing apps gain about a 20% speed boost over pure-POWER5 implementations. Back when Apple was still using PowerPC chips, there were No C Compilers On Planet Earth which would take advantage of the Altivec instructions." |
03:18 | <@ToxicFrog> | Granted that it wouldn't produce that code, and even that what it did output wouldn't be as performant. The question is how much. |
03:19 | < MyCatOwnz> | Dude, we're not talking the whole fucking program here. Think four or five inner loops, at most. |
03:19 | <@ToxicFrog> | All you've been doing is waving your hands and saying "oh it's twice as fast" without actually backing it up. What if it was a 10% increase? 5%? 1%? Is it still worth it? |
03:20 | < MyCatOwnz> | ToxicFrog: fine. Gimme five minutes while I go dig up numbers from people who've tried it. |
03:21 | < Vornicus> | I can't count the number of computer architectures that use the i386 instruction set that are relevant today on all my fingers and toes. |
03:22 | < MyCatOwnz> | Vornicus: was there meant to be a, "don't," somewhere in that sentence? |
03:22 | < Vornicus> | Nope. |
03:23 | < Vornicus> | if I want to optimize my code for i386, there are dozens of architectures that I could reasonably end up on; 1 core, dual core, hyperthreading, 32 and 64 bit, dual processor... |
03:23 | < MyCatOwnz> | Vornicus: really? I can only think of about five chip manufacturers who use the i386 ISA, two and a half of whom aren't really relevant. |
03:24 | < MyCatOwnz> | Ah, I see. Yes, good point. |
03:24 | < Vornicus> | And each one requires different priorities for running your program at top speed. |
03:25 | < MyCatOwnz> | Not really. There's about three that're really worth optimizing for. |
03:25 | <@ToxicFrog> | This is why I said "one version of one implementation of one architecture" rather than "one architecture" |
03:26 | <@ToxicFrog> | Yeah, if you're doing embedded systems or console programming or the like, you know exactly what VIA you're developing for and there's no penalty for hand-optimizing except in maintainability and development time. |
03:27 | <@ToxicFrog> | (well, the IA at least, maybe not the V) |
03:27 | < MyCatOwnz> | Multicore, multi socket and hyperthreading all require precisely the same optimization techniques, for example. In all three cases, you're aiming to keep an appropriate quantity of threads all constantly busy for as long as possible, ideally with their datasets far out of each others' way as possible, with the least amount of locking that you can get away with - but no less than that! |
03:28 | < MyCatOwnz> | The only variable worth worrying about between the three is how far you'll want to keep the threads out of one anothers' ways. |
03:41 | < MyCatOwnz> | ToxicFrog: http://www.azillionmonkeys.com/qed/optimize.html#asmdebate |
03:42 | < MyCatOwnz> | ToxicFrog: the quoted programmer's experience was tested on, ah... VC++5, which was, AFAIK, reasonably speedy as far as C compilers go. |
03:42 | < Vornicus> | ...eheh. |
03:43 | < Vornicus> | VC++5 is old enough that I have never seen it actually used |
03:46 | <@ToxicFrog> | I have. I wake up screaming, sometimes. |
03:46 | < Vornicus> | ...woof. |
03:52 | | * Pi falls asleep screaming sometimes. Boy does that annoy the kreely. |
03:53 | < Vornicus> | heh |
03:57 | < MyCatOwnz> | ToxicFrog: GMP's devs quote a factor of between two and ten for handwritten routines over gcc. Not sure which version. |
04:31 | | MyCatOwnz is now known as MyCatBreaksHisComputer |
04:37 | < TakyojiClone> | http://2kinds.com/forum/viewtopic.php?p=84781#84781 |
04:37 | < TakyojiClone> | A topic I wrote on a different forum, but though I'd send the link here too, so I could hear your thoughts from the IRC |
04:37 | < TakyojiClone> | thought* |
04:40 | < MyCatBreaksHisComputer> | I don't think. There's a gigantic cellular automaton between my ears. |
04:40 | < MyCatBreaksHisComputer> | Don't tell Steve Wolfram, but I've been trying to get rid of it with fungicides. Thus far, no luck. |
04:41 | < MyCatBreaksHisComputer> | TakyojiClone: it always starts from a common interest and slowly progresses into an emotional investment in the other people one has grown to know in that community. |
04:42 | < TakyojiClone> | true, it's just hard starting that community though, which is the problem |
04:42 | < TakyojiClone> | If there isn't enough, nobody will really join |
04:42 | < MyCatBreaksHisComputer> | TakyojiClone: there's a common symptomn on forums a handful of people will leave, breaking up some little clique or faction and, within a few months, large chunks of the rest of the board will slowly peel away in a cascade effect as their reasons for attending leave the place. |
04:43 | < TakyojiClone> | And plus we've JUST started our forum recently |
04:43 | < MyCatBreaksHisComputer> | TakyojiClone: not quite. The case is actually that communities won't just spontaneously form for no reason. You need to supply a common interest, otherwise your forum is essentially worthless. |
04:43 | < TakyojiClone> | ahh |
04:44 | < MyCatBreaksHisComputer> | People will join for a common interest. People will stay if their interest does not wane, or if they have made friends in a community. |
04:44 | < TakyojiClone> | And, basically the forum is on our business website of pond construction, so that may set a primary interest of the forum, right? |
04:44 | < TakyojiClone> | ahh |
04:44 | < MyCatBreaksHisComputer> | Joining a community for the community's own sake, without reference to any particular uniting factor, is about as common as environmentally friendly SUVs. |
04:45 | < TakyojiClone> | meh? |
04:46 | < MyCatBreaksHisComputer> | Nobody ever does it. |
04:46 | < TakyojiClone> | ahh |
04:46 | | MyCatBreaksHisComputer [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has quit [Quit: Needing to be using this keyboard and cat5 cable in another machine.] |
04:53 | | * Janus spots VC++, reads backlog. |
05:04 | < TakyojiClone> | Stupid question: Is there a version of Macromedia Flash for Linux? |
05:05 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
05:05 | | mode/#code [+o Reiver] by ChanServ |
05:06 | < Vornicus> | there are linux flash players. |
05:06 | < Vornicus> | I do not know how good they ar.e |
05:10 | | * Janus finishes backlog, Lord save his soul. |
05:23 | <@ToxicFrog> | There is an official Flash player release for Linux. It works fine, except that it only works on 32-bit systems. |
05:24 | <@ToxicFrog> | If on 64-bit systems, there are various open-source reverse-engineering efforts, none of which support anything past Flash 4 reliably. |
05:24 | <@ToxicFrog> | Why? |
05:24 | < TakyojiClone> | Because apparently Firefox didn't have a pre-installed Flash Player on Ubuntu |
05:25 | < TakyojiClone> | As I've heard |
05:25 | <@ToxicFrog> | This does not surprise me. The official flash player is not free-as-in-freedom and thus not installed by default on Debian or Ubuntu. |
05:25 | < TakyojiClone> | I installed Ubuntu on a computer and gave it to my brother's girlfriend |
05:25 | <@ToxicFrog> | You have to explicitly tell it to install. |
05:25 | < TakyojiClone> | ahh |
05:29 | < TakyojiClone> | by downloading it, agreeing to the EULA, and installing it or? |
05:30 | <@ToxicFrog> | I don't know the details as I don't use Ubuntu, but I think you just enable the "nonfree" repo and tell it to install flashplayer. |
05:30 | <@ToxicFrog> | You can also install it by hand from Macromedia's website, yes. |
05:30 | < TakyojiClone> | ahh |
05:30 | < Vornicus> | multiverse is the nonfree repo |
05:35 | < Janus> | Could I ask a wacky question? What would be the next step in learning game development..? |
05:36 | < Janus> | (That wasn't as wacky as I envisioned it. :/ ) |
05:36 | < TakyojiClone> | *shrugs* 3D modeling? |
05:36 | < Vornicus> | NETWORKING |
05:36 | < Janus> | Sounds important. |
05:37 | < Vornicus> | Also, design tools. |
05:38 | < Janus> | Design tools..? |
05:39 | < Vornicus> | You ever made a level for Starcraft? |
05:39 | <@Reiver> | Or Total annihilation, or Age of Empires, or... |
05:39 | < Janus> | If I did, it was one wild night I'll never remember. |
05:40 | < Vornicus> | There are special tools designed for building levels for many, many games. |
05:41 | < Janus> | I messed around with AoEII's editor, and, though it probably doesn't count, made some Roller Coaster Tycoon maps with rides that stretched to each corner of the map~ |
05:42 | <@Reiver> | Janus: That is exactly what we are referring to. |
05:42 | <@Reiver> | Programming that sort of editor. |
05:42 | < Vornicus> | Your game, if you wish others to build things for it - be they mods or parts of your scenario - will need a way to make it easy to design levels. |
05:43 | < Janus> | Oh! I see, that would certainly make development on my end easier as well. |
05:43 | < Vornicus> | Indeed. |
05:43 | < TakyojiClone> | could make an extension for gMax for mods |
05:43 | < TakyojiClone> | for your application, |
05:44 | <@ToxicFrog> | Networking is only relevant if you plan to do multiplayer games, though. |
05:44 | <@ToxicFrog> | gMax? |
05:45 | < Janus> | Well... the layout for a multiplayer game wouldn't be a long stretch from how the game runs with only one player. |
05:45 | | * Janus thanks goodness for inheritance and polymorphic functions. |
05:45 | < Vornicus> | gMax appears to have been a free version of 3dsmax; it also appears to no longer exist. |
05:46 | < Vornicus> | Janus: proper design makes it easy to extend programs to do more complex things. |
05:46 | <@ToxicFrog> | ...Takyoji, mods are a lot more than 3d modeling and animation. |
05:46 | <@ToxicFrog> | You are perhaps thinking of "models" |
05:47 | < Janus> | Obtaining 3dsmax wouldn't be a huge undertaking with the help of mister Torrent, (I have Maya as well), but 3D models are far more labour intensive, and take paid studios to create. |
05:47 | <@Reiver> | Janus: Or dedicated fans~ |
05:48 | | * Reiver used to be a modeler for a TA mod. |
05:48 | < Vornicus> | (the advantage of 3d models is that it gives you essentially an infinite number of viewpoints and stances. The disadvantage? They're an incredible bitch to make) |
05:49 | < Vornicus> | (check ouf ff7 for use of 3d models) |
05:49 | <@ToxicFrog> | (and require additional computation power per unit detail) |
05:49 | < Janus> | Reiver: Heh, when I have a league or two of fans, I'll happily build a sweat-shop for them, but until then~ |
05:49 | < Vornicus> | (though if you're on a modern computer, that's not too big a deal) |
05:50 | <@ToxicFrog> | (if by modern you mean cutting edge, yes. For now.) |
05:51 | <@Reiver> | Janus: By that I mean it is possible for 'energetic ametuer' to pull it off. |
05:51 | < Vornicus> | (unless of course you're going batshit with detail) |
05:51 | <@Reiver> | Especially if you cheat, and once you have a 'human' model, proceed to reuse variants of it like fifty times~ |
05:51 | < Vornicus> | (my GF MX440 could run Far Cry at medium detail. I was extremely impressed) |
05:52 | <@ToxicFrog> | Vornicus: what I mean is, take any arbitrary 3d model. A sprite of that model as seen in this stance and angle costs exponentially less power, but is less versatile. |
05:52 | < Vornicus> | Sure. |
05:52 | < Vornicus> | It costs less power. |
05:53 | <@ToxicFrog> | Furthermore, it is possible to crank up the detail pretty much as far as you want without negatively impacting performance. |
05:53 | <@ToxicFrog> | A sprite derived from a six million polygon model has exactly the same impact as one scribbled in MS Paint by a six year old. |
05:54 | < Vornicus> | But you can't slow it down smoothly or turn it to an arbitrary angle without your render counts going wahooni-shaped. |
05:54 | <@ToxicFrog> | Yes. That's the problem. |
05:54 | < Janus> | Graphic quality isn't as big a focus as actual quantity. Also, if it's going to simply be a rendered out sprite, I have plenty of hand-drawn sprites that fit that bill more readily. |
05:54 | <@ToxicFrog> | However, in cases where this is not an issue, it's better to use 2d and crank the detail up the limits of your art team than to use 3d just for the hell of it. |
05:55 | < Vornicus> | Also there's a reason D2 requires hardware rendering for the "perspective" view. |
05:56 | <@ToxicFrog> | Anyways. We digress. |
05:57 | < Vornicus> | Yes. |
05:58 | < Vornicus> | (idly, I'd love to see polygon counts of a lot of the characters of the PSX/N64 era. Einhander, Snake, Cloud (in battle and on the field), JetMoto, Mario, Link) |
06:00 | < Vornicus> | (Einhander in particular; that's some really well-done model work) |
06:00 | < Janus> | It's a shame 3D resources aren't floating around like sprites are. (Apparently, doom and quake models are the sonic and megaman of the 3D scene.) |
06:00 | <@ToxicFrog> | Doom doesn't have models, it has sprites. |
06:01 | < TakyojiClone> | did you know the Nintendo could render 150,000 polygons per second |
06:01 | < TakyojiClone> | Nintendo 64* |
06:02 | < TakyojiClone> | Although, I'm assuming it could render that many with no textures |
06:02 | < Vornicus> | 150,000 polys per second is... not that many |
06:03 | < TakyojiClone> | It's the N64 |
06:03 | < Vornicus> | at NTSC speeds we're talking an anemic 2,500 per frame. |
06:03 | < Vornicus> | the PSX I think did more. |
06:04 | < TakyojiClone> | PS is 360,000 polygons per second |
06:05 | < Janus> | Yes, per-second rates are used for impressing people, as it's x per frames that really matters. |
06:05 | <@ToxicFrog> | Which is still fairly low; 60k polys/frame |
06:06 | <@ToxicFrog> | At least, low by modern standards. |
06:06 | <@ToxicFrog> | Err. |
06:06 | <@ToxicFrog> | 6k polies/frame. |
06:08 | | * Janus 's computer displays a baker's dozen polies per frame, which is impressive for an abacus built of wood and glue. |
06:08 | < Vornicus> | that's enough for a halfway decent heightfield and several somewhat detailed models |
06:08 | < Vornicus> | (for psx-level values of detailed) |
06:09 | <@ToxicFrog> | ...how many seconds per frame, Janus? :P |
06:10 | < Janus> | I'm not sure, the clock only goes up to 5 minutes. |
06:13 | | Stephenie [Safyra@Nightstar-25904.ok.ok.cox.net] has quit [Quit: ] |
06:13 | < Vornicus> | heh |
06:13 | | Stephenie [Safyra@Nightstar-25904.ok.ok.cox.net] has joined #code |
06:14 | | * Stephenie blinks |
06:14 | | * TakyojiClone pokes |
06:15 | | TakyojiClone is now known as Takyoji |
06:20 | < Janus> | Alright, I'll see to acquiring 3dsmax for educational purposes, toy around with model sculpture. Of course, the higher-level editor as well. It should be easy to keep it flexible and simple; if something's missing, I'll just have to add it to the basement as I go~ |
06:22 | < Janus> | And now, bedibye |
06:23 | | * Janus thanks Stephanie and Co. for the help |
06:23 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has quit [Quit: clair jouets voire] |
06:24 | < Stephenie> | eerm huh? |
06:24 | < Stephenie> | and if he was talking about me... he spelled my name wrong |
06:24 | | * Stephenie blinks |
06:28 | | * Reiver giggles. |
06:28 | | * Reiver gives Stephenie a cookie. |
06:29 | | * Stephenie takes said cookie and munches happily |
06:31 | | * Takyoji sits in the corner... cookie-less |
06:37 | | * Vornicus fiddles, tries to decide if the game logic belongs in the db's stored procedures or in the scripts that talk to the db. |
06:43 | < Vornicus> | Chalaaaaiiiin, adviiiiise meeeeee |
06:43 | < Takyoji> | What could a person do with 1000Watts? |
06:44 | < Takyoji> | qwith 120 volts I believe |
06:44 | < Vornicus> | Run a microwave oven. |
06:44 | < Takyoji> | Would a laptop be able to work at that? |
06:44 | < Takyoji> | Or even, multiple? |
06:45 | < Vornicus> | ...let me put it this way |
06:45 | < Vornicus> | your average PC power supply is 400W |
06:46 | | Mahal [~Mahal@Nightstar-12600.worldnet.co.nz] has quit [Quit: It's hard to be mad at someone who misses you while you're asleep. ] |
06:46 | < Takyoji> | k |
06:46 | < Vornicus> | http://en.wikipedia.org/wiki/Orders_of_magnitude_%28power%29 |
06:47 | < Takyoji> | http://www.northerntool.com/webapp/wcs/stores/servlet/product_6970_200313480_200 313480 |
06:49 | < Vornicus> | ...okay, /this/ is a big number. |
06:49 | < Vornicus> | http://en.wikipedia.org/wiki/Planck_power |
06:50 | < Takyoji> | xD geez |
06:51 | < Vornicus> | I love these Planck units. |
06:52 | < Vornicus> | "...modern science considers it nonsensical to consider anything hotter." |
07:49 | <@Reiver> | Why did they bother with it? |
07:50 | < Vornicus> | It is aparently the temperature of the big bang. |
07:51 | <@Reiver> | Yes. |
07:51 | <@Reiver> | Why'd they bother? >.> |
07:52 | < Vornicus> | because they felt like it |
08:07 | | Vornicus is now known as Vornicus-Latens |
09:31 | | Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has quit [Quit: Leaving] |
10:30 | | AnnoDomini [~fark.off@Nightstar-28974.neoplus.adsl.tpnet.pl] has joined #Code |
10:54 | | Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
11:05 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
11:05 | | mode/#code [+o Reiver] by ChanServ |
11:55 | | You're now known as TheWatcher |
11:59 | | AnnoDomini [~fark.off@Nightstar-28974.neoplus.adsl.tpnet.pl] has quit [Ping Timeout] |
11:59 | | AnnoDomini [~fark.off@Nightstar-29709.neoplus.adsl.tpnet.pl] has joined #Code |
12:45 | | Reiver is now known as ReivSLEP |
13:44 | | EvilDarkLord [althalas@Nightstar-15301.a88-115-211-62.elisa-laajakaista.fi] has quit [Ping Timeout] |
13:54 | | EvilDarkLord [althalas@Nightstar-15301.a88-115-211-62.elisa-laajakaista.fi] has joined #code |
15:06 | | EvilDarkLord [althalas@Nightstar-15301.a88-115-211-62.elisa-laajakaista.fi] has quit [Ping Timeout] |
15:10 | | EvilDarkLord [althalas@Nightstar-15301.a88-115-211-62.elisa-laajakaista.fi] has joined #code |
15:15 | | MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has joined #code |
15:35 | | MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has quit [Quit: Makin' s'getti. Back in a few hours.] |
15:57 | | MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has joined #code |
17:19 | | Vornicus-Latens is now known as Vornicus |
17:20 | | You're now known as TheWatcher[afk] |
18:11 | | Janus [~Cerulean@Nightstar-10302.columbus.res.rr.com] has joined #Code |
18:22 | | You're now known as TheWatcher |
20:04 | | MyCatOwnz [~mycatownz@Nightstar-379.dsl.in-addr.zen.co.uk] has quit [Ping Timeout] |
20:48 | < Vornicus> | Hm, interesting problem |
20:49 | <@jerith> | I'm up for one... |
20:49 | < Vornicus> | In order to figure out the longest road, the important bits are the longest road each person has and the point at which that person got that length road - the person who got the longest road the earliest has the longest road. |
20:50 | <@jerith> | Catan clone? |
20:50 | < Vornicus> | ...except that it is possible for the longest road to get put away: if the person with the longest road has his road broken, and the people with less long roads are tied in road length (but not in time at which they got longest road) |
20:50 | < Vornicus> | jerith: yes. |
20:50 | < Vornicus> | Then neither of the people with the current longest road get it. |
20:52 | < Vornicus> | Now, my original system had the turn that each road segment was played as part of the data used as game state - so the person with the lowest maximum turn number on their longest road (ties broken by turn order) would have the longest road. |
20:54 | | Fish [~Shemhazai@Nightstar-4203.vl20-cph.dhcp.clearwire.dk] has joined #Code |
20:54 | < Vornicus> | I am /very/ reluctant to use an actual Longest Road field; it seems to break the "don't keep what you can recalculate" rule of database maintenance. |
21:11 | < Vornicus> | So, I'm looking for a way to determine whether the longest road actually exist |
21:11 | < Vornicus> | s |
21:17 | | * Vornicus fiddles |
21:17 | < Vornicus> | okay, that's kinda scary, it's technically calculable. |
21:18 | < Vornicus> | ...now to see if I can figure out the right way to put the numbers together. |
21:19 | < EvilDarkLord> | What kind of database load are you looking at when you calculate it? |
21:19 | < Vornicus> | EDL: I'm not sure. It's not /very/ difficult, but I will be doing a lot of it. I'll see if I can make it memoize. |
21:55 | | Mahal [~Mahal@Nightstar-12600.worldnet.co.nz] has joined #Code |
21:55 | | mode/#code [+o Mahal] by ChanServ |
21:56 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
21:56 | | mode/#code [+o Chalcedon] by ChanServ |
21:57 | | ReivSLEP [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
22:19 | | Thaqui [~Thaqui@Nightstar-13083.jetstream.xtra.co.nz] has quit [Ping Timeout] |
22:20 | | EvilDarkLord is now known as Martivir |
22:20 | | AnnoDomini is now known as Saurivir |
22:21 | | Chalcy [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has joined #code |
22:21 | | mode/#code [+o Chalcy] by ChanServ |
22:22 | | Chalcedon [~Chalceon@Nightstar-869.bitstream.orcon.net.nz] has quit [Ping Timeout] |
22:34 | | Thaqui [~Thaqui@Nightstar-1264.jetstream.xtra.co.nz] has joined #code |
22:35 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
22:35 | | mode/#code [+o Reiver] by ChanServ |
22:54 | | Reiver [~reaverta@IRCop.Nightstar.Net] has quit [Ping Timeout] |
22:56 | | Reiver [~reaverta@IRCop.Nightstar.Net] has joined #Code |
22:56 | | mode/#code [+o Reiver] by ChanServ |
23:22 | | Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has joined #code |
23:45 | | Takyoji [~Takyoji@Nightstar-25280.dhcp.roch.mn.charter.com] has quit [Quit: Leaving] |
--- Log closed Sun Dec 10 00:00:02 2006 |