Friday, September 28, 2007

ICL conference in Villach - part 2: Talks

The talks were organized in parallel sessions - although the organizers did their best to make sure that all the papers were presented there was a non negligible number of no-show, which messed up the program by changing the timing mand making it difficult to jump from one session to the other. So I surely missed many good talks - parallel sessions are always a problem. Of those I attended to, some did not give me much, others were interesting. Here is a short note of those that I found worth listening.

- Claudia Steinberger from Klagenfurt gave a nice talk on her experience in running a course using web 1.5 (i.e. some web 2.0 techniques without a complete and satisfactory integration). I heard her talking about mobile learning a few years ago, I always like her talk. Simple stuff but well grounded, without nonsense.

- Matjaz Debeve, a slovenian PhD student, presented yet another system for recording videolectures. he mentioned a number of commercial system, I have to look at them in detail:
The main point of his work was to have a cart with all the necessary mounted on it (Camera, pc, microphones) and to provide subtitles and gesture language for deaf people.
He mentioned that they plan to conduct a usability evaluation using SUMI questionnaires and semistructured interviews (see also the FAO site on this).
They also plan to be compliant with the EBU reccomendations, event though they are for TV.

- Frantisek Schauer and Miroslava Ozvoldova presented a system for accessing and steering physics experiments on line. Experiments are built with the ISES system. Cute, but I'm not so convinced of their advantage with respect to real experiments or simulations.

Someone (maybe Balacheff?) mentioned applications of neuroscience to learning - Natural learning by Zulls - also quoted here: it looks like a theory that describes learning as a process that (to me) sonds very similar to the scientific method. Also Kolb's learning styles is something I should look a bit into (see also this).

BTW, following some pointers on Web 2.0 I found a site that looks juicy: social computing magazine.

The whole special track on Schools and ICT was good. Here are the talks:

Erika Hummer presented a report on supporting the introduction of ICT (and in particolar LMS) in Austrian classes (elsa.schule.at). One of the points in the project was to allocate money to teachers for doing extra work in the form of pairing to coach and mentor a colleague (ecoaching.schule.at). Another point was trying to relief the problema connected with the management of HW and SW by hosting Moodle instances in a centralized location (www.edumoodle.at).

Anton Knierzinger and Marianne Ebenhofer presented their initial work on intercultural integration in the primary schools. It seems that ICT can be really effective on this crucial issue.

Then came my talk on Interactive Whiteboards. The slides are available on Slideshare: Introducing interactive whiteboards in the schools: an experience report (paper written together with Benjamin Dandoy).
Unlukily my talk was at the same time as the one by Enrique Canessa and Marco Zennaro, that presented their fully automated lecture recording EyA system that I saw last week in Trieste, but we had the time to talk and exchange ideas couple of times in these days.

Stevens Scott (Carnegie Mellon University) presented a work aimed at helping novice Physics teachers.: the PATHWAY project. It is based upon the informedia project that extracts metadata from movies by creating transcripts and analysing them. They also have a question-answering system that analyses the query and provids a pre-digested response in the form of a movie (www.infsearch.cs.cmu.edu/idvl.htm)

Thursday, September 27, 2007

ICL conference in Villach

Villach, Kaernten, Austria. ICL conference (Interactive Computer-aided Learning).

Running a conference (or better, many) can be a business. There are associations that charge you a lot for participating and then they give you minimal support. I remember going to a IASTED conference, and for 600 Euro we almost did not even have coffee during coffee breaks. They had promised printed proceedings - but then they discovered that shipping them to a Greek island (the conference was in Rhodes) coasted too much - so we never got them. The conference was good - in the end a conference is as good as its participants make it - but I felt ripped off. (BTW, there were also "special" hotel prices that were higher than I could find - in the very same hotel - in a travel agency...).

This conference is not of that sort. The organizers made a remarkable job in finding sponsors and covering some lunches and dinners, even at a lower-than-average participation fee. I do have some experience in organizing events, and I know how that can be difficult.

I wish they did the same good job in the selection of the keynote speakers. Well, on paper they made reasonable choices, but in practice the start wasn't that good, and the end was even worse..
The first three keynote speeches were... well, depressing. I’ll omit their names here.

The first stated that XML allows to address the issue of having semantic indexing of the content, and to make the content machines understandable. Well, maybe if you add a couple of other layers on top of XML it might be true… Embarrassing, maybe he should go back and take a look at the layers of the Semantic Web. He also said that with mathML you can do calculations - e.g. take derivatives of a function. I believe it's only a markup language, not an engine...

