2008-07-05T00:00:41 <byegonweon> xorAxAx: some functions signature were changed. I replace startsWith with StartsWith
2008-07-05T00:00:59 <xorAxAx> ah
2008-07-05T00:01:19 <xorAxAx> and ecma mandates S?
2008-07-05T00:01:22 <xorAxAx> instead of s
2008-07-05T00:01:32 <byegonweon> yes. hehe.
2008-07-05T00:01:40 <byegonweon> isn't it funny?
2008-07-05T00:02:01 <xorAxAx> so IE conforms to the spec and has less workarounds? or did they probably write IE's implementation into the spec? :-)
2008-07-05T00:15:32 <cortana`> it's so the latter :(
2008-07-05T00:19:22 <xorAxAx> hehe
2008-07-05T00:25:34 <PawelPacana> away
2008-07-05T00:25:41 <PawelPacana> not :)
2008-07-05T00:26:00 <xorAxAx> hehe, borat
2008-07-05T01:07:10 * dennda is digging through page.py
2008-07-05T01:07:24 <dennda> could need some basic refactoring...
2008-07-05T01:07:49 <johill> it's been tried...
2008-07-05T01:08:18 <dennda> just very basic things
2008-07-05T01:09:28 <dennda> if not self._loaded: self._loaded = True; else: return => if self._loaded: return; do stuff
2008-07-05T01:09:55 <dennda> And for a moment I thought he only had set_item and get_item and no property using those
2008-07-05T01:09:55 <johill> heh
2008-07-05T01:10:10 <dennda> but I was wrong
2008-07-05T01:12:15 <dennda> johill: Is it normal that test_Page.py fails almost completely?
2008-07-05T01:12:35 <johill> in 1.8 it works iirc
2008-07-05T01:12:55 <dennda> == tests finished: 1 passed, 8 failed in 0.02 seconds ==
2008-07-05T01:13:03 <johill> I have 8 passed, 1 failed
2008-07-05T01:13:04 <johill> heh
2008-07-05T01:13:11 <dennda> oO
2008-07-05T01:13:13 <johill> oh
2008-07-05T01:13:16 <dennda> strange enough
2008-07-05T01:13:18 <johill> I'm responsible for some of those
2008-07-05T01:13:25 <johill> TypeError: evaluate() takes exactly 2 arguments (4 given)
2008-07-05T01:13:53 <johill> I changed the search.term stuff already
2008-07-05T01:13:54 <dennda> Would've been great to have some working tests when converting Page.py to the new API
2008-07-05T01:14:12 <johill> just revert a few of those changesets
2008-07-05T01:14:36 <dennda> Aren't my changes gone then, too?
2008-07-05T01:14:43 <johill> but that's the trouble, the old search.term works with the old storage
2008-07-05T01:14:50 <johill> and the new search.term works with the new storage
2008-07-05T01:15:09 <dennda> or just the folder
2008-07-05T01:15:10 <dennda> hm
2008-07-05T01:15:16 <dennda> not that helpful then
2008-07-05T01:15:18 <johill> sorry. hg calls that backout
2008-07-05T01:15:19 <dennda> but only 9 tests?
2008-07-05T01:15:42 <johill> heh
2008-07-05T01:15:55 <johill> testPageList fails here, and that's due to the search stuff, the others ought to work
2008-07-05T01:19:22 <johill> if I drop out randomly, assume I crashed my kernel :)
2008-07-05T01:20:00 <dennda> ah, misusing your computer as heater?
2008-07-05T01:20:11 <johill> nah hacking the wireless stack
2008-07-05T01:20:34 <johill> oh I managed to mess it up already! oh well, reboot it is
2008-07-05T01:21:25 <dennda> is request.cfg.data_backend already a Backend instance? I doubt it...
2008-07-05T01:31:20 <dennda> johill: What is the difference between the current revision and the "real" revision? page.py line 273
2008-07-05T01:33:07 <dennda> ah nevermind, that doesn't operate on any item object but the page class's objects itself, so I don't need to know ;)
2008-07-05T01:35:02 <dennda> def getPagePath
2008-07-05T01:35:03 <dennda> ouch
2008-07-05T01:35:18 <dennda> who says there is a path? :)
2008-07-05T01:37:28 <johill> yeah I know
2008-07-05T01:37:33 <johill> it needs to go, along with caching
2008-07-05T01:37:53 <johill> request.cfg.data_backend should be an instance, yes
2008-07-05T01:39:04 <dennda> "go" as in "be deleted"?
2008-07-05T01:39:19 <johill> yes
2008-07-05T01:39:34 <dennda> just throw it?
2008-07-05T01:39:39 <dennda> *out
2008-07-05T01:39:41 <johill> well it's needed for page caching
2008-07-05T01:39:45 <johill> and for attachments
2008-07-05T01:39:47 <johill> but yes
2008-07-05T01:39:56 <dennda> ok
2008-07-05T01:39:57 <johill> for page caching, I suggest you just use the caching framework
2008-07-05T01:40:01 <dennda> I noticed something else
2008-07-05T01:40:12 <dennda> At some point the code refers to an items mtime attribute
2008-07-05T01:40:20 <johill> and use sha1sum(itemname|output_mime_type)
2008-07-05T01:40:23 <dennda> Do we store that in metadata?
2008-07-05T01:40:25 <johill> as the cache key
2008-07-05T01:40:33 <johill> an item's mtime?
2008-07-05T01:40:35 <johill> that's news to me
2008-07-05T01:40:38 <johill> where's that?
2008-07-05T01:40:57 <dennda> sorry, a revisions
2008-07-05T01:42:21 <dennda> For getting my hands dirty: What's the easiest way to run Moin and do something with Page.py?
2008-07-05T01:42:26 <johill> oh
2008-07-05T01:42:44 <johill> a revision, yeah I think the upper layer should just store that
2008-07-05T01:42:48 <johill> ./wikiserver.py
2008-07-05T01:43:02 <johill> and stick all config into wikiconfig_local.py as described in wikiconfig.py
2008-07-05T01:43:03 <dennda> ok when will I get errors? When trying to load a page?
2008-07-05T01:43:07 <johill> yeah
2008-07-05T01:43:21 * johill reboots again
2008-07-05T01:43:24 <dennda> ok. where would I do that boilerplate "create me a bunch of items" code?
2008-07-05T01:43:39 <johill> in wikiconfig_local.py where you set data_backend = ...
2008-07-05T01:43:48 <dennda> ok, thanks
2008-07-05T01:43:51 <johill> brb
2008-07-05T01:49:28 <dennda> Is that data_backend-instance always kept alive?
2008-07-05T01:49:42 <johill> sure
2008-07-05T01:53:09 <dennda> items = self._items.iterate(filter=filter)
2008-07-05T01:53:18 <dennda> filter?
2008-07-05T01:53:36 <johill> oh well, that's search_item and iterate rolled into one
2008-07-05T01:53:48 <johill> if you do search_item(term.TRUE) that's the same as iterate really
2008-07-05T01:54:19 <dennda> ok so I will transform that to items = self._backend.search_item(term.TRUE)?
2008-07-05T01:54:26 <johill> no
2008-07-05T01:54:30 <johill> self._backend.search_item(filter)
2008-07-05T01:54:39 <dennda> ok
2008-07-05T02:02:45 <gizmach> cache = caching.CacheEntry(self.request, arena, key, scope='wiki', use_pickle=True) what key value to put to search Page <groupname>?
2008-07-05T02:04:19 <dennda> sorry, I am almost falling asleep while typing. I will get some rest now
2008-07-05T02:04:20 <dennda> good nigh
2008-07-05T02:05:02 <gizmach> gn dennda
2008-07-05T02:05:44 <johill> night
2008-07-05T02:06:09 <johill> gizmach: no idea, why do you need to know the group dict cache?
2008-07-05T02:07:24 <gizmach> johill: I need to check while instancng group object if <groupname> cache exists and is uptodate and than unpickle it from cache
2008-07-05T02:13:26 <johill> hm
2008-07-05T02:14:04 <johill> you should probably put all the caching into your own code
2008-07-05T02:14:17 <johill> or are you just asking what you should use there for caching?
2008-07-05T02:18:01 <gizmach> I will put caching into my code, I'm just asking what to put as a key
2008-07-05T02:18:05 <gizmach> argment
2008-07-05T02:18:08 <gizmach> argument
2008-07-05T02:18:50 <johill> oh ok
2008-07-05T02:18:54 <johill> sorry, misunderstood you
2008-07-05T02:19:43 <johill> not sure, it's per group page right?
2008-07-05T02:20:22 <johill> how about just key=sha1sum(groupname.encode('utf-8')), arena='groupdicts'
2008-07-05T02:20:42 <gizmach> and also for the arena, I tried to put page object (it says I can put it) @param arena: either a string or a page object but got an error
2008-07-05T02:20:45 <gizmach> johill: :)
2008-07-05T02:20:48 <gizmach> yes
2008-07-05T02:20:56 <gizmach> hope so
2008-07-05T02:20:57 <gizmach> :)
2008-07-05T02:21:00 <gizmach> we'll see
2008-07-05T02:22:45 <johill> yeah please don't use a page object for that
2008-07-05T02:22:49 <johill> we're trying to get rid of it :)
2008-07-05T02:23:06 <gizmach> johill: ok:))
2008-07-05T02:23:21 <gizmach> also are you sure for the sha1sum ?
2008-07-05T02:23:42 <johill> well it's simple, so why not?
2008-07-05T02:24:04 <johill> of course the code is really like sha.new(gropuname.encode('utf-8')).hexdigest() or something
2008-07-05T02:24:34 <johill> you can't use the page name because it can contain characters like / that the filesystem doesn't like
2008-07-05T02:24:35 <gizmach> :) sure, will try
2008-07-05T02:24:40 <johill> and quoting etc. is troublesome
2008-07-05T02:24:48 <johill> so I'd just hash it :)
2008-07-05T02:27:29 <gizmach> johill: but I already have some cached groups
2008-07-05T02:27:44 <gizmach> and just need to get them in first place
2008-07-05T02:27:53 <johill> hm?
2008-07-05T02:28:13 <johill> where did you cache them then?
2008-07-05T02:29:23 <gizmach> but when I'm instancing a group there is a possibiity that the page is cached and is uptodate and I just need to instance group object
2008-07-05T02:29:46 <gizmach> it's not always sha... for key or am I wrong?
2008-07-05T02:30:39 <johill> well you need to use the same key all the time of course
2008-07-05T02:31:09 <johill> so when you're instantiating a group and notice that the cache is stale, you just update it
2008-07-05T02:31:16 <johill> so the next time around you'll load from it
2008-07-05T02:31:37 <gizmach> johill: yes I know that and it will be easy if I got a groupname that is a page but it's not cached
2008-07-05T02:32:09 <johill> so you have groups without names?
2008-07-05T02:32:13 <johill> I'm confused
2008-07-05T02:32:21 <gizmach> sorry
2008-07-05T02:32:28 <gizmach> will try to explain better
2008-07-05T02:32:31 <johill> np
2008-07-05T02:33:16 <johill> brb, hopefully
2008-07-05T02:33:46 <johill> ok worked, back
2008-07-05T02:33:53 <gizmach> ok in one case I gave a groupname when I want to instance a group object like Group(groupname) and while done this
2008-07-05T02:34:28 <gizmach> first I check if groupname is in cache already and is it uptodate
2008-07-05T02:34:53 <gizmach> and if it is I get it from cache and put in self.group
2008-07-05T02:35:13 <johill> right
2008-07-05T02:35:19 <johill> so how do you check it's in cache?
2008-07-05T02:35:25 <gizmach> if not I need to parse groupname page
2008-07-05T02:36:18 <gizmach> well I wanted to do cache = CachingEntry(...) but I didn't know if it is a good idea
2008-07-05T02:36:44 <johill> well yeah sure that's how it works
2008-07-05T02:38:10 <gizmach> but I didn't know what to put for the key and arena because I only got a name
2008-07-05T02:38:20 <johill> right
2008-07-05T02:38:47 <johill> so as key, I'd use the sha1sum of the name, that avoids clashes and also problems with the name being invalid on teh filesystem
2008-07-05T02:39:06 <johill> and as the arena, use something specific like 'wiki-groups'
2008-07-05T02:39:13 <johill> or 'pagegroups'
2008-07-05T02:39:46 <gizmach> ok that makes sense and I will need to make other code to use it later
2008-07-05T02:40:36 <gizmach> and to have key and arena like this if I need them
2008-07-05T02:42:23 <johill> well if you cache different groups you should then probably use a different arena
2008-07-05T02:43:03 <gizmach> johill: yes true but fot the all pagegroups I need to use pagegroups arena for example
2008-07-05T02:43:11 <johill> sure
2008-07-05T02:43:16 <gizmach> s/fot/for
2008-07-05T03:00:02 <gizmach> johill: ok this will work well, only put todo not to forgot to replace it in other code related to pagegroups
2008-07-05T03:00:15 <johill> well ideally there would only be once place doing it
2008-07-05T03:00:45 <gizmach> that maybe later, just need make this work firs :))
2008-07-05T03:00:51 <johill> :)
2008-07-05T03:03:57 <gizmach> just finished my not counting anymore coffee today
2008-07-05T03:04:30 <TheSheep> gizmach: white tea, really!
2008-07-05T03:04:49 <gizmach> TheSheep: I really like it but don't have it
2008-07-05T03:05:20 <gizmach> I have a house of green tea in Zagreb and they really have great teas but I drink all I got
2008-07-05T03:14:23 <TheSheep> gizmach: btw, in Jpaan "white tea" means just boiled water :)
2008-07-05T03:14:48 <gizmach> really? didn't know that
2008-07-05T03:14:57 <gizmach> cool
2008-07-05T03:15:35 <gizmach> I heard about some tea stronger that coffee, but don't know the name
2008-07-05T03:15:53 <TheSheep> greet tea usually has more caffeine than coffee
2008-07-05T03:15:58 <TheSheep> green
2008-07-05T03:16:10 <gizmach> I like with Jasmin
2008-07-05T03:16:24 <TheSheep> chinese
2008-07-05T03:16:53 <TheSheep> "Green teas have about a third the caffeine content, by liquid volume, of coffee."
2008-07-05T03:16:56 <TheSheep> sorry
2008-07-05T03:17:06 <johill> it tastes better so you drink more ;)
2008-07-05T03:17:24 <gizmach> hehe yes
2008-07-05T03:17:29 <TheSheep> http://www.celestialseasonings.com/products/caffeine.html/authentic-green-tea
2008-07-05T03:18:32 <TheSheep> I'm basically addicted by now
2008-07-05T03:20:36 <gizmach> wohow nice
2008-07-05T03:20:50 * gizmach will try to find it
2008-07-05T03:21:24 <gizmach> but the original
2008-07-05T03:21:38 <gizmach> I saw some smoked green tea leaves
2008-07-05T03:21:47 <gizmach> or dono how to say it
2008-07-05T03:39:55 <gizmach> it there any better way to check if a groupname is in cache than self.groups = cache.update() (because here I need to deal with exceptions)
2008-07-05T03:40:04 <gizmach> not update
2008-07-05T03:40:05 <gizmach> pardon
2008-07-05T03:40:27 <gizmach> cache.content()
2008-07-05T03:41:44 <gizmach> pardon, exists :)
2008-07-05T03:48:29 <johill> just try to load, and when that fails create it?
2008-07-05T03:48:30 <johill> dunno
2008-07-05T03:48:33 <johill> not sure how it works
2008-07-05T03:53:46 <gizmach> well it has cache.exist()
2008-07-05T03:53:48 <gizmach> and it works
2008-07-05T03:54:03 <gizmach> it's ok
2008-07-05T03:55:34 <johill> yeah sure, but if you ever delete cache entries it could be racy
2008-07-05T03:55:52 <johill> you test .exists(), it returns True, somebody else deletes it, you try to access it
2008-07-05T04:07:24 <gizmach> johill: yes true :)
2008-07-05T04:11:18 <gizmach> ok it works I tried
2008-07-05T04:12:15 <johill> :)
2008-07-05T04:13:13 <gizmach> and if someon deletes it doesn't return true and it's just what I need :)
2008-07-05T04:13:31 <johill> well I was talking about the race
2008-07-05T04:13:42 <johill> where it has already returned true, but somebody deletes it right before you try to load it
2008-07-05T04:13:48 <johill> in another process or thread
2008-07-05T04:14:52 <gizmach> ah I need to check if it's uptodate or you think I need to add one try-exception block while I try to take content() ?
2008-07-05T04:15:20 <johill> well yeah you need to try-except anyway
2008-07-05T04:15:31 <gizmach> :)
2008-07-05T04:15:52 <johill> there's some lockign though
2008-07-05T04:16:08 <johill> but I don't think it covers .exist
2008-07-05T04:20:03 <gizmach> well that try - ecxept code will make code a bit ugly and need to think a bit but better to check
2008-07-05T04:44:44 <gizmach> gn
2008-07-05T04:49:57 <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4296:582620afbd1c 1.8-mercurialbackend-ppacana/MoinMoin/ (9 files in 6 dirs): Merge with 1.8-storage-cdenter
2008-07-05T08:38:51 <ThomasWaldmann> moin
2008-07-05T08:57:12 <ThomasWaldmann> johill: + password = u'ßecretß' ?
2008-07-05T09:03:25 <ThomasWaldmann> xorAxAx: there is still no reasonable comment at the top of the selection plugin
2008-07-05T09:07:24 <ThomasWaldmann> PawelPacana: try to not mix systematic cleanups with other code changes
2008-07-05T09:08:18 <ThomasWaldmann> e.g. if you e.g. change all raise Exc, "..." to raise Exc("..."), that should be in a seperate cs and not mixed with other changes
2008-07-05T09:16:39 <ThomasWaldmann> zenhase: you did not merge moin/1.8 since long
2008-07-05T09:19:22 <ThomasWaldmann> waldi: same for you
2008-07-05T09:19:30 <ThomasWaldmann> xorAxAx: same for your student
2008-07-05T09:33:01 <ThomasWaldmann> http://gpl.internetconnection.net/vi/ < finally: under GPL now! :)
2008-07-05T09:37:18 <xorAxAx> hm, no uno
2008-07-05T09:37:19 <xorAxAx> undo
2008-07-05T10:08:42 <ThomasWaldmann> only 1 item undo
2008-07-05T10:09:15 <TheSheep> infinite undo
2008-07-05T10:09:29 <TheSheep> it just undos the undo ;)
2008-07-05T10:09:33 <TheSheep> like real vi
2008-07-05T10:09:37 <ThomasWaldmann> :P
2008-07-05T10:09:41 <gizmach> moin
2008-07-05T10:09:45 <TheSheep> hi gizmach
2008-07-05T10:10:19 <ThomasWaldmann> does cursor down repeat work for you?
2008-07-05T10:10:41 <TheSheep> yes
2008-07-05T10:11:47 <TheSheep> if you mean things like 4k
2008-07-05T10:11:57 <TheSheep> holding down down doesn't work
2008-07-05T10:12:09 <TheSheep> 4j, sorry
2008-07-05T10:12:23 <TheSheep> (I always confuse it when I look(
2008-07-05T10:13:16 <xorAxAx> ThomasWaldmann: that didnt work for me either
2008-07-05T10:14:32 <ThomasWaldmann> anyway, would be nice for geeks using moin now that no strange license is in the way any more
2008-07-05T10:14:51 <ThomasWaldmann> maybe after storage merge and editor code refactoring
2008-07-05T10:42:48 <dennda> cursor repeat works here, but only with hjkl, not with arrow keys
2008-07-05T10:42:57 <dennda> anyway, that thing is nice. never seen it before
2008-07-05T10:47:12 <ThomasWaldmann> dennda: you can help getting it into moin with a good, mergeable storage thing
2008-07-05T10:47:39 <ThomasWaldmann> hacking vi.js into moin before that doesn't make much sense due to conflicts in PageEditor
2008-07-05T10:48:19 <xorAxAx> huh?
2008-07-05T11:00:39 <dennda> johill: I think I must do user.py first, because it is imported by Page.py
2008-07-05T11:01:08 <ThomasWaldmann> bbl
2008-07-05T11:02:10 <dennda> johill: In user.py there is a function called getUserList which just returns ItemCollection(request.cfg.user_backend, request).keys()
2008-07-05T11:02:48 <dennda> Do we use a seperate Backend for User storage? (I feel like we once discussed that, but I am not sure)
2008-07-05T11:07:27 <dennda> imho that makes sense
2008-07-05T11:12:39 <johill> morning
2008-07-05T11:12:59 <johill> ThomasWaldmann: that's an ß, hg just doesn't do encodings
2008-07-05T11:13:38 <johill> dennda: yeah we have a separate backend
2008-07-05T11:13:55 <johill> dennda: but you don't actually have to do user.py completely, just stub it out
2008-07-05T11:15:58 <dennda> johill: I once again stumple over something like this: identifier = ItemCollection(request.cfg.user_backend, request).iterate(filter) --- So iterate takes a filter (== searchterm), iterates over all items and returns those that match in a list? And search_item does the same? Is that correct?
2008-07-05T11:16:08 <dennda> s/stumple/stumble/
2008-07-05T11:17:39 <johill> it actually returns an iterator over those that match
2008-07-05T11:18:24 <dennda> ah ok, sure
2008-07-05T11:18:29 <johill> and yeah, sounds correct to me anyway since search_item should be an iterator iirc
2008-07-05T11:20:24 <dennda> shouldn't it be search_items rather than search_item then?
2008-07-05T11:20:40 <johill> probably, but maybe it should just not exist and iterate take the filter?
2008-07-05T11:21:30 <johill> I mean, look at http://hg.moinmo.in/moin/1.8-storage-cdenter/file/tip/MoinMoin/storage/backends/fs.py
2008-07-05T11:21:44 <johill> search_item is four lines, calling just iterate
2008-07-05T11:22:05 <johill> iteritems
2008-07-05T11:22:07 <johill> whatever
2008-07-05T11:24:46 <dennda> umm
2008-07-05T11:24:47 <dennda> user.py
2008-07-05T11:24:56 <dennda> getUserId looks broken to me
2008-07-05T11:25:24 <johill> indeed
2008-07-05T11:25:43 <johill> no wait, it seems fine, why?
2008-07-05T11:26:10 <dennda> it's just that having a return statement as only thing in a for-loop rings a bell
2008-07-05T11:26:33 <johill> oh
2008-07-05T11:26:48 <johill> well, the loop can only run once if the names are set up correctly
2008-07-05T11:26:52 <johill> and there are no duplicate names
2008-07-05T11:27:18 <dennda> ok so that's on purpose
2008-07-05T11:28:41 <johill> yeah
2008-07-05T11:30:45 * johill succeeds in rewriting the kernel's wireless virtual interface handling completely
2008-07-05T11:34:20 <dennda> congrats, whatever that means
2008-07-05T11:34:46 <johill> mostly deleting 150 lines of code out of around 500 ;)
2008-07-05T11:35:06 <johill> and making it less spaghetti
2008-07-05T11:36:31 <johill> gotta run to the post office, back in maybe 20 minutes
2008-07-05T11:36:33 <dennda> For user.py's user class, what is an `id` passed to __init__?
2008-07-05T11:36:37 <dennda> is it a number or a name?
2008-07-05T11:36:43 <dennda> ok
2008-07-05T11:41:19 <johill> it's the item's name, a string like '12345.123.9840321' or something
2008-07-05T11:41:45 <johill> as you've seen in getbyname, the username is actually stored in the 'name' metadata key
2008-07-05T11:43:32 <dennda> Well, I just wonder if I can use that id in get_item
2008-07-05T11:43:49 <dennda> sounds like "yes" to me
2008-07-05T11:57:06 <gizmach> bbl
2008-07-05T11:58:59 <johill> yes use it as the item name
2008-07-05T12:48:37 <dennda> *sigh*
2008-07-05T12:48:49 <dennda> test_user.py: 4 passed, 9 failed
2008-07-05T12:49:00 <dennda> (with a fresh clone, without having changed anything to it
2008-07-05T12:51:08 <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4292:4a79402407f6 1.8-storage-cdenter/MoinMoin/ (storage/__init__.py user.py): storage: Hooking up new storage API with existing MoinMoin-Code. Starting with user.py. Transferring constants from storage/external.py to storage/__init__.py since external.py will be removed soon.
2008-07-05T12:51:10 <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4293:67bf37273427 1.8-storage-cdenter/MoinMoin/storage/ (3 files in 2 dirs): merge
2008-07-05T12:51:36 <xorAxAx> dennda: of which repo?
2008-07-05T12:51:47 <dennda> mine
2008-07-05T12:54:30 <johill> not good, odd, I'll take a look once my router is functioning again
2008-07-05T12:56:08 <dennda> but at least with that changeset I get the same result ;)
2008-07-05T13:11:03 <gizmach> re
2008-07-05T13:12:24 <xorAxAx> moin gizmach
2008-07-05T13:12:26 <dreimark> moin
2008-07-05T13:12:40 <gizmach> xorAxAx: dreimark moin :)
2008-07-05T13:14:42 * ThomasWaldmann had spaghetti today :) (non-code ones)
2008-07-05T13:16:16 <gizmach> hehe
2008-07-05T13:16:43 * gizmach make pancakes
2008-07-05T13:16:51 <dennda> johill: If you like: I'd appreciate comments to that changeset
2008-07-05T13:17:14 <dennda> but no need to hurry, I'll try learning a bit about complexity theory now
2008-07-05T13:17:43 <johill> ok, I'm 80% done getting ipv6 to work, then I'll hvae some lunch, then I'll look
2008-07-05T13:18:11 <dennda> sweet
2008-07-05T13:19:01 * dreimark is hungry
2008-07-05T13:21:45 <dreimark> ThomasWaldmann: looks like we can do the check-in
2008-07-05T13:24:15 <dreimark> bbl 10mins
2008-07-05T13:32:14 <xorAxAx> dennda: just say that the algo is in O(2^n), thats nearly always correct
2008-07-05T13:32:37 <dennda> xorAxAx: yes, but I think they want a more precise answer
2008-07-05T13:33:54 <xorAxAx> hehe
2008-07-05T14:12:30 <dreimark> bbl
2008-07-05T14:16:01 <johill> dennda: looks ok, except that I'm not sure it's ok to return an iterator from getUserList
2008-07-05T14:20:03 <dennda> johill: Yes, I either need to make sure that it is correctly as an iterator further on (probably more efficient) or consume the iterator at once and generate a list out of it (much easier)
2008-07-05T14:20:25 <dennda> s/it is correctly/it is used correctly/
2008-07-05T14:21:32 <johill> yeah
2008-07-05T14:21:39 <dennda> I think I'll go with the latter
2008-07-05T14:21:42 <dennda> for the moment
2008-07-05T14:21:47 <johill> yeah easier for now
2008-07-05T14:22:47 <dennda> oops
2008-07-05T14:22:55 <dennda> the docstring says it returns all user ids
2008-07-05T14:23:57 <dennda> hm nevermind. I thought for a moment our iteritems iterated over Item objects
2008-07-05T14:24:03 <johill> it should
2008-07-05T14:24:11 <dennda> it doesn't in my implementation
2008-07-05T14:24:18 <johill> it does in mine, heh
2008-07-05T14:24:25 <dennda> it iterates over the ids
2008-07-05T14:24:41 <johill> wouldn't it be smarter to iterate over items so you are sure you actually get the item when you find it?
2008-07-05T14:25:36 <dennda> hm?
2008-07-05T14:26:20 <johill> if you iterate over the names you have to then look up the item by the name which can fail
2008-07-05T14:27:42 <dennda> ah I confused our "id" with the "id" term that is used in user.py
2008-07-05T14:27:49 <dennda> well yeah
2008-07-05T14:27:55 <johill> ah
2008-07-05T14:28:06 <dennda> unfortunately though that means I need to fix user.py
2008-07-05T14:28:18 <johill> only slightly
2008-07-05T14:28:56 <johill> for user in ...: do something with user
2008-07-05T14:29:00 <johill> -> for user in ...: do somehting with user.name
2008-07-05T14:29:02 <johill> at least for now
2008-07-05T14:29:20 <dennda> well we can just say iteritems() shall return an iterator over (item, item_id)
2008-07-05T14:29:28 <johill> item_id is internal
2008-07-05T14:30:09 <dennda> that doesn't touch it from outside
2008-07-05T14:30:29 <dennda> you'd need to make sure iteritems works that way when implementing a backend
2008-07-05T14:31:41 <johill> ?
2008-07-05T14:31:55 <johill> iteritems is part of the API, no?
2008-07-05T14:32:20 <dennda> yes, and?
2008-07-05T14:32:35 <johill> so how can it return item_id if that's backend-specific?
2008-07-05T14:33:17 <dennda> the backend implementor must implement iteritems, too.
2008-07-05T14:33:35 <johill> sure
2008-07-05T14:33:45 <johill> but why would the API user wnat the item_id?
2008-07-05T14:33:56 <johill> it can't do anything with it at all
2008-07-05T14:33:59 <johill> afaict
2008-07-05T14:34:51 <johill> are you confusing user.id and item_id?
2008-07-05T14:34:59 <johill> user.id is item.name
2008-07-05T14:36:39 <dennda> http://paste.pocoo.org/show/78608/ <-- ok?
2008-07-05T14:37:02 <johill> yeah
2008-07-05T14:37:08 <dennda> ok
2008-07-05T14:37:12 <johill> you can write
2008-07-05T14:37:29 <johill> return [item.name for item in request.cfg.user_backend.iteritems()
2008-07-05T14:37:31 <johill> ]
2008-07-05T14:37:38 <dennda> yeah, LC
2008-07-05T14:37:45 <johill> (and I'd call it 'item' and not 'user' so it's less confusing)
2008-07-05T14:37:50 <dennda> ok
2008-07-05T14:38:10 <johill> but yeah the idea is fine
2008-07-05T14:38:23 <johill> you probably need to change memb to return items in iteritems
2008-07-05T14:39:01 <dennda> I already created a FIXME comment
2008-07-05T14:39:04 <dennda> for the latter
2008-07-05T14:39:29 <johill> :)
2008-07-05T14:40:44 <dennda> johill: do you think it is ok to use get_item in iteritems?
2008-07-05T14:41:05 <dennda> (so: for itemname in self._itemmap: get_item(itemname)...)
2008-07-05T14:41:18 <dennda> well
2008-07-05T14:41:24 <dennda> why not (in my specific implementation)
2008-07-05T14:42:22 <johill> in memb that's probably ok yeah
2008-07-05T14:42:27 <johill> it's not thread-safe in any way anyway
2008-07-05T14:56:59 <dennda> 2.3 just isn't sweet
2008-07-05T14:59:45 <dennda> johill: does iteritems() return just an iterator or even a generator?
2008-07-05T15:01:06 <johill> mine is an iterator, and that should work
2008-07-05T15:01:18 <johill> since the old .iterate() was one
2008-07-05T15:01:25 <dennda> return [self.get_item(itemname) for itemname in self._itemmap.keys()] <-- so that is ok?
2008-07-05T15:01:38 <johill> that's a list
2008-07-05T15:01:51 <johill> it works too though
2008-07-05T15:02:08 <dennda> well you can iterate over it, too
2008-07-05T15:02:22 <johill> you can't use .next but I guess that doesn't matter
2008-07-05T15:02:27 <johill> I wrote my iteritems() as a generator
2008-07-05T15:02:44 <dennda> I do wonder what the benefit of .next() is on an iterator, if that iterator is not a generator
2008-07-05T15:02:52 <dennda> maybe I didn't understand it correctly
2008-07-05T15:03:28 <dennda> return (self.get_item(itemname) for itemname in self._itemmap.keys()) <-- I had that, but that's not available in 2.3
2008-07-05T15:04:10 <johill> why not just for itemname in ...: yield self.get_item(itemname)?
2008-07-05T15:04:33 <dennda> yeah... I am somewhat confused sometimes
2008-07-05T15:04:47 <johill> but like I said, the small differences between these are unlikely to matter much
2008-07-05T15:05:09 <johill> (until somebody starts writing code that relies on getting a list)
2008-07-05T15:05:21 <dennda> I like it to be on the safe side
2008-07-05T15:08:04 <CIA-53> Christopher Denter <moin GUESSWHAT the DASH space DASH station ROUNDTHING com> default * 4294:9d2e92ade078 1.8-storage-cdenter/MoinMoin/ (storage/backends/memory.py user.py): storage: Fix memorybackends implementation of iteritems. Returns an iterator over items now. Fix getUserList in user.py
2008-07-05T15:29:01 * johill gives up on ipv6
2008-07-05T15:29:47 <xorAxAx> johill: why is that? :)
2008-07-05T15:30:10 <johill> well I have a tunnel up
2008-07-05T15:30:12 <johill> and I have a subnet configured
2008-07-05T15:30:21 <johill> and it's properly advertised by radvd
2008-07-05T15:30:31 <johill> and I can ping within the subnet, and from the router to world
2008-07-05T15:30:40 <johill> and packets from world go to my laptop too
2008-07-05T15:30:45 <xorAxAx> so you give up on linux/ipv6? :)
2008-07-05T15:30:48 <johill> but packets from my laptop never go to world
2008-07-05T15:31:07 <johill> well to be precise just on trying to configure openwrt on a 2.4 kernel for it ;)
2008-07-05T16:31:20 <johill> oh, it actually works now
2008-07-05T17:23:40 <CIA-53> Bastian Blank <bblank@thinkmo.de> default * 3722:2271321e8903 1.8-dom-bblank/MoinMoin/converter2/creole_in.py:
2008-07-05T17:23:40 <CIA-53> Creole input converter - Simplify raw url match
2008-07-05T17:23:40 <CIA-53> MoinMoin/converter2/creole_in.py
2008-07-05T17:23:40 <CIA-53> - Remove unneeded group from raw url match.
2008-07-05T17:23:40 <CIA-53> - Merge protocols expansion.
2008-07-05T17:23:42 <CIA-53> Bastian Blank <bblank@thinkmo.de> default * 3723:837c249d6740 1.8-dom-bblank/MoinMoin/converter2/ (_tests/test_creole_in.py creole_in.py):
2008-07-05T17:23:47 <CIA-53> Creole input converter - Fix links
2008-07-05T17:23:49 <CIA-53> * MoinMoin/converter2/creole_in.py
2008-07-05T17:23:51 <CIA-53> - Merge link rules from old parser. Reduce number of cases.
2008-07-05T17:23:53 <CIA-53> - Generate urls for wiki and interwiki links.
2008-07-05T17:23:55 <CIA-53> * MoinMoin/converter2/_tests/test_creole_in.py: Fix testcase to match reality.
2008-07-05T17:28:13 <johill> dennda: if you'd merge 1.8, I think the user tests would be better
2008-07-05T17:29:14 <dennda> johill: ok, will do that
2008-07-05T17:29:28 <dennda> There should be no clashes, correct?
2008-07-05T17:29:33 <johill> don't think so
2008-07-05T17:32:18 <dennda> http://paste.pocoo.org/show/78626/
2008-07-05T17:32:21 <dennda> :/
2008-07-05T17:32:46 <johill> huh
2008-07-05T17:32:51 <johill> well I guess something changed that conflicts with the storage code
2008-07-05T17:33:29 <johill> look at the file, look for the diff3 marker and fix it up
2008-07-05T17:33:58 <johill> the result should probably be
2008-07-05T17:34:01 <johill> # exists checked to avoid creation of empty edit-log for non-existing pages
2008-07-05T17:34:11 <johill> 'last_edit_info': exists and page.last_edit(printable=True) or '',
2008-07-05T17:34:47 <johill> although that there is a workaround
2008-07-05T17:34:52 <johill> so you could remove the exists check etc too
2008-07-05T17:37:44 <dennda> later :)
2008-07-05T17:40:41 <johill> in fact, Page.last_edit does the .exists() check
2008-07-05T17:40:54 <johill> bbiab
2008-07-05T18:48:05 <gizmach> dreimark: http://paste.pocoo.org/show/78632/ take a look when you have time
2008-07-05T19:15:00 <ThomasWaldmann> waldi: there is url_schemas with schemas moin supports
2008-07-05T19:15:28 <ThomasWaldmann> waldi: and some languages have words containing a col:on
2008-07-05T20:14:07 <CIA-53> Pawel Pacana <pawel.pacana@gmail.com> default * 4297:c8d3e625ddeb 1.8-mercurialbackend-ppacana/MoinMoin/storage/backends/hg.py: (hg) get_revision(-1) support and revision number type checking
2008-07-05T20:21:09 * PawelPacana just got quite near polish-lithuanian border :>
2008-07-05T20:22:47 * johill rewrites more wireless code
2008-07-05T20:24:40 <xorAxAx> PawelPacana: gprs? :)
2008-07-05T20:36:55 <johill> apparently not in lithuania ;)
2008-07-05T20:43:39 <PawelPacana> gprs & screen
2008-07-05T20:44:18 <PawelPacana> however still in poland ;)
2008-07-05T20:45:08 <PawelPacana> next step (Vilnius) tomorrow
2008-07-05T20:45:41 <dennda> PawelPacana: does that work good?
2008-07-05T20:45:45 <dennda> talking of speed
2008-07-05T20:46:05 <PawelPacana> acceptable
2008-07-05T20:46:14 <PawelPacana> if not used in moving train
2008-07-05T20:46:32 <PawelPacana> when you loose connection frequently
2008-07-05T20:46:40 <dennda> you ssh into a screen with irssi?
2008-07-05T20:46:58 <PawelPacana> acceptable if speed ~2kB suits you
2008-07-05T20:47:22 <PawelPacana> pulling small changesets works :)
2008-07-05T20:47:39 <dennda> I meant for chatting
2008-07-05T20:48:01 <PawelPacana> dennda: yes, ssh -C
2008-07-05T20:48:33 <PawelPacana> although its much better to chat directly, not through ssh
2008-07-05T20:48:44 <johill> I always use ssh, what's wrong with that?
2008-07-05T20:49:52 <PawelPacana> i sometimes get delays on ssh when typing
2008-07-05T20:50:46 <dennda> I am here with ssh, too :)
2008-07-05T20:51:08 <dennda> But true, that cann happen
2008-07-05T20:51:47 <PawelPacana> and more data is sent, which may be significant if running out of bytes on prepaid packet
2008-07-05T20:52:25 <dennda> well, I wouldn't use my current irssi setup for that :)
2008-07-05T20:52:36 <dennda> it is a bit "pimped"
2008-07-05T20:53:14 <ThomasWaldmann> PawelPacana: will you be at conf hotel tomorrow afternoon?
2008-07-05T20:53:29 <PawelPacana> "overloaded" :)
2008-07-05T20:53:44 <PawelPacana> tomorrow? rather not
2008-07-05T20:55:10 * ThomasWaldmann and dreimark will arrive there at ~1500
2008-07-05T20:55:20 <xorAxAx> johill: there is no way to get line buffering with ssh, right?
2008-07-05T20:55:24 <xorAxAx> (like in the telnet days)
2008-07-05T20:55:35 <PawelPacana> i have to meet my tomorrows hospitalityclub host
2008-07-05T20:55:41 <xorAxAx> :-)
2008-07-05T20:56:01 <xorAxAx> PawelPacana: did you also host one yet? nobody has asked me yet
2008-07-05T20:56:58 <PawelPacana> xorAxAx: every time my room was hosting people i was away (my roommate is in HC too)
2008-07-05T20:57:09 <xorAxAx> PawelPacana: ah
2008-07-05T20:58:10 <johill> xorAxAx: actually, there is a hack, but I never managed to get it to work
2008-07-05T20:58:39 * dennda would like a moin-dev RL meeting
2008-07-05T20:59:04 <PawelPacana> xorAxAx: afaik you have to log on frequently to stay on top of the host-list
2008-07-05T20:59:35 <xorAxAx> PawelPacana: yes
2008-07-05T21:01:17 <ThomasWaldmann> dennda: that is all few months at some random conference :)
2008-07-05T21:01:30 <ThomasWaldmann> or in egypt :P
2008-07-05T21:02:00 <PawelPacana> xorAxAx: are you going to EP?
2008-07-05T21:02:18 <ThomasWaldmann> or at google :)
2008-07-05T21:02:26 <xorAxAx> PawelPacana: no
2008-07-05T21:02:53 <dennda> ThomasWaldmann: I meant a dedicated meeting :)
2008-07-05T21:03:03 <PawelPacana> xorAxAx: so you'll miss pypy sprint too
2008-07-05T21:03:11 <dennda> Only a few mentors are going to google's, no?
2008-07-05T21:03:49 <xorAxAx> PawelPacana: yes :/
2008-07-05T21:04:18 <PawelPacana> xorAxAx: i've seen your name on commits animation, btw great idea :)
2008-07-05T21:05:05 <xorAxAx> hehe, yeah :)
2008-07-05T21:06:04 <ThomasWaldmann> dennda: we can do a dedicated meeting, but the result/effort ratio compared to meeting at some conf is maybe lower
2008-07-05T21:06:21 <dennda> ThomasWaldmann: yeah
2008-07-05T21:06:44 <dennda> The only conference I am currently planning for is this years CCC
2008-07-05T21:06:48 <ThomasWaldmann> so how about 25c3? :)
2008-07-05T21:06:52 <dennda> :)
2008-07-05T21:07:40 <dennda> I missed the last two. This year there is a big fat red mark on my calendar
2008-07-05T21:08:14 <ThomasWaldmann> dennda: we could try to get a moin table in the hack center (in case they do reservations)
2008-07-05T21:08:47 <dennda> ThomasWaldmann: I'd first try to get a place to sleep and worry about that later :)
2008-07-05T21:08:55 <dennda> but yeah
2008-07-05T21:09:02 <ThomasWaldmann> problem is it is getting more and more crowded there each year
2008-07-05T21:09:07 <dennda> I have never been there before. No idea how large those halls are
2008-07-05T21:09:58 <dennda> (Oh and I am planning for Ubucon if there's no exam around that date)
2008-07-05T21:10:01 <ThomasWaldmann> seats, power and working wlan are a scarce ressource there :)
2008-07-05T21:10:27 <dennda> Bring your own router and power supply %-)
2008-07-05T21:12:04 <ThomasWaldmann> goettingen is not quite around the corner from here, but doable
2008-07-05T21:12:19 <dennda> I have visited a friend of mine there a few months ago
2008-07-05T21:12:34 <dennda> My ex-girlfriend drove the car (after having just received her license)
2008-07-05T21:12:41 <dennda> Was quite a nightmare
2008-07-05T21:13:05 <johill> what, nobody has done pypy/ppc for 5 months?
2008-07-05T21:14:11 <xorAxAx> "pypy/ppc"?
2008-07-05T21:14:19 <johill> pypy/jit/codegen/ppc/
2008-07-05T21:14:30 <xorAxAx> thats the jit, thats kind of stalled anyway
2008-07-05T21:15:18 <xorAxAx> when is ubucon, dennda?
2008-07-05T21:15:29 <dennda> 17., 18., 19. of october
2008-07-05T21:15:31 <dennda> ubucon.de
2008-07-05T21:15:53 <johill> all those userspace conferences ;)
2008-07-05T21:16:08 <dennda> johill you are a little princess :)
2008-07-05T21:16:39 <dennda> I enjoyed last year
2008-07-05T21:16:44 <PawelPacana> dennda: is it german speaking?
2008-07-05T21:16:44 <dennda> (Had a talk myself :/)
2008-07-05T21:16:51 <johill> :)
2008-07-05T21:17:05 <dennda> PawelPacana: Yes, it was. (I am not in the orga-team due to soc anymore)
2008-07-05T21:17:23 <dennda> But there is no reason not to accept english talks if you want to give one :)
2008-07-05T21:19:14 <PawelPacana> dennda:are you going to meet socers @google somewhere
2008-07-05T21:19:18 <PawelPacana> ?
2008-07-05T21:20:42 <xorAxAx> dennda: sounds doable and göttingen is where my sister lives
2008-07-05T21:20:49 <xorAxAx> dennda: so i could even camp in her room :)
2008-07-05T21:21:54 <dennda> PawelPacana: Hu? Am I going to google? Not that I know :)
2008-07-05T21:22:07 <dennda> xorAxAx: you could fetch johill as well :)
2008-07-05T21:23:19 <johill> my brother is there
2008-07-05T21:23:26 <dennda> heh
2008-07-05T21:23:30 <xorAxAx> hehe
2008-07-05T21:23:49 <johill> so I could stay at his place
2008-07-05T21:24:11 <xorAxAx> johill: those ar ethe most boring days in the year for a student - the start of the winter semester :)
2008-07-05T21:24:25 <xorAxAx> so it seems to match it
2008-07-05T21:24:45 <johill> october 19 is my g/f's birthday tho
2008-07-05T21:26:04 * johill looks for more wireless devices
2008-07-05T21:26:41 <ThomasWaldmann> dennda: if you'ld like it to happen at ubucon, make a page on the moin wiki
2008-07-05T21:27:05 <dennda> ThomasWaldmann: Let me check my exams around that date first
2008-07-05T21:27:07 <dennda> Then I will
2008-07-05T21:27:22 <xorAxAx> johill: 3 days at the same conference suck anyway
2008-07-05T21:27:23 <dennda> Would byte myself if I kicked it off and can't manage to get there :)
2008-07-05T21:27:50 <johill> xorAxAx: heh
2008-07-05T21:28:47 <johill> OLS is a whole _week_
2008-07-05T21:29:11 <dennda> But it's definitely not userspace
2008-07-05T21:29:20 <johill> heh actually that's not strictly true
2008-07-05T21:30:02 <johill> there's "Audio streaming over Bluetooth" for example which is quite a userspace thing iirc
2008-07-05T21:30:14 <johill> "Creating your own (Fedora) Distribution"?!
2008-07-05T21:30:38 <ThomasWaldmann> yeah, we need more distributions :P
2008-07-05T21:30:54 <johill> for sure!
2008-07-05T21:31:13 <ThomasWaldmann> ODPG
2008-07-05T21:31:49 <ThomasWaldmann> (one distribution per geek :)
2008-07-05T21:32:41 <johill> 'Coding Eye-Candy for Portable Linux Devices'
2008-07-05T21:32:51 <johill> hopefully not kernelspace either ;)
2008-07-05T21:33:18 <xorAxAx> sure
2008-07-05T21:33:20 <xorAxAx> framebuffer
2008-07-05T21:33:25 <xorAxAx> qtopia et al.
2008-07-05T21:41:07 <dennda> johill: besides, there was a talk "kernelprogrammierung" last year
2008-07-05T21:43:46 <johill> :)
2008-07-05T21:43:54 <johill> I could probably give one on wireless if anyone cares
2008-07-05T21:44:11 <dennda> CfP is active atm as far as I can tell
2008-07-05T21:44:41 <xorAxAx> johill: sounds cool
2008-07-05T21:45:18 <dennda> What distro do you use, actually?
2008-07-05T21:47:37 <johill> me?
2008-07-05T21:47:41 <johill> ubuntu's upstream ;)
2008-07-05T21:47:42 <dennda> yes
2008-07-05T21:47:53 <dennda> ic
2008-07-05T21:48:15 <dennda> stable?
2008-07-05T21:48:24 <johill> unstable & experimental
2008-07-05T21:48:32 <dennda> ok
2008-07-05T21:52:23 <dennda> I am quite a fan of arch since some time. Have that as dual-boot
2008-07-05T22:07:52 <dennda> irssi fuckes up
2008-07-05T22:07:57 <dennda> -e
2008-07-05T22:13:20 <gizmach> dennda: if u are comming to ccc maybe we see each other, I plan it too
2008-07-05T22:13:23 <gizmach> and re
2008-07-05T22:14:12 <xorAxAx> cool gizmach
2008-07-05T22:14:17 <xorAxAx> i might have time as well
2008-07-05T22:14:33 <gizmach> nice
2008-07-05T22:20:36 <dennda> hungary, correct?
2008-07-05T22:21:07 <xorAxAx> no
2008-07-05T22:21:23 <xorAxAx> dennda: next guess please
2008-07-05T22:21:31 <dennda> croatia?
2008-07-05T22:21:38 <dennda> she's on #ubuntu-hr :)
2008-07-05T22:22:31 <xorAxAx> better
2008-07-05T22:22:53 <gizmach> dennda: ;)
2008-07-05T22:22:54 <dennda> yeh, that was my first guess but that #ubuntu-hr distracted me
2008-07-05T22:23:07 <gizmach> hr = hrvatska (croatia)
2008-07-05T22:23:51 <dennda> ic
2008-07-05T22:24:09 <dennda> I thought it was hungary
2008-07-05T22:24:40 <gizmach> dennda: it confused most of people
2008-07-05T23:22:33 <mmihaljevic> network crushed
2008-07-05T23:44:48 <dreimark> re
2008-07-05T23:45:18 <dreimark> mmihaljevic: I will read tom.
2008-07-05T23:47:10 <mmihaljevic> dreimark: ok
2008-07-05T23:50:45 <dreimark> good night
2008-07-05T23:51:00 <dreimark> my journey starts at 6:10
2008-07-05T23:51:05 <mmihaljevic> gn dreimark , have a nice time
2008-07-05T23:51:23 <dreimark> thx
2008-07-05T23:58:16 <ThomasWaldmann> gn dreimark
2008-07-05T23:58:22 <ThomasWaldmann> see u tomorrow
MoinMoin: MoinMoinChat/Logs/moin-dev/2008-07-05 (last edited 2008-07-04 22:15:02 by IrcLogImporter)