Moodle Assignment Feedback Packager

Moodle allows assignments and group assignments to be graded offline. This helps to assign a graded group work to each of its members, but also requires a special naming and formatting of files and csv content. To help, this small web app, helps to generate the offline grading zip and attribute a group grade to all its members. It only requires the initial offline grading worksheet and optionally a feedback file for each group.

Getting the feedback file

  1. The first step it to enable Feedback files and Offline grading worksheet in Moodle assignments ‘settings under Feedback Types.
  2. It is then possible to use Download grading worksheet under View all submissions of the assignment.
  3. This file can then be uploaded to the webapp: https://bfritscher.github.io/moodle-assignment-feedback-packager/

Using the webapp

Screen after uploading a feedback file

groupscreen

  • The first tab Groups helps to add feedback and grades to groups which are then copied to each member shown in the participants tab.
  • On the bottom it is possible to import grades and comments based on the group key.
  • The Feedback files tab allows to upload files if the filename has the name of a group it will be added to the feedback of each group member of this group.
  • Finally, the updated csv file and packaged zip can be downloaded and uploaded to moodle’s assignment.

FAQ

Are my files send to a server?
No all is done locally in your browser.
Limitations?
Browser’s max size of files is arround 200MB

Source

Github

Firebase SDK for Cloud Functions Migration

In addition to the provided guide by Google.

Here is the changes I had to make in my code for futur reference:

