Sunday, August 19, 2012

content that I created during MOOC MOOC

Here's a listing of some content that I created as part of the week-long meta-MOOC that I participated in:
What a week!  As I noted in the posts and video, I really enjoyed the week and working with other learners who are exploring MOOCs.  

Wednesday, August 15, 2012

MOOCs and the potential for co-learning


In his essay "Toward Peeragogy," Howard Rheingold writes that he began using the term "co-learners" as he shifted from in-person to online courses.  This was part of an evolution that began with Rheingold's earliest, in-person classes, as he sought to improve the collaboration between groups of students working on projects.  I read this as a technology-based breakthrough and since I work in technology/code and don't teach, I draw some encouragement from this.  I might be overwhelmed by a 9:15 PM #moocmooc twitter discussion on pedagogy, but technology is foundational to MOOCs.

Technology enables MOOCs, but based upon my limited experience, MOOC development should continue so that the more aspirational collaborative learning features (as described by Rheingold and by Dave Cormier) are more visible to learners.  For example, I'm participating in a fine Udacity physics course.  Based upon the user interface that I see in this course, I think it would be possible for me to get locked into a Lecture-Test model of participation.  A discussion board is available and I can communicate with other learners in the course, but the integration of these collaborative features with the classroom "module" is limited.  Instead, the learner is guided by default through lectures and multiple choice tests, a pedagogy that is, as Audrey Watters noted, "retreading old practices rather than really rethinking how technology can transform how we teach/learn."  As a Udacity learner, I feel that the current service (that I've experience in one intro course) doesn't encourage co-learning.  

As I said in my video yesterday, it's great to be in this course and I'm learning a lot.

Friday, July 20, 2012

Amazon DynamoDB - application examples

I've been doing some development work with Amazon's DynamoDB recently.  Here's info on two github repositories that enable you to get started with DynamoDB and that show, at least at some level, the kinds of apps that DynamoDB can be used for. 

  • CloudSpokes Kiva Loan application [Java]:  Data are loaded from a JSON feed into DynamoDB.  The application supports item loading, and the display and filtering (by country name) of DynamoDB data. 

    The source code for this project is available on github

  • Sample bulletin board application [PHP]:  A discussion board application that supports DynamoDB data creation and review using web forms.  The Readme file includes instructions that are sufficient for getting the application online, though Apache configuration knowledge is useful.  Note that if you want to use the AWS Console to review table data, you'll need to set the appropriate DynamoDB endpoint in file SimpleAmazonDynamoDB.php.  (See this page for a listing of DynamoDB endpoints.)

    The source code for this project is available on github; I've created a fork with some customizations on github.  

Tuesday, June 12, 2012

adding Open Graph Protocol metadata to XTF subject search results

Postscript:  After encountering some technical problems with the use of Facebook on the database site, I've removed all but the site-level OGP data.  The example code functions.  

Description of problem

I'm using Open Graph Protocol metadata to enhance user engagement with the Naval Reactors History Database. I've coded the top-level site with OGP metadata, which is a very straightforward process. The XTF platform is used to support discovery for this database. OGP metadata is simply embedded in the HTML markup for the main form, as defined in the XTF file searchForms.xsl. The outputted metadata makes the site's search page an object in the Facebook social graph and enables users to express a Like relationship with the site.

I am also interested in embedding OGP structured metadata into topical pages within the NRHDB site, which is a much more challenging task. In short, I want to display OGP metadata for some subjects prominently covered in the database, using the database's controlled vocabulary to identify each subject.

Solution

The key XTF file for this task is resultFormatter.xsl and I used both XTF's debug mode support and the Facebook Linter in implementing this functionality.

Here's a rough outline of the steps that I performed for one specific topical search:

