code logs -> 2009 -> Thu, 16 Jul 2009< code.20090715.log - code.20090717.log >
--- Log opened Thu Jul 16 00:00:49 2009
00:09 EvilDarkVord is now known as EvilSlepVord
01:12 AgentIchiro [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has joined #code
01:13 AgentIchiro [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has quit [Quit: I'm out, there's something else to do]
01:23 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code
01:25 Tarinaky [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout]
02:00
< Reivthia>
... bang-tail?
02:03
<@McMartin>
!tail - "execute the last shell command in history that begins with 'tail'"
02:15
< Reivthia>
This makes you giggle like a 12 year old because?
02:16
<@McMartin>
The phrase itself is obscene~
02:37 Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout]
02:43 Attilla [~The.Attil@92.11.7.ns-26496] has joined #code
02:43 mode/#code [+o Attilla] by ChanServ
02:51 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has quit [Quit: Z?]
03:07 Consul [~Consul__@Nightstar-3329.dsl.sfldmi.ameritech.net] has quit [Ping Timeout]
03:07 Consul_ [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has joined #code
03:12 parameterdz3 [~3daebx@121.12.249.ns-22464] has joined #code
03:13 parameterdz3 [~3daebx@121.12.249.ns-22464] has left #code []
03:19 Consul_ [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has quit [Quit: Leaving]
03:21 Consul [~Consul__@Nightstar-3348.dsl.sfldmi.ameritech.net] has joined #code
03:21 mode/#code [+o Consul] by ChanServ
03:30 passwordijk [~bvlpa9@62.205.226.ns-13200] has joined #code
03:31 passwordijk [~bvlpa9@62.205.226.ns-13200] has left #code []
03:52 Vornicus is now known as Phas
04:08 Derakon [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has joined #code
04:08 mode/#code [+o Derakon] by ChanServ
05:24
<@Derakon>
I got a fair amount done on Jetblade while I was gone.
05:24
<@Derakon>
Unfortunately I neglected to install Mercurial on my laptop before leaving. So it's going to all be in one huge check-in.
05:25
<@Derakon>
Just about every single file has been touched, since among other things I ripped out all the tuples and lists I was using for vectors, and replaced them with the so very much cleaner Vector2D class. Which, I discovered after the fact, is slowing down everything by, oh, 25% compared to what I was using before. But the cleanliness is worth it.
05:25
<@SmithKurosaki>
:(
05:26
<@SmithKurosaki>
Is performance going to be an issue?
05:26
<@Derakon>
I'm hoping that it won't be too hard to turn it into a compiled C module.
05:26
<@Derakon>
Smith: it's annoying, if nothing else.
05:27 * SmithKurosaki hugs
05:27
<@SmithKurosaki>
I wish I could help (but I would be so lost @.@)
05:27
<@Derakon>
Heh.
05:27
<@Derakon>
Go ahead and download it, take a look. Python's pretty easy to understand.
05:28
<@Derakon>
(Mind you, I haven't checked in the latest changes yet)
05:29
<@SmithKurosaki>
Maybe I can use it to try to learn python?
05:30
<@Derakon>
There are worse ideas, certainly.
05:30
<@Derakon>
Here's the project site: http://code.google.com/p/jetblade/
05:31
<@SmithKurosaki>
Cool :)
05:43
<@Consul>
Bah. I got stuck in a corner.
05:43
<@Derakon>
Report a bug, please?
05:43
<@Derakon>
http://code.google.com/p/jetblade/issues/entry
05:44
<@Derakon>
Please include the RNG seed you used to make the map; it's one of the first lines of output when the program starts.
05:44
<@Consul>
Well, it's to do with level generation. I'm assuming it's supposed to allow me to get to anywhere?
05:44
<@Derakon>
Nominally, yes.
05:45
<@Derakon>
Wait, do you mean "stuck in a corner" as in "I went into a one-way passage" or as in "I'm wedged into some terrain and can't get out"?
05:45
<@Consul>
Oh, hey! I finally made the jump!
05:45
<@Derakon>
Because I already have an issue for the former.
05:45
<@Derakon>
:)
05:46
<@Consul>
Yeah, it was just a difficult bit of terrain.
05:46
<@Derakon>
Well, I really need to get to bed. Whee jetlag!
05:46
<@Consul>
Night
05:47
<@SmithKurosaki>
Night
05:47
<@Derakon>
I'll try to remember to keep an eye open for not just inaccessible but also tricky-jump regions.
05:47 Derakon is now known as Derakon[AFK]
06:05 Syloqs-AFH [~Syloq@ServicesAdmin.Nightstar.Net] has quit [Connection reset by peer]
06:07 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
06:08 SmithKurosaki [~Smith@Nightstar-10579.dsl.teksavvy.com] has quit [Operation timed out]
06:09 SmithKurosaki [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has joined #code
06:09 mode/#code [+o SmithKurosaki] by ChanServ
06:09
<@SmithKurosaki>
Heh, that's funny
06:11 AgentIchiro [~Smith@Nightstar-12269.dsl.teksavvy.com] has joined #code
06:12 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
06:12 mode/#code [+o ToxicFrog] by ChanServ
06:12 SmithKurosaki [~Smith@Nightstar-7213.cpe.net.cable.rogers.com] has quit [Quit: I'm out, there's something else to do]
06:13 AgentIchiro is now known as SmithKurosaki
07:07 Phas is now known as Vornicus
07:14 You're now known as TheWatcher
08:07 Derakon[AFK] [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has quit [Operation timed out]
08:16 You're now known as TheWatcher[afk]
09:41 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has quit [Operation timed out]
09:42 SmithKurosaki [~Smith@Nightstar-12269.dsl.teksavvy.com] has quit [Ping Timeout]
09:45 SmithKurosaki [~Smith@Nightstar-10671.dsl.teksavvy.com] has joined #code
09:45 mode/#code [+o SmithKurosaki] by ChanServ
09:45 ToxicFrog [~ToxicFrog@Admin.Nightstar.Net] has joined #code
09:45 mode/#code [+o ToxicFrog] by ChanServ
09:58 You're now known as TheWatcher
09:59 AnnoDomini [~farkoff@Nightstar-29556.neoplus.adsl.tpnet.pl] has joined #Code
10:00 mode/#code [+o AnnoDomini] by ChanServ
10:46 Vornicus is now known as Vornicus-Latens
10:53 Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has quit [Quit: Rhamphoryncus]
11:55 You're now known as TheWatcher[d00m]
12:28 gnolam [lenin@Nightstar-1382.A163.priv.bahnhof.se] has joined #Code
12:28 mode/#code [+o gnolam] by ChanServ
12:52 wann [~wan@60.48.136.ns-3858] has joined #code
12:53 wann [~wan@60.48.136.ns-3858] has quit [I am lame because I use colors in my quit message.]
13:05 EvilSlepVord is now known as EvilDarkLord
13:12 You're now known as TheWatcher
13:14 Thaqui [~Thaqui@121.98.166.ns-22683] has quit [Ping Timeout]
13:24 Alek [~omegaboot@Nightstar-28432.dsl.emhril.sbcglobal.net] has quit [Quit: latah]
14:20 * gnolam hmms.
14:21
<@gnolam>
So far I've covered basic movement (WSAD), jumping, crouching and opening doors. Does an FPS tutorial really need much more?
14:22
< EvilDarkLord>
Well, you could look into covering the S.
14:23
<@TheWatcher>
Actually, I think he's pretty much got his s covered there. Maybe activating things...
14:33 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout]
14:33 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code
14:35 Netsplit DeepThought.NY.US.Nightstar.Net <-> Blargh.CA.US.Nightstar.Net quits: crem
14:36
<@gnolam>
There'll be no steenkin' activation here.
14:36
<@gnolam>
So I guess I'm done with the basic tutorial then. :)
14:41 Netsplit over, joins: crem
14:41 simontwo [~simon@78.129.201.ns-20882] has joined #code
14:42
< simontwo>
at some point, someone threw a comic at me describing what one instantaneously learned when one turns 100 years old. I think it contained esperanto, talking with bees and one other thing. anyone remember it?
14:49
<@gnolam>
Twas probably me.
14:50
<@gnolam>
From "All Knowledge Is Strange".
14:51
<@gnolam>
http://www.moderntales.com//comics/knowledge.php?view=archive&chapter=14263&mpe= 0
15:26
<@ToxicFrog>
gnolam: re FPS tools: general thingy activation if the doors don't cover that; combat
15:27
<@gnolam>
This is for RadiaX, so no combat. But I do have to make it absolutely idiot-proof though.
15:32 Attilla [~The.Attil@92.11.7.ns-26496] has quit [Connection reset by peer]
15:32 Attilla [~The.Attil@92.11.7.ns-26496] has joined #code
15:38 Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout]
15:40 Attilla [~The.Attil@92.11.7.ns-26496] has joined #code
15:40 mode/#code [+o Attilla] by ChanServ
15:51
<@ToxicFrog>
RadiaX?
15:51
<@ToxicFrog>
Also, if there's no combat, how is it an FPS?
15:53
<@SmithKurosaki>
Puzzle FPS?
15:57
<@ToxicFrog>
Yeah, but the S stands for Shooter.
15:57
<@gnolam>
Ok, so it's not technically a shooter, but it's quicker to say than "first-person exercise tool based on half-life 2".
15:58 Attilla [~The.Attil@92.11.7.ns-26496] has quit [No route to host]
15:58
< simontwo>
I guess Portal is an FPS even though you don't kill with your shooter.
15:58 Attilla [~The.Attil@92.11.7.ns-26496] has joined #code
15:59
< simontwo>
at least people know what you mean when you say Puzzle FPS as opposed to some newly invented acronym :)
16:07
<@SmithKurosaki>
Where did he say shooter/
16:07
<@SmithKurosaki>
or you mean where he said FPS?
16:08 Syloqs_AFH [Syloq@Admin.Nightstar.Net] has joined #code
16:08
<@gnolam>
I assume so.
16:08
<@ToxicFrog>
SmithKurosaki: yes, when he said FPS, because that stands for "first person shooter"
16:09
<@ToxicFrog>
simontwo: I would actually call Portal a puzzle FPS (first person, involves shooting and combat but all challenges are puzzle-based), and, say, the Myst series FPP puzzle games.
16:09 Syloqs_AFH is now known as Syloqs-AFH
16:10
<@SmithKurosaki>
(Just checking...)
16:26 You're now known as TheWatcher[afk]
18:32 You're now known as TheWatcher[
18:32 You're now known as TheWatcher
18:32 Derakon [~Derakon@Nightstar-4912.hsd1.ca.comcast.net] has joined #code
18:32 mode/#code [+o Derakon] by ChanServ
18:49 aaaaa [~mx@Nightstar-16145.tc-cutuk-net1-67.team.ba] has joined #code
18:50
< aaaaa>
Volim te aaaaa!
18:50 aaaaa [~mx@Nightstar-16145.tc-cutuk-net1-67.team.ba] has quit [Quit: ]
18:50
<@Derakon>
Indeed.
18:51 * TheWatcher blinks
18:51
<@TheWatcher>
QUite.
20:03
< EvilDarkLord>
Quality spamming.
20:12 Attilla [~The.Attil@92.11.7.ns-26496] has quit [Ping Timeout]
20:13 Rhamphoryncus [~rhamph@Nightstar-7168.ed.shawcable.net] has joined #code
20:13
<@Derakon>
Hey, Rhamphoryncus!
20:14
< Rhamphoryncus>
heya Derakon, what's up?
20:14
<@Derakon>
While I was on vacation, I switched Jetblade from using tuples and lists for physics vectors to using a Vector2D class.
20:14
<@Derakon>
It's much cleaner, but dog-slow. Any suggestions for resources to guide me to converting the module to C?
20:14
< Rhamphoryncus>
hrm. Vector2D is your own class?
20:15
<@Derakon>
Yeah.
20:15
<@Derakon>
I mean, the game's not unplayable by any stretch. But it's an extra 15s or so for map generation to run.
20:16
<@Vornicus-Latens>
numpy I think has vector classes you can use.
20:16
< Rhamphoryncus>
Well, probably the easiest is to let me see if I can improve the python version at all
20:16
< Rhamphoryncus>
Next to that is numpy
20:17
<@Derakon>
Lemme get the code transferred off of my laptop...
20:20 Attilla [~The.Attil@92.1.54.ns-25924] has joined #code
20:21 mode/#code [+o Attilla] by ChanServ
20:23 * Vornicus-Latens doesn't know anything about writing C for Python, really should though.
20:25
<@Derakon>
Okay, here's the module. http://paste.ubuntu.com/220015/
20:26
< Namegduf>
Have you profiled it to work out where the slowness is?
20:26
<@Derakon>
I'm using Vector2Ds as keys into hashes during mapgen; I'm making over a million calls to __hash__ and __eq__ each because of that.
20:28
<@Derakon>
Lemme get a more detailed response...
20:29
<@Derakon>
Okay, for a map that took 36.536s to generate, I spent 3.838s in __hash__, 2.515s in __eq__, 1.768s in add, 1.159s in __init__, 1.046s in int, and about a second in toGridspace and toRealspace combined, then it gets into smaller chunks.
20:30
<@Derakon>
Looking at the top 40 most time-consuming functions, I spend 12.464s in Vector2D calls.
20:32
< Namegduf>
Hmm, there's nothing else you could use as a key?
20:32
< Namegduf>
Vector2D*, with the Vector2Ds stored outside the map, perhaps?
20:32
<@Derakon>
The dicts map locations to various data. I could use tuples instead of Vector2Ds, but that'd be very messy codewise.
20:33
<@Vornicus-Latens>
How are you hashing the vector2ds.
20:33
<@Derakon>
No, I can't use pointers because I need for two different Vector2D instances that hash to the same value to map to the same result in the dict.
20:33
< Namegduf>
Ah.
20:33
<@Derakon>
Vorn: at the moment, very hackishly. I didn't have much access to the Net while on vacation, so I couldn't look up hashing functions. So it's just self.x * BIGNUM + self.y.
20:33
<@Derakon>
Check the __hash__ function.
20:34
<@Vornicus-Latens>
The normal hashing method is hash(x) ^ hash(y)
20:34
<@Vornicus-Latens>
Or similar.
20:34 * Derakon nods.
20:35
<@Vornicus-Latens>
This may give you slightly better performance.
20:35 * Derakon nods.
20:39
<@Vornicus-Latens>
On the other hand that won't do much for other things, and it does look like you'll have to C it up.
20:40
<@Derakon>
Hm. Python's ^ operator doesn't work on floats, so I have to cast x and y to ints before applying it. Net result: about 50s spent in Vector2D calls instead of 12s. O_o
20:41
<@Vornicus-Latens>
hash, you nerd
20:41
<@Derakon>
Er. Right.
20:42
<@Vornicus-Latens>
you shouldn't be handing out floats from hash() anyway.
20:42
<@Derakon>
Right.
20:42
<@Derakon>
It's a difference of calling int() once or twice or not at all.
20:43
<@Vornicus-Latens>
When I said hash(x) ^ hash(y) I meant it literally.
20:43
<@Derakon>
Heh.
20:44
<@Derakon>
Still took ages, though.
20:44
<@Vornicus-Latens>
bleg.
20:44
<@Derakon>
Mind you, all the time seems to be getting spent in __eq__ now.
20:44
<@Vornicus-Latens>
Alternatively!
20:45
<@Derakon>
47.384s in __eq__, next biggest Vector2D func is add at 1.912s.
20:45
<@Vornicus-Latens>
The way I did this was to store a tuple internally and make x and y properties.
20:46
<@Vornicus-Latens>
Which neatly turns hash and eq into passthroughs to tuple.
20:46
<@Derakon>
Could work...
20:49
<@Derakon>
Hmm...but how do you mean "make x and y properties"?
20:53 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Ping Timeout]
20:53 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has joined #code
21:40
<@Vornicus-Latens>
@property def x(self): return self[0]
21:41
<@Derakon>
What's the @property business?
21:42
<@Derakon>
Wait, this? http://adam.gomaa.us/blog/2008/aug/11/the-python-property-builtin/
21:42
<@Derakon>
Interesting.
21:42
<@Vornicus-Latens>
This also neatly hides the actual business and makes x read-only.
21:42
<@Derakon>
That read-only bit is actually not helpful. ¬.¬
21:43
<@Vornicus-Latens>
YOu aren't supposed to hash mutable objects.
21:44
<@Derakon>
I know.
21:44
<@Derakon>
I'm doing it anyway, at least until I make a class to hold the dicts in question.
21:46
< Rhamphoryncus>
It *might* help to cache (or precalculate) the hash value
21:46
<@Derakon>
FWIW I'm not changing the instances that are serving as keys.
21:47
< Rhamphoryncus>
Although a dict has a cache beside each key anyway
21:47
<@Derakon>
Rhamphoryncus: that only works if Vector2Ds are immutable, which I'd rather not do...
21:47
<@Derakon>
Though, I should check for places where I'm modifying the x and y values directly and see how often that happens.
21:48
< Rhamphoryncus>
having two versions of the class is an option
21:48
<@Derakon>
An immutable descendant?
21:48
< Rhamphoryncus>
ie a FrozenVector2D that adds hashability and prevents modification
21:48
<@Derakon>
Then I wouldn't be able to use mutable versions to look up into the hash, though.
21:49
< Rhamphoryncus>
yeah.. why do you need mutable again?
21:49
<@Derakon>
So I can do things like iterate over space without having to generate a new Vector2D instance every time I move over one square.
21:50
< Rhamphoryncus>
what's the content? Is it literally just a pair of floats?
21:50
<@Derakon>
Yeah.
21:50
<@Derakon>
Vector2D has two fields: x and y.
21:51 * Rhamphoryncus had "vector is an array" stuck in his head.. didn't make sense
21:51
<@Derakon>
Heh.
21:51
< Rhamphoryncus>
hrm
21:51
<@Derakon>
I used to have that, but it looks much better to do e.g. "vel.x" instead of "vel[0]".
21:52
< Rhamphoryncus>
I'm thinking a tuple subclass may be better
21:52
<@Derakon>
So, looking through my code for the string '.x', there aren't too many cases where I mutate Vector2Ds.
21:52
< Rhamphoryncus>
using __slots__ to avoid getting a __dict__
21:53
< Rhamphoryncus>
there's also some named tuple stuff in recent python versions, although I don't know if they're worth it
21:53
< Rhamphoryncus>
Possibly, since they should be in C
21:53
<@Derakon>
I don't think I can go further than 2.6.
21:54
<@Derakon>
So to use __slots__, I'd do e.g.:
21:54
<@Derakon>
class Foo:
21:54
<@Derakon>
def __init__(self, a, b):
21:54
<@Derakon>
self.a = a
21:54
<@Derakon>
self.b = b
21:55
<@Derakon>
self.__slots__ = [a, b]
21:55
<@Derakon>
Is that right?
21:55
< Rhamphoryncus>
nope
21:56
< Rhamphoryncus>
__slots__ is used to declare your attribute names. They get turned into fields rather than dict entries
21:56
< Rhamphoryncus>
namedtuple is in 2.6's collections module, but is pure python apparently
21:57
< Rhamphoryncus>
class Foo(tuple):
21:57
< Rhamphoryncus>
__slots__ = [] # Don't want any
21:57
< Rhamphoryncus>
def __new__(self, a, b):
21:57
< Rhamphoryncus>
return tuple.__new__(Foo, a, b)
21:58
< Rhamphoryncus>
That's what I meant
21:58
<@Derakon>
That would prevent you from adding new fields to a Foo instance?
21:58
< Rhamphoryncus>
right
21:59
< Rhamphoryncus>
@property def x(self): return self[0]
21:59
<@MyCatVerbs>
Wah. I was about to yell "What the fuck is all this Python doing in here?"
22:00
<@MyCatVerbs>
Then I realised that my hotkey for #code is adjacent to the one for #haskell, and I just happened to have looked into the wrong channel. :)
22:00
<@Derakon>
Heh.
22:00
< Rhamphoryncus>
heh
22:01
<@Derakon>
Okay, so if I understand your suggestion, it's to subclass Vector2D off of tuple, use __slots__ to prevent use of dicts, use properties to allow read-only access to .x and .y, and replace any situations where I write to .x and .y with creations of new Vector2D instances.
22:01
< Rhamphoryncus>
yup
22:01
<@Derakon>
Okay, I'll muck with that once I get this mess of code checked in. :)
22:01
<@Derakon>
Thanks.
22:01
< Rhamphoryncus>
And __hash__ is now in C for you
22:02
<@Derakon>
And __eq__ and other useful things, yes.
22:02
< Rhamphoryncus>
Also, rather than overriding __eq__, I suggest defining your own .approxeq(other) method
22:02
<@Derakon>
I needed __eq__ before I could use Vector2Ds in hashes.
22:02
< Rhamphoryncus>
your hashing is incompatible with your epsilon ;)
22:02
<@Derakon>
Otherwise it'd complain that two different Vector2D instances didn't hash to the same value.
22:02
<@Derakon>
Heh.
22:03
< Rhamphoryncus>
The results are inconsistent. Two values may be close enough to compare equal, but get different hash values
22:04 * Derakon nods.
22:05
< Rhamphoryncus>
If you really wanted something like that I'd suggest truncating rather than using an epsilon. Storing only ints would be the easiest form of truncation
22:06
<@Derakon>
That would....not work, at all, for the simulation part of gameplay. :)
22:06
<@McMartin>
I believe he is suggesting "using ints to be fixedpoint"
22:07
< Rhamphoryncus>
Well, depending on the precision you need an int may work
22:07
<@McMartin>
He needs subpixel for this, at least for velocity and friends.
22:07
< Rhamphoryncus>
Otherwise you have to go for fixedpoint. I'm a fan of fixedpoint, but there's no builtin support in python
22:07
<@Derakon>
In any event, it happens that all situations where I use __hash__ are dealing with integers anyway.
22:07
<@Derakon>
Since they're looking up locations in a grid.
22:08
<@Derakon>
(In fact, if I didn't care about memory usage I could just use a grid -- a 2D array)
22:08
< Rhamphoryncus>
Derakon: could you go as far as to say it's nonsensical to pass float values into that?
22:08
<@Derakon>
Probably, yeah.
22:08
< Rhamphoryncus>
Then consider an IntVector2D class :)
22:08
<@Derakon>
Heh.
22:09
< Rhamphoryncus>
Although that may be overkill
22:13
< Rhamphoryncus>
hrm. I did want to implement a fixedpoint type once, but I don't know how to implement trigonometric functions for it
22:13 * gnolam stabs Hammer's lack of UTF-8.
22:15
<@gnolam>
Having to hand-edit the maps is a royal PITA.
22:19 Derakon is now known as Derakon[lunch]
22:34
<@gnolam>
Oh hey, spray-on traffic cones.
22:37
< Rhamphoryncus>
huh?
22:40
<@gnolam>
Trying to make my own decal entity, but can't get the sprite to show up.
22:41
<@gnolam>
The decals are supposed to be sprayed on surfaces like the spray logos in Half-Life/C-S/TF2.
22:41
<@gnolam>
But since I can't get the sprites working, I've temporarily replaced the entity with a model entity instead...
22:41
<@gnolam>
Press T and *PFFSSSSSH!* traffic cone!
22:42
<@AnnoDomini>
Traffic cone is not a budgerigar.
22:55 Derakon[lunch] is now known as Derakon
23:12 Tarinaky_ [~Tarinaky@Nightstar-16638.plus.com] has joined #code
23:14 TarinakyKai [~Tarinaky@Nightstar-16638.plus.com] has quit [Operation timed out]
23:32 * gnolam pffts.
23:33
<@gnolam>
Looks like the Swedish Rescue Services Agency uses the silly LNT model as well.
23:50 AnnoDomini [~farkoff@Nightstar-29556.neoplus.adsl.tpnet.pl] has quit [Quit: Quem quer o garfo?]
23:52
<@ToxicFrog>
LNT?
23:52
<@Derakon>
At a guess, http://en.wikipedia.org/wiki/Linear_no-threshold_model
--- Log closed Fri Jul 17 00:00:03 2009
code logs -> 2009 -> Thu, 16 Jul 2009< code.20090715.log - code.20090717.log >