IRC log of #schooltool for Monday, 2006-01-16

*** ignas has quit IRC01:04
povbot/svn/commits: * srichter committed revision 5631:01:50
povbot/svn/commits: - Make tests more reliable by sorting by title.01:50
povbot/svn/commits: - Create a testing module that contains all the necessary setup for01:50
povbot/svn/commits: requirement and evaluation related tests.01:50
povbot/svn/commits: * srichter committed revision 5632:04:35
povbot/svn/commits: Solidify tests by making sure the sorting order is right.04:35
povbot/svn/commits: * srichter committed revision 5633:04:39
povbot/svn/commits: Implemented documented API. Next step, browser code.04:39
*** th1a has joined #schooltool07:27
*** jinty has joined #schooltool08:58
povbot/svn/commits: * jinty committed revision 5634:09:25
povbot/svn/commits: Make the test for dependencies sneaking into schooltool minimal a little stronger.09:25
povbot/svn/commits: * jinty committed revision 5635:09:27
povbot/svn/commits: Exclude that recently snuck in.09:27
*** vidasp has joined #schooltool11:24
*** Aiste has joined #schooltool11:29
*** jinty has quit IRC11:34
*** jinty has joined #schooltool11:52
*** Aiste has quit IRC11:53
*** thisfred has joined #schooltool12:47
*** mgedmin has joined #schooltool12:51
*** ignas has joined #schooltool13:12
*** alga has joined #SchoolTool13:20
*** jinty has quit IRC14:52
*** tiredbones has joined #schooltool15:09
tiredbonesIs there a meeting today :)15:10
srichterin 1:19 hours15:11
tiredbonesThanks srichter.15:11
mgedminjust enough time to grab a snack15:18
*** jinty has joined #schooltool15:31
srichtermgedmin: are we using the pluggable traverser for browser paths too, already?15:34
mgedminI think so15:35
mgedminthe attendance form traverser was a plugin like that before I refactored it away15:35
*** mgedmin has quit IRC15:35
srichterok, cool15:38
srichterbecause I want to use it for the gradebook too15:38
srichterwe really need to propose adding this to the Zope core15:39
srichterit would make the traverser extension truly easy and dynamic15:39
*** alga has quit IRC15:39
*** jinty has quit IRC15:49
*** jinty has joined #schooltool15:50
*** ignas has quit IRC15:53
*** mgedmin has joined #schooltool15:55
mgedminsrichter, I think I had some reservations about the current traverser plugin design15:57
mgedminlet me try to remember...15:58
mgedminI think you cannot say '404 not found' in a traverser plugin, 'cause that causes all the other plugins to be tried15:59
mgedminI don't remember; I think alga stumbled on something like this15:59
srichterwell, it only looks for not found16:00
srichterbut that's correct, since the plugins also fulfill the traverser API16:00
srichterso you could raise another error and not everything will be tried16:00
srichterbut note that the list of traversers is usually very small16:01
srichterif there are 5 then that's usually excessive16:01
srichterwe are using the pluggable traverser already and I think we have not seen any performance hits16:01
mgedminah, alga had a view with the same name as the traverser16:03
mgedminso if the traverser raised NotFound, the infrastructure would find the view and call it16:03
mgedminand the view expected some attributes to be set by the traverser16:03
mgedminanyway, that whole contraption wasn't nice and I refactored it away16:03
srichterok, I think I am ok with not covering that case :-)16:04
srichterbtw, I would really like to switch back to the Zope 3 trunk for development ;-)16:05
*** jinty has quit IRC16:09
*** jinty has joined #schooltool16:10
mgedminyou scared jinty away by saying things like that!16:10
mgedminoh, he's back16:10
th1asrichter:  What?16:11
srichterI wish we could use the Zope 3 trunk to develop SchoolTool16:11
th1aAny particular reason?16:11
*** ignas has joined #schooltool16:11
srichteryep, because I can fix bugs and tests and misfeatures while working on SchoolTool16:12
srichterfor example, I want to use optionstorage, which is a reimplementation of my managable vocabulary16:13
srichterbut it is not tested and needs some refactoring, headers, etc.16:13
srichterI would do this right now (it'f faster than developing it from scratch), but I can't because I cannot do this type of work on a Zope 3 branch16:14
*** alga has joined #SchoolTool16:21
mgedminthe food is here16:23
*** jinty has quit IRC16:28
*** alga has quit IRC16:30
*** alga has joined #SchoolTool16:30
th1aHi everyone.16:31
th1aI'll start with a little news.16:31
th1aAfter a bit of a delay, Mark has finally approved the plan to hire Infrae, so hopefully we'll be working out the rest of the details ASAP, and they'll be working on SchoolTool soon.16:32
* thisfred hopes so too ;)16:33
th1aOh yes, I keep forgetting that thisfred is Eric.16:33
th1aHi thisfred.16:33
thisfredhiya :)16:34
thisfredsry to barge in, but the name infrae is in my ping list ;)16:34
th1aNo problem ;-)16:34
tiredbonescold coffee does not task good!16:34
th1aSecond bit of good news is that the International Institute for Educational Planning, which is part of UNESCO, has invited Helen King (from TSF) and I to Paris to give them a presentation on SchoolTool.16:35
thisfredI hope I get to work on schooltool, but it may be someone else here. At least I'll be closer to the fire16:35
algawoohoo, welcome on board guys!16:35
th1aI'm just hoping Infrae hasn't gotten a bunch of other work in the past month.16:36
th1aIIEP website:
thisfredalga ty16:37
thisfredth1a: it's busy enough here, but afaik schooltool work was sort of factored in16:38
th1aIIEP trains lots of educational administrators and leaders around the world, and one of their emphases is developing effective data collection and analysis.16:38
algath1a: what are the possible perspectives with IIEP?16:38
th1athisfred:  I hope so.16:38
th1aBasically, they could train lots of people in the developing world to use SchoolTool.16:39
algaso, more users, but not any more funds :-(16:39
th1aIt would also push the whole project forward in terms of looking for new sources of funding.16:39
*** ignas has quit IRC16:39
*** ignas has joined #schooltool16:39
th1aI have no idea if they would directly fund SchoolTool.16:40
th1aI haven't spent serious time looking for other funding until we get to 1.0.16:40
th1aOnce we have a product in the can, the perspective will change a bit.16:41
th1aSo I'll be in Paris on Feb. 22nd.  I don't think I'll make it all the way over to Vilnius for a visit, though.16:42
th1aHopefully I'll make it to Rotterdam, though.16:43
th1aOK... that's my report.16:43
th1aHow have things been going in Vilnius?16:43
mgedminthe homeroom story is done16:44
mgedminwe're fixing some bugs with timetables and timezones16:44
*** ignas_ has joined #schooltool16:44
*** ignas has quit IRC16:44
mgedminand starting to attack the homeroom attendance form16:44
mgedminignas had some questions he wanted to ask you about attendance logging16:45
th1aI was wondering what he wanted to ask.16:45
ignas_will a simple text file be enough ?16:45
th1aJust like a regular logfile.16:45
ignas_that's it ;)16:46
mgedminwhat's happening with sample data for attendance?16:46
mgedminaccording to the proposal we were supposed to do it16:46
mgedminbut I've heard sounds of you working on that16:46
th1aI've got some code that does the first part, but was ultimately defeated by the test setup.16:47
th1aIt has lots of moving parts.16:47
th1aI should probably just send you the code I've got.16:48
algaWelcome to our world ;-)16:48
th1aCan you explain the nature of the timezone bugs to me?16:49
th1aIs it consistently the same kind of bug in different places?16:49
mgedminmore or less16:49
mgedmintimetable data has no timezoneinfo whatsoever16:49
mgedmincertain parts of the code just attached UTC as the timezone for timetable events16:49
mgedminother parts, I think, used to attach the user's preferred timezone instead16:50
th1aSo just an incomplete transition to timezones?16:50
mgedminit was all very not funny16:50
mgedminyou used to get jumping events, and the period names in the sidebar wouldn't match timetable events16:50
ignas_th1a, not just incomplete, just plainly wrong sometimes ...16:50
ignas_but fixable ...16:50
ignas_i got timetablegrid/ timetable events working on firday16:50
ignas_no tests yet16:50
mgedminpytz also has some gotchas, such as you can't reliably take a datetime object and say dt.replace(tzinfo=newtimezone)16:51
mgedminor pass tzinfo as an argument to datetime.datetime()16:51
mgedminyou have to use mytimezone.localize(naive_datetime)16:51
ignas_at the moment i am going to use the Application Preferences timezone as the timezone for timetables16:51
srichtermgedmin: a little help on this would be nice, so that I know how to create datetimes properly16:52
ignas_which means that if your school will move to australia you will have to update application preferences and lessons will be starting at 8:0016:52
th1aWe really need to assign a timezone to the site, however, right?16:52
mgedminsrichter, there is one rule: always use tzinfo.localize() for converting naive datetimes to tzaware datetimes16:52
th1aWe don't do that now, do we?16:52
mgedminit is documented in pytz's README16:52
mgedminbut a bit hard to find16:53
srichtermgedmin: what if I want to store now()16:53
srichterright now I say:16:53
mgedminsrichter, do utc.localize(datetime.datetime.utcnow())16:53
srichterdt = datetime.datetime.utcnow()16:53
mgedminalthough datetime.datetime.utcnow().replace(tzinfo=utc) also works16:53
ignas_srichter, and you should remember that there are two timezones - one is from the "user preferences" and another is from the "app preferences"16:53
mgedmin'cause UTC has a constant UTC offset16:53
srichterI see16:54
ignas_srichter, sometimes you need one, sometimes you need another ...16:54
mgedminthe problem is with timezones that use daylight savings time and/or change the utc offset historically16:54
srichteroh, I see16:54
mgedminday boundaries are also tricky to get right16:55
th1aignas_:  So we do have an app preference for timezone now?16:55
ignas_th1a, yes16:55
mgedminusing might not match the user's timezone, or the system-wide site timezone16:55
th1aI'd assume that timetables are always in the app timezone then.16:55
mgedminth1a, yes16:55
ignas_th1a, not yet ;) working on it v...16:55
mgedminth1a, and if you change the app timezone in the middle of the year, the timetable will shift16:55
mgedminignas_, are there any remaining bugs?16:56
ignas_mgedmin, it is not in the reopsitory yet ...16:56
mgedminthe fixed code is there, in an XXX comments16:56
th1amgedmin:  Like for daylight saving time?16:56
mgedminstill waiting for a unit test16:56
mgedminth1a, no, DST is part of the timezone info16:56
mgedminwe're talking about magically transporting the whole school to a different geographical location16:57
th1aIf a person goes on a trip, do they change their timezone in the app?16:57
mgedminso if you say that lesson 1 starts at 9 AM16:57
mgedminand then you notice that you had forgotten to set the site-wide tz16:57
mgedminand the event happens in the middle of the night16:57
mgedminyou can go fix the tz setting16:57
mgedminand the lesson will start at 9 AM in your timezone16:57
mgedminif a person goes on a trip, he can change their timezone16:58
mgedmin(or she)16:58
th1aWe can't actually set the timezone of individual events yet, right?16:58
th1aWhich is what you want it you have a meeting in a different timezone.16:59
mgedmin(although there are no fundamental obstacles for that)16:59
mgedminit's mostly a matter of adding the user interface16:59
th1amgedmin:  That's good.16:59
th1amgedmin:  What's your target for finishing the contract?17:01
mgedminjan 30, iirc17:01
th1aOK.  Any other news, problems, etc. in Vilnius?17:02
mgedmin is news, but it is not related to schooltool17:03
th1aI saw that you had done some more work on it.17:03
th1aOK.  Moving on... How have things been coming srichter?17:04
srichteras you saw in the checkin messages, I finished the Python API for the gradebook17:05
srichterI also massively improved the performance of the evaluations collection17:06
srichterby keying the evalautions not on the name, but on the requirement17:06
th1aCan you explain that a bit more?17:07
srichterbefore, IEvaluations was a simple container from evaluation name to evaluation17:07
srichterthis did not really work well, because every time you want to look up an evaluation for a requirement, you basically have to search the entire container17:08
srichterthis is of course O(log(N))17:08
srichterthis is of course O(N)17:08
th1aWhat do you mean by "keying the evaluations on the requirement?"17:08
srichterso, even overriding a simple storage took me effectively 3*O(N)17:09
srichterIEvaluations (and any other container) are mappings17:09
srichterthey have a key and a value17:09
srichter(the most common implementation of a Python mapping is the dict object)17:09
srichternow, the IContainer API mandates the key to be a unicode string17:10
srichterthe key in the container is known as the name17:10
srichternow, naturally evaluations do not have names17:11
srichtereven beofre, we sprang through hoops to create a name for the evaluation17:11
srichterhowever, the by far most common query is to look up the evaluation by requirement (note that IEvaluations is already student specific)17:11
* mgedmin shudders to remember the "names" used by schooltool.level: str(time.time())17:11
th1aOh... but does this mean you can only have one evaluation per requirement?17:12
srichterthus I decided not to implement the IContainer API, but simply the IMapping API17:13
srichterth1a: yep17:13
th1aHm... on one hand, YAGNI.17:14
th1aOn the other hand, we will need it eventually.17:14
srichterfor what?17:14
th1aYou'd never need it in a gradebook.17:15
th1aBut in doing performance assessment, you'll assess the same standard multiple times...17:15
th1aAlthough, hm...17:15
th1aI guess I'll have to think about this a bit.17:16
srichterbut Paul clearly said they do not keep track of this right now17:16
srichterand when they do he can either (a) write a more complex evaluation object or (b) implement an archive adapter17:16
th1aAs long as you have some idea of how to do it.17:17
srichterany way you take it, nothing would justify the overhead right now17:17
srichteranything is possible with adapters17:17
th1aOK, as long as we aren't completely boxing ourselves in to one evaluation per adapter.17:17
th1aper requirement.17:17
srichterbut I think we are easily talking here about an improvement from sample data generation taking minutes or hours to seconds17:18
srichterit is really much, much more efficient right now17:18
th1aOK.  You've convinced me ;-)17:18
mgedminseconds sounds good17:19
*** Aiste has joined #schooltool17:19
th1amgedmin:  Wait till you guys start generating attendance sample data.17:19
th1aIt is fun.17:19
srichterfor the sample data, grades grow alomost as fast as attendance objects17:19
th1aalga:  You may have to go buy more memory.17:20
srichterbecause they are both student*section*(activities or days)17:20
* mgedmin now has 1 GB of RAM17:20
algaWe have just upgraded to 1G with Marius17:20
algawe can always revert to IceWM from Gnome...17:21
th1aI think about 3G would be recommended.17:21
th1aWell, I guess I tried to do it without doing periodic database commits.17:21
th1aFor that, you'd need about 3G I think.17:21
th1aSo I don't recommend that approach.17:22
algaWe need an option to scale down the sample data17:22
mgedminor make the storage more compact17:22
algaeven reducing the number of students alone 10-fold would be adequate17:22
mgedmina OOBTree that stores tuples, with nonpersistent AttendanceRecord classes constructed on the fly as proxies?17:23
th1adefinitely need to make the storage more compact.17:23
algamgedmin: in order to optimize the data you need a working system!17:23
mgedminwe already have it, no?17:23
th1aWe need a full size working system.17:23
algawith sample data, no17:23
algath1a: eventually, yes17:23
srichtermgedmin: you could always write your own __reduce__ method17:24
srichterso I agree a global, nonpersistent class is the way to go17:25
srichterI am thinking that we will eventually want that for scoresystems as well17:25
mgedminlevels, iirc, was another thing that ate a lot of time for sample data generation17:26
mgedminI don't think we measured memory usage17:27
mgedminI remember seeing a tool that listed largest objects in zodb17:27
mgedminwith results something like "83% of space is used by 346663332 instances of FooClass"17:27
srichterthat would be cool to see17:28
th1aI'm not very worried about how long sample data generation takes.  I guess 10 minutes is probably a good target once we get into attendance & gradebook.  As long as we don't eat memory and explode the database.17:28
srichteryeah, in general I think we should slowly start to think about optimizations17:28
th1aOK.  Anything last words before our time is up?17:29
th1aLet's have a productive week!17:31
* th1a bangs the virtual gavel.17:31
*** Aiste has quit IRC17:35
*** ignas_ has quit IRC17:50
*** mgedmin has quit IRC17:54
*** mgedmin has joined #schooltool18:20
*** ignas_ has joined #schooltool18:24
*** alga has quit IRC18:25
*** alga has joined #SchoolTool18:29
povbot/svn/commits: * srichter committed revision 5636:18:30
povbot/svn/commits: Code cleanup.18:30
povbot/svn/commits: * srichter committed revision 5637:18:30
povbot/svn/commits: Oops, got an implemented interface wrong.18:30
povbot/svn/commits: * srichter committed revision 5638:18:33
povbot/svn/commits: Developed and implemented category dictionary using option storage. I think over time option storage will proof itself very useful for other settings.18:33
povbot/svn/commits: * srichter committed revision 5639:18:38
povbot/svn/commits: Started some system integration. No worry, nothing is hooked up yet.18:38
algafeeling productive today, huh? ;-)18:39
* mgedmin is trying to figgure out the difference between homeroom attendance form and the realtime attendance form18:44
mgedminthe only difference seems to be that the teacher is not allowed to mark tardies18:44
mgedminthe sparkline might be different too18:45
srichteralga: yeah, I am in a good mode right now18:49
srichterit's nice to implement a topic that is well-understood for a change :-)18:49
srichtermgedmin: alga: th1a: ignas_: btw, what do you guys think about starting to use zope.formlib?19:07
srichterworth it?19:07
srichterI have tried a couple of views for another project using formlib and I liked it19:08
srichteralso, any comments on switching back to the trunk of Zope 3?19:08
mgedminI have not tried zope.formlib yet19:16
mgedminI have heard good things about it19:16
mgedminI have thought bad thoughts about
mgedminis zope.formlib bundled with zope 3.2?19:16
mgedminre trunk vs 3.2: I defer to jinty's judgement here19:16
mgedmin('cause I don't want to be the packager again)19:17
mgedmintrunk is nice for development, but not so nice for deployment19:17
srichter(to zope.formlib)19:18
srichterthe approach zope.formlib is very nice and easy to work with; very pythonic19:19
srichterit still feels a bit like the wild west; it was not developed in a test-driven manner and code seems a bit inconstistent19:19
srichterThe great thing is that it is super easy to write display and edit forms using the same view class, just by switching a flag.19:20
*** vidasp has quit IRC19:39
*** alga_ has joined #SchoolTool19:57
*** alga_ has quit IRC19:57
*** thisfred_ has joined #schooltool20:15
*** erchache has joined #schooltool20:23
erchachewhat happs with linguaplone?20:24
algapara bailar la bamba!20:26
erchachealga: hablas espaƱol?20:27
algatrying to learn ;-)20:27
erchacheanybody talk about linguaplone devmeeting today?20:27
algadon't remember anything like that20:28
alganope, noone talked about linguaplone20:28
erchacheok...thanks for information20:29
erchachei want to translate web content into spanish....and with linguaplone looks very very easy....too easy to add a product to plone server20:30
*** thisfred has quit IRC20:33
erchachewell....bye....i have a horrible work day today20:35
erchachefucked backup!20:35
*** erchache has left #schooltool20:35
*** jinty has joined #schooltool20:40
th1amgedmin: I think the form for homeroom is exactly the same from the teacher's point of view.20:41
th1aIt just creates a day absence/tardy rather than a period absence/tardy.20:41
mgedminth1a, what does the sparkline show?20:41
mgedminusually it shows the attendance of the section20:42
mgedminin a homeroom form we also have a section20:42
mgedminshould it show the same sparklane, but from day attendance?20:42
th1aWell... I suppose it should show day attendance and tardies.20:43
th1aOr perhaps it is ok to make it exactly the same.20:43
th1aI think you should make it exactly the same.20:43
srichtermaybe a different color?20:44
th1aIt is essentially showing the same information.20:44
*** alga has quit IRC20:58
*** thisfred_ has quit IRC20:59
povbot/svn/commits: * srichter committed revision 5640:21:21
povbot/svn/commits: Implemented category management view.21:21
povbot/svn/commits: Hooked up ZCML.21:21
mgedminsrichter, I see a new DeprecationWarning in schooltool/gradebook/browser/ line 1921:55
mgedmin"Automatic translation of message id's is deprecated and will be removed in 3.3."21:55
*** ignas_ has quit IRC21:55
povbot/svn/commits: * mg committed revision 5641:21:56
povbot/svn/commits: TimetableCalendarEvents now have day_id, and BaseTimetableModel now has an isolated unit test for its createCalendar method.21:56
srichterit's fixed in the next checkin which might take a while, but it's addressed22:03
mgedminbtw, what do you think about storing i18n.Message objects in the ZODB?22:05
srichterthat's difficult, but without negative arguments: good22:06
povbot/svn/commits: * mg committed revision 5642:22:36
povbot/svn/commits: Make the attendance form distinguish homeroom from normal section meetings.22:36
povbot/svn/commits: Currently this knowledge isn't used for much (just for the form title).22:36
mgedminwhoa, what a nice test failure:
mgedminand buildbot attributed it to me23:08
mgedminth1a, the attendance form now distinguishes homeroom meetings from regular section meetings, and stores its data accordingly23:14
povbot/svn/commits: * mg committed revision 5643:23:14
povbot/svn/commits: The realtime attendance form now manipulates day attendance records when the section meeting occurs on a homeroom period.23:14
mgedmincould you test it a little bit?23:14
mgedmindoes it do what you want?23:14
mgedmindoes it show status the way you want it?23:14
mgedminI expect at least the sparkline will need some modifications23:14
povbot/svn/commits: * mg committed revision 5644:23:21
povbot/svn/commits: Sometimes doing nothing may take 0.010000000000019327 seconds instead of 0.0.23:21
*** ignas has joined #schooltool23:21
mgedminsee ya23:21
*** mgedmin has quit IRC23:21
*** ignas has quit IRC23:22
*** ignas has joined #schooltool23:39

Generated by 2.15.1 by Marius Gedminas - find it at!