Thursday, June 18, 2009

Using Ubuntu as your sole operating system in academia

I've been using Ubuntu Linux as my sole operating system for two years now, ever since before I became a professor. The switch was completely painless as I had already been using the same software on Windows and the Mac for years (such as OpenOffice, Firefox, VLC, Pidgin, Netbeans, Eclipse, JEdit, Inkscape, Gimp, etc.). I wrote about making the switch to Linux gradually over 6 years ago, and I dual-booted to Windows and Linux for a long time, but Windows was still my primary OS until 2 years ago.

There was some software I had to change when I made the switch, but I was planning to do so anyway. For data analysis instead of SPSS, I learned R, which is more powerful (see these notes for getting R and a GUI interface installed on Ubuntu). I had to find a different tool to make screencasts. Luckily they are all free in Linux. I used gtk-recordmydesktop, but there are also Istanbul, WebcamStudio, and others. For music instead of Winamp there was the winamp-clone xmms (and now Audacious). Of course there are itunes alternatives too. Wine can be used to run any Windows-specific software, including games. Second Life has a Linux version that works just fine, too, and Adobe AIR applications like Tweetdeck, Thwirl, and Seesmic Deskop work just fine. All web-based applications from Youtube to Google Apps to whatever work great in Firefox - you can install the latest Adobe Flash and Sun Java 6 plugins too.

The only reasons I've been still booting to Windows occasionally now are to make screencasts that show how to do things in Windows (which most students are using), and also to use the Wimba whiteboard/chat application that our university uses. Wimba is a Java applet-based application and should work on Linux fine, but it runs a "check my system" test first which complains and fails.

Also, our university stopped its proxy server that I was using to get off-campus access to journal articles in favor of a VPN instead that doesn't work in Linux, but now I just use an ssh tunnel to campus instead which works just fine (see these instructions for ssh tunneling).

Thursday, May 28, 2009

Syncing Two Drupal Sites

The drush module for Drupal has a new "sync" option to synchronize two Drupal sites, but it is undocumented and looking at the source code all it does is sync the files, not the mysql database. I haven't seen any other public solutions that do completely sync 2 drupal sites including the databases.

Here's a little shell script I'm using to synchronize the files and database of 2 drupal sites on different servers. We have a staging area where we test out upgrades or new code and features first. When not testing out stuff, we also use that 2nd server as a fallback in case the first server goes down. So this script copies everything over from the main drupal site to the 2nd staging area server using rsync, and then imports the mysql database on the 2nd server as well.

This script does depend on using the backup and migrate module for drupal, too, to dump the mysql database at regularly scheduled intervals to drupal's files folder. The script fetches the newest sql dump and imports it into mysql on the staging area.

Also this script prompts for the ssh password to remotely connect. To run without any prompting, you'd need to generate an ssh key file (see this tutorial).

Edit the sections that start with ##EDIT:
##syncdrupal.sh

##EDIT:
STAGESERVERNAME="name.of.staging.server"

##run this script on staging area server only:
if [ `uname -n` != $STAGESERVERNAME ];
then
  echo "only run this on staging area server"
  exit 0
fi

##EDIT:
##src and dest can be remote or local (see rsync tutorials)
SRC="username@mainsite.edu:/path/to/mainsite/drupal/folder/*"
DEST="/path/to/stagingarea/drupal/folder/"

echo "Going to sync files from $SRC"
echo "to $DEST"

##I exclude cache because of a permission error with print/tcpdf/cache
rsync -e ssh -azv --delete --exclude="cache" $SRC $DEST

##EDIT:
SQLPATH="/path/to/stagingarea/sites/default/files/backup_migrate/scheduled"

##find most recent scheduled backup .sql.gz file:
MOSTRECENTSQL=`ls -1t $SQLPATH | awk 'NR==1{print $1}'`

gunzip "$SQLPATH/$MOSTRECENTSQL"