Another keynote gave a talk about the evolution of e-learning, from web pages to Learning Management System (LMS), to Managed Learning Environments (MLE), to Personal Learning Environments (PLE) to a future Collaboration Environments. These last should be based on the emergine of web applications (like the google office suite). Well, the whole issue was very much technology-oriented and rather blurred . He did not comment on the how and why this technology should deliver more efficient collaboration models, and spent his time demonstrating that you can edit a document, or even open a browser, in a browser's window. Well, fun and exciting, we know that network computing will probably be the next big thing, and that Bill has nightmares about that, but terribly out of focus.

The third keynote was supposed give a talk on how Web 2.0 will enhance e-learning.
The first statement was a sign of the confusion that is often present when people speak about Web 2.0. When comparing the two approaches, he mentioned that “Web 1.0 is static while Web 2.0 is dynamic”. Ouch, CGI? He continued saying that “Web 1.0 is based on client-server paradigm, and Web 2.0 is based on Web Services”. Irritating, why do people talk about things they do not know? And this nonsense was more or less all he had to say about Web 2.0. The rest of the talk was a quick run through what they do in their labs, including an applet-based (web 2.0?) collaborative environment and a virtual reality system (in a joke (?) defined as Web 3.0).

Luckily then the series of weak keynote speaches was interrupted. Nicholas Balacheff gave a good talk. among his points was that learning is a change of behavior, but real learning is in the rationale of the change of behavior. Among the things he has worked on there is Aplusix , an Algebra Learning Assistant.

The fifth keynote, Di Paolo from Stanford, gave a very good talk about the transformations that a University has to go through to support LongLifeLearning. His slides are available at scpd.stanford.edu. The parameters that are important according to him are:
  • provide a quick response
  • students expect to work in a workgroup
  • availability 24/7/365
  • learning by searching
  • from connectivity to collectivity
  • provide customized learning
  • be aware that there is a strong interest in international interactions
  • provide challenges
  • give the prossibiliy to preview courses and read students evaluation before registering
  • view students as customers: eliminate delays and inefficiencies
  • be ready to deliver technology smarter,smaller, faster, anywhere
  • always give up-to-date information (time stamp every token of information you provide)
Next a movie about shifthappens (shifthappens.wikispaces.com) was given. It was of the "Information Anxiety" series :-) but it was certainly interesting.

On the following day, the next keynote was for me the worst surprise (but wait, read also the long discussion in the comments to this posting!).
Taisir Subhi Yamin’s talk (Ulm University, Germany) was pushing the idea that e-learning’s mission is to help the “talented and gifted students”. There is even a pedagogical method and a system that has been put in place to pursue this idea: the Renzulli Learning. Sounds odd to me… My experience is that (at least at the University level) there is not much you can do to help very good students: they find their own way. Sure, advising helps, but I do not believe e-learning can effectively do that. And after all it’s only 10% of the students, and it is a joy to wok with them…
Also with very bad students (e.g. students with serious problems in their background knowledge) there is little hope to have an impact. Where the teacher (or e-learning) can really make a difference is in between: with the large mass of average students.
Ok, things may be a little different in primary and secondary school, BUT Yamin pushed his argument to say that “gifted students should be grouped in special classes”. I VIOLENTLY OBJECT TO THIS VIEW! The next step would be to create special classes for students with problems, and it took us the last 50 years to understand this is WRONG. The road outlined by Yamin is more than wrong: it’s frightening, and to me it even evokes bad memories from the fist half of the last century…

The last keynote (Ulf Daniel Ehlers, Vice President of the European Foundation for Quality Elearning) was -of course- on quality in e-learning. Good part of Ehlers' talk was on serendipity, continuous innovation, perpetual beta. Most of the content of the talk can be found in form of a summary here. It wasn't the kind of talk that changes your life but it was a honest and reasonable talk. Among the things I found interesting was the notion of transition from Transmissive Learning (distribution of learning material) to Expansive Learning (collaboration and reflection). Kind of obvious but nicely wrapped!
On the same line, he was quoting Schulmeister 2005 - but I was not able to find document he was referring to, not even through Schulmeister's home page. During my search through Schulmeister's publications however I found an interesting classification of Interactivity in Multimedia (in German!).
Later on I discovered that Ulf Daniel Ehlers maintains a blog on quality in e-learning.

Monday, September 24, 2007

Teaching a crash course on Java in Trieste

Last friday and saturday I was in Trieste to teach a quick course on Java (11 hours). I was invited by Giorgio Pastore and Maria Peressi of the Università di Trieste.

My appox. 20 students were high-school teachers. Their background was some programming in other languages (mostly Delphi-Pascal, someone C, someone FORTRAN).
The challenge was to give them the main concepts of Object Oriented programming, programming with events, and to give them the basic ability to write some Java and hints about how to proceed on their own. Their final goal was to use the language to build applications useful for teaching (e.g. some simulated experiment).