1. Identify the simplest URL that can be used to pull up a subject search (example: http://navalreactorshistorydb.info:8080/xtf/search?f1-subject=S1W).

2. Open this URL in XTF's debug mode, step 4.

3. Save the raw XML results for the search to local disk; this is the XML that is fed to the resultFormatter.xsl stylesheet.

4. Analyze the XML structure, particularly the data returned under the /crossQuery/parameters/param elements. This will be used to guide the creation of the XPath expressions used in step 6.

5. Open resultFormatter.xsl and add a local parameter.


6. Add the following code, immediately after the head section's title element. This XSLT code performs a test on the XML data to determine, first, if it's a controlled vocabulary search and, second, if it's a search for the specific term. If both conditions are met, OGP metadata for the topic is inserted into the HTML output displayed on the results screen.


The OGP documentation should be consulted on structuring this metadata and for other rules, such as thumbnail size requirements.

The results can be viewed using the Facebook Linter. I'm still exploring how to best implement subsite or topical page OGP metadata for the Naval Reactors History Database and welcome any comments on this approach and procedure.

----

Addendum

This excerpt provides another example - adding the Open Graph metadata only when viewing the first set or screen of results. This requires the addition of another local parameter (countInfo, mapped to /crossQueryResult/query) and a second xsl:if statement.



Thus far, with some of the major subjects coded in the resultsFormatter.xsl file, performance doesn't seem to be a problem, in terms of the time to display the results screen.

Monday, May 28, 2012

thoughts on AWS DynamoDB

I am impressed with Amazon's vision for its DynamoDB NoSQL database service.  This FAQ document provides a good introduction to the service.  DynamoDB has tremendous potential.  Most importantly, it enables a company or institution to deploy a service and scale it as needed, both in terms of the number of items and the read/write throughput for a table.  (As noted in the FAQ, the ability to scale up write throughput to any level that's needed is a significant break from the capabilities of Amazon Web Service's SimpleDB service, another NoSQL service option.)  Having a service that can scale up for success and scale down as needed again illustrates the economic advantages of cloud-based services.

On the negative side:  DynamoDB is still a relatively new service.  Earlier this month, the ability to view, add, and delete table items was added to the AWS Management Console, a respectable add-on, most notably, enabling a spreadsheet view of a table's data without using the API.  I found the Developer Guide documentation examples for read and scan operations to be barely adequate at this point- though equivalent for the Java, .NET, and PHP SDKs.  In short, these examples are well-organized and useful, but limited.  Additionally, searching on the web for code examples for read and scan operations didn't yield as much information as I expected.

Thursday, April 19, 2012

moving Facebook Social Plugins from IFrame to HTML5

This weekend, I migrated Facebook Social Plugins for the Naval Reactors History Database site from the legacy IFrame apps to HTML5 apps. I found this procedure to be helpful in accomplishing the migration. I'm embedding this JavaScript snippet into XTF's XSLT at appropriate points (the search and results pages code):

There are a number of benefits of moving from IFrame to HTML5 apps. As one example, I'm now including the Send button, along with the Like button, on the nrhdb site.

Note that you need to have claimed your Facebook e-mail account before the Send button will function. Here's a Facebook Developers discussion on this point; a poster describes this requirement in the thread.

This was a pretty easy upgrade and I like the result, though embedding the plugins in the context of XTF's structure made it more challenging.

Postscript: I obtained much better results for pulling in the comments stream for the Comments plug-in by mounting the information pages on an Apache server, instead of Tomcat 6. When the info pages were served by Tomcat, the comments stream pages were frequently truncated, with a status bar appearing on the screen indicating the content was being loaded.

Thursday, January 5, 2012

procedure for increasing the root disk size of an EC2 instance

Last night, I used this procedure, written by Eric Hammond, to increase the boot disk size on the instance used to support the nrhdb. It requires use of the Amazon EC2 command line tools, working from another computer (i.e., a computer other than the server that's being resized).

I only had to make a couple of modifications to use it:
  • When running the ec2-run-instances command: because I wanted to start the instance in a specific availability zone and apply the desired firewall settings, I added two parameters not included in the procedure: --availability-zone and --group (this reference document provides more info)
  • My initial attempt to run the resize2fs command did not resize the disk in the OS; I had to reboot the server, and at that point, resize2fs ran successfully
Summary: This procedure describes how to increase the size of the root disk on an EC2 server with very little downtime.