##get sql filename minus the ".gz" part
MOSTRECENTSQL=`ls -1t $SQLPATH | awk 'NR==1{print $1}'`

##EDIT:
##db name, user, pass for staging area mysql server:
DBNAME="db"
DBUSER="user"
DBPASS="pass"

echo "Importing $SQLPATH/$MOSTRECENTSQL"

##import the sql file into mysql:
mysql -u $DBUSER -p$DBPASS $DBNAME < "$SQLPATH/$MOSTRECENTSQL"
We also add a little code like this to our theme's page.tpl.php file to flash a red box at the top of the staging area website so we'll remember which site we are working on: (change "stage" to servername of your staging area, and change 5 to the number of characters in that name)
<?php if (strncmp($_SERVER['SERVER_NAME'],"stage",5) == 0) { ?>
<div id="warn" style="background-color:red;text-align:center;">
<h1>You are viewing a backup version of the WHATEVER website (servername).
Please do not save any information here.</h1>
</div>
<?php } ?>

Sunday, May 24, 2009

Platforms for Developing Open Educational Software

Below is just a basic list of what software tools are popular now for creating various types of applications. I only post it because it changes from year to year and not everyone keeps up with this kind of stuff. I was also interested to see how well the Java platform could serve as an all-purpose open source stack for developing all kinds of educational software. It's not always the best or most popular solution for some types of applications, but it does have the widest presence overall. Of course Sun, which controls Java, is being bought out by Oracle, which may have an impact on some of the below options (like perhaps project wonderland or javafx). I have nothing against .NET either (and esp. its open source clone, Mono). In fact for a good while I was the 2nd most active contributor to the Boo programming language and compiler that ran on the .NET/Mono CLR platform. But the fact that it still can't do browser applets is a big strike against it for my purposes of creating educational software. Silverlight (and open source clone Moonlight) are making progress but still not there. Flash/Flex and Java are still the two best options there (with HTML5/Canvas being another up and comer). Google's Java-like platform (such as Android) is becoming more dominant as well. They just released O3D, a new 3D multi-user browser plugin, replacing their earlier discontinued Lively tool. However it only runs on Windows and Mac and is still in early development. If they released a browser plugin for running Android applications they'd almost have the total stack as well, but I have a feeling Sun/Oracle wouldn't be happy about that.

