incubator-allura-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Stefano Invernizzi <stefano.invernizz...@gmail.com>
Subject Re: User stats and organizations
Date Wed, 13 Mar 2013 00:37:13 GMT
Thank you for fixing the error related to SVN! We did not focus on errors
from other tests, because we had some problems in running them even in the
versions of the code which don't include our package. However, we have now
figured out that we should take more care of it.
Some of the errors we had were related to the fact we didn't have IPython
and SQLAlchemy. Should we add them to the requirements-common file? I
realized we only have them in requirements-sf.
For what concerns the issues related to the session flush, I thought it was
safer to have it within the code, but I was probably wrong and, as you
said, it's probably useless to have an explicit flush. I removed it and
everything still works, and tests are now successful. I was thinking about
whether the failure we got was revealing some other issue, but I don't
think so.
Anyway, I run all the the tests of all the packages and everything looks
fine now. Obviously, if there is something wrong in these fixes, let us
know about it and we'll do our best to improve it.
Thanks again for helping us to improve our code!
Stefano


2013/3/12 Tim Van Steenburgh <tvansteenburgh@gmail.com>

> Hey guys,
>
> A couple things:
>
> 1. I force-pushed a fix for the failing SVN test.
> 2. About your latest fix for the session flush failure: I think we may
> want to dig deeper on this one. The Ming Session represents the collection
> of objects that Ming knows about, be they new, updated, or deleted. When a
> flush happens, Ming iterates through the objects in the Session and applies
> them to the mongo - creating new documents, updating documents, deleting
> documents. More specific to this code, if session(user) -> None, it means
> that Ming doesn't know about that user, which is worrisome at best. Another
> thing to note is that Allura uses some Ming middleware to issue a flush at
> the end of each web request, so explicit flushes in user-code are often not
> necessary at all.
> 3. After fixing the SVN test, I discovered that many ForgeTracker tests
> are failing now too, possibly related to the issue above. This needs to be
> investigated as well.
>
> Please have a look and see what you can do. If you get stuck or need more
> help, feel free to post back here.
>
> Tim
>
>
> On Saturday, March 9, 2013 at 10:35 AM, Stefano Invernizzi wrote:
>
> > Great! The error should be fixed now. Thank you very much!
> > Stefano
> >
> >
> > 2013/3/8 Tim Van Steenburgh <tvansteenburgh@gmail.com (mailto:
> tvansteenburgh@gmail.com)>
> >
> > > Okay, that seems to be working now. Things are looking pretty good -
> > > getting close to merging! I decided to run the tests one more time,
> and hit
> > > an error. If you guys can get the tests passing, I think we'll be
> ready to
> > > merge.
> > >
> > > ======================================================================
> > > ERROR:
> > >
> allura.tests.unit.test_post_model.TestPostModel.test_that_it_can_be_approved
> > > ----------------------------------------------------------------------
> > > Traceback (most recent call last):
> > > File
> > >
> "/var/local/env-allura/lib/python2.7/site-packages/nose-1.1.2-py2.7.egg/nose/case.py",
> > > line 197, in runTest
> > > self.test(*self.arg)
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/tests/unit/test_post_model.py",
> > > line 18, in test_that_it_can_be_approved
> > > self.post.approve()
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/model/discuss.py",
> > > line 575, in approve
> > > self.commit()
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/model/artifact.py",
> > > line 382, in commit
> > > self.type_s, self.mod_date, self.project, c.user)
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/eventslistener.py",
> > > line 41, in newArtifact
> > > self.__iterate('newArtifact', art_type, art_datetime, project, user)
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/eventslistener.py",
> > > line 38, in __iterate
> > > getattr(l, event)(*d)
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/ForgeUserStats/forgeuserstats/main.py",
> > > line 28, in newArtifact
> > > stats = UserStats.create(user)
> > > File
> > >
> "/home/tvansteenburgh/tvansteenburgh-9044/forge/ForgeUserStats/forgeuserstats/model/stats.py",
> > > line 29, in create
> > > session(user).flush(user)
> > > AttributeError: 'NoneType' object has no attribute 'flush'
> > >
> > >
> > > Tim
> > >
> > >
> > > On Thursday, March 7, 2013 at 5:49 PM, Stefano Invernizzi wrote:
> > >
> > > > I was not able to recreate your problem, but I realized there was an
> > > error
> > > > in the code I committed yesterday, and this error is probably the
> reason
> > > > why you got the reported exception. I changed it and I hope this
> fixed
> > > >
> > >
> > > the
> > > > problem. If the issue is still there, let me know about it.
> > > > Stefano
> > > >
> > > >
> > > > 2013/3/7 Tim Van Steenburgh <tvansteenburgh@gmail.com (mailto:
> tvansteenburgh@gmail.com) (mailto:
> > > tvansteenburgh@gmail.com (mailto:tvansteenburgh@gmail.com))>
> > > >
> > > > > Pulled the latest changes, dropped the userstats collection,
> pushed a
> > > > > commit to my test repo, refreshed the commiter's stats page, and
> got
> > > > >
> > > >
> > > >
> > >
> > > this:
> > > > >
> > > > > File
> > >
> '/home/tvansteenburgh/tvansteenburgh-9044/forge/ForgeUserStats/forgeuserstats/controllers/userstats.py',
> > > > > line 124 in index
> > > > > ret_dict['discussionpercentage'] = stats.discussionRanking()
> > > > > File
> > > > >
> > > >
> > >
> > >
> '/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/model/contrib_stats.py',
> > > > > line 143 in discussionRanking
> > > > > disccontr = self.getDiscussionContribution()
> > > > > File
> > > > >
> > > >
> > >
> > >
> '/home/tvansteenburgh/tvansteenburgh-9044/forge/Allura/allura/model/contrib_stats.py',
> > > > > line 87 in getDiscussionContribution
> > > > > tot = artifact.created+artifact.modified
> > > > > TypeError: unsupported operand type(s) for +: 'NoneType' and
> 'NoneType'
> > > > >
> > > > >
> > > > > Tim
> > > > >
> > > > >
> > > > > On Wednesday, March 6, 2013 at 4:40 PM, Stefano Invernizzi wrote:
> > > > >
> > > > > > Yes, there was an error in the initialization of the stats
> object. I
> > > hope
> > > > > > it's ok now.
> > > > > > Thank you for reporting it!
> > > > > > Stefano
> > > > > >
> > > > > >
> > > > > > 2013/3/5 Tim Van Steenburgh <tvansteenburgh@gmail.com (mailto:
> tvansteenburgh@gmail.com) (mailto:
> > > tvansteenburgh@gmail.com (mailto:tvansteenburgh@gmail.com)) (mailto:
> > > > > tvansteenburgh@gmail.com (mailto:tvansteenburgh@gmail.com))>
> > > > > >
> > > > > > > Stefano & Simone,
> > > > > > >
> > > > > > > Hey guys. Have been doing some more review on Userstats
today.
> I
> > > > > > > force-pushed a couple small changes to origin/si/5453,
so make
> > > > > > >
> > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > sure you
> > > > > > > pull those.
> > > > > > >
> > > > > > > I ran into an error in the stats code after pushing a commit.
> It
> > > was a
> > > > > > > Ming schema validation error:
> > > > > > >
> > > > > > > 208 [Tue Mar 05 22:29:05 2013] [error] [client 127.0.0.1]
File
> > >
> '/var/local/env-allura/lib/python2.7/site-packages/Ming-0.3.2dev_20121101-py2.7.egg/ming/schema.py',
> > > > > > > line 327 in _validate
> > > > > > > 209 [Tue Mar 05 22:29:05 2013] [error] [client 127.0.0.1]
raise
> > > > > > > Invalid(msg, d, None, error_dict=error_dict)
> > > > > > > 210 [Tue Mar 05 22:29:05 2013] [error] [client 127.0.0.1]
> Invalid:
> > > > > > > general:[0]:messages:Not a list or tuple
> > > > > > > 211 [Tue Mar 05 22:29:05 2013] [error] [client 127.0.0.1]
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > tickets:notdict:
> > > > > > > []
> > > > > > >
> > > > > > >
> > > > > > > Here's the mongo doc:
> > > > > > >
> > > > > > > {
> > > > > > > "_id" : ObjectId("5136502261b3b44a93a7b36f"),
> > > > > > > "lastmonth" : {
> > > > > > > "assignedtickets" : [ ],
> > > > > > > "commits" : [
> > > > > > > {
> > > > > > > "programming_languages" : [ ],
> > > > > > > "lines" : 1,
> > > > > > > "categories" : [ ],
> > > > > > > "datetime" :
> > > > > > > ISODate("2013-03-05T22:28:22.341Z")
> > > > > > > }
> > > > > > > ],
> > > > > > > "solvedtickets" : [ ],
> > > > > > > "messages" : [ ],
> > > > > > > "revokedtickets" : [ ]
> > > > > > > },
> > > > > > > "user_id" : ObjectId("510ad21c61b3b426260e7586"),
> > > > > > > "lastmonthlogins" : [ ],
> > > > > > > "tot_logins_count" : 0,
> > > > > > > "registration_date" : ISODate("2013-03-05T20:05:54.676Z"),
> > > > > > > "general" : [
> > > > > > > {
> > > > > > > "tickets" : [ ],
> > > > > > > "commits" : [
> > > > > > > {
> > > > > > > "lines" : 1,
> > > > > > > "number" : 1,
> > > > > > > "language" : null
> > > > > > > }
> > > > > > > ],
> > > > > > > "category" : null,
> > > > > > > "messages" : {
> > > > > > > "assigned" : 0,
> > > > > > > "solved" : 0,
> > > > > > > "totsolvingtime" : 0,
> > > > > > > "revoked" : 0
> > > > > > > }
> > > > > > > }
> > > > > > > ],
> > > > > > > "visible" : false,
> > > > > > > "last_login" : null
> > > > > > > }
> > > > > > >
> > > > > > >
> > > > > > > As you can see, `general.tickets` is a list, not a dict,
but
> it's
> > > > > defined
> > > > > > > as a dict in the schema. Maybe you guys could track that
down?
> > > > > > >
> > > > > > > Tim
> > > > > > >
> > > > > > >
> > > > > > > On Sunday, March 3, 2013 at 4:35 AM, Stefano Invernizzi
wrote:
> > > > > > >
> > > > > > > > Thanks Dave for your suggestion! I modified the bootstrap.py
> > > file, so
> > > > > > > that
> > > > > > > > when the Users neighborhood is created, our tool for
> userstats is
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > set as
> > > > > > >
> > > > > > > an
> > > > > > > > anchored tool, and it perfectly works. However, that
way, if
> you
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > do
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > not
> > > > > > >
> > > > > > > run
> > > > > > > > the bootstrap.py, you have to manually add the tool
to the
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > anchored
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > ones.
> > > > > > > > And this is what happens in most cases for users who
don't
> want
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > to
> > > > > > > > re-initialize the forge.
> > > > > > > >
> > > > > > > > I was also thinking about the setting in the .ini
file to
> enable
> > > > > > > userstats.
> > > > > > > > I think it doesn't make sense to disable them now
that stats
> are
> > > > > > > > implemented as a tool. By setting userstats.enable
= false,
> the
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > tool
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > is
> > > > > > > > still installed for users who were using it, therefore
I
> think
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > it's
> > > > > > >
> > > > > > >
> > > > > > > better
> > > > > > > > to remove this option, since it would be confusing.
That
> way, a
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > user
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > who
> > > > > > > > wants to install the forge without using userstats
can simply
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > avoid
> > > > > > > > installing the ForgeUserStats tool. I committed this
change
> too,
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > but
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > if
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > you
> > > > > > > > think it's better to think again about it, I'm open
to
> different
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > proposals.
> > > > > > > > Thanks again,
> > > > > > > >
> > > > > > > > Stefano
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > 2013/3/2 Simone Gatti <simone.gatti88@gmail.com
(mailto:
> simone.gatti88@gmail.com) (mailto:
> > > simone.gatti88@gmail.com (mailto:simone.gatti88@gmail.com)) (mailto:
> > > > > simone.gatti88@gmail.com (mailto:simone.gatti88@gmail.com))
> (mailto:
> > > > > > > simone.gatti88@gmail.com (mailto:simone.gatti88@gmail.com))>
> > > > > > > >
> > > > > > > > > Dear Dave,
> > > > > > > > > I have changed the preference page in order to
meet these
> > > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > requests.
> > > > > > > > > I created two new pages to collect data about
contacts and
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > availability.
> > > > > > > > > In the preference page, over the links, it is
now indicated
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > that
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > these
> > > > > > > > > personal data are not compulsory.
> > > > > > > > > In this way, the preference page will no more
become so
> long
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > due to
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > data
> > > > > > > > > about contacts and availability precedently inserted
by the
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > user,
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > and
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > the
> > > > > > > > > forms not necessary are not disclosed.
> > > > > > > > > About general personal data, I decided to leave
its
> original
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > form
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > in
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > the
> > > > > > > > > preference page, because it has fixed size and
refer to
> general
> > > > > > > > > information, but I put an explicit indication
that they are
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > discretionary.
> > > > > > > > > Please, let me know what do you think about these
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > modifications.
> > > > > > > > > Thanks,
> > > > > > > > > Simone
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > 2013/2/18 Dave Brondsema <dave@brondsema.net
(mailto:
> dave@brondsema.net) (mailto:
> > > dave@brondsema.net (mailto:dave@brondsema.net)) (mailto:
> > > > > dave@brondsema.net (mailto:dave@brondsema.net)) (mailto:
> > > > > > > dave@brondsema.net (mailto:dave@brondsema.net))>
> > > > > > > > >
> > > > > > > > > > Cory, I think Stefano is referring to user
stats, which
> his
> > > > > feature
> > > > > > > > > branch
> > > > > > > > > > starts collecting, not user profile data
(gender,
> location,
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > etc).
> > > > > > > > > >
> > > > > > > > > > But on the topic of user profiel data, we've
had a least
> one
> > > > > > > SourceForge
> > > > > > > > > > user
> > > > > > > > > > communicate to use that he/she thought the
fields were
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > required.
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > I
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > can
> > > > > > > > > > see how
> > > > > > > > > > this might be inferred since they're the
first thing you
> see
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > on
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > the
> > > > > > > > > > /auth/prefs/
> > > > > > > > > > form. We might consider labelling those
optional, or
> putting
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > them on
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > a
> > > > > > > > > > separate
> > > > > > > > > > page from "subscriptions" and other sections
on that
> page.
> > > > > > > > > >
> > > > > > > > > > -Dave
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > On 2/18/13 9:55 AM, Cory Johns wrote:
> > > > > > > > > > > Stefano,
> > > > > > > > > > >
> > > > > > > > > > > Could a user simply not fill in the
personal info
> fields
> > > they
> > > > > don't
> > > > > > > > > wish
> > > > > > > > > > to
> > > > > > > > > > > share? What is the value of entering
that info but
> then not
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > displaying
> > > > > > > > > >
> > > > > > > > > > it;
> > > > > > > > > > > to encourage users to enter it if only
for our
> edification?
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > Thanks,
> > > > > > > > > > >
> > > > > > > > > > > Cory
> > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > > > On Sat, Feb 16, 2013 at 9:53 AM, Stefano
Invernizzi <
> > > > > > > > > > > stefano.invernizzi88@gmail.com (mailto:
> stefano.invernizzi88@gmail.com) (mailto:
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > stefano.invernizzi88@gmail.com (mailto:stefano.invernizzi88@gmail.com))
> (mailto:
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > stefano.invernizzi88@gmail.com (mailto:
> stefano.invernizzi88@gmail.com))
> > > (mailto:
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > stefano.invernizzi88@gmail.com (mailto:
> stefano.invernizzi88@gmail.com) (mailto:
> > > stefano.invernizzi88@gmail.com (mailto:stefano.invernizzi88@gmail.com
> )))>
> > > > > wrote:
> > > > > > > > > > >
> > > > > > > > > > > > Dear all,
> > > > > > > > > > > >
> > > > > > > > > > > > I recently pushed some new commits
allowing a single
> > > user to
> > > > > > > hide his
> > > > > > > > > or
> > > > > > > > > > > > her personal statistics. I and
Simone implemented it
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > since
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > some
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > users
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > may
> > > > > > > > > > > > prefer not to show this data.
In that case, data is
> still
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > available
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > for
> > > > > > > > > > > > their personal use. However, if
you think we should
> not
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > allow
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > users to
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > do
> > > > > > > > > > > > this, we can simply put it back
as it was.
> > > > > > > > > > > > As usual, we hope to get some
feedbacks from you
> about
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > this,
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > as
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > well
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > as
> > > > > > > > > > > > about the rest of submitted code.
> > > > > > > > > > > > It would be great for us if the
code could be
> reviewed
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > and,
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > > > if
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > you
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > think it
> > > > > > > > > > > > would be useful, included on the
forge before we
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > > >
> > > >
> > >
> > > complete the
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > > thesis
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > we
> > > > > > > > > > are
> > > > > > > > > > > > working on.
> > > > > > > > > > > > Thank you very much!
> > > > > > > > > > > > Stefano
> > > > > > > > > > > >
> > > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > >
> > > > > > > > > > --
> > > > > > > > > > Dave Brondsema : dave@brondsema.net (mailto:
> dave@brondsema.net) (mailto:
> > > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > > dave@brondsema.net (mailto:dave@brondsema.net))
> > > > > > > > > > http://www.brondsema.net : personal
> > > > > > > > > > http://www.splike.com : programming
> > > > > > > > > > <><
> > > > > > > > > >
> > > > > > > > >
> > > > > > > >
> > > > > > >
> > > > > >
> > > > >
> > > >
> > >
> > >
> >
> >
> >
>
>
>

Mime
  • Unnamed multipart/alternative (inline, None, 0 bytes)
View raw message