OLD <1.0 NEW< >=1.0
event.params.uid context.params.uid
event.data.val() change.after.val()
event.auth.variable.name context.auth.token.name
event.data.ref.remove() change.ref.remove()
.onWrite(event => { .onWrite((change, context) => {
.onDelete((event) => { .onDelete((snap, context) => {
event.auth.variable.email context.auth.token.email
const object = event.data; object
storage.object().onChange(event => { storage.object().onFinalize((object, context) => {

Using Cheap China Microscope with Micro-Manager on Windows

In order for Micro-Manager to recognize my cheap china microscope, I needed to patch the provided OpenCVGrabber driver.

The original version of the driver always selected the first USB camera available, and did not pass validation of the configuration for the webcam driver from the microscope.

As Micro-Manager is Open Source, I looked into making a patch. The new version which supports camera selection from a dropdown by name. Is available for windows 10 and Version 2.0 beta of Micro-Manger:

  1. Install Version 2.0 beta
  2. Download the compiled mmgr_dal_OpenCVgrabber.dll
  3. Replace it in the folder of Micro-Manager x64 c:\Program Files\Micro-Manager-2.0beta

Status for integration into the application can be followed on the pull request.

Moodle 2 export participants with group information

A small script to export moodle 2 participants with their group information.

Drag the bookmarklet to your bookmarkbar: Moodle Group Export
You can then click it when you are on the moodle 2 > Users > Enrolled users page to get a csv file of the displayed table.

Limitation

  • Support for a maximum of 1 group by participant
  • Pop-up has to be enabled

Source Code

var script = document.createElement('script');
document.head.appendChild(script);
script.onload = function(){
var separator = ',';
var pattern = /id=(.*)&/;
var csv = [['userid', 'name','idnumber','email','group'].join(separator)];
$('table.userenrolment').find('tr').each(function(index, tr){
    var r = [];
    var $tr = $(tr);
    var a = $tr.find('a');
    var userid = pattern.exec(a[0])[1];
    r.push(userid);
    r.push($tr.find('.subfield_firstname').text());
    r.push($tr.find('.subfield_firstname').text());
    r.push($tr.find('.subfield_idnumber').text());
    r.push($tr.find('.subfield_email').text());
    r.push($tr.find('.group').text());
    csv.push(r.join(separator));
});
csv = csv.join("\r\n");
window.open("data:application/octet-stream;charset=utf-8," + encodeURIComponent(csv));
};
script.src = 'http://code.jquery.com/jquery-2.1.4.min.js';

Bonita Studio tutoriel vidéo

Durant le cours d’Intégration des systèmes d’information d’entreprise 2011 du Master en Système d’information de HEC Lausanne, j’ai enregistré une série de vidéos démontrant l’utilisation de Bonita Studio sur un cas pratique “Travel Expenses“.

Les vidéos sont disponibles sur YouTube (http://www.youtube.com/playlist?list=PLB6EA69FBFAFDC459) et couvres les thèmes suivants :

  • User Experience
  • sous-processus
  • Données & Données complexe
  • Formulaires
  • Messages
  • connecteur REST groovy
  • connecteur mail
  • connecteur MySQL

Le cas Travel Expenses traite la demande, la consolidation et la vérification de notes de frais pour des voyages de collaborateurs.

  • Enoncé détaillé du cas (Exercice de modélisation BPMN) TravelExpensesEnonce.pdf
  • Enoncé du travail pratique (Exercice Bonita) TravelExpensesBonita.pdf
  • Solultion exemple sous Bonita Studio (Fichiers bar) demo_ISIE_TravelExpenses.zip
  • La solution propose:
    • un processus principal TravelManagement ,
    • qui interagit avec un processus TravelBooking ,
    • et qui a également un sous processus ReportExpenses

Ressources supplémentaires

Pour permettre l’échange des données entres processus avec une seule variable, plusieurs objets complexe ont été créés: TravelPlan contient un Hotel et une liste d’Expense. De plus ces objets ont une méthode toHtml et toString pour faciliter l’affichage dans un formulaire Bonita.

JAR: travel_plan_1.1.jar
GrovoyDoc: travelplan/groovydoc/
Source: src.zip

Groovy Date
formatage de l’objet Date groovy pour le service REST ou la requète SQL

new Date().format('MM/dd/yyyy')
new Date().format('yyyy-MM-dd')

Expedia REST service
Documentation du service REST utilisé: http://developer.ean.com/docs/read/hotels/version_3/Request_Hotel_List

Crédits
Dr. Thibault Estier (Enseignant du cours)
Boris Fritscher (Assistant doctorant, préparation du cas et enregistrement des vidéos)
Alexandre Métrailler (Assistant doctorant, préparation du cas)

Nice Videos From Recent Talks

A small selection from videos of recent good talks.

MIX11
JavaScript: The Language
Nice advanced introduction to JavaScript and the new features of ECMAScript5

more all MIX 11 sessions

CHI 2011
Bill Buxton Shows Us His Favorite Tech
Why we need to remember past gadgets!

Google IO 2011
Java Puzzlers – Scraping the Bottom of the Barrel
The one and only java puzzlers, always informative.

Programming Well with Others: Social Skills for Geeks
Insights on geek vs/and management. You might also be interested in the book “Being Geek

HTML5 Showcase for Web Developers: The Wow and the How
Fun stuff with some chrome specific audio and file api, but also standard CSS3 3D animations.

more All Google IO 11 Sessions

ARDrone SDK 1.6 working windows client binary

Since there does not seem to be an official binary of the windows client sample for controlling the ARDrone. I decided to compile the sample project, which is available in the official sdk. Sadly the process of compiling the sample is not straight forward and requires a lot of tweaking [1, 2]. Nonetheless, I finally managed to compile a version, which is working on windows 7 x64 and is compatible with firmware update 1.5.1 of the ARDrone. It can be downloaded here:

ARDrone1.6Win32Client.exe working binary of ARDrone SDK 1.6 win32 client

You will also need to have an update to date version of the DirectX End-User Runtime [3].

[1] https://projects.ardrone.org/boards/1/topics/show/2623
[2] http://www.sparticusthegrand.com/ardrone/ardrone-compile-windows-sdk-1-5-in-visual-studios-2010/
[3] http://www.microsoft.com/downloads/en/details.aspx?FamilyID=2da43d38-db71-4c1b-bc6a-9b6652cd92a3&displaylang=en

Connect Galaxy Tab With ARDrone’s Ad hoc Network

In order to use any of the available ARDrone application for Android, the Samsung Galaxy Tab has to be connected to the ARDrone. Unfortunately, this is done via ad hoc network, a functionality not activated on the Galaxy Tab [1].

As with any problems there are different solutions, one of them is to ROOT the device and replace the WiFi functionality with a patched version.

Instructions:

I) Root the Samsung Galaxy Tab [2] (tested with SuperOneClick v1.9.1)

Prerequisites:
– Kies Software downloaded from HERE and installed and Tab connected at least once to the pc.
– SuperOnceClick downloaded from HERE

Process:
1) Connect your galaxy tab with debugging mode disabled and sync with Kies at least once.
2) Disconnect it and enable debugging mode from Settings>Applications>Development>USB Debugging
3) Connect the tab again to PC and click on home button so that Tab comes out of Kies connection
4) Launch SuperOneClick.exe, on Vista/Seven be sure to run as Administrator (right click run as…)
5) Click on root and wait for 5-10 Mins
6) Reboot when/if told to

II) Copy patched file onto device and overwrite [3]

1) Download wpa_supplicant HERE (use 7-zip to extract) or HERE (zip not tested)
2) upload file onto your device with adb push or connected as an USB drive
3) disable WiFi on the device
4) mount /system as read write ( there is also an app for that mount /system rw )
5) replace /system/wpa_supplicant (if your favorite explorer does not work, try a terminal)
5b1) > su
5b2) > cp /sdcard/wpa_supplicant /system/bin/wpa_supplicant
6) enable WiFi (you can now see and connect to Ad hoc networks!)

On a first test run all applications seem to be able to connect to the ARDrone with firmware 1.5.1: ARDrone Demo, ARDroid, Androne Freeflight.AR (slow video)

[1] http://forum.xda-developers.com/showthread.php?t=838136
[2] http://forum.xda-developers.com/showthread.php?t=812367
[3] http://forum.xda-developers.com/showpost.php?p=7711198&postcount=6