[Building Sakai] Create Turnitin Class & Assignment Process Flow in SAKAI

Paul Mungai paulwando at gmail.com
Mon Jan 9 06:57:07 PST 2012


Unfortunately I cannot get the dependencies:

sakai-announcement-api-2.8-
SNAPSHOT
sakai-assignment-api-2.8-SNAPSHOT
sakai-calendar-api-2.8-SNAPSHOT
sakai-message-api-2.8-SNAPSHOT
sakai-mock-2.8-SNAPSHOT
sakai-taggable-api-2.8-SNAPSHOT

The sources it tries accessing by default such as
http://source.sakaiproject.org/maven2-snapshots/org/sakaiproject/sakai-taggable-api/2.8-SNAPSHOT/sakai-taggable-api-2.8-SNAPSHOT.jar
have been moved.

Any suggestions will be highly appreciated.

Regards,
Paul Mungai


On Mon, Jan 9, 2012 at 3:22 PM, Paul Mungai <paulwando at gmail.com> wrote:

>
> I now get you David, I realize I needed to run:
>
> sh prepare_for_sakai_env.sh
>
> within the assignment2 directory, which enabled me select the 2.8.x branch.
>
> Hope it works now.
>
>
> On Mon, Jan 9, 2012 at 1:42 PM, Paul Mungai <paulwando at gmail.com> wrote:
>
>> Thanks for the advise.
>>
>> Kindly advise if the page for add assignment in your case includes the
>> turnitin options as shown from the url below.
>>
>>
>> https://source.sakaiproject.org/contrib/turnitin/trunk/contentreview-impl/docs/readme.html
>>
>>
>> On Mon, Jan 9, 2012 at 12:32 PM, Jehan Badshah <jehan.badshah at nu.edu.pk>wrote:
>>
>>> Dear Paul Mungai
>>>
>>> I am using sakai 2.8.0, assignment 2, and same version of content review
>>> and turnitin, I also faced you like problems, but now it is solved by doing
>>> slight changes in source code of turnitin API.
>>>
>>> From turnitin log I came to know that API is not calling createClass(),
>>> createAssignmment etc functions, due to which instructors, their classes
>>> and assignments are not creating on turnitin.com automatically.
>>>
>>> It is the issue in source code, in file TurnitinReviewServiceImpl.java,
>>> in which statement (*turnitinConn.isUseSourceParameter())* always
>>> return true
>>>
>>>  due to which inside code is not executing for creation of instructors,
>>> their classes and assignments.
>>>
>>> *if (!turnitinConn.isUseSourceParameter()) { createClass(),
>>> createAssignment etc }*
>>> remove "!" from above statement (replace attached file), compile it, and
>>> hopfully it will start work.
>>>
>>> Further Turnitin API developers can help us, why source parameter making
>>> problem.
>>>
>>> If you need any further help then contact me.
>>>
>>> JIRA: https://jira.sakaiproject.org/browse/TII-123
>>>
>>>
>>> On Mon, Jan 9, 2012 at 2:04 PM,  Paul Mungai <paulwando at gmail.com >wrote:
>>>
>>>>
>>>>
>>>> ---------- Forwarded message ----------
>>>> From: Paul Mungai <paulwando at gmail.com>
>>>> Date: Mon, Jan 9, 2012 at 2:04 PM
>>>> Subject: Re: [Building Sakai] Create Turnitin Class & Assignment
>>>> Process Flow in SAKAI
>>>> To: sakai-dev Developers <sakai-dev at collab.sakaiproject.org>
>>>>
>>>>
>>>> If its the sakai version, I am running 2.8.0, then assignment2-tag-1.0
>>>> and contentreview-2.9.1.
>>>>
>>>>
>>>>
>>>> On Mon, Jan 9, 2012 at 10:52 AM, David Horwitz <david.horwitz at uct.ac.za
>>>> > wrote:
>>>>
>>>>> **
>>>>> It looks like you have updated to build against 2.9/Trunk? There has
>>>>> been a change to the kernel usage of the FormattedText class. You need to
>>>>> build against the 2.8 kernel so you pull in the 2.8 util class
>>>>>
>>>>> D
>>>>>
>>>>>
>>>>> On 01/09/2012 10:09 AM, Paul Mungai wrote:
>>>>>
>>>>> Another hiccup. When I try to add a new assignment2, the turnitin
>>>>> options are not there. The assignment does not get saved, I get this error:
>>>>>
>>>>>
>>>>> INFO: EntityEncodingManager: No entities to format (json) and output
>>>>> for ref (/assignment2)
>>>>> 2012-01-09 10:02:50,116 WARN (RSFActionHandler.java:235) - <Error
>>>>> invoking action>
>>>>> Target exception of class java.lang.NoClassDefFoundError
>>>>> Successive lines until stack trace show causes progressing to
>>>>> exception site:
>>>>> org/sakaiproject/util/api/FormattedText
>>>>> java.lang.NoClassDefFoundError: org/sakaiproject/util/api/FormattedText
>>>>>     at
>>>>> org.sakaiproject.assignment2.tool.beans.AssignmentAuthoringBean.cleanUpAssignment(AssignmentAuthoringBean.java:391)
>>>>>     at
>>>>> org.sakaiproject.assignment2.tool.beans.AssignmentAuthoringBean.internalProcessPost(AssignmentAuthoringBean.java:171)
>>>>>     at
>>>>> org.sakaiproject.assignment2.tool.beans.AssignmentAuthoringBean.processActionPost(AssignmentAuthoringBean.java:127)
>>>>>     at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>>>     at
>>>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>>>>>     at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:23)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:17)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:77)
>>>>>     at
>>>>> uk.org.ponder.reflect.ReflectiveCache.invokeMethod(ReflectiveCache.java:141)
>>>>>     at
>>>>> uk.org.ponder.mapping.support.DARApplier.invokeBeanMethod(DARApplier.java:179)
>>>>>     at
>>>>> uk.org.ponder.rsf.state.support.RSVCApplier.invokeAction(RSVCApplier.java:218)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RSFActionHandler$1.run(RSFActionHandler.java:189)
>>>>>     at
>>>>> uk.org.ponder.util.CollectingRunnableInvoker$1.run(CollectingRunnableInvoker.java:25)
>>>>>     at
>>>>> uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper.invokeRunnable(BasicScopedAlterationWrapper.java:59)
>>>>>     at
>>>>> uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$FastClassByCGLIB$$84f89202.invoke(<generated>)
>>>>>     at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
>>>>>     at
>>>>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:628)
>>>>>     at
>>>>> uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$EnhancerByCGLIB$$100f0a2f.invokeRunnable(<generated>)
>>>>>     at
>>>>> uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$FastClassByCGLIB$$84f89202.invoke(<generated>)
>>>>>     at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
>>>>>     at
>>>>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:628)
>>>>>     at
>>>>> uk.org.ponder.rsf.flow.support.BasicScopedAlterationWrapper$$EnhancerByCGLIB$$100f0a2f.invokeRunnable(<generated>)
>>>>>     at
>>>>> uk.org.ponder.util.CollectingRunnableInvoker$1.run(CollectingRunnableInvoker.java:29)
>>>>>     at
>>>>> uk.org.ponder.util.CollectingRunnableInvoker.invokeWrappers(CollectingRunnableInvoker.java:22)
>>>>>     at
>>>>> uk.org.ponder.util.CollectingRunnableInvoker.invokeRunnable(CollectingRunnableInvoker.java:14)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RSFActionHandler.handle(RSFActionHandler.java:165)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RSFActionHandler$$FastClassByCGLIB$$e3b6899d.invoke(<generated>)
>>>>>     at net.sf.cglib.proxy.MethodProxy.invoke(MethodProxy.java:191)
>>>>>     at
>>>>> org.springframework.aop.framework.Cglib2AopProxy$DynamicAdvisedInterceptor.intercept(Cglib2AopProxy.java:628)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RSFActionHandler$$EnhancerByCGLIB$$a3edfaa8.handle(<generated>)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RootHandlerBeanBase.handlePost(RootHandlerBeanBase.java:125)
>>>>>     at
>>>>> uk.org.ponder.rsf.processor.support.RootHandlerBeanBase.handle(RootHandlerBeanBase.java:82)
>>>>>     at sun.reflect.GeneratedMethodAccessor522.invoke(Unknown Source)
>>>>>     at
>>>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>>>>>     at java.lang.reflect.Method.invoke(Method.java:597)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:23)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:17)
>>>>>     at
>>>>> uk.org.ponder.reflect.JDKReflectiveCache.invokeMethod(JDKReflectiveCache.java:77)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl.createBean(RSACBeanLocatorImpl.java:553)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl.access$000(RSACBeanLocatorImpl.java:75)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl$1.run(RSACBeanLocatorImpl.java:449)
>>>>>     at
>>>>> uk.org.ponder.rsac.RSACErrorBridge.invokeRunnable(RSACErrorBridge.java:38)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl.createBean(RSACBeanLocatorImpl.java:447)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl.getLocalBean(RSACBeanLocatorImpl.java:348)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.RSACBeanLocatorImpl.getBean(RSACBeanLocatorImpl.java:379)
>>>>>     at
>>>>> uk.org.ponder.rsac.support.PerRequestInfo$1.locateBean(PerRequestInfo.java:49)
>>>>>     at
>>>>> uk.ac.cam.caret.sakai.rsf.servlet.ReasonableSakaiServlet.service(ReasonableSakaiServlet.java:65)
>>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:659)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationDispatcher.processRequest(ApplicationDispatcher.java:457)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationDispatcher.doForward(ApplicationDispatcher.java:359)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationDispatcher.forward(ApplicationDispatcher.java:311)
>>>>>     at
>>>>> org.sakaiproject.tool.impl.ActiveToolComponent$MyActiveTool.forward(ActiveToolComponent.java:511)
>>>>>     at
>>>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.forwardTool(SkinnableCharonPortal.java:1429)
>>>>>     at
>>>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doTool(ToolHandler.java:204)
>>>>>     at
>>>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doGet(ToolHandler.java:96)
>>>>>     at
>>>>> org.sakaiproject.portal.charon.handlers.ToolHandler.doPost(ToolHandler.java:73)
>>>>>     at
>>>>> org.sakaiproject.portal.charon.SkinnableCharonPortal.doPost(SkinnableCharonPortal.java:1224)
>>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
>>>>>     at javax.servlet.http.HttpServlet.service(HttpServlet.java:729)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:269)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>>>     at
>>>>> org.sakaiproject.util.RequestFilter.doFilter(RequestFilter.java:659)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:215)
>>>>>     at
>>>>> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:188)
>>>>>     at
>>>>> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:213)
>>>>>     at
>>>>> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:172)
>>>>>     at
>>>>> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:127)
>>>>>     at
>>>>> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:117)
>>>>>     at
>>>>> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:108)
>>>>>     at
>>>>> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:174)
>>>>>     at
>>>>> org.apache.coyote.http11.Http11Processor.process(Http11Processor.java:879)
>>>>>     at
>>>>> org.apache.coyote.http11.Http11BaseProtocol$Http11ConnectionHandler.processConnection(Http11BaseProtocol.java:665)
>>>>>     at
>>>>> org.apache.tomcat.util.net.PoolTcpEndpoint.processSocket(PoolTcpEndpoint.java:528)
>>>>>     at
>>>>> org.apache.tomcat.util.net.LeaderFollowerWorkerThread.runIt(LeaderFollowerWorkerThread.java:81)
>>>>>     at
>>>>> org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:689)
>>>>>     at java.lang.Thread.run(Thread.java:662)
>>>>> Caused by: java.lang.ClassNotFoundException:
>>>>> org.sakaiproject.util.api.FormattedText
>>>>>     at
>>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1438)
>>>>>     at
>>>>> org.apache.catalina.loader.WebappClassLoader.loadClass(WebappClassLoader.java:1284)
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mon, Jan 9, 2012 at 9:40 AM, Paul Mungai <paulwando at gmail.com>wrote:
>>>>>
>>>>>> Just checked the logs.
>>>>>>
>>>>>> That error appears if one has not added gradebook as a tool to the
>>>>>> site in question. I presume in the next iteration, the warning be more
>>>>>> accurate to the users noting that they manage their sites and not the
>>>>>> admin.
>>>>>>
>>>>>>
>>>>>>
>>>>>> On Mon, Jan 9, 2012 at 8:52 AM, Paul Mungai <paulwando at gmail.com>wrote:
>>>>>>
>>>>>>> Thanks Wagner,
>>>>>>>
>>>>>>> It built successfully when unit tests are turned off:
>>>>>>>
>>>>>>> mvn clean install sakai:deploy -Dmaven.test.skip=true
>>>>>>>
>>>>>>>
>>>>>>> However, am now getting this warning when I attempt to add a new
>>>>>>> assignment (assignments2)
>>>>>>>
>>>>>>> My apologies, but there seems to have been an error. Please note the
>>>>>>> time/date and the server you are on (located in the footer) and contact the
>>>>>>> support center for assistance resolving this problem.
>>>>>>>
>>>>>>>
>>>>>>> On Fri, Jan 6, 2012 at 9:19 PM, Wagner, Michelle R. <
>>>>>>> wagnermr at iupui.edu> wrote:
>>>>>>>
>>>>>>>>  Hi Paul,
>>>>>>>> It looks like your build failed because there is a new method in
>>>>>>>> the GradebookService for Sakai 2.9 (isPointsPossibleValid) that is not
>>>>>>>> implemented in
>>>>>>>> org.sakaiproject.assignment2.logic.test.stubs.GradebookServiceStub in
>>>>>>>> Assignment2 1.0.  Assignment2 uses a mock of the GradebookService for its
>>>>>>>> unit tests since the two tools are so tightly integrated.  I believe for
>>>>>>>> now you can build with unit tests turned off to avoid this error (or add
>>>>>>>> the unimplemented method locally).  It may be time for an updated release
>>>>>>>> of Assignment2 to work against 2.9 with unit tests turned on.
>>>>>>>>
>>>>>>>> Have a great day,
>>>>>>>> Michelle
>>>>>>>>  ------------------------------
>>>>>>>> *From:* sakai-dev-bounces at collab.sakaiproject.org [
>>>>>>>> sakai-dev-bounces at collab.sakaiproject.org] on behalf of Paul
>>>>>>>> Mungai [paulwando at gmail.com]
>>>>>>>> *Sent:* Friday, January 06, 2012 12:27 PM
>>>>>>>> *To:* sakai-dev Developers
>>>>>>>> *Subject:* Re: [Building Sakai] Create Turnitin Class & Assignment
>>>>>>>> Process Flow in SAKAI
>>>>>>>>
>>>>>>>>   Thanks David.
>>>>>>>>
>>>>>>>> Just noted that for assignment2 (tag 1.0), one needs to first
>>>>>>>> deploy the following dependencies:
>>>>>>>>
>>>>>>>> sakai-announcement-api-2.9-SNAPSHOT
>>>>>>>> sakai-assignment-api-2.9-SNAPSHOT
>>>>>>>> sakai-calendar-api-2.9-SNAPSHOT
>>>>>>>> sakai-message-api-2.9-SNAPSHOT
>>>>>>>> sakai-mock-2.9-SNAPSHOT
>>>>>>>> sakai-taggable-api-2.9-SNAPSHOT
>>>>>>>> slf4j-log4j12-1.4.3
>>>>>>>>
>>>>>>>> However, the build (offline) for assignment2 still fails. The
>>>>>>>> following error appears:
>>>>>>>>
>>>>>>>> [ERROR] COMPILATION ERROR :
>>>>>>>> [INFO] -------------------------------------------------------------
>>>>>>>> [ERROR]
>>>>>>>> /opt/sakai-2.8.0/assignment-tags-1.0/impl/src/test/org/sakaiproject/assignment2/logic/test/stubs/GradebookServiceStub.java:[57,7]
>>>>>>>> org.sakaiproject.assignment2.logic.test.stubs.GradebookServiceStub is not
>>>>>>>> abstract and does not override abstract method
>>>>>>>> isPointsPossibleValid(java.lang.String,org.sakaiproject.service.gradebook.shared.Assignment,java.lang.Double)
>>>>>>>> in org.sakaiproject.service.gradebook.shared.GradebookService
>>>>>>>> [INFO] 1 error
>>>>>>>> [INFO] -------------------------------------------------------------
>>>>>>>> [INFO]
>>>>>>>> ------------------------------------------------------------------------
>>>>>>>> [ERROR] BUILD FAILURE
>>>>>>>> [INFO]
>>>>>>>> ------------------------------------------------------------------------
>>>>>>>> [INFO] Compilation failure
>>>>>>>> /opt/sakai-2.8.0/assignment-tags-1.0/impl/src/test/org/sakaiproject/assignment2/logic/test/stubs/GradebookServiceStub.java:[57,7]
>>>>>>>> org.sakaiproject.assignment2.logic.test.stubs.GradebookServiceStub is not
>>>>>>>> abstract and does not override abstract method
>>>>>>>> isPointsPossibleValid(java.lang.String,org.sakaiproject.service.gradebook.shared.Assignment,java.lang.Double)
>>>>>>>> in org.sakaiproject.service.gradebook.shared.GradebookService
>>>>>>>>
>>>>>>>>
>>>>>>>> Could the previous deployment of assignment1 affect this?
>>>>>>>>
>>>>>>>> --
>>>>>>>> Regards,
>>>>>>>> Paul Mungai
>>>>>>>>
>>>>>>>> "Ability is what youre capable of doing. Motivation determines what
>>>>>>>> you do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>>>>>>>> Football Coach
>>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Regards,
>>>>>>> Paul Mungai
>>>>>>>
>>>>>>> "Ability is what youre capable of doing. Motivation determines what
>>>>>>> you do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>>>>>>> Football Coach
>>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> Regards,
>>>>>> Paul Mungai
>>>>>>
>>>>>> "Ability is what youre capable of doing. Motivation determines what
>>>>>> you do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>>>>>> Football Coach
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>> --
>>>>> Regards,
>>>>> Paul Mungai
>>>>>
>>>>> Skype: pwando
>>>>> Twitter: pwando
>>>>> Facebook: paulwando
>>>>> LinkedIn: http://za.linkedin.com/pub/paul-mungai/b/388/512
>>>>> Blog: http://pmungai.wordpress.com
>>>>> Flickr: http://bit.ly/b84lip
>>>>>
>>>>> "Ability is what youre capable of doing. Motivation determines what
>>>>> you do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>>>>> Football Coach
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sakai-dev mailing list
>>>>> sakai-dev at collab.sakaiproject.orghttp://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>>
>>>>> TO UNSUBSCRIBE: send email to sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of "unsubscribe"
>>>>>
>>>>>
>>>>> _______________________________________________
>>>>> sakai-dev mailing list
>>>>> sakai-dev at collab.sakaiproject.org
>>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>>
>>>>> TO UNSUBSCRIBE: send email to
>>>>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>>>>> "unsubscribe"
>>>>>
>>>>
>>>>
>>>>
>>>> --
>>>> Regards,
>>>> Paul Mungai
>>>>
>>>> Skype: pwando
>>>> Twitter: pwando
>>>> Facebook: paulwando
>>>> LinkedIn: http://za.linkedin.com/pub/paul-mungai/b/388/512
>>>> Blog: http://pmungai.wordpress.com
>>>> Flickr: http://bit.ly/b84lip
>>>>
>>>> "Ability is what youre capable of doing. Motivation determines what you
>>>> do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>>>> Football Coach
>>>>
>>>> _______________________________________________
>>>> sakai-dev mailing list
>>>> sakai-dev at collab.sakaiproject.org
>>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>>
>>>> TO UNSUBSCRIBE: send email to
>>>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>>>> "unsubscribe"
>>>>
>>>>
>>>
>>>
>>> --
>>>
>>> Regards
>>> ----------------------------------------------------
>>> Jehan Badshah | Sr. Software Engineer
>>> FAST - National University of Computer and Emerging Sciences
>>> A.K. Brohi Road, H-11/4, Islamabad, Pakistan
>>> UAN: +92 (0)51 - 111 128 128 ext 344
>>>
>>>
>>>
>>> _______________________________________________
>>> sakai-dev mailing list
>>> sakai-dev at collab.sakaiproject.org
>>> http://collab.sakaiproject.org/mailman/listinfo/sakai-dev
>>>
>>> TO UNSUBSCRIBE: send email to
>>> sakai-dev-unsubscribe at collab.sakaiproject.org with a subject of
>>> "unsubscribe"
>>>
>>
>>
>>
>> --
>> Regards,
>> Paul Mungai
>>
>> "Ability is what youre capable of doing. Motivation determines what you
>> do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
>> Football Coach
>>
>
>
>
> --
> Regards,
> Paul Mungai
>
> Skype: pwando
> Twitter: pwando
> Facebook: paulwando
> LinkedIn: http://za.linkedin.com/pub/paul-mungai/b/388/512
> Blog: http://pmungai.wordpress.com
> Flickr: http://bit.ly/b84lip
>
> "Ability is what youre capable of doing. Motivation determines what you
> do. Attitude determines how well you do it" By Lou Holtz, Notre Dame
> Football Coach
>



-- 
Regards,
Paul Mungai

Skype: pwando
Twitter: pwando
Facebook: paulwando
LinkedIn: http://za.linkedin.com/pub/paul-mungai/b/388/512
Blog: http://pmungai.wordpress.com
Flickr: http://bit.ly/b84lip

"Ability is what youre capable of doing. Motivation determines what you do.
Attitude determines how well you do it" By Lou Holtz, Notre Dame Football
Coach
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://collab.sakaiproject.org/pipermail/sakai-dev/attachments/20120109/3fec7307/attachment.html 


More information about the sakai-dev mailing list