I didn't have time to hyperlink everything - you can google to see the various tools in more detail.
  • Learning Management Systems
    • Moodle (PHP)
    • Sakai (Java)
  • Web-based application frameworks
    • Rails (ruby)
    • Grails (groovy)
    • Turbogears, etc. (Python)
    • Cake, Symfony, etc. (PHP)
    • JSP, Struts, Velocity, Tomcat, etc. (java)
    • ASP.Net (.NET/Mono)
  • Cloud computing services
    • Google Appengine (Python, Java)
    • Amazon EC2
    • Sun cloud
  • Content management systems
    • Drupal (PHP)
    • Joomla (PHP)
    • Plone (Python)
    • DotNetNuke (C#, .NET/Mono)
  • Browser-based Ajax/Javascript frameworks
    • GWT
    • JQuery
    • Mootools
  • Browser applets
    • Flash/Flex
    • JavaFX, Java
    • Silverlight (.NET) Moonlight (Mono)
  • 3D multi-user virtual worlds
    • Second Life / OpenSim (.NET/Mono)
    • Project Wonderland (Java)
    • Croquet (squeak/smalltalk)
    • O3D (Javascript, new from Google)
  • 3D games
    • Java - JMonkeyEngine, JOGL, LWJGL, etc.
    • C/C++
    • .NET - XNA
  • 2D games/simulations
    • Netlogo, Starlogo, Repast (Java)
    • Pulpcore (Java)
    • Processing (Java)
    • PyGame (Python)
  • Cell phone applications
    • Android (uses java-like language and runtime by google)
    • iPhone (apple)
    • JavaFX mobile
    • Java ME
  • Desktop applications
    • .Net/Mono System.Windows.Forms
    • Java Swing
    • C/C++ - GTK, QT
    • Python - PyGTK, wxPython, etc.

Internet Development Course, Using Drupal

I'll have a paper coming out this summer in MERLOT's Journal of Online Learning and Teaching (JOLT) on using Drupal as a blended learning support tool for a class. This was my foundations of educational technology course in which students created their own wiki book called the Ed Tech Knowledge Base with notes about the field of educational technology. Later this summer I'll be conducting a workshop at the MERLOT conference on using Drupal to build educational or academic websites, and also releasing the pre-configured Drupal site with the modules and views underlying our department website, called "Department 2.0".

This summer I'm also teaching a course on Internet Development - beginning web development. All the materials and video screencasts are being posted online as well. I'm trying a new style of teaching web design. CSS is taught much earlier (in the 3rd week), tables much later. I'm using a more powerful text editor (JEdit) and Firefox addon (web developer) instead of the traditional notepad lessons. JEdit helps scaffold the process of authoring HTML and CSS files. Lastly, during the last month of class starting in late June we are going to learn about content management systems (in particular, Drupal). I've been building websites for 15 years starting with a site in 1995 for my student Amnesty International group that included a Perl CGI script to support letter writing, and in 1996 the Amnesty International USA site. But over the past 10 years pretty much every site I've built has used a content management system, starting with PHPNuke and later PostNuke, TikiWiki, and now Drupal. So I think it's fitting to introduce students to content management systems even in a beginning class so that they are prepared to create real websites for some organization, business, or school.

I've put the materials for every course I've taught online, starting with a simple wiki outline for a survey class on computer applications such as iMovie, Dreamweaver, and Photoshop to my Advanced Learning Design course in Moodle (login as guest).

Related to all this, I'm helping a student finish up a dissertation exploring the motivations for why faculty at MIT put their courses online in opencourseware. Actually though, faculty have been putting their courses online on their own websites or using wikis like wetpaint or pbworks or wikispaces for many years. Below are some reasons for my own decision to put my course materials online:
  • It sticks around for students and others to review later. In Blackboard and other traditional learning management systems your stuff disappears shortly after your class is over. I don't really take to the philosophy that students should have to memorize everything for a test. They'll forget it soon afterward anyway (see this five minutes university bit by Father Guido Sarducci).
  • Re-use is easier. I can review a previous year's class materials and revise them without having to start from scratch.
  • Posting publicly online and using blogs I believe makes assignments more meaningful to the students and to myself. You aren't just writing a paper for the instructor, but for everyone else to see as well.
  • I can improve the materials on the fly, or post stuff before the whole class is finished. In traditional opencourseware, you don't put your stuff out in the public until all the materials for the whole course are completely designed.
  • It's difficult to get people to observe your course for peer review and feedback. Even more difficult when you are teaching online. Members of my tenure committee and others can review my teaching materials much more easily when they are publicly accessible online.
  • No one else is doing it in your area. There is no other open course out there on learning design or educational technology, and not even on internet development (except for some wikiversity notes). Of course there are thousands of HTML and CSS and Drupal tutorials and videos online, but this way I can organize them all or create new resources for one integrated course.
Btw, we are using a tweaked version of the creativecommons_lite Drupal module so that all wiki pages and blog posts on our site default to use a creative commons open license. But interestingly I'm already seeing students on their own pick other licenses for their blog posts. One student made a post public domain, another made it all right reserved, etc. Other faculty in my department are getting onboard as well, using Drupal as a blended learning support tool for their courses, and/or posting news and wiki pages to our site. We even used the wiki to work on a forthcoming article for Educational Technology magazine about our department, which is unique in that it combines both learning sciences folks and folks with a background in instructional design / instructional technology.

Thursday, May 21, 2009

Problems with more Apple Products, including Apple Tablet

I posted earlier about problematic issues with using Mac computers as servers, mainly related to the crippled and out of date version of PHP included with it. I've tried to remain understanding of other Mac quirks on the desktop (like the spinning rainbow of death - Microsoft Vista has its own version of that now, and GNOME occasionally locks up for a number of seconds too), but a number of recent things have come up with other Apple software and technologies, too, including the recently leaked info about an Apple Tablet.

  • Serious Java Bug.Apple's version of Java has always lagged well behind Java on other platforms (including Linux). It's now been revealed that Mac OS X users are vulnerable to a serious java flaw that was fixed over 6 months ago on other platforms.
  • No flash or java on the iphone. The iPhone still can't run Flash, and of course Steve Jobs shrugged off running Java on the iPhone long ago. The main holdup isn't technical reasons, but licensing issues. The open G1 Android cell phone platform already has Flash running.
  • Apple censorship. Apple keeps making news for the apps it rejects or accepts to its app store. They rejected an ebook reader because people might use it to read an adult book, but accepted an application that involved shaking a baby to keep it quiet.
  • Overpriced tablet. It's now been confirmed that Apple is going to release a tablet computer next year. Already the price appears to be twice as much as existing netbooks and other upcoming touchbooks. That means again it's not going to be the best hardware platform for education, even though Apple used to be the leader in computers for schools. Many IT folks in education who have been around for a long time still stick with anything Apple puts out regardless of other cheaper or more powerful alternatives.
  • Crippled BIOS. All the software my class was using was deleted off the mac computers in our labs the day before my class this week. I had the idea of handing out flash drives with Super OS (Ubuntu) and all the software pre-installed and pre-configured on them (via UNetbootin). Students could just pop the drive into a USB port on any computer and boot to it. Instead I found out that Macs are intentionally crippled to not allow booting to a USB drive unless a separate install of Mac OS X is on the drive. Luckily I was able to stay there late and manually install the software to the computers myself.

ICLS 2008 Papers

[another old draft I never posted]
Papers for the 2008 International Conference of the Learning Sciences (ICLS) in the Netherlands have been posted online, although some of the links to papers are broken. Here some ones I pulled out (links are to pdfs):

NSF and other grant-related resources

I had this as an unpublished draft post from last year, I probably meant to post it to the learning sciences and educational technology group:

NSF Active Funding Opportunities
http://www.nsf.gov/funding/pgm_list.jsp?org=NSF&ord=date

Research on Learning in Formal and Informal Settings (DRL)
http://www.nsf.gov/div/index.jsp?div=drl

NSF Grant Proposal Guide
http://www.nsf.gov/publications/pub_summ.jsp?ods_key=gpg

Shorter guide for proposal writing:
http://www.nsf.gov/pubs/2004/nsf04016/start.htm

Writing Proposals to Meet NSF's Expectations
http://www.nsf.gov/events/event_summ.jsp?cntn_id=111743&org=DUE

NSF Project Evaluation
http://www.nsf.gov/pubs/2002/nsf02057/start.htm

Curriculum Research: Toward a Framework for “Research-based Curricula” Douglas H. Clements
http://www.gse.buffalo.edu/org/buildingblocks/writings/Curriculum_Research.pdf


NSF CAREER proposal tips
http://www.clarku.edu/offices/research/pdfs/NSFProposalWritingTips.pdf


Logic Models
http://www.uidaho.edu/extension/LogicModel.pdf
http://www.managementhelp.org/np_progs/np_mod/org_frm.htm
http://www.wkkf.org/Pubs/Tools/Evaluation/Pub3669.pdf
http://www.sph.uth.tmc.edu/uploadedFiles/Centers/TPRC/LogicModelBasics.pdf
http://www.innonet.org/?section_id=62&content_id=143
http://www.innonet.org/client_docs/File/logic_model_workbook.pdf
http://www.ci.minneapolis.mn.us/grants/fundraising-tips.asp
http://www.publichealth.arizona.edu/chwtoolkit/PDFs/Logicmod/chapter1.pdf



Evaluation
http://www.innonet.org/client_docs/File/evaluation_plan_workbook.pdf
CCLI Evaluation Resources
http://oerl.sri.com/ccli_resources.html

Saturday, May 09, 2009

Platforms for Digital Notetaking; The Touch Book

I'm involved with 6 NSF grant proposals this month - 3 down, 3 to go. On one of the projects we are looking at platforms to support digital notetaking with students. Students write and draw their notes which are recorded digitally. In many engineering and science classes, regular laptops are not sufficient to support note taking. Students have to write down math formulas or draw graphs, both of which are difficult to do with a mouse or trackpad. It requires a stylus input format. Why even bother with digital notetaking? Why not plain old pencil and paper? Our motivations for using the technology are to be able to record students' notes for research purposes, and also see how the use of the technology can enable more collaboration through online note sharing. There are other potential reasons to explore digital notetaking as well, but assuming digital notetaking is something worth supporting, I've identified 4 potential technology platforms that could work, each with various advantages and disadvantages. I'm ignoring for now the tablet PC laptop, which has been around for many years, but is still quite expensive, often costing over $1000 per device as compared with netbook laptops, which are in the $250-$400 range.

1. One platform option is digital pens such as Livescribe, IOGear, and ZPen. You draw your notes on regular paper, and the pen records the notes. You can transfer the digital notes to a computer in various file formats. These pens range in price from $65 to $200 and have various file formats and developer platforms. Livescribe's software API for example is java-based. The advantages of this platform are the cost - they are cheaper than laptops although the livescribe is still quite expensive. The Livescribe pen also requires printing their own special paper with micro dots used for tracking the pen position. Other pens like IOGear use a triangulated sensor attached to the corner of the sheet of paper or pad. Another issue though is the workflow. Students still need access to a computer of some sort to upload the notes, and some custom software for doing so.

2. Another platform is the PDA, such as a Palm or Windows CE machine. These aren't as popular as they used to be, with folks moving on to more expensive devices such as the iPhone, Google G1 Android phone, and the Blackberry. There is a mobile version of Microsoft OneNote available, which is software for notetaking.

3. A third platform is to use a regular laptop or netbook, plus a separate tablet drawing input device attached, such as a Wacom Bamboo tablet (starting from around $50-$60). This is a clunkier option, but doesn't add much cost if a student already has a laptop. There is the regular version of Microsoft OneNote one could use, or the free and open source Jarnal notetaking program, developed in Java.

4. A fourth option is one which I hope is the next phase in netbooks. These are netbooks with touchscreen interfaces - basically cheaper tablet pcs. The Classmate PC and its derivatives are in this class ($500-$600), as is the new Touch Book (due to be released this summer for $300-$400, pictures here). The Touch Book especially looks very interesting, except one issue is that it doesn't run regular Ubuntu or Windows - it uses an ARM processor that can run Android or Ubuntu Mobile. It's essentially a big cell phone minus the phone. I don't know if Jarnal would run on it or if there is alternative free and open source notetaking software that runs on Android or Ubuntu Mobile. There are some Android note taking applications listed here.

The latter two options though especially could be developed using open source platforms and software, and are completely paperless, unlike the digital pen options. The students can take and upload and share their notes while in class or online, instead of having to manually transfer and upload notes from digital pens. Of course the best solution would be a platform that would work with all 3 of the latter platforms mentioned, including smart phones such as the G1 which runs Android.

Anyway, I very likely will be ordering a Touch Book this summer and will post back here with some notes then.

Friday, April 10, 2009

Presentation: Using a Concept Inventory to Inform the Design of Instruction and Software

Here is the abstract and the slides for a talk I'm giving today at the Rocky Mountain ASEE Conference. The 2008 ASEE paper I refer to in the presentation was discussed in an earlier post: Developing a Concept Inventory. I hope to have a new animated circuit simulation ready for public release this summer. It will be free and open source. I'm developing it in scala.

Monday, April 06, 2009

Using Twitter, Friendfeed, identi.ca....

Like I mentioned in an earlier super feeds post, I finally got around to seeing the value of friendfeed - it ties together all these different social services such as delicious.com, blogs, twitter, facebook, etc. into one combined feed. I even tried out some services friendfeed supports I had not heard of before, too, such as goodreads for sharing what you are reading. Friendfeed also has tools to selectively forward your friendfeed activity to twitter, and instant message you when new stuff appears on your 'friends' friendfeeds.

Below are some of the social service sites I've been using:

  • http://friendfeed.com/edtechdev - as the badge on the side of my blog and above indicates, this is what ties together everything else I'm doing.
  • http://twitter.com/doug_holton - I signed up years ago but never used it. Signed up again a few weeks ago. I'm mainly just posting, well, micro-updates, stuff that isn't really worth spending the time on making a blog post about.
  • http://identi.ca/edtechdev - This is an open source alternative to twitter. I mainly post programming (drupal/scala/ubuntu) notes there, which are forwarded automatically to twitter too at the moment. Another nice feature of identi.ca is groups - I started edtech and education groups, which a few have subscribed to. Mention the group name with an exclamation point first in your identi.ca posts to link them to the group (!edtech).
  • http://delicious.com/edtechdev - shared bookmarks - forwarded to friendfeed which then forwards them to twitter
  • Shared google reader items - forwarded to friendfeed but not twitter
  • Learning Sciences & Educational Technology group - I was forwarding these posts to twitter, but now others are beginning to post more. Over 100 subscribers now.
  • Google reader journals - This is a shared page of all the ed/psy journals whose rss feeds I subscribe to.
  • http://twitter.com/edjournals - Via twitterfeed, the above journals are forwared to a separate twitter account (edjournals), although this has not always been working perfectly.
  • http://edresearchjournals.blogspot.com/ - This is basically a blog for those journals that don't have their own rss feeds. They just have email alerts, which I forward to this blog, and then show up in the journals feed above.

Some things missing from the list that haven't been very useful to me professionally - wikis (wikiversity/wikipedia/citizen..), ning (I'm on quite a few nings but haven't really gotten into any of them), facebook (walled garden more for sharing informal stuff with friends), news sites like digg/reddit/newsvine. I started http://ed-tech.newsvine.com/ but it never took off.

How do I tie it all together to follow all this and everyone else? I've got it down to just 2 tools - google reader to follow blogs, and pidgin, a free open source instant messaging client to follow twitter, identi.ca, friendfeed and google talk, and IRC (I usually keep some irc channels open when I'm developing like #drupal-support, #scala, #ubuntu etc.).

What are my thoughts on twitter? I have some misgivings signing back up for it, but really when I thought about it, they were the same issues I've had with virtually all social networking tools I've used - I tend to personally get out of it less than I put into it. But really that's true of blogging and bookmarking and writing and so forth too, and it doesn't bother me. I like contributing even if it's mainly anonymous readers or google searchers who might actually use it (like those trying to figure out how to use R in Ubuntu or set up a server or learn about discovery learning). I've written before about Google as your blog audience. And as I've said once before, if it's not on Google, it doesn't exist :) Right now though, most of twitter is not on Google, and even with 100 followers already links don't really generate traffic, but you can search twitter itself to see what the current buzz is for various topics. I used tweetgrid for example to create a control panel searching multiple topics & tools that interest me. And one other thing nice about twitter that is also nice about blog reading - you can turn it off, ignore things for days if you want, or unsubscribe from people/blogs who are clogging your reader or twitter feed, it doesn't matter. So you don't really get overloaded like with email, which constantly piles up if you ignore it for even one day.