code logs -> 2010 -> Wed, 16 Jun 2010< code.20100615.log - code.20100617.log >
--- Log opened Wed Jun 16 00:00:36 2010
00:26 Attilla [Attilla@Nightstar-be160c6f.threembb.co.uk] has quit [[NS] Quit: ]
00:44 Zed_ [Zed@Nightstar-e4835f03.or.comcast.net] has joined #code
00:47 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has quit [Ping timeout: 121 seconds]
00:51 Netsplit *.net <-> *.split quits: Vornicus, Tarinaky, McMartin, PinkFreud
00:52 Chi [omegaboot@Nightstar-c5f3565b.il.comcast.net] has joined #code
00:52 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has quit [Ping timeout: 121 seconds]
00:52 Netsplit over, joins: Vornicus, PinkFreud, McMartin, Tarinaky
00:52 Chi is now known as NSGuest55562
00:54 Netsplit *.net <-> *.split quits: cpux, EvilDarkLord, Kazriko, Serah, SmithKurosaki, Zed_, simon, Thaqui, @jerith
00:57 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
00:57 Netsplit *.net <-> *.split quits: Vornicus, Tarinaky, PinkFreud, McMartin
00:58 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
00:58 NSGuest55562 [omegaboot@Nightstar-c5f3565b.il.comcast.net] has quit [Ping timeout: 121 seconds]
00:59 Derakon[AFK] [Derakon@Nightstar-5213d778.ca.comcast.net] has quit [Ping timeout: 121 seconds]
00:59 Namegduf [namegduf@Nightstar-5c10d129.beshir.org] has quit [Ping timeout: 121 seconds]
01:00 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has quit [Ping timeout: 121 seconds]
--- Log closed Wed Jun 16 01:00:24 2010
--- Log opened Wed Jun 16 01:03:51 2010
01:03 TheWatcher [chris@Nightstar-b4529b0c.zen.co.uk] has joined #code
01:03 Irssi: #code: Total of 17 nicks [1 ops, 0 halfops, 0 voices, 16 normal]
01:04 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Client closed the connection]
01:04 Irssi: Join to #code was synced in 53 secs
01:05 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code
01:08 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has joined #code
01:08 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed]
01:09 Alek is now known as 459AAAA3G
01:09 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has joined #code
01:09 Alek [omegaboot@Nightstar-c5f3565b.il.comcast.net] has quit [Ping timeout: 121 seconds]
01:10 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
01:11 Syloqs_AFH is now known as Syloqs-AFH
01:11 ToxicFrog [ToxicFrog@ServerAdministrator.Nightstar.Net] has joined #code
01:11 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code
01:14 Derakon [Derakon@Nightstar-5213d778.ca.comcast.net] has joined #code
03:28 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has quit [[NS] Quit: Z?]
04:49 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has quit [Ping timeout: 121 seconds]
04:49 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has joined #code
05:31 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!]
06:11 459AAAA3G is now known as Alek
06:43 Derakon is now known as Derakon[AFK]
06:53 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has quit [Ping timeout: 121 seconds]
07:07 cpux is now known as shade_of_cpux
07:18 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
07:22 AnnoDomini [annodomini@Nightstar-1130352c.adsl.tpnet.pl] has joined #code
07:50 Zed_ [Zed@Nightstar-e4835f03.or.comcast.net] has quit [Ping timeout: 121 seconds]
08:00 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
08:16 Zed_ [Zed@Nightstar-e4835f03.or.comcast.net] has joined #code
09:38 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has quit [Client exited]
09:39 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 122 seconds]
10:08 AnnoDomini [annodomini@Nightstar-1130352c.adsl.tpnet.pl] has quit [[NS] Quit: Changing server]
10:14 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Client closed the connection]
10:14 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
10:37 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
10:38 Zed_ [Zed@Nightstar-e4835f03.or.comcast.net] has quit [Ping timeout: 121 seconds]
10:39 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has joined #code
10:44 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
10:45 Syloqs_AFH is now known as Syloqs-AFH
10:57 Vornicus is now known as Vornicus-Latens
11:35 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has quit [Ping timeout: 121 seconds]
11:35 Syloqs-AFH [Syloq@NetworkAdministrator.Nightstar.Net] has quit [Ping timeout: 121 seconds]
11:41 Syloqs_AFH [Syloq@NetworkAdministrator.Nightstar.Net] has joined #code
11:41 Zed [Zed@Nightstar-e4835f03.or.comcast.net] has joined #code
11:42 Syloqs_AFH is now known as Syloqs-AFH
12:04 AnnoDomini [annodomini@Nightstar-1130352c.adsl.tpnet.pl] has joined #code
12:08 Tarinaky [Tarinaky@Nightstar-fcd02059.adsl.virginmedia.net] has quit [Ping timeout: 121 seconds]
12:19 shade_of_cpux is now known as cpux
12:20 Tarinaky [Tarinaky@Nightstar-23c905f9.adsl.virginmedia.net] has joined #code
12:21 cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has quit [[NS] Quit: ChatZilla 0.9.86 [Firefox 3.6.3/20100401080539]]
13:38 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has quit [Connection closed]
13:44 gnolam [lenin@Nightstar-38637aa0.priv.bahnhof.se] has joined #code
13:44 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code
14:27 AbuDhabi [annodomini@Nightstar-4cbdb07e.adsl.tpnet.pl] has joined #code
14:28 AbuDhabi [annodomini@Nightstar-4cbdb07e.adsl.tpnet.pl] has quit [[NS] Quit: Reconnecting]
14:28 AbuDhabi [annodomini@Nightstar-4cbdb07e.adsl.tpnet.pl] has joined #code
14:29 AnnoDomini [annodomini@Nightstar-1130352c.adsl.tpnet.pl] has quit [Ping timeout: 121 seconds]
16:01 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has joined #code
17:20 Rhamphoryncus [rhamph@Nightstar-bbc709c4.abhsia.telus.net] has joined #code
17:24 Attilla [Attilla@Nightstar-f72c88d9.threembb.co.uk] has joined #code
17:43 Serah [Z@3A600C.A966FF.5BF32D.8E7ABA] has quit [Ping timeout: 121 seconds]
18:15 Serah [Z@26ECB6.A4B64C.298B52.D80DA0] has joined #code
18:29 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has quit [[NS] Quit: *hums* Can't stay now!]
19:08 Orthia [orthianz@Nightstar-c774274f.xnet.co.nz] has joined #code
19:27 * gnolam ...s at Inkscape's web page.
19:28
< gnolam>
Choosing a /random/ language for the visitor is a... novel... approach.
19:28
< Orthia>
ahahahaha.
20:22
< Serah>
It's random?
20:27
< Rhamphoryncus>
weird. reload consistently gives me french, shift-reload consistently gives me english
20:29 Vornicus-Latens is now known as Vornicus
21:03 Thaqui [Thaqui@27B34E.D54D49.F53FA1.6A113C] has joined #code
21:04
< AbuDhabi>
gnolam: But I bet you think it's better than geolocation! :p
21:15 Orthia [orthianz@Nightstar-c774274f.xnet.co.nz] has quit [Ping timeout: 121 seconds]
21:24 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has joined #code
21:24 celticminstrel [celticminstre@Nightstar-f8b608eb.cable.rogers.com] has joined #code
21:36
< Derakon>
So there's a function in this codebase named "Must_Restart". When called, it checks what thread it's in. If it's not in the main thread, it just returns false. If it is in the main thread, though, it looks up its caller in the stack, extracts the caller's arguments, and re-calls it in a new thread. Usage in the code (all over the place) is "if H.Must_Restart(): return".
21:36 * celticminstrel has discovered what appears to have been an attempt to update CTCP and is wondering if any clients ever tried implementing it.
21:37
< Derakon>
I want to excise this function from the codebase and burn it. Any better ideas than just sprinkingl "threading.Thread(target = function_to_call).start()" in whenever we'd normally call a function that invokes Must_Restart?
21:37
< celticminstrel>
...um, what?
21:37
< Derakon>
Celtic: a moment while I wrestle with d?j? vu and make an example.
21:38 * celticminstrel wonders where the deja vu is from.
21:38
< Derakon>
Beats me.
21:38
< ToxicFrog>
So, hang on
21:39
< ToxicFrog>
That usage is basically: if not in main, pass; otherwise, spawn a new thread executing this function and return?
21:39
< celticminstrel>
So... this function's entire purpose is to call its caller in a new thread iff it is called in the main thread?
21:39
< Derakon>
TF: yes. http://pastebin.starforge.co.uk/310
21:40
< Derakon>
The goal, in general, is to have functions that do stuff without causing the UI to hang.
21:40
< Derakon>
Oh, wait, I got my booleans reversed there.
21:41
< celticminstrel>
Could you create a decorator which, when applied to a function, specifies that it should always be run in a new thread?
21:41
< Derakon>
I haven't had cause to use decorators ever, so I'm still rather shaky on them. Maybe?
21:42
< Derakon>
I wouldn't be surprised if 98% of the time these functions are called from within non-main threads anyway, and the only reason we call Must_Restart in them is because they used to be invoked in other fashions too.
21:42
< Derakon>
I should add some logging that tracks when the function is called, who its caller was, and what action was taken.
21:44 * ToxicFrog weeps black, acidic bile from his eye sockets
21:46
< Derakon>
This is one of the few remaining really painful bits of code in this codebase.
21:46
< Derakon>
Which is to say, there's plenty of bad code remaining, but this is one of three bits that I would consider Bad And Wrong.
21:46
< McMartin>
UI-thread enforcement is the second largest spider source in GUI programming.
21:46
< Derakon>
(The other two, coincidentally enough, also involve taking a look at the call stack)
21:48
< Derakon>
McM: I'm just wondering why I shouldn't just replace all current invocations of these functions (generally one per function) with threading.Thread(target = func, kwargs = {dict of arguments})
21:48
< Derakon>
Or stick wrappers into the functions that accomplish the same thing without mucking around with the callstack.
21:48
< McMartin>
Spawning worker threads is the usual solution, yeah
21:48
< McMartin>
To the general problem of UI responsiveness, that is.
21:49 * celticminstrel likes the decorator idea.
21:49
< ToxicFrog>
McMartin: what would you consider the largest spider source?
21:50
< McMartin>
Z priority clicks on nested widgets
21:50
< McMartin>
Er, sorting out which widgets get which events based on Z priority, rather
21:51
< ToxicFrog>
Aah.
21:52
< ToxicFrog>
I get to implement that myself! Unless I can figure out how to exploit GTK+'s event handling on stuff inside a Cairo surface.
21:52
< Derakon>
Incidentally, there are currently 41 calls to Must_Restart in the code, though 30 of them are in the "test" package (read: the "experimental code that nobody uses" package).
21:53
< McMartin>
TF: I'm not sure if that makes it better or worse. ;_;
21:54
< Derakon>
Seems like you ought to be able to co-opt OpenGL's picking code.
21:55
< ToxicFrog>
McMartin: well, it's not quite that bad; I already have most of the code from when I implemented a widget system on top of SDL for the old, terrible version of this frontend.
21:55
< McMartin>
Is this Spellcast?
21:55
< ToxicFrog>
Felt.
21:55
< ToxicFrog>
Spellcast doesn't need arbitrary blitting, just the occasional GtkImageLabel.
21:56
< ToxicFrog>
Felt, on the other hand, needs all kind of overlapping semitransparent image madness.
21:56
< Derakon>
Felt...is this a networked game system or something?
21:56
< ToxicFrog>
It would be nice if GTK+ Cairo surfaces had something like Qt's GraphicsView capabilities, where you can tell it "here are objects, here are their bounds, what just got clicked on?"
21:57
< ToxicFrog>
But as far as I can tell they don't, and I'd rather deal with that than with the different but no less annoying problems GV has.
21:57
< ToxicFrog>
Derakon: networked card & board game table.
21:57
< McMartin>
Pick your poison, etc
21:57
< ToxicFrog>
Yeah.And this is one I already mostly have an antidote for.
21:57
< Derakon>
Righto.
21:58
< ToxicFrog>
Test cases for it are currently chess, anything that you can play with a normal 52-card deck, and Descent: Journeys in the Dark + all expansion packs.
21:58
< Derakon>
...how much time have you spent on content creation? O_o
21:58
< Derakon>
Descent has a lot of bits, IIRC.
21:58
< McMartin>
This sounds a great deal like Volity
21:59
< ToxicFrog>
Lots and lots of bits, yes. Fortunately, my sister's BF, who actually owns the game, is massively stoked for this project and did all of the scanning. It wasn't hard to exploit imagemagick to turn the scans into tiles.
22:00
< ToxicFrog>
McMartin: isn't Volity (1) web-based and (2) understanding of the game rules?
22:01
< Derakon>
Volity requires you to implement the game logic, yes.
22:01
< Derakon>
But it has a standalone app.
22:01
< Derakon>
Mind, I seem to recall being not terribly impressed by its layout system.
22:03
< ToxicFrog>
This doesn't have any understanding of game logic or layout; it just lets you pick things up and put them down.
22:03
< celticminstrel>
BF could be best friend or boyfriend...
22:04
< McMartin>
TF: Aha. So the touchpoint is Apprentice then.
22:04
< ToxicFrog>
Some things may be slightly more intelligent (the chessboard grid-snaps, decks can be shuffled, Descent monsters display their stats when moused over), but that's up to the game module implementation.
22:04
< ToxicFrog>
celticminstrel: boyfriend.
22:04
< Derakon>
Have you given any thought to players being able to keep secrets from each other?
22:05
< ToxicFrog>
The original impetus for making this program is that we want to play a Descent Road to Legend campaign, but the players are spread across three cities.
22:05
< ToxicFrog>
Derakon: of course. A game consists of one or more fields. Each field has per-player visibility: visible (player can see everything), hidden (player can see card backs, etc), or invisible (player can only see that the field exists)
22:06
< Derakon>
Ahh.
22:06
< ToxicFrog>
So, for example, a deck is hidden to everyone, the Descent board is visible to everyone, and your hand is visible to you, and hidden or invisible to everyone else (depending on whether the game lets you count the size of other players' hands)
22:07
< ToxicFrog>
Fields created by the game module have their default visibility set by the module; fields created by players default to visible to the creator, hidden to everyone else.
22:07
< ToxicFrog>
This is all adjustable.
22:07
< ToxicFrog>
And everything is logged.
22:07
< Derakon>
Nifty.
22:08
< ToxicFrog>
(and the logging will report correctly depending on visibility - eg, I'd see "ToxicFrog takes Three of Hearts from ToxicFrog's Hand; ToxicFrog places Three of Hearts on table", and you would see "ToxicFrog takes card from ToxicFrog's Hand; ToxicFrog places Three of Hearts on table.")
22:38
< Vornicus>
Silly question: why is there a transition state there?
22:38
< ToxicFrog>
Because in some games, the mere act of picking something up is significant.
22:39
< Vornicus>
aha
22:39
< Derakon>
C.f. MtG.
22:39
< ToxicFrog>
More generally, I have a policy that anything you can see while sitting at a table should be logged by felt.
22:40
< ToxicFrog>
You should have the same sort of visibility playing with this that you do playing in person.
22:41
< Tarinaky>
If you're using MtG as an example that doesn't neatly fit into having fields with different visibilities :/
22:41
< Derakon>
Tarinaky: no? Card decks need to be their own separate fields.
22:41
< Tarinaky>
As an example I offer: "Draw a card" vs "Reveal the top card of your library, then put it into your hand."
22:43
< ToxicFrog>
Tarinaky: two options there: temporarily make your deck visible-all, or take the top card from it, drop it on the table, and then pick it back up.
22:43
< ToxicFrog>
Alternately, some sort of "reveal this object only" gesture which I had not yet considered.
22:43 * Tarinaky shrugs.
22:44
< Tarinaky>
Just offering the thought for consideration.
22:46
< Derakon>
I think MtG in general is way too complicated to consider here. I just meant it as an isolated example.
22:46
< Tarinaky>
Fair enough then.
22:46
< McMartin>
Derakon: Easily doable, though; MtG Apprentice is a long-standing system.
22:46
< Derakon>
Oh, sure.
22:47
< Derakon>
I'm just saying that Felt shouldn't feel it has to be capable of supporting every gesture that MtG requires.
22:47
< ToxicFrog>
Derakon: why is it way too complicated? Off the top of my head, all you need beyond normal 52-card is tap, flip, and the card images themselves
22:47
< ToxicFrog>
Oh, and tokens, but you can always load the Go module in parallel for that~
22:47
< Derakon>
Heh.
22:47
< Derakon>
Well, fair enough.
22:47
< Derakon>
I suppose it depends largely on how much you want to have automated for you.
22:48
< ToxicFrog>
(that said, the infrastructure is in place for anyone who would want to write a smarter MtG module; game modules are free to implement their own subclasses and whatnot.)
22:48
< ToxicFrog>
(the Descent module already does this for some things; for example, health/stamina counters can be mousewheel'd to adjust a displayed number, rather than using multiple counters, and monster figures will display their stat card when moused over)
23:06 Orthia [orthianz@Nightstar-a7b937d7.xnet.co.nz] has joined #code
23:17 Derakon [Derakon@Nightstar-1ffd02e6.ucsf.edu] has quit [[NS] Quit: Leaving]
23:35 Attilla [Attilla@Nightstar-f72c88d9.threembb.co.uk] has quit [[NS] Quit: ]
23:47 AbuDhabi [annodomini@Nightstar-4cbdb07e.adsl.tpnet.pl] has quit [[NS] Quit: I will send you back to the depths of Hades!]
23:50 cpux [Moo@Nightstar-20a84089.dyn.optonline.net] has joined #code
--- Log closed Thu Jun 17 00:00:12 2010
code logs -> 2010 -> Wed, 16 Jun 2010< code.20100615.log - code.20100617.log >