Monday, 2010-07-12

*** tpb has joined #tp00:00
*** ChanServ sets mode: +o tpb00:00
*** verhoevenv has quit IRC00:08
*** tansell has joined #tp00:28
Epyontansell, pong?00:32
*** StrangerDanger has quit IRC00:32
Epyonglew, ping?00:35
glewEpyon, pong00:39
*** mithro has joined #tp00:42
tansellEpyon, ping00:44
Epyontansell, I'm here00:44
EpyonYou ping'ed me the other day.00:45
tansellEpyon, have you gotten the emails about your flight changes and accommodation?00:45
epyon-kitsuneglew: do you have a project website?00:45
epyon-kitsunetansell: yes, quite a few of them actually :P00:45
glewepyon-kitsune, I have a project website, but it basically describes what I did for the week and what i plan on doing00:48
glewepyon-kitsune, it doesn't really document the project in high detail00:48
Epyonglew, actually the application itself would be the most informative00:49
EpyonBecause I noted you're working on persistence, that... well... should undergo some changes.00:49
Epyonalso, unless you're staying thread-safe, there'll be a problem at the end of the project.00:50
*** StrangerDanger has joined #tp00:50
glewEpyon, i do have a project proposal page on the tp wiki where the other gsoc proposals where00:55
glewdo you need a link?00:55
Epyonyes :)00:56
glewhttp://www.thousandparsec.net/wiki/Google_Summer_of_Code/Proposals2010/glew01:03
tpb<http://ln-s.net/5aCd> (at www.thousandparsec.net)01:03
*** nash has joined #tp01:14
llnzEpyon: as i mentioned a few days ago, I will be responsible for merging glew's work into tpserver-cpp, including updating it to suit what changes occur01:25
Epyonllnz, I just take that as a warning to not touch anything persistence related.01:26
EpyonBTW, as I'm using windows to test the asio core (due to the fact that it takes ages to compile on my linux server), I came to the point that apart from avahi and syslogger, once asio01:28
Epyonis in the server will compile natively on windows.01:29
Epyonsmall bonus, but always...01:29
*** Epyon is now known as epyon-okami01:30
llnzcool01:36
alanpllnz: i'm getting segfaults on creating an order on a colonised planet01:37
alanpi checked, and it looks like it's using nearly the same code as minisec, and it does change the owner of the order queue01:37
alanpanything i'm missing?01:37
tansellglew, do you have a blog?01:38
glewtansell, yes i have a blog for weekly updates, do you want a link?01:40
tansellyes please01:40
glewhttp://glew2010.wordpress.com/01:40
tpbTitle: GSoC Weekly Update with Greg Lew (at glew2010.wordpress.com)01:40
tansellthanks01:50
llnzalanp: probably not01:52
llnzi'll have a look01:52
llnzmithro: can you look at githubs new "Organisation", and maybe swtich the thousandparsec account over02:03
*** JohnSGalt has joined #tp02:22
*** StrangerDanger has quit IRC02:23
*** glew has quit IRC03:56
llnzbbl04:33
*** llnz has quit IRC04:34
*** cahirwpz has joined #tp05:21
tansellcahirwpz, hello05:35
tansellcahirwpz, got time to chat?05:37
cahirwpztansell, hi05:37
cahirwpztansell, please wait for ca. 30 minutes05:37
tansellca.?05:38
*** StupidIncarnate has quit IRC05:42
cahirwpzcirca05:44
tansellcahirwpz, okay05:48
cahirwpztansell, back06:11
tansellcahirwpz, give me 5 then we have about 2 hours to sort this all out06:13
tansellcahirwpz, okay06:26
cahirwpztansell, lets begin :)06:27
tansellcahirwpz, firstly let me say the following06:27
tansellthere are many things which are not optimal about tpserver-py, but that doesn't mean it's a good idea to spend time working on it06:27
tansellI highly prefer incremental changes rather then full rewrites - full rewrites tend to fail to produce good results06:28
tansellIt's great that your excited about making tpserver-py better06:30
tansellMost of the things you have pointed out do need some work - but I think we disagree quite a bit about what the better solution is06:30
tansellYour also new to the project, you need to build up some trust/reputation before ripping everything to shreds06:32
tansellcahirwpz, that all good?06:34
cahirwpztansell, well... basically I feel you're 100% right06:35
cahirwpzI have a few remarks to what I've written, but well - generally you're right06:36
cahirwpz* you've written06:36
cahirwpzI also feel that incremental changes are much better, but when design is not cared about for a longer time it's hard to build anything on top of what was written06:37
tansellcahirwpz, lastly - communication is as important as the code you have written. A person who writes less code but communicates with the community will be more readily accepted then a person who goes off in a hole and writes perfect code.06:38
cahirwpzI think if one wants to go further he/she has to have solid background06:38
cahirwpztansell, completely agree about that - I know I failed at that06:39
tansellso lets look at the more technical stuff now06:40
tansellto continue the discussion we where having about configuration stuff06:41
cahirwpzok06:42
tansellcahirwpz, you seem to have replaced a configuration file with a command line flags based system06:42
cahirwpztansell, basically yes06:44
cahirwpzbut whole mechanism is more general06:44
cahirwpzyou can add class derived from Configurator to read configuration from another source (db, xml, ini, whatever)06:46
tansellIt's effectively re-invention of "Google Flags" - http://code.google.com/p/google-gflags/06:47
tpbTitle: google-gflags - Project Hosting on Google Code (at code.google.com)06:47
cahirwpztansell, possibly - I don't know this library06:48
cahirwpzBTW I just came up with idea of Zeroconf based Configurator06:48
cahirwpzhowever it has little sense -_-06:49
cahirwpzseems google-gflags is limited to getting configuration parameters from command line only06:50
tansellcahirwpz, so why where you compelled to rewriting this?06:50
cahirwpzI use builtin python library - optparse06:51
cahirwpzhttp://docs.python.org/library/optparse.html06:52
tpbTitle: 15.5. optparse — Parser for command line options Python v2.7 documentation (at docs.python.org)06:52
tansellyes I see06:52
tansellbut this system is less flexible then a Python based file06:52
tanselland has a huge amount more code to support it06:54
cahirwpzcan you give me example, because I can't find one for now06:54
tansellimport socket06:54
tansell# The DNS servername of this server06:54
tansell#  The lines below will try and autodetect it.06:54
tansellservername = socket.gethostbyaddr(socket.gethostname())[0]06:54
tansell#  You can also set it manually with the line below06:54
tansell#servername = 'mithro.dyndns.org'06:54
tansellserverip   = socket.gethostbyaddr(servername)[-1][0]06:54
cahirwpzthis can easily be supported06:55
tansellhow would you do that?06:55
cahirwpzlet me look for code sample06:56
cahirwpzhttp://github.com/cahirwpz/tpserver-py/blob/master/tp/server/db/__init__.py06:57
tpb<http://ln-s.net/7Dit> (at github.com)06:57
cahirwpzlook for line 6106:57
tanselllooking at it now06:58
cahirwpzdefault parameter does not have to be set from string - it can be arbitrary python expression06:58
cahirwpzas long as it's convertible to string in this case06:58
cahirwpzanyway it may be dynamic06:58
tansellcahirwpz, but this is not about the default value06:59
cahirwpz?06:59
tansellcahirwpz, the admin can put any python expression in their config file07:00
cahirwpzah... I see07:00
* epyon-okami retreats to his coffin for the day.07:00
tansellcahirwpz, for example if the admin wanted to read that setting from /etc/hostname they could07:01
tansellthis is extremely flexible and requires very little supporting code07:02
tansellless code == better07:03
cahirwpzok... I see now... in my original solution I supported overriding arbitrary parameter in configuration using Python but I thrown this method out because it was not used07:03
cahirwpzagree07:03
tanselland in my experience every configuration language ends up becoming it's own language07:04
tansellso we should avoid this as we already have a nice user friendly language07:04
cahirwpzit's not meant to become language anyway - I never thought of it in such way07:05
cahirwpzlets look at http://github.com/cahirwpz/tpserver-py/blob/master/tpserver-py07:05
tpb<http://ln-s.net/7Die> (at github.com)07:05
cahirwpzline 2307:05
tansellcahirwpz, otherwise you end up with scripts which generate your config files07:05
cahirwpzwhat about following code:07:05
tansellwhich is just as bad07:05
cahirwpzconfigurator.setParameter( DatabaseManager(), 'database', whatever_expression_or_code)07:06
tansellcahirwpz, I'm not sure what you are trying to get accross07:07
cahirwpzI understand that we're missing now the possibility to express configuration in terms of Python code07:09
cahirwpzI see it's reasonable but I still want to have configuration per component not global one (don't like idea of global variables)07:10
cahirwpzI'm trying to fix my solution to meet both worlds07:11
cahirwpzso maybe I should add possibility to set any configuration variable from python code and that would be exactly what we need07:12
cahirwpzmost common parameters would be possible to configure from command line, advanced one - only from inside the code07:13
tansellcahirwpz, but your code adds a large amount of complexity and code which needs to be maintained for very little gain07:13
*** StupidIncarnate has joined #tp07:15
cahirwpzhttp://github.com/cahirwpz/tpserver-py/blob/master/tp/server/configuration.py07:15
tpb<http://ln-s.net/7Dio> (at github.com)07:15
tansellcahirwpz, you need to explain what extra value your configuration system adds07:15
cahirwpzcore idea is in lines 9-14, 113-15507:16
cahirwpzok07:17
cahirwpzso IMO the most important thing is separation of concert - every configuration part is places in the module where it's actually used07:18
cahirwpz* concern07:18
cahirwpz:)07:19
cahirwpzif you look at CLI configuration facility - then user gets nicely formatted help + type / value safe system that fetches parameters from command line (he/she is not forced to know Python)07:20
tansellcahirwpz, I'm not sure these benefits are worth the extra code07:21
tansellcahirwpz, plus I think we could probably do the same without having to add this extra code07:21
cahirwpzconfiguration is checked before code starts working07:21
cahirwpzyou can actually detect misconfiguration before something blows out07:21
tansellso I think we have two types of users07:23
tansella) The simple user, will just use the default config and wants to just type ./tpserver-py and have it work07:24
tansellb) The advanced user, will want to customize everything, run tpserver-py on multiple servers in a cluster and some type of backend system07:25
cahirwpza) user don't need CLIConfigurator nor CLIHelpFormatter, and possibly *Option classes07:26
tansellcahirwpz, right07:26
tansellI think it's reasonable to assume b) will at least have some passing familiarity with Python (or coding so can just pick up the Python syntax)07:27
cahirwpzI think it's safe assumption, but I able to find few use cases you omitted07:28
cahirwpz* I'm able07:29
cahirwpzwhat about configuration from external source (central database - SQL or LDAP) ?07:29
tansellare any more then niche?07:29
tansellcahirwpz, they have complete Python - they can write something which pulls from SQL and/or LDAP07:31
*** bisc has joined #tp07:31
cahirwpzok... I think that I can remove lines 229-329 without triggering any issues - I still use actively this code in test client, so I'll not remove it but rather move it out of tp.server source tree07:32
cahirwpzbut I need to think about *Option classes07:33
cahirwpzI think your reasons are good - we need to rework current solution07:34
tansellcahirwpz, okay07:35
tansellcahirwpz, Logging (Category: core component)07:37
cahirwpztansell, yay... actually this is our first compromise, shouldn't we celebrate ? :D07:37
tansellcahirwpz, nope - we still have a lot to get through :)07:38
cahirwpz-_-07:38
cahirwpz:P07:38
cahirwpzso lets continue07:39
tansellcahirwpz, basically I think we should use the inbuilt logging stuff07:39
tansellmy reason is that it's well understood for a huge number of people07:40
tansellagain, we want to keep our code down to as little as possible07:41
cahirwpzthere's a huge problem with builtin logging module - it does not play well with Twisted :/07:41
cahirwpzbut continue07:42
tansellcahirwpz, why/how doesn't it play well with Twisted?07:43
cahirwpzTwisted is asynchronous by nature, were builtin logging module is synchronous07:43
cahirwpzif you call logging module from Twisted it may block whole server for a while07:44
tansellhttp://docs.python.org/library/logging.html <- can't you just write a asynchronous handler07:44
tpbTitle: 15.7. logging — Logging facility for Python Python v2.7 documentation (at docs.python.org)07:44
cahirwpztansell, I was looking into it but I didn't find a way to do so - but I could possibly overlooked something07:46
tansellI saw a talk about it recently07:49
cahirwpzbesides I suppose I would miss exception logging (but possibly it can be converted) and component logging (which class or set of classes have generated a message)07:49
cahirwpztansell, could you give me a link or something ?07:50
tansellhttp://pypi.python.org/pypi/nonblockingloghandler/0.307:50
tpb<http://ln-s.net/7EpU> (at pypi.python.org)07:50
tansellhttp://www.youtube.com/watch?v=MN7vxKZH6EI07:51
tpbTitle: YouTube - Python Logging: Getting the most from it - Julian Orbach (at www.youtube.com)07:51
cahirwpzProbably I will still need to somehow convert sqlalchemy logging with Twisted...07:54
cahirwpzactually there's much to investigate here07:54
tansellcahirwpz, it also looks like it would be trivial to create a "twisted" logging handler07:54
tansellfrom twisted.python import log07:55
tansellobserver = log.PythonLoggingObserver(loggerName='logname')07:55
tansellobserver.start()07:55
cahirwpztansell, I considered many options some time ago and I didn't come to any reasonable conclusion - the worst of it is that I don't remember what obstacles I did find07:55
tansellhttp://www.google.com.au/search?sourceid=chrome&client=ubuntu&channel=cs&ie=UTF-8&q=using+twisted+and+logging07:56
tpb<http://ln-s.net/7EpZ> (at www.google.com.au)07:56
cahirwpzhttp://twistedmatrix.com/documents/current/core/howto/logging.html#auto307:57
tpb<http://ln-s.net/7Ep_> (at twistedmatrix.com)07:57
cahirwpzcitation: One special care should be made when you use special configuration of the python logging module: some handlers (e.g. SMTP, HTTP) uses network so can block inside the reactor loop. Nothing in the bridge is done to prevent that.07:57
cahirwpzif we provide nonblocking handler then possibly we will get exactly what we want - I'll look into it07:58
tansellcahirwpz, so I think we should try really hard to use the logging module07:59
cahirwpzI'll try to - but first I have to investigate logging module and possibility to use nonblockingloghandler08:00
tansellPython’s standard logging module is used to implement informational and debug log output with SQLAlchemy.08:00
tanselllogging.basicConfig()08:00
tanselllogging.getLogger('sqlalchemy.engine').setLevel(logging.INFO)08:00
tanselllogging.getLogger('sqlalchemy.orm.unitofwork').setLevel(logging.DEBUG)08:00
cahirwpztansell, yeah - I know08:00
cahirwpzI see that converting to logging module (if possible) would bring us some benefits08:01
tansellcahirwpz, okay - so we are in agreement we should use the logging module?08:04
cahirwpzactually I don't feel confident right now to make any statement08:05
tansellcahirwpz, why not?08:05
cahirwpzI just need to browse source code and documentation of logging module and Twisted again08:06
tansellso I see two options08:06
tanselllogging -> twisted.python.log08:07
cahirwpzI mean - in overall I agree with you08:07
tansellor twisted.python.log -> logging08:07
cahirwpzbut I'm not yet sure08:07
tanselleither way, tpserver-py should end up using the logging module and not twisted.python.log08:07
cahirwpzcorrect08:08
tansellokay08:08
tansellokay the next thing you have listed is08:09
tansellTP protocol transport (Category: network layer component)08:09
cahirwpzwait a sec08:09
tansellwe have 50 minutes, so we better get a move on08:09
cahirwpzstill I think we'll get back to logging at some point - I agree with your ideas, but I'm not sure they're doable - I need more time to look into the problem08:10
cahirwpzok, I just wanted to make a final thought08:10
cahirwpzlets continue08:11
tansellso I think this is connected too08:12
tansell6. Protocol handling (Category: network layer component)08:12
tanselland08:12
tansell7. Client session handler (Category: client handling)08:12
tansellDatabase object backend (Category: model)08:12
cahirwpzsomehow yes - but the do operate on different level of abstraction, and I want to keep them separated as much as possible08:13
tansellso I think a wholesale conversion of everything in one go is the wrong way to do it08:14
bisctansell: don't want to interrupt, but can you eventually look at patches 54002, 84001, 85001and 79001 until tomorrow.08:14
tansellokay08:15
tansellprobably won't get a look at it tonight08:15
tansellit's tempting to make such a huge change all at once as it seems like less work08:16
tansellbut it's very hard to review, understand and leaves the server in an unknown state08:17
cahirwpzI agree - I don't like huge changes either08:20
cahirwpzbut I couldn't find any logic way to split code into layers and generally highly isolated parts08:20
cahirwpzI felt like I couldn't change one without blowing up another one08:21
cahirwpzall components were tied together very strongly08:21
tansellwell I think the database object backend code could be done totally separately of the two others08:21
tansellcahirwpz, and I think it might show some weeknesses of your change to the DBO08:22
cahirwpztansell, what kind of concern do you have about it ?08:25
tansellcahirwpz, a lot08:25
cahirwpzname them - then I will consider them ;-)08:25
tansellcahirwpz, Every ORM that I have used before has been a disaster in terms of performance, configurability and actually seeing what is going wrong08:26
tansellI have not used SQL Alchemy's ORM before, so I can't say if it's any different08:27
tansellI'm also very skeptical about the advantages - I'm not really sure it makes the code all that more readable08:28
tansellit's a massive change to make - almost the size of a GSoC project in itself08:29
tansellcahirwpz, I'm not sure how you would do "versioned" objects - something I would like to see added to the server08:29
cahirwpztell me about versioned object08:30
cahirwpzI don't know the idea behind it08:30
tansellOkay08:31
tanselldo you know what "Fog of War" is?08:31
tansell(in game terms?)08:32
cahirwpznope08:32
tansellokay08:33
tansellhave you ever played starcraft or warcraft? (or another RTS?)08:33
tansellhttp://en.wikipedia.org/wiki/Fog_of_war#Simulations_and_games08:33
tpb<http://ln-s.net/7EqJ> (at en.wikipedia.org)08:34
cahirwpzwarcraft II, dune II08:34
tansellthe basic idea behind the "Fog of War" is that you can only see parts of the map where you have a Unit08:34
cahirwpzahh... okay I remember now :)08:35
tansellcahirwpz, now if you take the concept further08:35
tansellyou might know that an enemy base as at a certain location some time ago08:36
tansellbut you don't know that at this moment the base has already been destoried because you have no units within range08:36
tansellyou have "old" information08:37
tansellfollowing me so far?08:37
cahirwpzyes :)08:38
tansellgreat08:38
tansellso the way this was/is going to work on the server is as follows08:38
cahirwpzcould you possibly write down the whole idea and put somewhere - I think it might be good idea if you think about it in depth - many issues may appear08:38
cahirwpz* put it08:38
tanselleach time an object changes, a new entry is stored in the database (this happens at most once per turn)08:39
tanselleach player has a "pointer" to the current version of the object they know about08:39
tansellso for example in the above the player who owns the base will have a pointer to the latest version08:40
tansellwhile the other player will have a pointer to an older version08:40
tansellwhen the other player moves a unit within range, he gets a pointer to the latest version08:41
tansellmake sense?08:41
cahirwpzokay, so each player sees a universe with many objects, and each object is from some particular turn that passed08:41
tansellyes08:41
tansella slightly more advanced version adds "masks" to the pointer08:42
tansellthese masks effectively tell you which attributes you see at that version08:42
cahirwpzyes, but I want to get the abstract idea - I'm used to think declaratively not imperatively - I'm not interested at this point how should it be done, but what we want to obtain08:43
tansellso for example, you may only know the population of a planet when you have a ship in orbit08:43
tansellbut you know a planets mineral makeup from a distance08:44
cahirwpzI played Master of Orion 2 a lot08:44
tansellso these two attributes could have different effective ages08:44
cahirwpzI more or less can imagine what you want to have08:44
tansellyou may not know the population at the current time - but do know the planets mineral makeup08:45
tansellor you might have old data for the population of the planet08:45
cahirwpzseems reasonable08:45
cahirwpzshould be that controlled by ruleset ?08:45
cahirwpzI mean a set of visible attributes08:45
tansellyes08:46
cahirwpzokay... please write down the whole idea somewhere I'll think about it08:46
tansellI don't really have much time to write this down, otherwise it would have already been done08:47
tansellcahirwpz, I worry that using an ORM is going to make doing something like this impossible08:48
tansellbecause it's too "smart"08:48
tansellthis is actually pretty simple to do in SQL08:48
tansells/ORM/a generic ORM/08:49
cahirwpzthat on the other hand is something I can hardly believe ;-)08:49
cahirwpzbut I might be wrong - I'll think about it08:49
tansellcahirwpz, what do you mean?08:50
cahirwpzI mean I'll think how much effort I'd need to add versioning to the current solution08:51
tansellIt would take me about a week to get a working/tested solution added to the current structure - but I have not had a week to do such a change08:52
tanselland more important things need working on08:52
tansellanyway going back to the ORM/Packet stuff08:53
tansellI also think there is some utility to have everything to do with one thing in one class08:53
tansellIE having the packet serialising/unserialising in the Board/Object/etc classes08:53
tansellcahirwpz, btw we are almost out of time08:54
cahirwpzthat's a pity... the discussion started to be very interesting08:54
cahirwpzokay so about serialising / deserialising - I think such solution ties protocol and DB objs very strongly08:56
cahirwpzIMHO DB objects should influence the design of protocol, not vice versa08:57
tansellyou have it the wrong way around08:57
tansellThe protocol comes first - and is influenced by what type of games we want to support08:58
cahirwpzwe want to have a model of the universe, ruleset that operate on universe, and a protocol which is a medium of transporting view of universe to a client08:58
cahirwpzokay... let me ask this question:08:58
cahirwpzwhat is more important - ruleset and model, or protocol ?08:58
cahirwpzwhat makes the game ?08:58
tansellthe ruleset is what makes the game - but the protocol is what allows us to have multiple clients/servers all work together08:59
tansellif you where just working on a single game08:59
tansellyou wouldn't care about the protocol at all08:59
tansellbut as this is a generic framework for building a given type of game the protocol is very important09:00
tansellthe protocol dictates what type of games can be built, how they have to be structured, etc09:00
cahirwpzactually not09:00
cahirwpzruleset and model limits you what kind of game you can make09:01
cahirwpzthe more flexible ruleset is the more games you can produce09:01
cahirwpzprotocol is only a medium between client and server09:01
cahirwpza way to see universe and do some actions in it09:01
tansellthe protocol restricts what can be in the universe and what type of actions can be performed09:02
tansellIE you can't make a real time strategy with the current protocol09:02
tansellor a FPS09:02
*** tansell-laptop has joined #tp09:04
cahirwpzwell - we do want to make turn based strategy09:04
cahirwpzand we should think in terms of such games09:04
cahirwpzeven for such type of games model and ruleset should be as flexible as protocol09:05
cahirwpzouch09:05
cahirwpzas flexible as possible09:05
cahirwpzprotocol shouldn't restrict what is possible to do in the universe09:05
cahirwpzputting restrictions on model and ruleset actually kills the innovative thinking about what kind of game it's possible to make09:07
cahirwpztansell, am I wrong ?09:08
tansell-laptopso the protocol is pretty open09:09
cahirwpzbut unfortunately type unsafe09:10
tansell-laptopwhat do you mean?09:10
cahirwpzat least part of parameters stuff09:10
cahirwpzyou just use bare database row id in communication with a client09:11
cahirwpzI believe there're cases when you send Resource.id or Design.id and you don't make difference - whole interpretation is on server side09:12
cahirwpzthat harness safety - you have to add additional code to check if someone don't want to misuse orders09:12
*** epyon-okami has quit IRC09:13
cahirwpztansell, I personally think that TP game should abstract over protocol as much as possible and focus on playability == rulesets and model09:14
cahirwpzprotocol should be easily replaceable if it is not sufficient to transfer all needed information about the universe09:16
tansell-laptopcahirwpz, okay - I buy that having a good abstraction between the two is good09:16
cahirwpzthat's great - I'm very happy to hear that09:17
tansell-laptopbut adding abstraction has a cost09:17
cahirwpzof course the protocol is something that I don't want to mess with now - maybe next GSoC09:17
tansell-laptopso you need to balance the cost of the abstraction with the benefit09:18
cahirwpztansell, I think abstraction cost is always acceptable until we really need performance - and that should happen for some time09:19
tansell-laptopthe cost is not just performance, but understanding what is actually going on09:20
tansell-laptopand simplicity09:20
cahirwpzit's about overall goodness of abstraction09:20
tansell-laptopadding too much abstraction makes things hard to reason about09:21
cahirwpzI think that good abstraction frees you of thinking about details and let you express your thoughts easier09:21
cahirwpzit hides details you don't want to care when you try to come up with solution09:22
*** StupidIncarnate has quit IRC09:22
cahirwpzso for example I believe that ruleset should know as little about database persistence as possible09:22
cahirwpzyou want to operate on model - not on database09:22
cahirwpzyou need to express how the universe changes not how table is modified - that's obvious to me09:23
cahirwpzthis is a principle of MVC design pattern (I think so)09:24
tansell-laptopso I agree that ruleset shouldn't really care about the database09:27
cahirwpzthat's what I wanted to obtain using ORM - but I general I find your concerns about ORM (in general) as justified09:29
cahirwpz* in general09:29
tansell-laptopokay09:30
tansell-laptopthe original code is effectively a ORM09:31
tansell-laptopbut it was very specific to the one use case09:31
tansell-laptopwhich means you can cut a lot of corners09:32
cahirwpzI don't want to offend you in any way - but I think it was quite messy and in fact was another attempt to reinvent the wheel (as probably my CLIConfigurator and google gflags)09:34
cahirwpzI don't know if SQLAlchemy ORM is good for us09:34
tansell-laptopsometimes specific is better then generic09:34
cahirwpzIt's just a guess... and maybe an experiment09:35
tansell-laptopcahirwpz, the code is quite old, but it has worked pretty well09:35
cahirwpztansell, it was not covered by tests09:35
cahirwpzeven if we take somehow restricted ORM we get a lot of benefits09:36
tansell-laptopcahirwpz, it was also not originally written to be more then an experiment09:36
cahirwpzthey do work on it - not us09:36
cahirwpzwe just get (possibly) optimized and tested solution (with more than one database)09:37
cahirwpzthe drawback is that we need to learn it and possibly overcome restrictions and quirks09:38
tansell-laptopwhich is more work then you probably realised09:38
cahirwpzwhat do you exactly mean ?09:38
tansell-laptop--> possibly overcome restrictions and quirks09:39
tansell-laptopthose two takes more then then you realise09:40
cahirwpzhttp://www.sqlalchemy.org/docs/05/mappers.html#extending-mapper ;-)09:40
tpb<http://ln-s.net/4pa8> (at www.sqlalchemy.org)09:40
cahirwpzthe same risk is with Twisted and any other big framework09:41
tansell-laptopyes09:41
tansell-laptopso we should be doing a bunch of big changes all at once09:41
tansell-laptops/should/shouldn't/09:41
cahirwpzwell - don't forget about test client which should help a lot09:41
tansell-laptopIE twisted change should be done seperately from the ORM conversion09:41
tansell-laptopI agree that tests are a good thing to have09:43
*** bisc has quit IRC09:43
*** nash has quit IRC09:43
cahirwpztansell-laptop, that would be in the ideal world - I also wanted that (fine-grained changes), but unfortunately found it impossible to do :/09:44
tansell-laptopcahirwpz, I still see no reason that the twisted change couldn't be done separate from the ORM09:44
tansell-laptopI have to go very shortly09:45
tansell-laptopjust finished my dinner09:46
tansell-laptophave to go home09:46
cahirwpzso maybe we should talk about the rest at Wednesday - I have a busy morning tomorrow :(09:46
cahirwpzneed to go to a doctor09:46
*** bisc has joined #tp09:47
tansell-laptopso the survey begins tomorrow09:47
*** bisc has joined #tp09:47
tansell-laptopso I would like to get this sorted ASAP09:48
tansell-laptopcahirwpz, so I think we agree on two things09:48
tansell-laptopa) your going to fix tpserver-py to use logging module (and connect it up to twisted)09:48
tansell-laptopb) go back to the previous config system09:50
tansell-laptopright?09:50
tansell-laptopgot to run now09:52
tansell-laptopsee ya09:52
cahirwpza) ok... I agree - however I feel a bit forced to make that agreement because I still need some time to investigate if it' possible09:53
cahirwpzb) I don't agree to revert all changes, but agree to remove CLIConfigurator and stuff that is related to it09:54
*** mithro has quit IRC09:55
cahirwpzc'ya09:55
*** verhoevenv has joined #tp10:10
*** cahirwpz has quit IRC10:25
*** mithro has joined #tp10:25
*** cahirwpz has joined #tp12:00
*** bisc has quit IRC14:59
*** Epyon has joined #tp15:26
*** peres has joined #tp15:59
* epyon-kitsune would kill for air conditioning now17:01
*** peres has quit IRC17:15
*** Erroneous has joined #tp17:16
*** glew has joined #tp17:45
*** null_000 has joined #tp17:46
null_000hi all17:48
null_000alanp: ping17:52
*** cahirwpz has quit IRC18:06
*** Erroneous has quit IRC18:11
*** null_0001 has joined #tp18:34
*** null_000 has quit IRC18:34
EpyonHmm, there's no way to get through by atomic steps, the whole network code including connection classes will have to be rewritten ground up18:41
*** StupidIncarnate has joined #tp18:43
* Epyon waits for llnz18:44
*** Epyon is now known as epyon-okami18:44
*** null_0001 has quit IRC18:54
*** cahirwpz has joined #tp19:25
*** cahirwpz has quit IRC19:46
*** JohnSGalt has quit IRC20:01
*** StrangerDanger has joined #tp20:08
*** llnz has joined #tp20:24
*** StrangerDanger has quit IRC20:29
*** StupidIncarnate has quit IRC20:38
llnzmorning all20:44
alanphey20:57
alanpany luck with that planet order queue issue we're having?20:57
alanpi'm going to take another look tonight20:57
llnzsorry, didn't get a chance, busy with family20:57
alanpno worries21:00
*** StrangerDanger has joined #tp21:11
*** mithro has quit IRC21:59
llnzafk22:00
epyon-kitsunellnz: ping me when you're near the keyboard again22:00
*** mithro has joined #tp22:17
*** mithro has quit IRC22:27
*** epyon-okami has quit IRC22:39
*** epyon-okami has joined #tp23:19
*** epyon-okami is now known as Epyon23:19
* llnz is back23:50
llnzepyon-kitsune, Epyon: ping23:50
epyon-kitsunellnz: I'm getting into a much bigger mess each hour -_-23:54
epyon-kitsunebasically there are three things that are done simultanously now23:54
epyon-kitsune1) small steps to the server itself -- on the git branch23:54
epyon-kitsune2) a new core being written completely seperated, and rewritten from time to time23:55
epyon-kitsune3) a windows based not working compilation of tpserver-cpp where I do tests trying to find the most step-by-step asio integration.23:55
epyon-kitsunethese three things should get together, but I see no way in achieveing that in the next days.23:56

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