The lectures were video-recorded with the EyA system built by Enrique Canessa and coworkers at the ICTP's Science Dissemination Unit, and were available on the web.

NOTE ADDED LATER: After a few days a student complained because the system had recorded also the breaks, and asked the videos to be removed from on-line access. It's a pity...

Tuesday, September 18, 2007

Recover lost administrator password on Mac OsX

Easier than I expected...
Use the installation disk, and reboot the machine pressing the the C key whet the machine starts.
Proceed to a new OS installation, but not all the way! just go ahead until you have a menu bar on the top. In the menu bar choose "Utilities" and "Reset password".

Adding a user to a group on a mac

Mac OsX does not use the usual Unix user and group administration tools. It has it's own application - called netinfo (see man netinfo) and a gui for that, called Netinfo Manager and located in /Applications/Utilities. You need to have administrator privileges to use it for modification.

When you open Netinfo Manager, you can browse a set of items, among which users and groups. When you select a user or a group, you'll see a set of properties and values. Each grup is identified by a gid number, and each user by a uid number - and a gid that refers to its default group.
If you want a user to belong also to other groups (say e.g. to group www), you need to add the name (not the gid) of the user to group www's "users" propertiy. If the "users" property (in groups -> www) does not exist - by default it's not there - , you need to create it by using the "new" icon top left.

If instead you want to do it from command line, take a look here. An example is
dseditgroup -o edit -a username -t user groupname
(you may have to sudo this!)

Friday, September 14, 2007

MySQL, Apache2, PHP5 and Tomcat (with mod_jk) on Mac OsX

For MySQL, Apache and Php5 there are a couple of web pages describing how to do it, and some package does automagically everything (e.g. MAMP). However, in such way you are bound to certain versions - sometimes old.
A better option is to be able to do it yourself, so that you can upgrade when you want and choose the version you want. Avery good description of how to do that is given in Richard Valk's blog.
Here are the links:
What is really good in these pages is that Richard describes the way to install these softwares in a way that is somehow independent on the actual version.
For instance, by carefully following step by step the instructions, I was able to successfully install the current versions: httpd 2.2.6, mysql 5.0.45, php 5.2.4 even though his instructions refer to earlier versions.
At the end of the process described in these pages you'll have Apache and MySql starting automatically at boot time.

Delicate points in the process are:
- make sure that you choose the script for the right architecture (ppc or intel)
- make sure that you carefully read and follow the section about the MySQL libraries.

One point not mentioned in Richard's php page is the fact that probably you also want to add index.php as a file automatically used when you access a directory (as index.html is). To do it you have to edit Apache2/conf/httpd.config, and modify the DirectoryIndex statement as follows:

<ifmodule>
DirectoryIndex index.html index.php
</ifmodule>

To check that it works, create the file index.php in your deployment directory (default is the Apache's htdocs) with the following content

<html><body><h1>It works!</h1>

<h2><?php
echo("php also works!");
phpinfo();
?></h2>

</body></html>

and then point at http://localhost/index.php.

Another point is that when you invoke apachectl (to start and stop Apache) probably it still resolves to the preinstalled Apache (try to issue the which apachectl command in a shell, you will probably find out that this points to /usr/sbin/apachectl). This can generate problems. I solved this by renaming /usr/sbin/apachectl to /usr/sbin/apachectl_orig (just to be able to restore the original setting if needed!), and creating a link from /usr/sbin/apachectl to /Library/Apache2/bin/apachectl:
ln -s /Library/Apache2/bin/apachectl /usr/sbin/apachectl



Let's now move on to Tomcat: its installation is very simple, and is well described on the apache wiki: essentially you download, unpack, and set the JAVA_HOME environment variable. I easily installed 5.5.25 ( I unpacked it in /Library/Tomcat - note that later there will be references to this directory - so if yours is different adapt the commands to your configuration).

At this point Tomcat responds on port 8080 while Apache responds on port 80. It would be better to have both of them responding on port 80. This can be done by registering Tomcat as an Apache service, so that Apache recognizes certain URLs and forwards them to Tomcat. Doing so (through the mod_jk module) is a bit more complex - because I was not able to find reliable instructions, and the official documentation page does not describe clearly all steps.
So here is how I did it:

1) define the TOMCAT_HOME environment variable pointing at the place where Tomcat was unpacked;

2) get the mac binary mod_jk.so (the actual name will be something like mod_jk-1.2.25-httpd-2.2.4.so) from the Tomcat site, rename it mod_jk.so and drop it into APACHE2_HOME/modules, where APACHE2_HOME stays for the place where Apache2 was installed.

