Tuesday, 2010-07-06

*** tpb has joined #tp00:00
*** ChanServ sets mode: +o tpb00:00
* llnz is back00:16
*** tansell-laptop has quit IRC00:29
*** mithro has quit IRC00:29
*** verhoevenv has quit IRC01:57
*** nash has joined #tp02:09
alanpllnz: ping03:04
llnzhi alanp03:04
alanphey, i have a bad commit/merge on the mtsec branch03:04
alanp4364880ef74cec50807120b71f8ce321fe378f4803:04
alanpi need to nuke it, without any kind of "meltdown"03:04
alanp:(03:05
ezoddid you read that thing i sent you?03:07
alanpi'm trigger shy, just had a git meltdown on my end03:07
ezodyou can try doing the appropriate surgery as per that article, and inspect the branches locally, without pushing03:08
alanpis it going to send cia-29 batshit crazy?03:08
ezodso if you jack it all up you can rm -rf and fresh commit ;)03:09
ezoderr checkout03:09
ezodi don't think it will generate a lot of commit messages03:09
ezodread the article very carefully03:09
alanpsend it again?03:09
ezodhttp://www.kernel.org/pub/software/scm/git/docs/howto/revert-a-faulty-merge.txt03:10
tpb<http://ln-s.net/33i9> (at www.kernel.org)03:10
ezodit's describing almost your situation03:11
ezodexcept in their case it's the mainline that merged a feature branch and they want to kick it out (but still be able to merge it in later, with all pre-screwup commits included)03:12
ezodwhereas you have merged master into mtsec and want to undo that03:12
alanphmm03:12
llnzwhat's the problem that merging master has introduced?03:17
*** tansell-laptop has joined #tp03:17
ezodllnz: that was my first question also03:19
ezodalanp: i don't recall your response03:19
alanpmtsec functions incorrectly on master03:20
alanplots of stuff broken :(03:20
alanpnull has been working from mtsec branch, i figure once we get everything fixed in master we can always backport from mtsec03:20
alanpcomments?03:23
llnzalanp: we can create a new branch to start merging the mtsec branch into master, and pick the commits from the mtsec branch into it03:24
alanphmm03:25
alanpwe would have to merge epyon changes manually03:25
alanpthat's where i think it went wrong?03:25
llnzor branch an earlier version of the mtsec branch off to something stable for now03:25
alanpi guess i could take mtsec before the merge and call it null?03:25
ezodhow do you get mtsec "before the merge" though?03:26
alanpcommit 39b81eb414e3666b9cb9d15eae259db709fb836d, no?03:27
alanpno, would have to go further back03:27
ezodthe problem is all the commits from master are interleaved in with mtsec now03:27
alanp??03:27
alanpcouldn't i checkout f5d41b9135a69f8053eddc47a0e9212aee0ecbc103:28
* llnz wishes he was in linux right now and could run qgit and gitk to see what is what03:28
alanpgitk, eh03:29
ezodqgit shows that nice "tree" thing on the left side03:29
ezodvery handy03:29
alanpgitk kinda ugly03:30
ezodalanp: that article explains what to do, no?03:30
ezodi don't think there's an easier way that won't mess anything up down the road03:30
alanphmm03:33
llnzhang on03:33
alanpi can't "Reset to here"?03:33
llnznope, don't mind me03:34
ezodyou can, but are all the unwanted commits from master chronologically after the latest commit (besides the merge) in mtsec?03:34
alanpno don't think so :(03:35
alanparticle, kind of confusing03:35
ezodyou will learn a lot about git ;)03:35
alanpmaking my head spin :P03:36
llnzmaybe we should just be fixing the code instead?03:40
ezodi think llnz is onto something ;)03:40
alanptime problems03:41
llnzit will have to be done anyway03:41
alanpbut yes, i like that idea03:41
alanpnull is stuck until i can fix a couple issues for him, so my priority is to get him working ASAP03:41
alanponce he is working, i can investigate fixing the actual problems03:41
alanp[mtsec f38c7d8] Revert "Merge branch 'master' of git+ssh://git.thousandparsec.net/git/tpserver-cpp"03:43
alanp 11 files changed, 57 insertions(+), 196 deletions(-)03:43
alanpugh03:43
alanpit's going to CIA-29 flood, isn't it?03:43
ezodthat's only 1 commit..03:44
llnznope, should just be one commit03:44
alanpthe other one was too03:44
CIA-29alanp tpserver-cpp-mtsec * rf38c7d8a6c05 /tpserver/ (11 files):03:44
CIA-29Revert "Merge branch 'master' of git+ssh://git.thousandparsec.net/git/tpserver-cpp"03:44
CIA-29This reverts commit 4364880ef74cec50807120b71f8ce321fe378f48, reversing03:44
CIA-29changes made to 39b81eb414e3666b9cb9d15eae259db709fb836d.03:44
alanphmm03:44
ezodthe other one pulled all the actual commits from master in so they fired as commits to mtsec03:45
alanpso it keeps the history in gitweb03:45
alanphttp://git.thousandparsec.net/gitweb/gitweb.cgi?p=tpserver-cpp.git;a=shortlog;h=refs/heads/mtsec03:45
ezodnow, you have a problem03:45
tpb<http://ln-s.net/7C46> (at git.thousandparsec.net)03:45
ezodapparently, if i make a commit to tpserver-cpp master now03:45
ezodand you merge master into mtsec again03:46
ezodyou will only see the new commit03:46
ezodi.e. the commits previous to the merge will not merge back in03:46
ezodaccording to the article03:46
alanpok03:47
llnznothing you reverted should have been causing a problem03:47
ezodalanp: okay, here's the easy answer03:48
ezodwhen you want to merge master again later on03:48
ezodrevert the commit you just did first03:48
llnzin fact it has some sigiificant bug fixes03:48
ezodi.e. revert the reversion of the merge03:48
alanpllnz: it merged epyon's refactoring changes...03:49
llnzthen you have another merge to undo, good luck with that03:50
alanp:(03:50
alanp[12:49:27] <null_000> I think the only thing that works in the mtsec branch and not in the master branch is building stuff on planets... as far as I know03:50
alanp[12:49:55] <null_000> but that was a blocker for me, so I didn't use the master branch much03:50
alanpmaybe it isn't such a huge problem then03:50
llnzalanp: have a look at this commit, maybe i got something wrong that you can fix: http://git.thousandparsec.net/gitweb/gitweb.cgi?p=tpserver-cpp.git;a=commit;h=8ff35fed5fc7881cd328f7d7da2df929194db6a003:52
tpb<http://ln-s.net/7C48> (at git.thousandparsec.net)03:52
alanpok03:52
alanp-  fleetlist = (ListParameter*) addOrderParameter( new ListParameter("ships", "The type of ship to build", boost::bind( &Build::generateListOptions, this ) ) );03:54
alanp+  fleetlist = (ListParameter*) addOrderParameter( new ListParameter("ships", "The type of ship to build", boost::bind( &BuildFleet::generateListOptions, this ) ) );03:54
alanplooking into that03:55
alanpshould be ok03:55
alanpyeah i see what he means :(04:03
*** tansell-laptop has quit IRC04:05
alanpand my client crashes04:09
alanphttp://pastebin.com/k2ZSPZ6y04:16
tpbTitle: Displaying graphics/unknown.pn - Anonymous - k2ZSPZ6y - Pastebin.com (at pastebin.com)04:16
alanpTypeError: can't compare datetime.datetime to int04:16
alanpi have to force-close the clients too :(04:20
llnzalanp: control-C on the console also kills it04:22
alanpnod04:22
alanpthat's what i meant by forcing it04:22
llnzah04:22
llnzi note that it is the "Design" cache causing the issue04:23
llnzmaybe check the xstruct for Design to make sure it is turning the uint64 timestamp into a datetime04:23
llnzwhich it shouldn't do soon anyway, going to be serial numbers instead04:23
alanpgoing to have to figure out why the planet orders aren't making it to the client too04:25
alanpllnz: remind me where the numbers in ObjectQueue OrderParam -> getParameter coem from?04:29
llnzthe order the ObjectParams are added to the object param groups and param groups to the object description04:31
alanp  34   group->addParameter(obpT_Resource_List, "Resource List", "The resource list of the resources the planet has available");04:32
alanplike that?04:32
alanpor when you create a createParameterGroupDesc i guess04:33
alanpand the add-> are the sub numbers04:33
alanpok04:33
alanphow does the group for the allowed orders come ?04:34
alanpnumgroups+1?04:34
llnz?04:34
alanpfor example:04:35
alanp  71   dynamic_cast<OrderQueueObjectParam*>(obj->getParameter(3,1))->setAllowedOrders(allowedlist);04:35
llnzthe OrderQueueObjectParam is the 1st paramater of the 3rd parameter group04:38
alanpright04:38
alanpi just noticed that in minisec it's 5,104:38
alanpactually, i just can't read :(04:39
llnzthe parameter groups are set up slightly differently in minisec04:39
tansellnaught magic numbers :(04:39
alanptansell: :(04:39
tansells/naught/naughty/04:39
llnztansell: i know, will fix eventually04:39
alanpso it looks like the orders are created, but they never end up at the client04:39
llnzhave to run, if you can find a way to reliably reproduce the bug(s), email it too me and i'll have a look when i have time04:41
llnzbbl (hopefully)04:41
*** llnz has quit IRC04:41
alanpthink it's a server issue04:44
*** llnz has joined #tp06:11
*** cahirwpz has joined #tp06:39
*** bisc has joined #tp06:54
*** llnz2 has joined #tp07:02
*** llnz has quit IRC07:02
*** llnz2 is now known as llnz07:09
bisctansell: ping07:31
tansellbisc, pong07:31
bisctansell: we need to decide something about this patch http://codereview.mithis.com/78001. This bug needs to be solved somehow, so that I can use results.07:32
bisctansell: I think that this bug emerged because of just outdated code. I've seen some places where code is good but just doesn't correspond to existing data.07:34
tansellbisc, I still don't understand why your code works07:39
tansellthe code is suppose to walk up the tree looking for a parent which is shown07:40
bisctansell: yes, and that's what I'm doing. Difference from existing code is in checking not "do we have key", but "is the value empty", because this class stores empty values for all those keys07:42
biscactually, the keys are not empty only for systems, because they correspond to icons07:42
biscthe check != 0 is needed to stop cycling if we come to universe, whose parent is itself (universe)07:43
tansellso what are you actually trying to do?07:43
bisclook. we have a planet. we want to find an icon of system that contains a planet07:43
tansellyes07:44
biscthis class is a dictionary: object_id -> icon07:44
biscand we get icon only if we provide system id07:44
tansellyeah, all go so far07:45
biscif we try self[planetid] or self[0] we get []07:45
tansellLets say we have the following07:45
cahirwpztansell, hi :)07:45
tansellUniverse A -> System A -> Planet A07:45
biscyes.07:46
bisccurrent situation is that self[Universe] = [], self[System] = some_icon, self[Planet] = []07:46
tansellahh07:47
biscwe want to go up from planet until we get an icon or meet the universe07:47
tansellso the correct fix is the following,07:47
tansellRemove line 292?07:47
bisclet me think for a bit07:48
tansellWhich will make the following07:48
tansellself[Universe] = [], self[System] = some_icon, self[Planet] = Nothing07:48
tansellcahirwpz, I was looking at your code and was a bit disheartened to see massive changes which I think I mostly disagree with07:48
bisctansell: is a galaxy top level object?07:51
cahirwpztansell, can you at least believe me that I'm doing those changes for better ? I know we should sit and talk about those changes, but I'm afraid we missed a lot of time to make compromises till now07:51
tansellcahirwpz, I believe that *you* believe that these changes are for the better07:51
tansellcahirwpz, but you are not working in a bubble07:52
tansellcahirwpz, your opinion is not the only one which matters07:53
cahirwpztansell, I missed your opinion when I needed it :/07:53
cahirwpztansell, I know in the moment I'm one to blame - but can we focus on what needs to be done further ?07:54
tansellcahirwpz, so the big problem is that you have multiple changes we need to discuss and decide on each one07:54
tansellsome I'm going to agree with you on, others we are going to disagree07:55
cahirwpztansell, that's the way things work07:55
tansellcahirwpz, but your going to have to rip out the parts which we disagree on07:56
cahirwpztansell, but only after discussion ;-)07:56
tansellso first point of argument, why are you converting everything to the sqlalchemy.orm? Your task was to port to twisted07:57
cahirwpzO.o07:57
cahirwpzsqlalchemy contains sqlalchemy.orm so I don't see any point in not using it07:58
cahirwpzcode looks much better when orm is used07:58
cahirwpzits readable in first row07:58
tansellcahirwpz, it's a massive change to the way tpserver-py works - it's a GSoC project in itself07:59
tansellfirst row?07:59
cahirwpzahh... copying language construct from Polish ;-)07:59
cahirwpzeven if it's massive change it's almost ready - I need 2-3 days to finish it08:00
tansellcahirwpz, is it? It's going to take me a week or two to review this08:00
cahirwpzorm brings readability and flexibility to database handling - did you see how class with inheritance are mapped onto tables, and relation properties - all those things simplify code and thinking about it08:01
tansellcahirwpz, from what I can see, there is also quite a bit of functionality which has stopped working08:01
cahirwpztansell, as I promised - server will be covered by large set of functional tests08:02
tansellcahirwpz, tpserver-py used to have a very particular fashion, I need to understand how it works now08:02
cahirwpztansell, I understand that you were main author of it, I will spend any amount of time to help you feel as in home again08:03
tansellcahirwpz, so the original principle for the server was that it is a light wrapper which converts from Thousand Parsec protocol to SQL08:03
tansellcahirwpz, the database does the heavy lifting of storing, sorting, searching, session control, etc08:04
cahirwpztansell, I consider it was main weakness of this design - it prevented moving to TP04 (and in the end I decided not to do this)08:05
tansellcahirwpz, I think if you had chatted with me more, I could have shown you how to convert to tp04 pretty easily08:05
tansellcahirwpz, as well, there are a number "up coming" features - such as object revision history - which had yet to be implemented08:06
tansellcouple of other things;08:06
tansell * rulesets shouldn't modify the database08:06
tansell * rulesets should be able to build on each other08:07
tansellso lets start here08:07
tansellhttp://github.com/cahirwpz/tpserver-py/blob/master/tp/server/bases/Attributes.py08:07
tpb<http://ln-s.net/7C8t> (at github.com)08:07
cahirwpztansell, aaaa.... don't touch it ;-)08:07
cahirwpztansell, its half baked!08:07
tansellyou have changed it so that each parameter is stored in it's own table?08:07
cahirwpztansell, this module was first attempt to reimplement Attributes with greater flexibility - it failed, I'm in the middle of coming up with refined design08:09
tansellokay - well lets discuss tp04 and how it relates to tp0308:09
cahirwpzhave you seen documentation pages I generated from xml ?08:10
tansellwhat XML?08:10
cahirwpzprotocol.xml / protocol3.xml08:10
tansellyou mean08:10
tansellhttp://www.thousandparsec.net/tp/dev/documents/protocolxml.php08:10
tpb<http://ln-s.net/JXj> (at www.thousandparsec.net)08:10
tansell?08:10
cahirwpzhttp://cahir.eisp.pl/doku.php?id=en:gsoc2010:doc:tp0308:10
tpb<http://ln-s.net/7C94> (at cahir.eisp.pl)08:10
cahirwpzhttp://cahir.eisp.pl/doku.php?id=en:gsoc2010:doc:tp0408:11
tpb<http://ln-s.net/71U8> (at cahir.eisp.pl)08:11
cahirwpzI studied both for a while08:11
tansellcahirwpz, so do you understand how orders work in tp03?08:11
cahirwpzThe main difference is with object presentation - instead of predefined set of attributes for each object, you give flexibility to describe any object by ruleset08:12
cahirwpzcahirwpz, mostly yes08:12
cahirwpz:)08:12
cahirwpztansell, mostly yes08:12
tansellcahirwpz, so you understand that in the tp protocol there are two parts of orders, the descriptions (kinda similar to 'class') and the actual orders (kinda similar to 'instances')08:13
cahirwpzyes08:13
tansellokay great08:14
tansellso the way tpserver-py worked is that you created a normal python class for each order type08:14
cahirwpzand some of it's attributes were mapped onto database08:15
tansellthen on the class, you defined a set of attributes08:16
cahirwpztansell, through Attribute class definition with type, default value, level of protection, and so on08:17
tansellyes08:18
tanselland the base class handled the two most complicated parts for you08:18
tansellgetting the data in/out of the database08:18
tanselland converting it to/from tp packets08:18
cahirwpzyeah - I remember08:19
cahirwpzhow this design helps with handling both version of protocol ?08:19
tansellwell it doesn't help with handling *both* versions of the protocol at once - but then we don't really need to support that08:22
cahirwpzI talked to Epyon - he told me that tpserver-cpp supports both version08:22
tanselldropping tp03 support and only supporting tp04 would have been fine08:22
tansellcahirwpz, yes, but tpserver-cpp is a totally different beast08:22
cahirwpz... do we posses rulesets which can use TP04?08:23
tansellcahirwpz, the process should be transparent to the rulesets08:23
tansellas they have never cared about how we serialised/deserialised the data08:24
*** llnz has quit IRC08:24
tansell(well atleast in tpserver-py)08:24
*** llnz has joined #tp08:25
cahirwpzone question about rulesets - you told me that they shouldn't modify database - what about advancing game by one turn ?08:25
tansellcahirwpz, not modify the database in the sense of needing new tables/columns/etc08:26
tansellso once you have setup the database initially you never have to do any changes08:28
cahirwpztansell, ok... I understand... one thing you might not have spotted in current design - each game have separate set of tables - did you notice that ?08:29
tansellcahirwpz, yes I did notice that08:29
cahirwpztansell, I decided to implement full game isolation - I'm still not sure if it was good move08:30
cahirwpztansell, great :)08:30
tansellcahirwpz, I'm not sure it was a good move either08:30
cahirwpztansell, seems that two games are not and should not be interacting with each other08:31
cahirwpztansell, especially very troublesome would be implementing interaction of two games with different rulesets08:31
tansellcahirwpz, I can think of some cool game types which might have multiple "logic" games connected together08:32
tansellcahirwpz, the old tpserver-py supported two games with different rulesets running at the same time with no problem08:32
cahirwpztansell, the new one will support n games with m different ruleset without any problem ;-)08:33
tansells/two/any number of games/08:33
cahirwpz:)08:34
cahirwpzso... there's one thing you might not like - I decided that different games can have a set of additional tables08:34
tansellyes I saw08:35
cahirwpzfor example - minisec has additional table Ship, where in minisecplus we don't need it because we have functional Designs08:36
tansellcahirwpz, yes, I very much dislike this idea08:36
tansellcahirwpz, the idea is that once you have your DB all setup you can hand it over to a DB administrator who can optimize it, set up sharding, etc08:37
cahirwpztansell, I do not modify table set as game works!08:37
cahirwpztansell, when game is created I just allow to add some ruleset-specific tables08:38
tansellcahirwpz, but you do at game creation/removal08:38
tansellThe flow should be08:38
tansellsetup server, give to db admin to optimise, then create a game08:39
tansellcreating/removing games is a common task08:39
tansellatleast in tpserver-py08:39
cahirwpztansell, "premature optimization is the root of all evil" -- Donald Knuth ;-)08:40
cahirwpztansell, I handle creating / removing games in tpserver-py-tool08:40
tansellcahirwpz, tpserver-py is designed with the idea that you can have multiple games all running at once, being created, deleted, etc08:42
cahirwpztansell, that's great - it's exactly one of my goals :)08:42
tansellhaving new tables created/destoryed with each game means the DB admin can't do any optimisation08:42
tansellas no sooner has he optimised table for game X then game X ends and the table is destroyed08:43
cahirwpztansell, why are you thinking of optimization now ?08:44
cahirwpztansell, fast code is not needed now - we need something that works and is extensible08:44
tansellcahirwpz, because your design decision will mean we can *never* optimise08:44
cahirwpztansell, what about db scripting ? can't admin prepare a script which will be launched before game is really started ?08:45
cahirwpztansell, there will be only as much scripts as there're rulesets08:46
cahirwpztansell, moreover those scripts can be partially moved to table definition in python!08:47
tansellcahirwpz, then we have to have hooks into the game creation process where we run a bunch of extra stuff08:47
tansellcahirwpz, DB admin's don't write python08:47
cahirwpztansell, ahh... poor argument... we can take admin's scripts and port it to python08:47
tansellcahirwpz, you still don't really understand how this works do you?08:48
tansellcahirwpz, the way it works is that you give the db admin a database, then he plays with things on the server and everything gets magically faster08:49
tansellcahirwpz, he is not going to be happy with table creation/deletion all the time08:50
cahirwpztansell, I assure you that I do understand ;)08:50
cahirwpztansell, I just believe your concern about db performance is maybe something we should care less at now08:50
cahirwpztansell, if db performance is crucial code may be redesigned08:50
tansellcahirwpz, your model also breaks if we have a database cluster08:50
cahirwpztansell, for now we don't have working server - who cares about database performance !08:51
tansellcahirwpz, but we did have a working server08:51
tansellso your going backwards here08:51
cahirwpztansell, and you will have one - I promise08:51
tansellcahirwpz, you need to convince me why table creation/deletion is a *better* solution then a single table option08:52
cahirwpztansell, I understand you and your concerns - but believe me - talking about performance now will not bring *any* progress08:52
tansellas you are loosing a bunch of possible functionality08:52
cahirwpztansell, ... that's something I don't understand... which functionality ?08:53
cahirwpztansell, performance != functionality08:53
bisccahirwpz: imho that's kind of google philosophy -- not being careless about performance at any time :)08:53
cahirwpzbisc, implementing server in python instead of C++/ Erlang / Scala is against this philosophy08:54
bisccahirwpz: possibly. that's another reason to keep python code smaller and allow db optimization. still, that's my personal opinion based on rather small information.08:55
tansellcahirwpz, just because you choose to make a sacrifice in one area doesn't mean you always choose the less performant option08:56
tansellbisc, did that change solve your problem?08:57
cahirwpztansell, does db admin in google optimize each table by hand ?08:57
tansellcahirwpz, we don't really use SQL db's in google08:58
cahirwpztansell, I know ;-)08:58
cahirwpztansell, anyway you need to pay attention how BigTables are used...08:59
bisctansell: it does. But I don't understand why to keep so strange structure for this dictionary. I mean having [] for universe and galaxies and having no key at all for planets. Why not making it clearer?08:59
cahirwpztansell, ok - I stop it now, lets focus on real issue08:59
tansellbisc, [] means "we are not drawing the object", no key means that this is being drawn as part of another object09:00
cahirwpztansell, please explain me patiently one more time - why do we need to care about db performance ?09:00
cahirwpztansell, are we expecting huge volume of users like a few thousand at a moment ?09:01
tansellcahirwpz, no, but it's not unreasonable to expect a couple of hundred games09:02
tansellspecially if tpserver-py makes it easy for someone to create a game on the server09:02
bisctansell: understood. Is this logic introduced in this exact class (SystemLevelOverlay) or in Overlay class? I just want to leave a well-descriptive comment about it somewhere.09:03
tansellwell it's dinner time here, be back in about an hour09:03
tansellbisc, in the SystemLevelOverlay09:03
biscok, thanks.09:04
tansellbisc, cool - it took me a while to figure out what was happening too09:04
cahirwpztansell, c'ya09:05
bisccahirwpz: I guess it's not easy for mithro to agree with such paradigm shift. And not only because of some rational choices and decisions. You know: you've been developing something for years keeping some concepts in mind, and then someone comes and introduces different (with certain pros and cons) concepts.09:09
*** tpb has joined #tp09:14
*** ChanServ sets mode: +o tpb09:14
bisccahirwpz: you're welcome. No, I'm not attacked at all :) haven't been working on servers at all09:14
bisccahirwpz: And maybe it's not about the code -- more about ideas. Maybe maintaining two types of servers (py and cpp) is sensible only if these servers are different in some ways and complement each other.09:15
cahirwpzbisc, I also wondered why there're two versions of TP server. The only sensible point in doing that would be keeping python server a good place for experimenting (not improving performance) and C++ version for stable and efficient solution.09:18
bisccahirwpz: I can't say anything about their detailed destination, but I think that their initial ideas were justified. And maybe your changes move pyserver away from its original idea - that's why mithro isn't happy with it.09:20
cahirwpzbisc, but if I were concerned about efficiency and *scalability* I would never ever choose C++, only Erlang in this case09:20
cahirwpzbisc, good observation - thanks09:21
bisccahirwpz: I see you're a fan of Erlang :) python is good for implementing complex things quickly. It gives some quick adaptability and easy extension of code. The pyserver could have ideas that benefit from these language properties. But I don't know for sure.09:23
cahirwpzbisc, I taught Erlang (yeah, I was lecturer!) at my university during last semester ;-)09:25
cahirwpzbisc, I also think that Python is great for prototyping09:25
cahirwpzbisc, SQLAlchemy, Django and Twisted frameworks totally kicks ass :]09:26
bisccahirwpz: yeah, can't disagree with you :)09:28
bisccahirwpz: are there many Erlang foss projects?09:29
tansellcahirwpz, I'm back now but will have to disappear shortly09:29
tansellcahirwpz, so let me put it this way, you are the one making a fundamental change to the way tpserver-py works - the burden of proof in showing it's a better solution is on you09:30
cahirwpzbisc, a lot... are you interested in something particular ?09:30
tansellcahirwpz, which is why even if I didn't see these performance problems you would have to give me a *good* reason to switch09:31
cahirwpztansell, ok... how can we state that something is better solution ? do we have some sort of criterion (comprehensibility, extensibility, performance, maintainability) ?09:33
bisccahirwpz: no, not really. Just had a though that even a better language/framework could be losing in foss popularity to less perfect, but more popular one.09:33
tansellcahirwpz, any of the above could be suitable09:33
cahirwpztansell, ok - I'll look into non-functional software properties and try to find points against and in favor of changes I make09:34
cahirwpztansell, It'd be good if we find all conflict points as soon as possible, I don't want development to be slowed because of misunderstanding etc.09:36
tansellcahirwpz, basically you need to come up with a list of things you have changed09:38
tansellcahirwpz, then we can talk through each option and come to a solution09:38
tansellcahirwpz, this is going to be painful because we should have done this *before* you made each change09:39
bisctansell: can you have a quick look onto http://codereview.mithis.com/82001 ?09:39
tpbTitle: Issue 82001: Popup picture removed from taskbar. - Code Review (at codereview.mithis.com)09:39
tansellbisc, uploaded a new version?09:39
tansell82001: LGTM09:40
bisctansell: hmm, not yet, doing another thing now. But relieved to have that bug solved. Will upload later.09:40
bisctansell: thank you09:40
tansellbisc, okay - probably won't get a chance to review till tomorrow09:40
tansellbtw - feel free to send me an email if you have any outstanding CLs I havn't looked at09:40
tansellI'm a bit of a scatter brain so sometimes forget about stuff :)09:41
tansellcahirwpz / bisc: have to head off now09:41
bisctansell: bye09:41
cahirwpzbisc, well - looking at Erlang properties (highly concurrent and parallel, actor model, code hot-swapping, process migration) and standard library (distributed algorithms, distributed ACID database) - I think every serious server should be programmed using this language09:42
cahirwpztansell, bye09:42
bisccahirwpz: any other language/libraties options for a "serious server", in your opinion?09:43
cahirwpzbisc, with my current knowledge - none09:44
cahirwpzbisc, but you know... I'm limited to what I know - maybe some day I'll find something better09:44
* llnz would now start with either django or twisted or straight python09:44
llnztoday09:45
bisccahirwpz: okay, thanks for interesing info09:45
cahirwpzbisc, beware - Erlang is functional, and have some borrows from Prolog :]09:45
bisccahirwpz: I'm not afraid of such functional and logical :) I'm much more afraid of starting writing big servers :)09:47
cahirwpzbisc, maybe you should read about history of Erlang - in fact it was designed and evolved as language + standard library in which writing distributed server is a joy ;)09:49
bisccahirwpz: yeah, for me it's like reading about war -- with a hidden hope that I'll never face such things in real life practice :)09:53
bisccahirwpz: thanks for interesting comments :)09:54
*** nash has quit IRC10:09
* llnz wanders off10:41
llnzlater all10:41
*** llnz has quit IRC10:41
*** bisc has quit IRC10:59
*** bisc has joined #tp11:02
*** bisc has quit IRC11:05
*** cahirwpz has quit IRC12:56
*** cahirwpz has joined #tp13:46
*** cahirwpz has quit IRC13:53
alanp>_>14:15
alanp<_<14:15
*** verhoevenv has joined #tp14:22
*** welterde has quit IRC15:56
*** welterde has joined #tp16:12
*** Epyon has joined #tp16:15
*** Epyon has left #tp16:15
*** null_000 has joined #tp16:23
alanpnull_000: PING17:03
alanpoops, pnig17:03
StupidIncarnateis there still a problem with getting planet orders?17:07
*** epyon-kitsune has joined #tp17:10
null_000alanp: pong17:12
alanpnull_000: with that commit #, you're able to make orders on planets?17:13
null_000yes17:13
null_000but not after I colonise them17:13
alanpsec17:19
alanpnull_000: how long does it take you to build?17:20
alanpnull_000: if you want to make your lead time faster, you can add components in mtsec.cpp to the scout design17:23
alanpexample on line 71217:23
alanpnull_000: can you paste me message output from when you attempt a colonise?17:24
null_000ok17:26
alanpnull_000: colonisation worked for you on minisec?17:30
null_000http://pastebin.com/7prmFwkL this is the output when I colonise17:31
tpbTitle: 2010-07-06 19:30:15 < Debug > - Anonymous - 7prmFwkL - Pastebin.com (at pastebin.com)17:31
alanpnull_000: ^17:31
alanpsorry, i meant the message window of your client17:32
null_000oh17:32
alanpdo you get "You have colonised a planet"17:32
alanpalso, did this work in minisec for you?17:32
*** cahirwpz has joined #tp17:32
alanpmtsec and minisec are a 1:1 copy for colonisation i believe17:32
null_000http://pastebin.com/1i0XqDcy17:34
tpbTitle: this is being run at /home/nul - Anonymous - 1i0XqDcy - Pastebin.com (at pastebin.com)17:34
*** Agon has joined #tp17:34
null_000I don't remember if the colonisation worked in minisec17:34
null_000here the colonisation works17:34
*** Agon has quit IRC17:34
null_000but after I colonise a planet17:34
alanpright, but the order queue isn't working after17:34
null_000I can't give a build order on it17:34
alanpdoes it show up as a planet owned by you?17:35
null_000When I select build fleet I don't have any designs to choose from17:35
null_000yes17:35
alanpso the orders box populates for you?17:35
null_000I am the owner (but it isn't colored green)17:35
null_000yes17:35
null_000but after I choose build fleet I cannot choose the design.. and can not delete the build fleet order17:36
null_000if I then end  the turn the server crashes (if I remember correctly... I can try it now)17:36
null_000oh wait... I don't even have to end the turn17:37
null_000want the gdb output of the crash?17:37
alanpsure17:38
null_000http://pastebin.com/F3gzrq8s17:38
tpbTitle: 2010-07-06 19:30:14 < Debug > - Anonymous - F3gzrq8s - Pastebin.com (at pastebin.com)17:38
alanpok, makes sense17:39
null_000and after the crash the client uses most of the CPU and wants to fry it (had 108°C once)17:40
alanpi think you may need better cooling :P17:41
null_000it's a laptop... so tell that to toshiba ^_^17:41
alanpif you like, you can run the server on my box.  network speeds might hurt you but building should be a bit faster17:42
null_000why would building be faster?17:43
alanpquad core, 8g ram17:45
alanpnot sure what the specs of your laptop are17:45
null_0002.5GHz core2 duo 4GB ram17:45
alanphm not much speed improvments probably then17:46
null_000^_^17:46
alanpnot enough to make up for the network speeds anyways17:46
null_000probably17:46
null_000have to go now17:52
null_000bye17:52
*** null_000 has quit IRC17:52
alanphmmm17:53
alanpi see a possible fsckup17:53
alanphmm no tit17:55
StupidIncarnatetit? lol18:00
*** Agon has joined #tp18:03
alanphehe18:05
*** glew has joined #tp18:26
*** null_000 has joined #tp19:09
StupidIncarnateI'm trying to fix the visual positions of systems in a galaxy, but I'm not sure how the size of a galaxy and universe correspond to the positions of a planetary system19:45
StupidIncarnatethe position is a lot larger than the sizes of their corresponding parents19:45
StupidIncarnateor maybe not, but yah, someone more informed about it?19:46
*** llnz has joined #tp19:55
llnzmorning all19:56
StupidIncarnatemorning19:56
Agonhello19:59
llnzhi Agon20:06
StupidIncarnatellnz, do you know about the size/position stuff for the objects20:07
StupidIncarnate?20:07
llnzyes20:07
StupidIncarnateso the position of systems is how far from the point of the universe on a four quad system is it called?20:08
StupidIncarnateforget the term20:08
llnzorigin20:09
*** null_000 has quit IRC20:10
StupidIncarnateI'm a bit confused abouth the size variable20:10
StupidIncarnateand how tha relates to the position20:10
llnzok, the position gives the location of the centre of the object20:11
llnzand the size gives the radius/diameter (i forget which)20:11
StupidIncarnatealright. so on the project i'm working on, there's this for determining the x position within the constraints of the browser dimensions x = (obj.Position.x / universe.Size) * 12000020:13
StupidIncarnatedo you know what the 120000 number might be20:13
StupidIncarnate?20:13
StupidIncarnateobj being a planetary system, not a galaxy20:15
llnzat a guess, it's used to scale things up to a reasonable size/distances20:15
llnzthe universe is huge, but the games so far focus on a small area in the middle20:16
StupidIncarnatealright. And it works fine for minisec, but breaks in mtsec. Do you know why that is?20:16
StupidIncarnatedo the dimensions change between the two sets?20:16
llnzhow does it break?20:16
*** Agon has quit IRC20:16
StupidIncarnateOne sec20:17
StupidIncarnateso it looks like the scale on mtsec is bigger than minisec20:21
llnzok20:21
llnzwhat i suggest is finding the largest distance, and adding a bit to it, then scale everything so it fits20:22
llnzatleast as a start20:22
verhoevenvI wonder why we have a size attribute for, say, universe. How about "size of the universe is the bounding box of all contained items"?20:41
verhoevenvSame for star systems etc.20:41
StupidIncarnatehmmm, coming up with a dynamic sizer is difficult20:50
StupidIncarnatesince the universe changes between the two rulesets20:50
StupidIncarnateuniverse size*20:54
llnzdon't fix the value, calculate it after downloading the contents of the universe20:56
StupidIncarnatei'm not sure about the c++ client, but the python client and the web client allow the positions to go outside the viewport and lets the player move it around to reveal the ones the extend past the center viewport dimensions20:57
StupidIncarnateis there a reason why the objects can't be positioned within the constraints of the viewport so that all of them fit?20:57
StupidIncarnatethat would solve the problem up coming up with a dynamic scale20:58
StupidIncarnatethat's what I mean llnz, I'm not sure what value to base the scale on after I have the positions of all the objects20:59
*** glew has quit IRC20:59
verhoevenvStupidIncarnate: If you have all the objects, then you can surely calculate the bounding box? (highest/lowest object, leftmost/rightmost object)21:00
verhoevenvAnd thus determine the scale where they all fit in?21:01
verhoevenvOr am I missing something?21:01
verhoevenv(I very well might be)21:01
StupidIncarnateit'd have to go through all the values, and that would slow things down a bit21:01
verhoevenv(I don't think any ruleset uses the Z coordinate, btw?)21:01
verhoevenvMmm. Still, probably the only way to accurately know the scale of things. :/21:02
StupidIncarnateI suppose it could be 1.5 of the client viewport21:05
StupidIncarnatei guess what's confusing me is on mtsec, the universe size says it's 100000000021:07
StupidIncarnatebut all the positions seem to go outside that, even if the size is the radius of the universe21:08
StupidIncarnatesystem - y:-3800000000 x:-25000000021:08
verhoevenvMmm. There never has been a real meaning enforced to the size of the universe. Which means we both have arbitrary small and arbitrary large numbers in that field.21:09
StupidIncarnatehow can an object exist outside the universe though?21:10
StupidIncarnateshouldn't that be something enforced though?21:11
*** cahirwpz has quit IRC21:11
verhoevenvI'm not sure where it all came from. The current situation is not easily solved though, but you can go ahead and ask for input on the mailing list.21:12
verhoevenvIt's illogical the way it is now anyway, so it should be adressed sometime.21:12
verhoevenvNow is as good as any other time.21:13
StupidIncarnatedoes anyone go to the mailing list21:13
StupidIncarnate?21:13
verhoevenvHow do you mean?21:13
StupidIncarnateoh i guess so21:13
StupidIncarnatemy email must not be working21:14
StupidIncarnatewhat does that pertain to? the protocal or the server or something elne?21:24
*** glew has joined #tp21:29
*** Epyon has joined #tp21:41
verhoevenvStupidIncarnate: protocol or server, yeah. I'd go for changes to or at least a note in the protocol, but I'm just a lowly AI writer and I don't have to worry about the impact of those things. :)22:02
llnzif the universe is smaller so that it shouldn't contain the objects inside it, it's a ruleset bug22:05
llnzserverside22:05
StupidIncarnaterightyo22:06
epyon-kitsunellnz, have checked my commit rights?22:08
StupidIncarnateis this a server thing or a ruleset thing?22:08
llnzyes, should be working now22:08
epyon-kitsunegreat!22:08
StupidIncarnatehttp://code.google.com/p/thousandparsec/issues/detail?id=124&colspec=ID%20Type%20Severity%20Component%20Language%20Status%20Summary22:09
epyon-kitsunewhat about the new server base -- should I commit it besides the old one, or do some branchlikes?22:09
tpb<http://ln-s.net/7CX4> (at code.google.com)22:09
llnzepyon-kitsune: on the refactor branch22:10
llnzStupidIncarnate: probably a server, but possibly a ruleset issue22:11
llnzStupidIncarnate: will check it out later22:11
epyon-kitsunellnz: so I can remove the old main.cpp from the refactor branch and substitute it for a non-working in-progress version?22:13
llnzon the refactor branch, yes22:13
epyon-kitsuneok22:13
epyon-kitsunegreat, that gives me the flexibility I badly needed :/22:13
*** Epyon has left #tp22:19
*** jnengland77 has joined #tp23:48

Generated by irclog2html.py 2.17.2 by Marius Gedminas - find it at https://mg.pov.lt/irclog2html/!