IRC log of #schooltool for Friday, 2006-11-17

aelknerthla: I have a question.00:39
th1aaelkner: I was on the can.00:44
aelknerI was wondering why I can't run python test.py without getting and import error "import transaction".00:46
th1aWhat platform are you on?00:46
aelknerEdgy.00:46
th1aDid you apt-get the ZODB?00:47
aelknerI did a full svn co of the zope source.00:47
th1aapt-get install python zodb00:48
aelknerIs that going to conflict with my zope instance?00:49
th1aI don't think so.00:49
aelknerI'm not sure I want to chance it.  I'm working on editing Stephan's book, and I want my zope environment to be clean.00:50
th1aThen I don't know what to tell you.00:51
aelknerWhat if zope ends up finding the zodb where apt-get puts it.   That would mean it would be running two different versions at the same time.00:52
aelknerWell, I suppose it would be safe to apt-get remove it if I run into problems.00:52
th1aThat, and the PYTHON_PATH determines the sequence it checks, right?00:53
aelknerSo I could PYTHON_PATH to the zodb within zope, right?00:53
aelknerRight now I have no python path, and zope works fine.00:54
th1aUh... quite frankly, I don't really understand that stuff.00:54
aelknerDo you have zope running on the same machine you use to develop tinyzis?00:54
th1aBut it is easily enough undoable, and it should work.00:54
th1aYes.00:55
aelknerOk.  I'll do the apt-get.00:55
aelknerapt-get install zodb yields "Couldn't find zodb".  Am I doing something wrong?00:56
th1asorry 'python-zodb'00:57
aelknerOk.  Now I'm getting further into the tests which yields SIF errors.  From Will I understand that you expect that.01:02
pcarduneth1a, how is the new schooltool interface going?01:06
th1apcardune: It needs you.01:07
pcardunehow so?01:07
th1aignas & vidasp just don't have any enthusiasm for it.01:07
pcardunewell i suppose it is pretty tough01:08
th1aPerhaps we can get jfroche going on it.  He's more of a web designer.01:09
pcarduneif only svn update didn't take forever... I could check it out01:10
* pcardune watches grass grow as 'svn up' sits there01:10
th1aWe're working on it...01:11
jfrocheth1a: i am not that good at design but i know people01:11
th1aI don't understand why it works fine in Rhode Island and not in VIrginia.01:11
pcardunenor in WAshington01:12
pcarduneaha, it worked when i switch to svn+ssh01:16
th1aHm...01:16
*** pcardune has quit IRC01:28
aelknerthla: I have Will joining us at around 8:00.  Jeff wants us to work on tinyzis at the sprint, so we need to prepare.01:33
th1aYou know, you guys REALLY, REALLY, REALLY should work on an agent.01:33
th1aReally.01:33
th1aI mean it.01:33
aelknerReally?01:33
th1aReally.01:34
aelknerDo you really mean it?01:34
th1aI really mean it.01:34
aelknerCool.  What is an agent?01:34
th1aWhat talks to TinyZIS.01:34
aelknerOk.  I thought so.01:34
th1aAre you working with Will Dickerson on this?01:35
aelknerI see you created tz-run.py to start the server.01:35
aelknerYes.01:35
aelknerHe's joining around 8:00 tonight.01:35
th1aI chatted with him about what he should work on.01:35
aelknerHe thinks we need to get into threading.01:35
th1aWell, you see the threading comes in if you want to integrate the agent into a server like SchoolTool.01:36
aelknerWell, let's walk before we try to run.01:36
th1aBecause then SchoolTool has to send queries to TinyZIS but not block the rest of the app waiting for the reply.01:36
th1aRight.01:36
aelknerIf schooltool talks to an agent, then the agent is a server from schooltools point of view, right?01:37
th1aThe agent would be a SchoolTool component.01:37
aelknerOr is it an imported mdule.01:38
aelknerOh.01:38
th1aBut the agent would be acting as a HTTP client at times.01:38
th1aSo when it does client-like things, it needs to be in a separate thread.01:38
aelknerYes, it's a client to the tinyzis server we start with tz-run.py, right?01:38
th1aSometimes.01:39
aelknerWhentimes.01:39
th1aIn HTTP terms, they can both act as a client or server.01:39
th1aSo the agent sends a SIF_Register message to the ZIS.01:39
th1aThe agent is an HTTP client & the ZIS is an HTTP server.01:40
th1aBut if the agent is a "push" agent, when the ZIS gets a message for the agent, the ZIS will act like an HTTP client and send a SIF_Message to the agent.01:41
th1a(if the agent is a "pull" agent, it only acts as an HTTP client and has to request its messages)01:41
aelknerThe agent tell ZIS it's hostname and port?01:41
th1aYes.01:41
aelknerIs that message already part of ZIS?01:41
aelknerI think I found it.01:44
aelknerZisHandler's register method has logic for push that looks for the url.01:45
aelknerThat url would contain oth the hostname and port, right?01:45
th1aYes.01:46
th1a(I guess...)01:46
th1aDon't really have the whole spec memorized ;-)01:46
aelknerCould you look at the code to see if I'm getting it right: tinyzis.py, class ZisHandler?01:47
aelknerNever mind.  Your previous message above make me realize I got it right.01:50
aelknerInstead, let me suggest a plan for Will and me to get started:01:52
aelkner1) We build a python module that starts a agent server01:52
aelkner2) Another module will send requests to the agent as if it were school tool01:53
aelkner3) When we know all is working, we can move on to bolting it into schooltool as a component01:53
aelknerI need to do a LOT of studying to get up to speed with zope and schooltool, but I'm sure Will would be able to bring me along with that.01:54
aelknerOh yes, and of course we will need to use threading eventually to solve the blocking problem.01:57
th1aJust do a pull agent, then it just has to act as a client.01:57
aelknerDoesn't you tests already do that?01:58
th1aDo a pull agent that uses a text file as its database and handles SIF_Request messages.01:58
th1aWell, that's a very simple case.01:58
aelknerWoops, I confuse pull and push.01:58
aelknerOh no I don't.  Now yo're confusing me.01:59
aelknerI'd like to kep things simple by continuing to operate independently of schooltool.02:00
th1aAbsolutely.02:00
aelknerHowever, we need three things to really feel we've done anything:02:00
th1aThink of this use case (which is very common in SIF implementations).02:00
th1aYou've got a legacy app you can't write an agent for.02:01
th1aSo you do a database export, and write an agent that works off the text file.02:01
aelknerLet's talk at a higher level for our use case.02:02
aelkner1) what does the push agent push?02:02
aelkner2) what does the pull agent want?02:02
aelknerAny silly application will do.02:02
th1aMessages are pushed TO a push agent.02:03
th1aA pull agent has to ask if it has messages; it pulls them.02:03
th1aPush is automatic from the agents point of view.02:03
th1aPull is manual.02:03
aelknerOk.02:03
aelknerFor example, a student comes into a school for the first time.02:04
aelknerHe shows up at the admin office with his mommy and they take his name and whatever else.02:04
aelknerLet's keep it simple: name, gender, age02:05
aelknerTinyZIS, push agent, pull agent: who does what at this point?02:05
th1aOK, the SIS is the provider of StudentPersonal in this zone.02:07
th1aSo when it adds the record it sends a SIF_Event to the ZIS.02:07
th1aThe ZIS looks at the subscribers to StudentPersonal and sees that the library system is a push agent and the cafeteria system is a pull agent.02:08
th1aIt sends a SIF_Message to the library system.02:08
th1aIt adds a SIF_Message to the cafeteria system's queue.02:09
th1aEvery hour the cafe system sends a SIF_GetMessage to the ZIS.02:09
th1aWhen it does so, it gets the SIF_Message in the HTTP Response.02:09
aelknerI'm confused.02:11
aelknerI don't know the terms as well as you do.02:12
aelknerSIS vrs. ZIS?02:12
th1aSIS = student information system.02:12
aelknerAdmin ofice.02:13
th1a(a generic term)02:13
th1aYes.02:13
aelknerPull agent?02:13
aelknerNo, push agent.02:14
aelknerZIS asks the SIS for new students every n minutes?02:14
th1aPush and pull is only for messages.02:16
th1aThat is,02:16
th1aif an agent has subscribed to an object,02:16
th1aand a message comes in that an event has taken place on that object,02:17
th1ahow is the subscribing agent notified of the change.02:17
th1aPush or pull?02:17
aelknerPush?02:17
th1aOtherwise, agents always are clients.02:17
th1aIt just depends on if they're push or pull agents.02:17
th1aBut it only is for sending messages to the agent.02:18
th1aAt this point it might be easier to just start writing some code...02:18
th1aFirst step is the SIF_Register message.02:18
aelknerI'm sorry.  It's just dificult for me to code when I don't understand the goals.02:20
aelknerI know how to write clients and servers, but I need to know who's serving and who's being the client.02:20
aelknerRather than just talking conceptually, could we stick to our simple example?02:20
th1aOK.  Forget push agents exist.02:20
th1aYou're writing a client.02:20
th1aPeriod.02:20
aelknerWe're talking the SIS application acting as client to ZIS, right?02:21
th1aAny pull agent is 100% client.02:21
aelknerLet's stick to our use case.02:22
aelknerA student comes in.02:22
aelknerSIS is a datbase app so the amind person adds the student to the SIS.02:23
aelknerNow the SIS app wants the world to know, so it communicates with ZIS.02:23
aelknerAs a client?02:23
th1aYes.02:25
aelknerGreat.02:25
aelknerIt connects to the host and port and send the appropriate SIF message.02:25
aelknerIt's job is done.02:26
aelknerZIS now has the new student in it's zodb as a message for anyone who's interested.02:26
aelknerMeanwhile the cafe is also connected and ready for new students (which happens rarely, but at any time)02:27
aelknerSo the cafe is a push agent that has registered itself providing its host and port.02:27
aelknerThe ZIS immediately upon receiving the message from SIS sends the message to the cafe.02:28
aelknerI'm I right so far?02:28
th1aYes.02:29
aelknerOk.  So Will and I could create the agent for the SIS and then the agent for the cafe and see if we can get them to talk to each other correctly.02:29
aelknerVia the ZIS of course.02:30
th1aYes.02:31
aelknerCool.  A nice simple app.  Just the technical things to hurdle.02:31
aelknerWe'll let you know of our progress.02:34
th1aOK.  Good luck.02:35
aelknerthla: Are you av available Saturday on #schooltool?02:58
*** wrobel` has quit IRC03:20
*** jfroche_ has joined #schooltool03:23
*** jfroche_ has quit IRC03:34
*** jfroche has quit IRC03:39
*** wdickers has joined #schooltool03:55
wdickersYou there aelkner?03:55
aelknerYes.03:57
aelknerI was ust about to give up on you.03:57
aelknerI had a long talk with Tom today.03:58
wdickersWhat did he say?03:58
aelknerHere's what we want to do.03:58
aelknerFirst, to make things simple, we will NOT worry about threading or schooltool components.03:58
aelknerWE will start with a couple of simple agents.03:59
aelknerThat way we can become fluent in that area before going onto other things.03:59
aelknerThe app is the following:03:59
aelknerA student walks in to a new school, having moved from somewhere else.03:59
aelknerThere is a program called a SIS = Student Information System04:00
aelknerIt's a datbase of the students in the school.04:00
aelknerWe will pretend to be that app that talks to the ZIS.04:01
aelknerWe'll tell the ZIS of the new student.  That's one of the agents we will make.04:01
wdickersOkay. So we won't mess with the server at all yet?04:01
aelknerWell, it's a bit complicated.  I'll explain.04:02
aelknertz-run.py invoves tinyzis.py that start the ZIS server.04:02
aelknerWe shouldn't be touching that for now.04:02
aelknerSo as we develop, we'll have ZIS running.04:02
aelknerIf you look at tinyzis.conf, you'll see how it tells what host and port to run on.04:03
aelknerWhat we develop is two agents.04:03
aelkner1) the SIS agent which merely acts as a client to ZIS, sending the students details as explained before04:04
aelkner2) the cafeteria agent, which needs to know whenever a new student has arrived in the school to, say, order more food from then on.04:04
aelknerThe cafe agent will actaully be a server, so that's where it gets complicate.04:05
aelknerYou'll be getting plenty of exposure to python just on these pieces alone.04:05
aelknerNow.04:05
aelknerSome terminology.04:05
aelknerThere are two types of agents.04:06
aelknerPull agents are merely client to ZIS.  ZIS 'pulls' requests from the agent.04:06
aelknerIt's an unfortunate term from the point of view of ZIS.  ZIS pulls.  I hate it, but it's how the industry talks.04:07
aelknerPush agents are servers from the ZIS point of view.04:07
wdickersYeah, it is kind of confusing04:07
aelknerYeh, I had to get Tom to explain it to me mulitple times before I got it.04:08
wdickersSo to which does the ZIS send the information, pulls or pushes?04:08
aelknerA pull agent connects to ZIS and posts a request, much like a browser would.04:09
wdickersOkay, and a push?04:09
aelknerHTTP requests are one in one out, meaning the client sends a request and gets a response.04:09
aelknerA push agent acts as a client only for the purpose of contacting the ZIS initially.04:10
aelknerIt sends the ZIS a register message, the response being ok or failure like any clent would get.04:10
aelknerHowever, the push agent's register message contains the host and port of its server.04:10
aelknerFrom then on, ZIS will ack as a client to the push agent any time it needs to send it info04:11
aelknerFor instance, the student has been added to the ZIS db by the SIS pull agent.04:11
wdickersSo a pull agent simply sends requests for data and gets data for each request.04:12
wdickersBut for pushes, why would the ZIS need to send requests to the push agent?04:12
aelknerNo wait.  The ZIS knows that there's a pull agent (the cafe) who's interested in students.04:12
aelknerOops.  I meant push agent for the cafe.  Sorry.04:13
aelknerSo ZIS acts as client and send the cafe agent the student message.04:13
aelknerI admit it would be easier with diagrams.04:13
wdickersso the cafe is a subscriber to that data?04:14
aelknerYes.04:14
aelknerGood point.04:14
wdickersDo pull agents /request/ data, /give/ data, or both to the ZIS?04:14
aelknerTom didn't mention a third type of agent, i.e., combo, so let's assume the following:04:15
aelkner1) pull agents are clients only04:15
aelkner2) push agents are servers and clients.04:15
aelknerSo a cafe might learn something when the student first comes in.04:16
aelknerFor instance, his favorite meals.04:16
wdickersokay04:16
aelknerIf that were interesting to a different app somewhere in the school, then perhaps the cafe would send a message to the ZIS04:17
aelknerI.e., act as a pull agent.04:17
aelknerLet's keep it as simple as possible for now.04:17
aelknerIt's complicated enough to code the SIS agent and the cafe agent that only wnats to know of new students.04:18
aelknerShall we give you a chance to digest this for now and start planning the code tomorrow at 10:56?04:19
wdickersThat sounds good04:19
aelknerI suggest getting to know the code that's already there.04:20
aelknerI've been doind that.04:20
aelknerdoctests.txt does a lot of what our code will do, i.e. communicates with a running ZIS.04:21
wdickersSo I should look over the registering and requesting?04:21
aelknerYes.04:21
aelknerIt uses exam.py for its test messages.04:21
wdickersAlright. I'll see you tomorrow then04:21
aelknerOk.  Tomorrow it is.04:22
*** wdickers has quit IRC04:22
*** aelkner has quit IRC04:28
*** eukreign has quit IRC04:44
*** eukreign has joined #schooltool04:45
*** pcardune has joined #schooltool04:45
*** eukreign has quit IRC04:56
*** eukreign has joined #schooltool05:01
*** eukreign has quit IRC05:03
*** eukreign has joined #schooltool05:05
*** eukreign has quit IRC05:12
*** eukreign has joined #schooltool05:13
*** eukreign has quit IRC06:07
*** eukreign has joined #schooltool06:10
*** eukreign has quit IRC06:15
*** eukreign has joined #schooltool06:16
*** lisppaste5 has quit IRC07:00
*** lisppaste5 has joined #schooltool07:07
*** lex__ has joined #schooltool08:40
*** eukreign has quit IRC08:40
*** Aiste has quit IRC09:03
*** wrobel has joined #schooltool09:35
*** jinty has joined #schooltool11:25
*** jfroche has joined #schooltool11:35
*** thisfred has joined #schooltool12:28
*** Aiste has joined #schooltool13:23
*** jelkner has joined #schooltool13:46
*** ignas has joined #schooltool13:49
*** alga has joined #SchoolTool13:58
jfrocheignas: hello, do know know the good procedure to update a po file ?16:01
jfroche(in schooltool)16:01
ignasemm16:01
ignaswhat do you mean by "update"?16:01
ignasupdate in rosetta? update in schooltool checkout?16:01
jfrocheupdate in schooltool checkout16:02
jfrochei downloaded the new po file16:02
jfrocheshould move it to locales16:02
jfrocheand compile it16:02
jfrochethats it ?16:02
ignasyes16:02
jfrocheok great16:02
jfrocheno script to compile all po files at once ?16:04
*** lex__ has quit IRC16:05
*** lex__ has joined #schooltool16:05
jfrocheignas: now that i have a new po file, should i put in trunk and then merge my branches or should i just play in my branch ?16:10
ignasjfroche: you can put it on trunk if you want16:11
ignasnot that it matters much16:11
ignasbut be careful, i might do a bulk import from rosetta timet to time16:11
ignasand if you add some non rosetta translations to po file they might get replaced ...16:12
ignasas i have neither language skills nor time to check whether new translations are adding translated strings or removing them ...16:12
jfrocheof course16:15
jfrocheyou told me, you are using something else than rosetta ?16:15
ignasyep16:18
ignasPootle16:18
jfrocheignas: i am trying get-rosetta-translations.py in bin16:24
jfrochewhats the correct baseurl to provide for schoolbell and schooltool ?16:24
ignasjfroche: use makefile commands16:25
ignasas for rosetta translations - you must download them manually16:25
jfrocheso get-rosetta-translations.py is deprecated ? because it goes fetching in rosetta the correct po file16:32
ignasi think so16:32
ignasif in doubt - ask jinty16:33
ignashe is the one who created the machinery16:33
jfrochejinty: do you know if get-rosetta-translations.py is deprecated ?16:34
*** erchache has joined #schooltool16:44
erchachehi16:45
erchacheim here again!16:45
erchache:-D16:45
erchacheth1a: hi16:53
jintyjfroche: er moment16:54
jfrocheignas: if i do a make update-translations it requieres a schooltool.pot and a schoolbell.pot file in src/schooltool/locales , what should i put in it ?16:55
jintyjfroche: where did you get get-rosetta-translations.py???16:56
jfrocheit requires a pot file to do the msgmerge16:56
ignasjfroche: want to read "README.txt" ?16:56
ignasthe "Building SchoolTool from a subversion checkout" part16:57
jfrocheright :)16:57
jintyafterwards you can read the part in the makefile in trunk " Makefile rules for importing and exporting translations to rosetta:"16:57
jfrochejinty: it's in bin16:58
jintyah, it used to work until launchpad disallowed direct downloads of po files17:01
jfrocheok17:01
jintyI don't know if they still require e-mail17:01
jintywe should probably just delete that script if it's not going to work.17:02
jfrocheit's slow to get po files ...17:02
ignasjfroche: well, not that one needs to do that often17:03
jfrocheautomated rosetta upload/download could be good for working together on translations17:05
ignashow?17:07
ignasi thought that rosetta is for working together on translations17:07
jfrocheyep but once somebody else has finish to translate something you have to request for a mail ...17:07
jfrochewait for the mail17:08
jfrocheand copy it to the right folder17:08
ignaswell, yes if you want them to be very very up to date - yes17:08
ignasthough do you really need that so much ?17:08
jintyI reacall the issue was that downlaoding a PO file was blocking a thread for too long and hurting responsiveness of launchpad17:08
ignasi mean downloading translations once a week is more than enough17:08
jfrochei have 2 teacher translating in french17:08
ignasyes, and both of them can work on rosetta17:09
ignasat the same time17:09
jintyjfroche: can you put the password for the zodbpacker user of the new schooltool site in your homedirectory?17:09
jfrocheright and each time they will finish the translation they will have to send me the po file or i ll have to download it17:09
jfrochejinty: isnt it the same as usual ?17:09
jintyhmm, didn't work when I tried it, but I will try manually17:10
ignasjfroche: no they will not have to send anything, they will use rosetta for translation, and you will download the most up to date translations like once every few days ...17:10
th1aNow would be a good time to pack the schooltool.org database, since I just deleted all those members.17:11
jfrocheasking every few days for a mail to rosetta is boring17:11
jintyjfroche: If you can come up with a script that automatically recieves that mail and parses it, be my guest:)17:12
jintyand must be robust17:12
jfrocheno thank you :) no way to make this po view back in rosetta ?17:13
ignasjfroche: nope, really, the policy is - everything that might run more than some amount of time - must be an external process17:13
ignasas some po files take a while to generate - they are doing it that way17:14
jfrochei see17:14
jfrochejinty: working for you ?17:15
jintyhmm, my init script isn't working, that's the second time today zope's denial that unix exists has bitten me17:16
jfrocheignas: with Pottle how do you update the po file in Rosetta ?17:18
ignasyou can import a po file to rosetta iirc, haven't tried it yet though17:19
jfrochecause for now upload is disabled in Rosetta17:20
*** erchache has quit IRC17:20
jfrochejust hope it's just "for now"17:20
*** vidasp has joined #schooltool17:25
ignasjfroche: btw, do you know which po file to download?17:26
jfrochemean the french one ?17:27
ignasmean the 2006 one17:27
jintyjfroche: no, the password I have isn't working for me17:28
ignasjfroche: https://launchpad.net/products/schooltool/2006/+translations17:30
*** vidasp has quit IRC17:31
jfrochejinty: try now17:31
jfrochezodbpacker17:31
jfrochepwd in /var/local/zope/instance287-dev17:31
jintylooks, good. I'll delete that file now17:37
jfrocheignas: for french https://launchpad.net/products/schooltool/+translations is more up to date than https://launchpad.net/products/schooltool/2006/+translations17:39
ignasjfroche: yes, but pot files are very very old in https://launchpad.net/products/schooltool/+translations17:40
jfrocheargh will have to merge both ?17:40
jfrocheas upload is dead i don't want to do that one by one17:41
ignaswhere did you see the upload being dead ?17:41
jfrochehttps://launchpad.net/products/schooltool/2006/+pots/schooltool/fr/+upload17:42
ignasouch17:42
ignaswell, i'd guess that you could merge po files with some tool offline and commit the new po files into your branches to "protect" translations from accidental overwrite ...17:45
jfrocheyep i ll do that17:45
ignasjfroche: did replacing the rst with a pt help with translations for online help?17:50
jfrochehavent tried yet17:51
jfrochethe string of online help will be in po file then like that ?17:51
jfrocheyes17:51
jintyjfroche, th1a: the new site should be live now17:54
jfrochejinty: great, thanks17:55
jfrocheyou changed the logo ?17:55
jfrochecache updated sorry17:56
*** wdickers has joined #schooltool17:57
* jinty cleans up a few things he wanted to for a long time17:59
*** aelkner has joined #schooltool18:02
aelknerHey Will.18:02
wdickersHello18:02
aelknerSo I thought about how to scturcture the code from a very high level.18:02
aelknerWe need:18:03
aelkner1) a module called agentSis.py containing the class for the SIS agent.18:03
aelkner2) agentCafe.py, the same idea18:03
aelkner3) I can't think of a good name, but for now, agentTests.txt18:04
aelkner4) driveAgentTests.py18:04
aelkner5) agentSis.conf and agentCafe.conf for configuration18:04
aelknerThat's all I can think of for now.18:04
aelknerWhat do you think>18:05
wdickersSo agentSis will be the pull agent and agentCafe will be the push agent?18:05
aelknerRight.18:05
wdickersok18:05
aelknerOh, I forgot one thing.18:05
aelknerIf you look at exam.py, the doctests messages, you'll see a bunch of xml messages.18:06
aelknerWE should create a module that builds those messages for us based on some parameters we pass.18:06
aelknerbuildMessage.py?18:07
wdickersWhat would these messages be exactly, XML containing information?18:07
aelknerYes.  All messages are in xml format.18:07
aelknerCheck out exam.py fa second.18:08
aelknerOur message building routines could compute the date and time on the fly.18:09
wdickerswhich one is it, provide?18:09
aelknerI'm not sure about message id yet.  We could fake it at first.18:09
*** jelkner has quit IRC18:09
aelknerRemember that many of exam.py messages are for error testing.18:10
wdickersI believe there may already be something like that in tz-run.py, it uses lxml to generate the messages18:10
wdickersah18:10
aelknerBut yes, one of them would be provide.18:10
aelknerWE need a register message.18:10
aelknerThe routine should except variable parms for things like push vrs. pull.18:11
wdickers<SIF_Message xmlns="http://www.sifinfo.org/infrastructure/1.x" Version="1.5r1">18:11
wdickers   <SIF_Register>18:11
wdickers     <SIF_Header>18:11
wdickers        <SIF_MsgId>14BA09653261545A31905937B265CE01</SIF_MsgId>18:11
wdickers        <SIF_Date>19990218</SIF_Date>18:11
wdickers        <SIF_Time Zone="UTC-08:00">20:39:12</SIF_Time>18:11
wdickers        <SIF_SourceId>RamseySIS</SIF_SourceId>18:11
wdickers     </SIF_Header>18:11
wdickers     <SIF_Name>Ramsey Administration Office</SIF_Name>18:11
wdickers     <SIF_Version>1.5r1</SIF_Version>18:11
th1aHey.18:11
wdickers     <SIF_MaxBufferSize>1024000</SIF_MaxBufferSize>18:11
wdickers     <SIF_Mode>Pull</SIF_Mode>18:11
wdickers   </SIF_Register>18:11
wdickers</SIF_Message>18:11
wdickersBut should we change the version to 2? It doesn't seem to be supported, but it is the current version out.18:11
wdickersHey Tom18:12
aelknerWE can fake the version also until we get things working.18:12
wdickersokay18:12
th1aI would just focus on 1.5r1 for now.18:13
aelknerI think when we have the structure in place, Tom can answer questions in bulk about the things that we fake at first.18:13
aelknerThere's one answer.18:13
th1aI wouldn't fake it -- I'd just explicitly support 1.5r1.18:13
aelknerThat's col.18:13
aelknerWhat about message ids18:13
aelknerHey Will, how did you enter those xml lines one per second like that?18:14
wdickersI just used copy&paste of multiple lines18:15
aelknerOne copy/paste?18:15
wdickersyeah18:15
aelknerOh, it seemed like you did it a line at a time, but I guess that's how chat works.18:15
th1aI wrote a routine to generate the id's.  It has its own module.  I think it is even correct.18:16
aelknerWhich module?18:16
th1aAnyhow, you can just use that module.18:16
th1aUh... something obvious...18:16
aelknerFine.18:16
aelknerI was telling will that we need a module to build xml messages from parameters given.18:17
aelknerMakes sense?18:17
wdickersYeah. So it would auto-gen the time and ID then?18:17
aelknerExactly.18:17
wdickersAlright. Should we use the lxml module? That's what Tom seemed to use18:18
aelknerYes, that's the design decision Tom made that applies to the whole project.18:18
aelknerHow to start?18:19
aelknerDeviding tasks I mean.18:19
aelknerI'm not used to working where you can't see each others work on the fly.18:20
wdickersHmm, maybe you should work on the agentCafe and I'll work on the AgentSis? Then tomorrow we can just compare how we go about it18:20
wdickersWell tomorrow we'll be meeting anyways18:20
aelknerTrue.18:20
aelknerBut we need the xml message building routine for both of our agents.18:21
aelknerI have an idea.18:21
aelknerLet\'s outline here the names of the routines for building the messages.18:21
wdickersAlright.18:22
aelknerThen we could each code using those routine names even though they don't exist yet.18:22
aelknerWe wouldn't expect our agents to be runnable.18:22
aelknerBut we would have spent the time fleshing them out.18:22
wdickersBut is there a need for multiple functions to create a message?18:22
aelknerLet me study exam.py a second.18:23
aelknerOk, what I envision is something like:18:24
aelknerimport messageBuilder18:24
aelknerregisterMessage = messageBuilder.register(sourceId='RamseySIS', name='Ramsey Admin Office', mode='pull)18:25
aelknerWe can always add more parms later as they are named.18:26
wdickersOkay, so for now we'll just make register18:26
aelknerBut we'll make the messages together (on Sat) since we will both want to use them.18:27
wdickersSo what should we work on tonight?18:27
aelknerFor now we could assume they exist in the code we each flesh out.18:27
wdickersAlright18:27
wdickersYou work on the push and I'll work on the pull?18:28
aelknerAt some point we'll break from discussing our plan and do some code as you just suggested.18:28
aelknerRight.18:28
aelknerRemember to code whatever messageBuilder calls you tink you need even though we won't have them until Sat.18:29
wdickersokay18:29
aelknerShould we discuss naming conventions before we break to code?18:29
aelknerI think it's a good idea to keep things consistent where possible.18:30
aelknerOk.18:30
wdickersYeah. Should the classes be specific as in AgentSis or generic, AgentPull?18:30
aelknerclass AgentSis (for me class AgentCafe)18:30
aelknerOh, you bring up an elegant point.18:31
wdickersDo they inherit from anything that you can think of? I'm thinking Persistent18:31
aelknerIf we created base classes for push and pull agents, then we could use inheritance.18:31
wdickersbut for now just our examples?18:31
aelknerI'd hold off on using Persistent until we knew we needed it.18:32
aelknerBut you do bring up a good point about push and pull as possible base classes.18:32
*** jelkner has joined #schooltool18:32
aelknerclass AgentSis(AgentPull): is self documenting, too.18:33
th1aYou guys shouldn't really do persistence.18:33
aelknerWe won't.18:33
aelknerBut Will, if we want to use base classes like AgentPull, then we should plan that out before coding.18:34
wdickersYou're right18:34
wdickersWhat would all agents be passed? Name, sourceID, and what else?18:35
aelknerLet's say the derived class would build a dictionary of things to pass the register builder.18:35
aelknerThen the base class would have the register method and would add push and pull as applicable.18:35
aelknerAnd make the actual call to the messageBuilder.18:36
wdickersthe base class would make the call to messageBuilder, and the derived would call the base class with specifics?18:36
aelknerActually, if the dictionary is set as a member variable, then the base class would have it when called.  No parms necessary.18:37
aelkner__init__....18:37
aelkner  ...18:37
aelkner  registerDict = {'sourceId': 'RamseySis'...18:38
aelkner  AgentPull.register(self)18:38
aelkner  ...18:38
aelknerDo you follow?18:38
wdickersYes, and then AgenrPull.register would use self.registerDict18:38
aelknerExactly.18:39
wdickersWhat data needs to be in the dictionary?18:39
aelknerThe parms from the above call to message builder.18:39
aelknerMinus the mode='pull'18:39
wdickersokay. Well my class is ending, so I'll work on it this evening18:39
aelknerCheck in with me on schooltool first before we code anyting, ok?18:40
wdickersOkay. Will you be on at 6?18:40
aelknerCool.  I'll be there.18:40
wdickersSee you then18:40
aelknerSee you.18:40
*** wdickers has quit IRC18:41
aelknerJeff, are you there?18:41
jelkneraelkner: yup, but i need to go to the doctor for blood extraction18:53
jelkneri just sent an email introducing paul bui (whom you know) to will and tom.18:53
jelknerpaul is interested in the sif work you are doing18:53
jelknerhe can't make it tomorrow, but he will be there at the december sprint18:54
jelknerth1a: great posting to the cando list, tom, that spells it out as clear as can be18:56
th1ajelkner: Good.18:56
th1aI just don't want you to feel like we're pulling some kind of open source bait and switch.18:56
*** jinty has quit IRC18:57
*** jfroche has quit IRC18:57
jelknerth1a: i have been singing the same tune every chance i get18:57
jelknermy message is:18:57
jelknerwe need to see cando as part of schooltool18:58
jelknerand ourselves as schooltool developers18:58
jelknerwhen we need something done in schooltool18:58
jelknerwe should do it18:58
th1aRight.18:58
jelknerby communicating with the other schools, we can coordinate our work and make schooltool better18:59
jelknerso communication will be key18:59
th1aYes.18:59
jelknerwe will have to talk more about how to make that happen soon18:59
th1aWell, there is already better communication going on between jfroche, ignas & jinty than we've had before between different teams.18:59
jelknergreat19:00
jelkneri need to run and get blood taken from me19:00
jelkneri'll catch up with you soon19:00
*** jelkner has quit IRC19:00
* ignas reads the email by th1a19:08
ignasth1a: what do you call "generic SchoolTool problems" ?19:15
th1aWell, like "it is too hard to add users."19:15
ignasit's not really generic, it's very specific ...19:16
th1aperhaps "core" SchoolTool problems?19:17
ignasin this department overengineering in the wrong direction is the top one as far as i am concerned ...19:17
th1aI've tried to stop contributing to that problem.19:18
ignasfeatures that should be cheap become way too expensive :/19:19
ignasand if it is difficult for me to think of ways to change that, what about others ...19:20
ignasanother problem is - having more people who want improvements/features and have ideas compared to the amount of programming power, but this one is pretty much universal for all software projects ;)19:21
*** mgedmin has joined #schooltool19:56
*** thisfred has quit IRC20:23
*** ignas has quit IRC21:18
*** Aiste has quit IRC21:27
*** dwelsh has joined #schooltool21:42
dwelshth1a:  you there?21:42
*** Aiste has joined #schooltool22:13
*** alga has quit IRC22:36
*** mgedmin has quit IRC22:37
*** pcardune has quit IRC22:43
*** lisppaste5 has quit IRC23:31
*** lisppaste5 has joined #schooltool23:37

Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!