3) edit conf/server.xml in your TOMCAT_HOME, find the line
</Engine>
and add right before that:
<Listener className="org.apache.jk.config.ApacheConfig" modJk="/Library/Apache2/modules/mod_jk.so" />
(assuming that /Library/Apache2 is your Apache2 home).

4) Create a new file containing the following lines:

# Setup for Mac OS X
# Define the homes
workers.tomcat_home=/Library/Tomcat
workers.java_home=/Library/Java/Home

# Define the file separator
ps=/

# Define the worker's names
worker.list=ajp13

# Definition for worker
#
worker.ajp13.port=8009
worker.ajp13.host=127.0.0.1
worker.ajp13.type=ajp13

and save it with the name workers.properties in the directory TOMCAT_HOME/conf/jk (if the directory does not exist, create it).

5) edit conf/httpd.config in Apache2, adding at the end of the file:
# Tomcat bridge auto configuration
Include /Library/Tomcat/conf/auto/mod_jk.conf
(assuming that your TOMCAT_HOME is /Library/Tomcat)

6) restart Tomcat (sudo $TOMCAT_HOME/bin/shutdown.sh an then sudo $TOMCAT_HOME/bin/startup.sh). At this point the file called /Library/Tomcat/conf/auto/mod_jk.conf is automatically created.

7) restart Apache (sudo $APACHE_HOME/bin/apachectl restart)

8) open a browser, and point it to http://127.0.0.1/servlets-examples/
You should see page coming from your TOMCAT_HOME/webapps/servlets-examples. You can try to execute the hello world, everything should be now fine.

The next problem is what happens if you want all this to work with your machine name instead of localhost.
In fact opening
http://your_machine.your.domain/servlets-examples/ in your browser will give a "Not Found". To fix this, you'll have to change in conf/xml the following lines:

<Engine name="Standalone" defaultHost="localhost" jvmRoute="jvm1">
...
<Engine name="Catalina" defaultHost="localhost">
...
<Host name="localhost" appBase="webapps"
unpackWARs="true" autoDeploy="true"
xmlValidation="false" xmlNamespaceAware="false"
>


In all three cases you need to change "localhost" with "your_machine.your.domain" where
your_machine.your.domain is of course the name of your machine.
Restart Tomcat first and then restart Apache: point at
http://your_machine.your.domain/servlets-examples/ in your browser and it should work. Note that now http://127.0.0.1/servlets-examples/ will give a Not Found!
If you want both localhost (127.0.01) and
your_machine.your.domain, you'll have to go though the Virtual Hosts setting - but I'll not cover that here.

IMPORTANT NOTICE: when you deploy a new webapp, always first restart Tomcat and then restart Apache (so that the automatic configuration is first regenerated by Tomcat and then read by Apache).

The next step would be to have Tomcat starting automatically at boot time.
An example and some explanation can be found here.
In short, here is what is needed (assuming that you already have Apache starting at boot):
a) create a directory Tomcat in /System/Library/StartupItems/
b) create a file called Tomcat in that directory. This is its content (of course reference to the directory where Tomcat is installed should be modified according to you system):
#!/bin/sh

. /etc/rc.common

StartService ()
{
if [ "${TOMCAT}" = "-YES-" ]; then
ConsoleMessage "Starting Tomcat Servlet/JSP Server"
/Library/Tomcat/bin/startup.sh
fi
}

StopService ()
{
ConsoleMessage "Stopping Tomcat Servlet/JSP Server"
echo "Stopping Apache web server"
/Library/Tomcat/bin/shutdown.sh
}

RestartService ()
{
ConsoleMessage "Restarting Tomcat Servlet/JSP Server"
echo "Restarting Apache web server"
/Library/Tomcat/bin/shutdown.sh
/Library/Tomcat/bin/startup.sh
}

JAVA_HOME=/Library/Java/Home; export JAVA_HOME
RunService "$1"

and make it executable
(sudo chmod a+x
/System/Library/StartupItems/Tomcat/Tomcat)

c) Next create a file called StartupParameters.plist into the same Tomcat directory. The content should be:
{
Description = "Tomcat Servlet/JSP Server";
Provides = ("Tomcat");
Requires = ("Resolver");
OrderPreference = "None";
Messages =
{
start = "Starting Tomcat Servlet/JSP Server";
stop = "Stopping Tomcat Servlet/JSP Server";
};
}

d) The last step is to make sure that Apache will wait for Tomcat to start. We can do that by changing the
StartupParameters.plist in the
/System/Library/StartupItems/Apache directory in the following way:

{
Description = "Apache web server";
Provides = ("Web Server");
Requires = ("Tomcat");
Uses = ("Disks", "NFS");
}

(essentially we added the line that declares that Apache "Requires Tomcat").

For further info on Tomcat and on how to deploy servlets and JSPs. see the article on Apple Developer's Connection.