IRC log of #schooltool for Wednesday, 2005-12-07

*** didymo has joined #schooltool00:05
jelknerth1a: tom, are you still with us?00:24
th1aI just returned from munching some chips.00:25
jelknerok, could you take a look at what we have?00:25
srichterwhat do you have?00:26
jelknersrichter: we have a gobby session going writing up paul's scope of work00:26
jelknerwould you like to look it over?00:27
srichterwhat is gobby?00:27
jelknermore eyes is better?00:27
jelknera collaborative text editor00:27
jelknerare you running ubuntu?00:27
jelknerwell, you would need gobby to join the process00:27
srichterI'll see if I find a RPM00:27
jelkneri'll look too00:28
jelknerbut no rpm00:29
jelknersrichter: my energy is waning and i need to go00:30
jelknerhow about i just email it to you this time00:30
srichtersend it to me via E-mail00:30
jelknernext time you can join our gobby session00:31
jelknerit is cool00:31
srichterno, I have found it00:31
jelknerand a great way to pair program remotely00:31
srichterI just need to register a different repository to install the RPM00:31
srichteryeah, but you cannot use Emacs00:31
srichterso its a no go00:31
srichterand it is a gnome app00:32
srichterpcardune: have you found a KDE equivalent? :-)00:32
pcardunesrichter: I haven't looked00:32
jelknerok, cya later...00:33
*** jelkner has quit IRC00:33
th1aok srichter & pcardune.00:33
th1aI'm thinking that sections should subclass GroupRequirement.00:34
pcardunejust adapt00:35
th1aOr I'm trying to figure out how to do this.00:35
srichterI agree an adapter would be nicer00:35
pcardunei implemented it for the schooltool application object... that is in the cando repository00:35
srichterbut I agree now, a course you take is a requirement to complete your degree00:35
th1aAdapt what to what?00:36
pcarduneI will move it to schooltool repo soon00:36
th1aWhat did you do for the schooltool app object?00:36
pcarduneI made a requirement namespace and adapter so you could go to schooltoolserver/++requirement++/ and see all the global requirements00:37
pcardunein the same way you can have STserver/sections/somesection/++requirement++/ and see the requirements for just that section00:37
th1aHm... Is there anything in your book about these namespaces, srichter?00:37
srichteractually, I think there might00:38
pcardunethere is a wee bit00:38
srichterlet me check00:38
pcardunei looked it up at some point00:39
srichterno, not what you want00:40
srichterbut you can look at the requirement namespace00:40
srichterit is really simple00:40
srichterall you need is a simple class and two registrations00:40
th1aI guess one underlying question I have at this point is how can I take advantage of the whole requirement inheritance machinery without subclassing.00:40
th1aI can use an adapter somehow?00:40
srichteruse adapters00:41
srichterrequirement = IRequirement(mysection)00:41
pcardunealthough we are going to get rid of IRequirement and just have IGroupRequirement00:42
th1aOr turn IRequirement into IGroupRequirement?00:42
th1aWell, I'd appreciate it if you'd check that code in so I can see who the namespace works.00:43
pcarduneit is currently checked into the cando svn repository00:45
pcarduneNow that I have schooltool svn access, I will put it into the schooltool repository, maybe tommorow.00:47
pcarduneI've got to go now though, and finish some essays00:47
th1aOK.  Have fun.00:48
*** pcardune has quit IRC00:48
*** scubes13 has quit IRC01:14
*** srichter has left #schooltool01:22
*** srichter has joined #schooltool01:22
*** th1a has quit IRC02:57
*** hazmat has joined #schooltool03:15
*** didymo has quit IRC04:51
*** hazmat has quit IRC05:02
*** th1a has joined #schooltool07:55
*** jinty has joined #schooltool10:56
*** vidasp has joined #schooltool12:14
*** didymo has joined #schooltool12:20
*** mgedmin has joined #schooltool12:38
*** Aiste has quit IRC12:43
*** Aiste has joined #schooltool13:01
*** didymo has quit IRC13:25
*** ignas has joined #schooltool13:33
*** Aiste has quit IRC13:38
*** mgedmin has quit IRC13:40
ignasth1a, ayt15:55
srichterI think it is too early for him :-)15:56
ignasafraid so15:57
*** Aiste has joined #schooltool15:58
*** Aiste has quit IRC16:05
*** Aiste has joined #schooltool16:06
*** Aiste has quit IRC16:12
th1aignas:  Yes?16:25
srichterthe master awoke; you may now bring forth your requests16:34
th1aHas anyone looked over Peter Zingg's patches?  Should I try to get him to sign a contributor agreement and check them in?16:38
th1a(from his emails on schooltool-dev)16:38
srichterI have not looked at it16:38
srichterth1a: but do you have the document Paul and Jeff were working on yesterday?16:39
th1aI don't actually have a copy of it.16:39
ignasth1a, remember the question about two section events on the same day ?16:41
th1aDo you want me to define "worse?"16:41
ignasno :)16:41
ignasi want to ask another question16:42
ignasdo we want to support multiple events on the same day for a section ?16:42
ignasand what kind of tracking do you have in mind:16:43
ignasa)  peter was present in his Math lesson 2005-01-1116:43
ignasb)  peter was present in his Math lesson that week (week might not be accurate if term is changed some time)16:44
ignasc) peter was in his math lesson 2005-01-11 15:00-15:4516:44
th1aAre we talking about what kinds of queries we'll want to do in the future?16:45
ignasd) peter was in his math lesson 2005-01-11 15:05-15:45 (because he missed the buss and was tardy)16:45
ignasno, we are talking about granularity16:45
ignaslike - if we are storing the ttschema + period_id + date, the data might become inacurate (but maybe not) if term will get edited, exceptions will be added etc.16:46
ignasif we are storing only date ... we can't track the exact period16:46
ignasthe question originally was meant for marius, because idoubted that date is enough16:46
th1aI see.16:46
th1aHere's a thought.16:47
th1aWe should definitely log times.16:47
th1aSo there is an absolute authoritative record of that.16:47
th1aBut it seems like when you are doing queries and such, you'd want to know if Jimmy was late for period b math class on tuesday.16:49
ignasthen - what about the abscence events in a calendar ? they should map to your timetable events, or to the real time/duration16:49
th1aNot just that he checked into class at a given time.16:49
th1aIn the case of a tardy, we always need to know what time the kid actually arrived.16:50
th1aThe absence events in a calendar is a convenience, so that's not super important that, for example, a tardy event maps to the minute when the kid was tardy.16:51
ignaswell - thre matter is - we either store "ttschema+period+date" or "time_start+time_end+date" both are feasible and usable, and it really depends on - what data will you need in calendars/summaries16:54
ignaswill we be talking aobut "abscence for the first Petersons math lesson" and "abscence for the second Petersons math lesson"16:55
ignasor about "abscence in Petersons math lesson 14:00-14:45"16:55
th1aThe former.16:56
th1aBut we should log the time.16:56
th1aAnd store the time a tardy child returns in the db.16:56
ignasthe time will be logged by wfmc logging framework if i understand it correctly16:56
ignasth1a, could you please elaborate on the term of "Summary of attendance" >?17:00
th1aUh... in what context do I use it?17:01
ignaswhat is a summary ?17:01
th1aWhat is the definition of the word?17:02
ignasthe exact questions my marius are in the README.txt of attendance17:03
th1aFor now, let's keep it simple.17:07
th1aSo you go to a term.17:07
th1aClick 'Attendance.'17:08
th1aYou get a batched/searchable index that has17:08
th1aeach student and the number of absences and tardies for the term.17:08
th1aClick on the student and you get a detailed report with each absence and tardy17:09
th1afor that student in that term listed.17:09
ignasi see, i smoehow thought that it was all the other way around ... you click student get list of terms + (some kind of totals), click term get the detailed report17:10
th1aWell, the detailed report is probably the same one.17:11
th1aJust two ways of getting there.17:11
th1aVia term or via student.17:12
ignasso at the moment - no totals17:12
ignassummary is just a list of all students in one case, and a list of terms ?17:12
th1aAt what moment?17:12
ignasfor this proposal17:13
ignassummary for me meant "Totals of tardies/ abscences etc."17:13
ignasnot - a batched list of all students17:13
th1aWell, what I was thinking of was a list with the total for each student in that view.17:14
ignasoh, i see17:14
ignasand - do i understand you correctly: we will need both ways to access the detailed report for student/term pair, or just one is enough17:14
th1aMaybe I don't remember what I meant by summary either.17:18
th1aLet me think about this for a second.17:19
th1aOK.  Disregard everything I just said.17:24
th1aI misunderstood the context of the question.17:25
th1aThe reason to do this per term is that eventually a student will have four or five years of attendance data in the system, and you don't want to look at all that if you're just resolving a recent absence.17:27
th1aBut it would just be a list of all the terms a student has attended, and the number of absences and tardies per term.17:28
th1aClick on the term and get the full list.17:29
th1aTotally disregard what I said about a batched index view.17:29
ignasi see17:32
th1aHere's an unrelated issue I ran into last night.17:35
th1aSay I cd into my schooltool src directory and start a python interpreter.17:36
th1aIf I say "from schooltool.course.section import Section"17:37
th1aI get a traceback saying "cannot import name membership"17:37
srichterthat might be an importing bug17:37
th1afrom wen section tries to do "from import membership"17:37
srichterright17:38 is not imported yet17:38
srichterso if you do "import", everything is fine17:38
th1aWell, no.17:38
th1aI get the same thing.17:39
th1aWell, not anymore.17:39
th1aAfter I restarted the interpreter.17:39
th1aOK.  That works.17:40
th1aSo I reviewed all my texts on adaptation, from Design Patterns on up last night.17:40
srichterI think this is a weakness in the Python importing scheme, though it is done to import the fewest modules necessary17:40
th1aCan I just use IRequirements itself as an adapter?17:41
srichterno, it does not provide functionality17:41
srichteryou can call it, like this though:17:41
th1aOr do I need to make an adapter that will adapt IRequirement to provide Section functionality.17:41
srichterreq = IRequirement(section)17:42
srichteryou then need to develop a component (be it a function or class) that does the adaptation17:42
th1aI don't understand what that is saying.17:42
srichterthe above code snippet says, given a component that provides ISection, give me a component that provides IRequirement17:43
srichter(btw, you really should read human.txt in zope.interface; it talks about adaptation17:43
th1aWhat is req?17:43
srichtera new variable you assign the IRequirement component instance to17:44
th1aWhat is section?17:44
srichtera component that provides ISection17:45
srichterfor example an instance of the class st.course.section.Section17:45
th1aWhat would the "IRequirement component instance" be?17:45
srichteran instance of a class that provides IRequirement17:46
srichterthat instance is probably an annotation on the course17:46
srichterbecause not the section, but the course, is the requirement (may be debatable though)17:46
th1aI'm thinking that the section is a requirement that inherits from the course.17:47
th1aIf I'm thinking of it correctly.17:48
srichteryeah, that could be correct17:48
srichterI thought w had examples of this int eh requirement readme17:49
th1aSo the reason I can do "req = IRequirement(section)" is because I've registered an adpater for IRequirement?17:50
th1aWhat if I register two?17:51
srichterin ZCML you would not be allowed doing this17:51
srichterin plain Python the second overrides the first17:51
srichterthe discriminator being the initial iface, target iface and the name17:52
th1aSo intuitively, it seems like I should be adapting ISection to implement IRequirement.17:52
th1aBut doesn't that mean I'm reimplementing all that inheritance machinery?17:52
th1aCan I apatp IRequirement to ISection?17:53
srichtereek, no this would be the wrong way around17:54
srichteryou want to adapt ISection to IRequirement17:54
srichterno, you are not reinventing inheritance17:55
srichterthink about core responsibility of an object versus behavior in a system17:55
srichterthe core responsibility of a section is to know the course, have a location and time schedule, know the students and the instructors17:57
srichtereverything else has to do with system integration17:57
th1aOK.  That did seem like the natural way to do it.17:57
srichterthus that a section is also a requirement is a system assertion17:58
srichterthat means we want to be able to adapt the section to a requirement17:58
th1aWhen I say "reimplementing the inheritance machinery" I don't mean Python's, I mean Requirement's.18:03
srichteroh, I see18:04
srichterno, you are going to reuse the requirements base classes, so it will be all good18:04
srichterbasically you will have a requirement class isntance attached to the section via an annotation18:05
srichterall the adapter does is get you this annotation18:05
srichterand we implemented all this already18:06
srichtersee the section on "Requirement Adapters"18:06
srichterall you have to do is tell your section that it implements "IHaveRequirement"18:06
th1aWell, I want a Section to BE a requirement.18:07
srichterbut I am telling you is that this is wrong18:08
srichterit should nto be a requirement18:08
srichterit should adapt to one18:08
srichterit is not one of the section's core functionalities to be a requirement18:08
srichterwhat if someone wants to not have the requirement framework installed on their ST installation?18:09
srichterthe point of the CA is that we want to rid ourselves of those strong dependencies18:09
th1aHm.  OK.  Let me think about this some more.18:10
th1asrichter:  I think I see what is going on, but it is indistinguishable from magic.18:54
srichterwhat part is magic?18:55
srichternote that "IRequirement(section)" is just syntactic sugar for "zapi.getAdapter(section, IRequirement)"18:55
th1aSo if an object has IHaveRequirement marker (which I'd want to give it in ZCML),18:57
th1athen I can easily make it behave like a requirement?18:57
th1aI mean,18:57
th1athere's nothing else I need to write?18:57
th1areq = interfaces.IRequirement(section)18:58
srichterthe adapter is reqistered for IHaveRequirement to IRequirement18:59
srichterif section provides IHaveRequirement, you are all set18:59
srichterin a doctest you have to manually register the adapter though, as we did in the README.txt file18:59
th1aSo... swinging back around to the original point of this line of thinking.19:00
th1aIf I want to create an evaluation for a section, the section needs to provide IHaveRequirement.19:01
th1aAnd that's pretty much it?19:01
th1aI mean, in terms of setup.19:01
th1aThere's more to it ;-)19:01
th1aI mean, more to the whole system.19:02
th1aOK.  Hm... Still seems magical, but I'll take easy and magical.19:02
th1athanks srichter.19:03
srichteryou are welcome19:03
* jinty is amazed by the recursive checkout/build steps of the cando trunk...19:19
srichter:-), cool eh?19:20
srichtereeek. I cannot get to the schooltool site anymore19:34
*** ignas has quit IRC19:34
* jinty wants someone to start a cando sub-project!19:38
*** vidasp has quit IRC19:44
srichterjinty: what do you mean by20:34
th1asrichter:  I'm getting the site.20:39
srichternow I get it too20:40
jintysrichter: so we can have a fourth level of subversion checkout/build recursion!20:42
th1aOh, you mean a CanDo fork?20:43
srichterjinty: oh, I see what you mean! :-)20:43
jintybtw, am I right in thinking that cando should have it's own i18n domain?20:43
srichterth1a: nope, no fork20:44
srichterjinty: absolutely20:44
srichterth1a: a project based on CanDo20:44
jintyth1a: more like, make cando a framework;)20:44
th1aAh.  Excellent idea.20:44
* srichter really hopes th1a is joking or not understanding jinty's joke20:45
th1aWhat we need is a competency tracker factory factory factory.20:47
srichterare you sure it is not a factory adapter factory?20:48
srichteroh, I forgot, this is the same thing ...20:48
th1aadapter factory adapter.20:48
jintyI know, lets start to base zope on cando! then we can have circular framework dependencies21:00
th1aI think the inheritance system for CanDo could be a good starting point.21:01
srichterwell, it is a little bit liek acquisition21:03
srichterexcept that it allows multiple inheritance21:03
th1aWhat we really need is executable content as course material.21:04
th1aOnce courses can contain executable content, we can reimplement CanDo inside itself.21:04
srichterdoes this make sense to any non-English majors?21:06
th1aWell, that's for the VLE extension of CanDo.21:06
srichterVisual Library Extension?21:07
th1aI did get stuck in an extended discussion at the conference in Holland about whether a VLE (Virtual Learning Environment)  should allow a "learning object" to execute arbitrary code on the server.21:08
th1aOne guy basically wanted his lesson to be able to run some kind of Mathematica function on the server.21:09
th1aEveryone else thought he was completely nuts.21:09
th1aI could barely stay awake.21:09
srichterno kiddding21:10
povbot/svn/commits: * srichter committed revision 5397:23:52
povbot/svn/commits: the first chapter of the documentation.23:52
th1aOooh!  Documentation!23:52
srichterth1a: have a read23:59

Generated by 2.15.1 by Marius Gedminas - find it at!