*** didymo has joined #schooltool | 00:05 | |
jelkner | th1a: tom, are you still with us? | 00:24 |
---|---|---|
th1a | I just returned from munching some chips. | 00:25 |
jelkner | ok, could you take a look at what we have? | 00:25 |
srichter | what do you have? | 00:26 |
jelkner | srichter: we have a gobby session going writing up paul's scope of work | 00:26 |
jelkner | would you like to look it over? | 00:27 |
srichter | what is gobby? | 00:27 |
srichter | sure | 00:27 |
jelkner | more eyes is better? | 00:27 |
jelkner | a collaborative text editor | 00:27 |
jelkner | are you running ubuntu? | 00:27 |
srichter | nope | 00:27 |
jelkner | well, you would need gobby to join the process | 00:27 |
srichter | I'll see if I find a RPM | 00:27 |
jelkner | i'll look too | 00:28 |
jelkner | http://gobby.0x539.de/download.html | 00:29 |
jelkner | but no rpm | 00:29 |
jelkner | srichter: my energy is waning and i need to go | 00:30 |
srichter | ok | 00:30 |
jelkner | how about i just email it to you this time | 00:30 |
srichter | send it to me via E-mail | 00:30 |
jelkner | lol | 00:31 |
jelkner | next time you can join our gobby session | 00:31 |
jelkner | it is cool | 00:31 |
srichter | no, I have found it | 00:31 |
jelkner | and a great way to pair program remotely | 00:31 |
srichter | I just need to register a different repository to install the RPM | 00:31 |
srichter | yeah, but you cannot use Emacs | 00:31 |
srichter | so its a no go | 00:31 |
pcardune | ha | 00:31 |
srichter | and it is a gnome app | 00:32 |
srichter | pcardune: have you found a KDE equivalent? :-) | 00:32 |
pcardune | srichter: I haven't looked | 00:32 |
srichter | ok | 00:32 |
jelkner | ok, cya later... | 00:33 |
*** jelkner has quit IRC | 00:33 | |
th1a | ok srichter & pcardune. | 00:33 |
pcardune | yeah? | 00:34 |
th1a | I'm thinking that sections should subclass GroupRequirement. | 00:34 |
srichter | eek | 00:35 |
pcardune | just adapt | 00:35 |
th1a | Or I'm trying to figure out how to do this. | 00:35 |
pcardune | namespaces! | 00:35 |
srichter | I agree an adapter would be nicer | 00:35 |
pcardune | i implemented it for the schooltool application object... that is in the cando repository | 00:35 |
srichter | but I agree now, a course you take is a requirement to complete your degree | 00:35 |
th1a | Adapt what to what? | 00:36 |
pcardune | I will move it to schooltool repo soon | 00:36 |
srichter | IRequirement(ISection) | 00:36 |
th1a | What did you do for the schooltool app object? | 00:36 |
pcardune | I made a requirement namespace and adapter so you could go to schooltoolserver/++requirement++/ and see all the global requirements | 00:37 |
pcardune | in the same way you can have STserver/sections/somesection/++requirement++/ and see the requirements for just that section | 00:37 |
th1a | Hm... Is there anything in your book about these namespaces, srichter? | 00:37 |
srichter | no | 00:38 |
srichter | actually, I think there might | 00:38 |
pcardune | there is a wee bit | 00:38 |
srichter | let me check | 00:38 |
pcardune | i looked it up at some point | 00:39 |
srichter | no, not what you want | 00:40 |
srichter | but you can look at the requirement namespace | 00:40 |
srichter | it is really simple | 00:40 |
srichter | all you need is a simple class and two registrations | 00:40 |
th1a | I 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 |
th1a | I can use an adapter somehow? | 00:40 |
srichter | yes | 00:41 |
srichter | use adapters | 00:41 |
srichter | requirement = IRequirement(mysection) | 00:41 |
pcardune | although we are going to get rid of IRequirement and just have IGroupRequirement | 00:42 |
th1a | Or turn IRequirement into IGroupRequirement? | 00:42 |
pcardune | yeah. | 00:43 |
th1a | Well, I'd appreciate it if you'd check that code in so I can see who the namespace works. | 00:43 |
pcardune | it is currently checked into the cando svn repository | 00:45 |
pcardune | cando/src/cando/virginia | 00:46 |
pcardune | Now that I have schooltool svn access, I will put it into the schooltool repository, maybe tommorow. | 00:47 |
pcardune | I've got to go now though, and finish some essays | 00:47 |
th1a | OK. Have fun. | 00:48 |
pcardune | bye | 00:48 |
*** pcardune has quit IRC | 00:48 | |
*** scubes13 has quit IRC | 01:14 | |
*** srichter has left #schooltool | 01:22 | |
*** srichter has joined #schooltool | 01:22 | |
*** th1a has quit IRC | 02:57 | |
*** hazmat has joined #schooltool | 03:15 | |
*** didymo has quit IRC | 04:51 | |
*** hazmat has quit IRC | 05:02 | |
*** th1a has joined #schooltool | 07:55 | |
*** jinty has joined #schooltool | 10:56 | |
*** vidasp has joined #schooltool | 12:14 | |
*** didymo has joined #schooltool | 12:20 | |
*** mgedmin has joined #schooltool | 12:38 | |
*** Aiste has quit IRC | 12:43 | |
*** Aiste has joined #schooltool | 13:01 | |
*** didymo has quit IRC | 13:25 | |
*** ignas has joined #schooltool | 13:33 | |
*** Aiste has quit IRC | 13:38 | |
*** mgedmin has quit IRC | 13:40 | |
ignas | th1a, ayt | 15:55 |
srichter | I think it is too early for him :-) | 15:56 |
ignas | afraid so | 15:57 |
*** Aiste has joined #schooltool | 15:58 | |
*** Aiste has quit IRC | 16:05 | |
*** Aiste has joined #schooltool | 16:06 | |
*** Aiste has quit IRC | 16:12 | |
th1a | ignas: Yes? | 16:25 |
srichter | the master awoke; you may now bring forth your requests | 16:34 |
th1a | Has 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 |
srichter | I have not looked at it | 16:38 |
srichter | th1a: but do you have the document Paul and Jeff were working on yesterday? | 16:39 |
th1a | I don't actually have a copy of it. | 16:39 |
srichter | ok | 16:40 |
ignas | th1a, remember the question about two section events on the same day ? | 16:41 |
th1a | Yes. | 16:41 |
th1a | Do you want me to define "worse?" | 16:41 |
ignas | no :) | 16:41 |
ignas | i want to ask another question | 16:42 |
ignas | do we want to support multiple events on the same day for a section ? | 16:42 |
ignas | and what kind of tracking do you have in mind: | 16:43 |
ignas | a) peter was present in his Math lesson 2005-01-11 | 16:43 |
ignas | b) peter was present in his Math lesson that week (week might not be accurate if term is changed some time) | 16:44 |
ignas | c) peter was in his math lesson 2005-01-11 15:00-15:45 | 16:44 |
th1a | Are we talking about what kinds of queries we'll want to do in the future? | 16:45 |
ignas | d) peter was in his math lesson 2005-01-11 15:05-15:45 (because he missed the buss and was tardy) | 16:45 |
ignas | no, we are talking about granularity | 16:45 |
ignas | like - 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 |
ignas | if we are storing only date ... we can't track the exact period | 16:46 |
ignas | the question originally was meant for marius, because idoubted that date is enough | 16:46 |
th1a | I see. | 16:46 |
th1a | Here's a thought. | 16:47 |
th1a | We should definitely log times. | 16:47 |
th1a | So there is an absolute authoritative record of that. | 16:47 |
th1a | But 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 |
ignas | then - what about the abscence events in a calendar ? they should map to your timetable events, or to the real time/duration | 16:49 |
th1a | Not just that he checked into class at a given time. | 16:49 |
th1a | In the case of a tardy, we always need to know what time the kid actually arrived. | 16:50 |
th1a | The 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 |
ignas | well - 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/summaries | 16:54 |
ignas | will we be talking aobut "abscence for the first Petersons math lesson" and "abscence for the second Petersons math lesson" | 16:55 |
ignas | or about "abscence in Petersons math lesson 14:00-14:45" | 16:55 |
th1a | The former. | 16:56 |
th1a | But we should log the time. | 16:56 |
th1a | And store the time a tardy child returns in the db. | 16:56 |
ignas | the time will be logged by wfmc logging framework if i understand it correctly | 16:56 |
ignas | th1a, could you please elaborate on the term of "Summary of attendance" >? | 17:00 |
th1a | Uh... in what context do I use it? | 17:01 |
ignas | what is a summary ? | 17:01 |
th1a | What is the definition of the word? | 17:02 |
ignas | the exact questions my marius are in the README.txt of attendance | 17:03 |
th1a | OK. | 17:04 |
ignas | s/my/by | 17:04 |
th1a | For now, let's keep it simple. | 17:07 |
th1a | So you go to a term. | 17:07 |
th1a | Click 'Attendance.' | 17:08 |
th1a | You get a batched/searchable index that has | 17:08 |
th1a | each student and the number of absences and tardies for the term. | 17:08 |
th1a | Click on the student and you get a detailed report with each absence and tardy | 17:09 |
th1a | for that student in that term listed. | 17:09 |
ignas | i 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 report | 17:10 |
th1a | Well, the detailed report is probably the same one. | 17:11 |
th1a | Just two ways of getting there. | 17:11 |
th1a | Via term or via student. | 17:12 |
ignas | so at the moment - no totals | 17:12 |
ignas | summary is just a list of all students in one case, and a list of terms ? | 17:12 |
th1a | At what moment? | 17:12 |
ignas | for this proposal | 17:13 |
ignas | summary for me meant "Totals of tardies/ abscences etc." | 17:13 |
ignas | not - a batched list of all students | 17:13 |
th1a | Well, what I was thinking of was a list with the total for each student in that view. | 17:14 |
ignas | oh, i see | 17:14 |
ignas | and - do i understand you correctly: we will need both ways to access the detailed report for student/term pair, or just one is enough | 17:14 |
th1a | Hm... | 17:16 |
th1a | Maybe I don't remember what I meant by summary either. | 17:18 |
th1a | Let me think about this for a second. | 17:19 |
th1a | OK. Disregard everything I just said. | 17:24 |
th1a | I misunderstood the context of the question. | 17:25 |
th1a | The 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 |
th1a | But 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 |
th1a | Click on the term and get the full list. | 17:29 |
th1a | Totally disregard what I said about a batched index view. | 17:29 |
ignas | i see | 17:32 |
th1a | Here's an unrelated issue I ran into last night. | 17:35 |
th1a | Say I cd into my schooltool src directory and start a python interpreter. | 17:36 |
th1a | If I say "from schooltool.course.section import Section" | 17:37 |
th1a | I get a traceback saying "cannot import name membership" | 17:37 |
srichter | that might be an importing bug | 17:37 |
th1a | from wen section tries to do "from schooltool.app import membership" | 17:37 |
srichter | right | 17:38 |
srichter | schooltool.app is not imported yet | 17:38 |
srichter | so if you do "import schooltool.app", everything is fine | 17:38 |
th1a | Well, no. | 17:38 |
th1a | I get the same thing. | 17:39 |
th1a | Well, not anymore. | 17:39 |
th1a | After I restarted the interpreter. | 17:39 |
th1a | OK. That works. | 17:40 |
srichter | yep | 17:40 |
th1a | So I reviewed all my texts on adaptation, from Design Patterns on up last night. | 17:40 |
srichter | I think this is a weakness in the Python importing scheme, though it is done to import the fewest modules necessary | 17:40 |
th1a | Can I just use IRequirements itself as an adapter? | 17:41 |
srichter | no, it does not provide functionality | 17:41 |
srichter | you can call it, like this though: | 17:41 |
th1a | Or do I need to make an adapter that will adapt IRequirement to provide Section functionality. | 17:41 |
srichter | req = IRequirement(section) | 17:42 |
srichter | you then need to develop a component (be it a function or class) that does the adaptation | 17:42 |
th1a | I don't understand what that is saying. | 17:42 |
srichter | the above code snippet says, given a component that provides ISection, give me a component that provides IRequirement | 17:43 |
srichter | (btw, you really should read human.txt in zope.interface; it talks about adaptation | 17:43 |
th1a | What is req? | 17:43 |
srichter | a new variable you assign the IRequirement component instance to | 17:44 |
th1a | What is section? | 17:44 |
srichter | a component that provides ISection | 17:45 |
srichter | for example an instance of the class st.course.section.Section | 17:45 |
th1a | What would the "IRequirement component instance" be? | 17:45 |
srichter | an instance of a class that provides IRequirement | 17:46 |
srichter | that instance is probably an annotation on the course | 17:46 |
srichter | because not the section, but the course, is the requirement (may be debatable though) | 17:46 |
th1a | I'm thinking that the section is a requirement that inherits from the course. | 17:47 |
th1a | If I'm thinking of it correctly. | 17:48 |
srichter | yeah, that could be correct | 17:48 |
srichter | I thought w had examples of this int eh requirement readme | 17:49 |
th1a | Similar. | 17:49 |
th1a | So the reason I can do "req = IRequirement(section)" is because I've registered an adpater for IRequirement? | 17:50 |
srichter | yes | 17:50 |
th1a | What if I register two? | 17:51 |
srichter | in ZCML you would not be allowed doing this | 17:51 |
srichter | in plain Python the second overrides the first | 17:51 |
th1a | OK. | 17:51 |
srichter | the discriminator being the initial iface, target iface and the name | 17:52 |
th1a | So intuitively, it seems like I should be adapting ISection to implement IRequirement. | 17:52 |
th1a | But doesn't that mean I'm reimplementing all that inheritance machinery? | 17:52 |
th1a | Can I apatp IRequirement to ISection? | 17:53 |
srichter | eek, no this would be the wrong way around | 17:54 |
srichter | you want to adapt ISection to IRequirement | 17:54 |
srichter | no, you are not reinventing inheritance | 17:55 |
srichter | think about core responsibility of an object versus behavior in a system | 17:55 |
srichter | the core responsibility of a section is to know the course, have a location and time schedule, know the students and the instructors | 17:57 |
srichter | everything else has to do with system integration | 17:57 |
th1a | OK. That did seem like the natural way to do it. | 17:57 |
srichter | thus that a section is also a requirement is a system assertion | 17:58 |
srichter | that means we want to be able to adapt the section to a requirement | 17:58 |
th1a | When I say "reimplementing the inheritance machinery" I don't mean Python's, I mean Requirement's. | 18:03 |
srichter | oh, I see | 18:04 |
srichter | no, you are going to reuse the requirements base classes, so it will be all good | 18:04 |
srichter | basically you will have a requirement class isntance attached to the section via an annotation | 18:05 |
srichter | all the adapter does is get you this annotation | 18:05 |
th1a | Hm... | 18:05 |
srichter | and we implemented all this already | 18:06 |
srichter | see the section on "Requirement Adapters" | 18:06 |
srichter | all you have to do is tell your section that it implements "IHaveRequirement" | 18:06 |
th1a | Well, I want a Section to BE a requirement. | 18:07 |
srichter | but I am telling you is that this is wrong | 18:08 |
srichter | it should nto be a requirement | 18:08 |
srichter | it should adapt to one | 18:08 |
srichter | it is not one of the section's core functionalities to be a requirement | 18:08 |
srichter | what if someone wants to not have the requirement framework installed on their ST installation? | 18:09 |
srichter | the point of the CA is that we want to rid ourselves of those strong dependencies | 18:09 |
th1a | Hm. OK. Let me think about this some more. | 18:10 |
th1a | srichter: I think I see what is going on, but it is indistinguishable from magic. | 18:54 |
srichter | what part is magic? | 18:55 |
srichter | note that "IRequirement(section)" is just syntactic sugar for "zapi.getAdapter(section, IRequirement)" | 18:55 |
th1a | Yes. | 18:56 |
th1a | So if an object has IHaveRequirement marker (which I'd want to give it in ZCML), | 18:57 |
th1a | then I can easily make it behave like a requirement? | 18:57 |
th1a | I mean, | 18:57 |
th1a | there's nothing else I need to write? | 18:57 |
th1a | req = interfaces.IRequirement(section) | 18:58 |
srichter | nope | 18:58 |
srichter | the adapter is reqistered for IHaveRequirement to IRequirement | 18:59 |
srichter | if section provides IHaveRequirement, you are all set | 18:59 |
srichter | in a doctest you have to manually register the adapter though, as we did in the README.txt file | 18:59 |
th1a | Right. | 19:00 |
th1a | So... swinging back around to the original point of this line of thinking. | 19:00 |
th1a | If I want to create an evaluation for a section, the section needs to provide IHaveRequirement. | 19:01 |
th1a | And that's pretty much it? | 19:01 |
th1a | I mean, in terms of setup. | 19:01 |
srichter | yes | 19:01 |
th1a | There's more to it ;-) | 19:01 |
th1a | I mean, more to the whole system. | 19:02 |
th1a | OK. Hm... Still seems magical, but I'll take easy and magical. | 19:02 |
th1a | thanks srichter. | 19:03 |
srichter | you are welcome | 19:03 |
* jinty is amazed by the recursive checkout/build steps of the cando trunk... | 19:19 | |
srichter | :-), cool eh? | 19:20 |
srichter | eeek. I cannot get to the schooltool site anymore | 19:34 |
*** ignas has quit IRC | 19:34 | |
* jinty wants someone to start a cando sub-project! | 19:38 | |
*** vidasp has quit IRC | 19:44 | |
srichter | jinty: what do you mean by | 20:34 |
srichter | "subproject"? | 20:34 |
th1a | srichter: I'm getting the site. | 20:39 |
srichter | now I get it too | 20:40 |
jinty | srichter: so we can have a fourth level of subversion checkout/build recursion! | 20:42 |
th1a | Oh, you mean a CanDo fork? | 20:43 |
srichter | jinty: oh, I see what you mean! :-) | 20:43 |
jinty | btw, am I right in thinking that cando should have it's own i18n domain? | 20:43 |
srichter | th1a: nope, no fork | 20:44 |
srichter | jinty: absolutely | 20:44 |
srichter | th1a: a project based on CanDo | 20:44 |
jinty | th1a: more like, make cando a framework;) | 20:44 |
th1a | Ah. Excellent idea. | 20:44 |
* srichter really hopes th1a is joking or not understanding jinty's joke | 20:45 | |
th1a | What we need is a competency tracker factory factory factory. | 20:47 |
srichter | are you sure it is not a factory adapter factory? | 20:48 |
srichter | oh, I forgot, this is the same thing ... | 20:48 |
th1a | adapter factory adapter. | 20:48 |
th1a | Framework. | 20:48 |
th1a | Meta-mega-framework. | 20:50 |
srichter | mega-meta-framework-toolkit-set | 20:56 |
jinty | I know, lets start to base zope on cando! then we can have circular framework dependencies | 21:00 |
th1a | I think the inheritance system for CanDo could be a good starting point. | 21:01 |
srichter | well, it is a little bit liek acquisition | 21:03 |
srichter | except that it allows multiple inheritance | 21:03 |
th1a | What we really need is executable content as course material. | 21:04 |
th1a | Once courses can contain executable content, we can reimplement CanDo inside itself. | 21:04 |
srichter | does this make sense to any non-English majors? | 21:06 |
srichter | :-) | 21:06 |
th1a | Well, that's for the VLE extension of CanDo. | 21:06 |
srichter | Visual Library Extension? | 21:07 |
th1a | I 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 |
th1a | One guy basically wanted his lesson to be able to run some kind of Mathematica function on the server. | 21:09 |
th1a | Everyone else thought he was completely nuts. | 21:09 |
th1a | I could barely stay awake. | 21:09 |
srichter | no kiddding | 21:10 |
povbot | /svn/commits: * srichter committed revision 5397: | 23:52 |
povbot | /svn/commits: the first chapter of the documentation. | 23:52 |
th1a | Oooh! Documentation! | 23:52 |
srichter | :-) | 23:53 |
srichter | th1a: have a read | 23:59 |
Generated by irclog2html.py 2.15.1 by Marius Gedminas - find it at mg.pov.lt!