I was giving a demo at the Apple Academix Conference during a keynote where I use a Google App Engine application to simulate a clicker-like activity in a course. It is a simple multi-user number guessing game. Whenever the audience participation was too good and too many people started clicking on the application I would get errors - it made the demo in the middle of my talk lose a bit of credibility - but it was also funny.
I finally saw the error and spent a few hours to track the issue down. I was getting the following message:
TransactionFailedError: too much contention on these datastore entities. please try again.
I had been using get_or_insert() pretty much with reckless abandon and wondered if it was smart enough to optimistically do a get() and see if the object was there before starting a transaction to do the get() and then put() if necessary. But given the behavior I was seeing - it looked like it was starting a transaction every time.
I had 20 participants and after the first click in the application, there were no new objects in the application and 20 people clicking within a 10 second interval were causing the error to occur. I suspect but cannot confirm that at some level the AE framework marks you as abusing transactions and then it takes a while before load drops down that it lets you once again use transactions.
So I decided to reduce my transaction abuse and build an optimistic get or insert that does the get() first and then if the record does not exist do the get_or_insert(). This way once objects start to exist there will be no more transactions. And yes, my next optimization is to use memcache.
So this was my approach.
In my bad code, the pattern looked like this:
course = LTI_OrgCourse.get_or_insert("key:"+course_id, parent=org)
So I wrote this function:
def opt_get_or_insert(obj, key, parent=None):
logging.info("OPT key="+str(key))
if parent == None:
mod = obj.get_by_key_name(key)
if mod != None : return mod
mod = obj.get_or_insert(key)
else:
mod = obj.get_by_key_name(key, parent=parent)
if mod != None : return mod
mod = obj.get_or_insert(key, parent=parent)
return mod
And then changed all my calls to be:
course = opt_get_or_insert(LTI_OrgCourse,"key:"+course_id, parent=org)
I wish this were part of the App Engine library instead of something I had to write. This may not be the most general approach and there may be better ways to do this - but for now I hope that it avoids my dreaded "TransactionFailedError: too much contention on these datastore entities. please try again." message even under low load levels.
Now off to write a load test for this to see if I can reproduce it.
I have a Macintosh Air (first revision) that I purchased the day they were announced. I loved the unit - my only complaint was that the disk was a bit small. But the rest of it was so nice - it has been by my side constantly from the time I purchased it.
About a 2 weeks ago, it developed the dreaded "Dying Hinge Problem" - so I started to search the Internet and found that Apple is categorically refusing to repair these problems claiming that it is "abuse" and as such not covered under AppleCare. There are many vitriolic blog posts and a cool YouTube video where a guy stabs his Air with a knife (really) to kill it and then switches to an IBM ThinkPad.
I have been traveling since the problem appeared so I really could not deal with the problem until I got back. Whenever I was a bit bored I would Google more and kept coming to the same conclusion - I was screwed. Not only was I screwed - but I was going to have to have a bunch of really frustrating conversations with Apple as I tried to get the defect repaired - I kept running these imagined conversations over and over in my head in the Ann Arbor Apple store - and over and over I lost the conversation after much frustration and wasted time where I was mean to the employee and then went to the manager and shouted at the manager. I imagined making a fuss in the store to embarrass them into fixing their defect for free and failing to get my Air fixed - instead I just looked like a fool.
Now let me just say that this is a defect - the box was not dropped - I did not use my MacBook to shovel snow or remove roof shingles. Often my laptops get dropped once (and survive) but this one never was dropped. I have had 4 Apple Laptops over the past six years (and loved them all). Every single laptop ended up with a dead hinge except one. The mean time to hinge wear is 3-5 years - it just happens. It is *so* consistent that the only reasonable assumption is that the failure is engineered in to make sure that laptops don't last forever - forcing us to upgrade. The only mistake in the first generation Mac Airs is that it gives up a year *before* AppleCare expires and not a year *after* AppleCare expires. A slight engineering mistake - best solved by simply telling everyone that if it failed before the designed-in 3.5 year failure period - then it *must* be abuse! So Sayeth Apple and we must obey!
Back to my story. I got back from England yesterday and was ready to start my battle with Apple - I decided to start online so I went to Apple Support online and typed in my serial number. And then I received the wonderful news that my laptop was not covered under warranty!
This made perfect sense - I had not purchased AppleCare when I bought the box (the $1799 edition) and thought to myself - "What might go wrong with this box that Apple would agree to fix?" Now that Apple insists on their service centers fixing things it is easier to simply characterize anything as abuse if they don't want to fix it.
So when I calculated the things that Apple would fix and multiplied it by the probability that one of those (very few things) would go wrong and multiplied it by $1800 - I simply decided to keep my $250 and apply it to my next computer.
Damn - I was right - I am a genius! I am now sitting on a broken Mac Air with a defect that the Apple Borg would declare as abuse and waste *hours* of my time arguing about after which I would invariably lose anyways.
Not only did I save money with this decision - I saved time and peace of mind - an all around win! I do need a new laptop now because the Hinge problem (a defect) will just get worse - so I need to put this Mac Air into light duty.
Of course because of my wisdom, I keep my $250 and apply it to my next Apple purchase. I still love Apples and still will buy an Air as a replacement - the Rev 2 systems are faster with a larger hard drive anyways and I might just get a 13" Aluminum MacBook anyways - a little more weight and a DVD and the ability to plug in audio cables without going insane and $400 cheaper and a larger hard drive and and and... Hmmm.
So here is my general recommendation to folks - keep buying Apples - if you get mad at Apple when they choose never to fix things and blame you - don't switch to PC - just buy your laptops differently from Apple: (a) Buy the bottom of the line that you can tolerate - don't buy that super-duper system and (b) don't buy AppleCare! Perhaps if enough of us do that - they will get the picture.
This way you upgrade almost twice as often for the same price. Also those broken hinge computers make good servers or even desktop systems - you just need to stop hauling them around and opening and closing them. They last for *years* with the broken hinge.
P.S. The only computer of the four Mac laptops I have purchased that has *not* developed the hinge problem was the MacBook pro that was only 1 year old when I switched to the Air. Since then it mostly sits on a desk as my desktop.
P.P.S. The sad thing here is that this *is* a defect - it is exacerbated the more you use the system - lots of travel lots of security checks - working in airplanes - working in airports - working on a bus - make a laptop's life rough. In a sense because the Air is so wonderful - we use the living crap out of them. It is sad that Apple can't put a little more engineering into these boxes (hinges in particular) to support heavy use to insure these systems do last at least 3 years under heavy use conditions.
P.P.S. I am amazed at how solid my first-generation iPhone is. Prior to having the iPhone Generation-1 I had a series of Treo's that never made it past 10 months before it looked like they had been through a war (I travel a lot). The iPhone gen-1 is over two years and there is almost no wear at all - very impressive engineering. Perhaps Apple should just make their next generation of laptops "hinge-free" and have a slide-out keyboard or on screen keyboard (or both!)
Fresh off getting my first Sling Application finished last night - I came in and told Ian that I had nothing to do today. Of course he said "no" - I needed to build a widget for LTI as well. I said "what widget" and he said that the whole Slikai UI was there under http://localhost:8080/dev and I needed to write a Widget.
I started work at 10AM - with a quick tutorial from Nico and his HelloWorld example, I hacked away at it. After about 2 hours working by myself I had it doing settings and creating the resource. At that point Nico helped me do the actual launch iframe and a few nice bits like a cancel button and it was done and put some polish on it.

It was done three hours after I started - and this was my first widget since I tried back in July 2008. I was pretty pleased with the ease of figuring things out - maybe I just knew more about AJAX, jQuery, JavaScript, and FireBug after writing those chapters in the book. However and whatever the case - it came together quickly and the ability to use Sling to handle all my persistence needs instead of writing a service and plugging it into sdata made an amazing difference in ease of building my widget and getting it running.
So now I am done with today's task. All is now checked into my SVN repo in contrib/csev/trunk/sling
So I told Ian that I was done with the widget and still had the whole afternoon free! So he told me to add Pluto 2.0 (JSR-286) to Sling/Sakai. That sounds like a good idea - but more than a three hour tour. So we will just draw pictures and call it good.
In summary, I continue to be pleased with the Sling/Sakai combination and eagerly look forward to its evolution.
The additional README bits are below. Again many thanks to Ian and Nico for their patient mentoring.
==== Making the widget work ==== Run the script "dowidget.sh" - it will upload the widget to your Sling instance. Note - if you run the script more than once, you will get 2 405 errors. This is OK the folders already exist Then edit the file in your Sling repo /Volumes/localhost/dev/_configuration/widgets.js Look for the entry right after helloworld and add the widget definition for simplelti in content/devwidgets/widgets.js Then go to http://localhost:8080/dev/ login as admin/admin, place an LTI widget do "Settings" and set url: http://wiscrowd.appspot.com/wiscrowd secret: secret and press Save Viola - you should see LTI in the portal!
I visited Cambridge this week to see what was up with the new Sling + Sakai (Slikai) work that Ian is working on. I figured that one way or another I would find a way to hack in IMS Simple Learning Tools Interoperability into it - after all I hack LTI into pretty much anything else. One day I will write a FORTRAN version of Simple LTI :).
I figured that in two days I would be a little pressed for time. Day one started out with Ian explaining Sling for about an hour and giving me some hello world stuff. It took me a while to hack each piece together. I started this morning knowning nothing about Sling and now this evening I have my first working application in Sling/Sakai.
Sitting 3 feet away from Ian meant I was never stuck for too long - I was just slow. But by the end of the first day, I am pretty much done - the code is checked in here:
https://source.sakaiproject.org/contrib/csev/trunk/sling/
All in all I am pretty impressed with Sling. Many important decisions are already made - most of the APIs we think of as "kernel" are in place. There is lots of value to be added - mostly in terms of "helper" APIs to lock down "Sakai conventions" within Sling and keep us from hard-coding convention too widely scattered throughout the code.
There is lots to do - so much more to do - but Sling feels like a great starting point. Performance is always something to worry about - but I am confident that Ian worries about performance even more than I do - so I expect that whatever we run into is solvable.
It was great fun to see this at an early state and to talk issues over with Ian and I look forward to the progress over the next few months and hope that we see some nice shiny stuff by the conference.
The README is below if you want to replicate my experiences.
Hacking Sakai K2 Sling Adding IMS Simple LTI As a Resource Type
Here are my rough notes on playing with Sakai 3 / Sling and
getting IMS LTI to work in Sling as a resource type.
Note: I have NO Idea how long these URLs will work -- Chuck
Many thanks to Ian Boston who walked me through all of this
at Caret.
References:
http://groups.google.com/group/sakai-kernel
http://incubator.apache.org/sling/site/discover-sling-in-15-minutes.html
http://cwiki.apache.org/SLING/using-slinginclude-in-jsp.html
Check out my example code (including this README) from here:
https://source.sakaiproject.org/contrib/csev/trunk/
For the rest of this document ~/dev/csev/trunk/sling/ is where
I checked out this source.
Make some directory to run your Sakai3/Sling instance - DO NOT
use the same directory as this source.
Go to that other directory
Download the Sling+Sakai bundle from Ian:
curl -O http://www2.caret.cam.ac.uk/%7Eieb/k2binary-snapshot/sakai-k2-0.1-SNAPSHOT-binary.tar.gz
tar xfz sakai-k2-0.1-SNAPSHOT-binary.tar.gz
cd sakai-k2-0.1-SNAPSHOT-binary/
./startup.sh
Keep this terminal window - it is your console - useful for debugging.
In your browser go here:
http://localhost:8080/index.html (main sling launch pad)
http://localhost:8080/system/console/bundles (what stuff is installed
If it looks OK and you see "Apache Felix Web Management Console
Bundles" and a long list of "Active" things all is well.
Start a new window and come back here. We need to poke a pom
into your repo (there may be a slicker way to do this - but
whatever...).
cd ~/dev/csev/trunk/sling/ (or wherever)
cp m2-repo-patch.tgz ~/.m2
cd ~/.m2
tar xfvz m2-repo-patch.tgz
rm m2-repo-patch.tgz
Come back here and then
cd ~/dev/csev/trunk/sling/ (or wherever)
cd imsltibundle/
mvn -Predeploy clean install
If you get this message then the tar above mis-fired:
[INFO] Failed to resolve artifact.
GroupId: org.sakaiproject.kernel
ArtifactId: base
Version: 0.1-SNAPSHOT
If it starts downloading a zillion files - it is almost
a sure sign of success.
If you get this message:
[INFO] [sling:install {execution: install-bundle}]
[INFO] Installing Bundle org.imsglobal.simplelti(/Users/csev/dev
/csev/trunk/sling/imsltibundle
/target/org.imsglobal.simplelti-0.1-SNAPSHOT.jar) to
http://localhost:8080/system/console via POST
[INFO] Bundle installed
[INFO] BUILD SUCCESSFUL
Do a small jig or pump your fist in the air.
Go back to the following URL
http://localhost:8080/system/console/bundles
Press refresh and look for IMS. If you find and
entry titles "IMS Global Learning: SimpleLTI" and it
says "Active" - you are so in good shape.
You are now 85% complete!
Just for yucks, use Finder | Go | Connect to Server
Use http://localhost:8080/
And admin/admin as id and pw
If all goes well - you should see your repo in the finder!
You can also find your repo under
/Volumes/localhost
You can edit files wither place and look at the structures.
Look at the apps folder (it is empty) and notice there is no
courses folder - all that is about to change.
Come back here:
cd ~/dev/csev/trunk/sling/ (or wherever)
sh doit.sh
This will put a bunch of files into the repository
in clever places:
(1) Install a resource handler in apps/ims/simplelti
(2) Make a /courses and /courses/SI301 and put an LTI
placement called wiscrowd in SI301
This should finish and tell you what to do next.
Login with admin admin at
http://localhost:8080/login.htm
Navigate to
http://localhost:8080/courses/SI301/wiscrowd.html
If all goes well you will see the Wisdom of Crowds
program showing the user and course info from
Sling.
Try going to
http://localhost:8080/courses/SI301/wiscrowd.html
In another browser without logging in - you will
be a student.
You can change all kinds of values in doit.sh
and re-run to play with different LTI urls and
course titles, etc etc.
Have fun. I did.
This abstract was submitted to the OpenEd conference:
http://openedconference.org/
August 12 - 14, 2009 - In Vancouver, BC
We will describe our experiences supporting self-regulated learning through newly developed outcomes-based open learning tools at the University of Michigan Medical School.
The University of Michigan is developing an outcomes-based approach to medical education, ranging from clinical experiences by first-year students to lifelong learning portfolios. The model is to create a fluid ecosystem of dynamic and innovative tools integrated into and coordinated by Sakai using IMS Learning Tools Interoperability. The underlying principle of the program is self-regulated, outcomes-based learning where students manage their own plan-learn-assess-adjust cycles with help and guidance from faculty mentors. The students are tracked against competencies and learning objectives throughout their education. We are developing new learning tools to support this educational model and approach. Instead of looking for a general one-size-fits-all solution, the team is taking a very agile approach to building tools that meet the needs of the faculty, students, and institution. The focus is on quickly creating useful and usable learning tools, getting the tools in the hands of the students, and obtaining feedback. Tools are conceived, designed, developed, deployed, and used in learning activities in a 10-15 week cycle of idea to production. Sakai is used to manage the course and launch these new tools using IMS Learning Tools Interoperability. Placing this effort further in the context of open education, the system allows users to view, comment, and interact with learning objects outside of traditional LMS constructs. This reinforces open education concepts as, instead of importing copies of learning objects into an LMS, we link to the shared, open learning object. We ran short tests within the Medical School curriculum this past academic year. Over the summer of 2009 we will support a pilot deployment and share the results through this presentation. Our future plans include adding these learning tools to our OER publishing platform at https://open.umich.edu to facilitate open learning communities beyond our enrolled students.
Speakers
Charles Severance, Clinical Assistant Professor, University of Michigan School of Information
Michael Bleed, Senior Applications Analyst, University of Michigan Dental School
Ted Hanss, Director, Enabling Technologies, University of Michigan Medical School
Here is a cool post about getting Rails (grails) running on AppEngine under Java.
http://blog.inigral.com/2009/05/07/rails-on-app-engine-a-cold-start/
This shows the vast potential of the Java AppEngine Java environment - because the JVM is really just a virtual computer - it can do anything in any language. The only consequence might be performance - but over time any linear performance factor fades away as a real issue.
Thanks for the link Michael.
Thanks to John F for sending me in this direction:
http://ocwblog.org/2008/09/28/byus-loosely-coupled-gradebook/
Some Specifications about the Loosely Coupled Gradebook
An overall vision of a loosely coupled learning network
Jon uses the Spider and Starfish Analogy and applies it to teaching and learning - wonderful post. In open source and open thinking - this book should be required reading and there should be a quiz that people must pass with a score of 100% before they can join an open source project or even use the word "open" in a sentence in public.
Time to do some research....
This is a summary of comments I made in a panel discussion on Service Oriented Architectures at the Open iWorld at the IMS Learning Impact meeting.
Here are the slides that I used in the presentation.
Colin Smythe spoke before me and mad a number of great comments that suggested that SOA had been overhyped and was now in a bit of the "trough of disillusionment".
I started my comments by suggesting that SOA (Upper Case) was pretty much dead and pretty much DOA. But at the same time "service oriented architectures" (Lower Case) were very much alive and well on campuses. We are using plenty of "services" - we just don't see them as such.
I feel that people get in trouble when they conflate the following concepts: (a) Service Oriented Application - How to build one large and complex application, (b) Service Oriented Architecture - find shared software and data and build services and (c) Enterprise Service Oriented Architecture - Systematic move toward services across an Enterprise (or larger). The most common problem is that people see something like an Enterprise Service Bus as an Enterprise Service Architecture. If the ESB is single -language and comes from one vendor than it *automatically* has nothing to do with anything other than building a single application. It is "sad when an organization selects an ESB as its first step to an Enterprise Architecture.
The first video to view is the JISC eFramework video. This is an excellent overview of SOA - I use this in my SI502 class in our "API and Service Oriented Architecture". The focus on this video is how to move from a single system holding data to sharing data between two and then many systems. It introduced the concept of a service layer which translates data to a common format as it enters and exits each of the systems.
The next important video to watch is Anne Thomas Manes of the Burton Group. This is my absolute favourite video about SOA. Anne starts from a perspective that SOA is a business problem not a technical problem. Some of her points include (a) SOA is a long-term proposition, (b) Having an Enterprise Service Bus does not mean you have SOA, (c) SOA is about data - not technology, and (d) SOA is an organizational “mindset”. Thanks to Zach Thomas for bringing this video to my attention.
In a sense, we have lots and lots of really great service oriented architectures that work very well - but since none of them include IT staff getting new software gadgetry - it never rises to the level of SOA (upper case). Here are somethings that are done very well:
Again, these don't seem like "big-money SOA" - but they simply work in a service oriented manner. The reasons that these services work is (a) the Scope of each service is understandable - each can be described in one sentence, (b) the documentation is simple logical and clear, and (c) these services generally make developers lives simpler.
Here are a few points about SOA
I love this quote from Biz Stone (the Founder of Twitter): The API has been arguably the most important, or maybe even inarguably, the most important thing we’ve done with Twitter. It has allowed us, first of all, to keep the service very simple and create a simple API so that developers can build on top of our infrastructure and come up with ideas that are way better than our ideas, and build things like Twitterrific, which is just a beautiful elegant way to use Twitter that we wouldn’t have been able to get to, being a very small team.So, the API which has easily 10 times more traffic than the website, has been really very important to us.
This gives the fundamental principle of services - they must provide sufficient capabilities to allow a wide-range of unanticipated uses of the service. In a sense an up-front requirements analysis is doomed to failure - the owner of a service must be ever-responsive to new requirements. This Twitter quote shows how service builders should approach the problem.
As a note - I am not in a position to make UM IT policy - so this next bit is simply my own thinking and not University of Michigan IT direction.
As I look at the University of Michigan's transition from Sakai 2 to Sakai 3, I look at it as a transition to a new Learning Management System. This means that both systems will run side by side for as long as 2-3 years and for most of that time, faculty will have the option to use either system as they prefer. When we see faculty to move on their own accord - then we can contemplate turning off Sakai 2.
In this context, I am proposing that we switch to a service oriented approach to grading and outcomes at Michigan. I am proposing a separate REST based application running on hardware separate from Sakai. This service will also have a simple user interface and be integrated into Sakai using IMS Learning Tools Interoperability.
However this service will be designed to meet a broad set of requirements well beyond the needs of Sakai. Another very successful learning system on campus is SAMS. SAMS is perl-based LMS based on the CAPA testing engine. SAMS has far more complex data requirements than Sakai particularly in the area of data mining and dynamic tracking across all freshman Physics courses. A key will be to build a service that not just supports Sakai's needs - but one that meets the broader requirements SAMS and other applications on campus that produce grades or outcomes.
This approach has the advantage that we can keep the same grade book when we switch from Sakai 2 to Sakai 3 or frankly in any learning context. This also has the advantage that we can integrate automatic grade submission to our PeopleSoft system one place and then all learning applications on campus can make use of this feature without requiring a separate integration in each learning system. The slides have some diagrams of this design.
I see this as a good experiment to see how successful we can be at building and deploying these kinds of services. A really advantage is that an increasing number of our core learning management tools such as content and portfolio are not bound deeply into our learning management system and can provide a consistent tool across multiple systems.
In summary, SOA is (a) about providing effective and responsive services to the enterprise, (b) language agnostic (php, python), (c) about saying “yes” and meeting requirements, and (d) a REST protocol plus many APIs in many languages.
Update: Comments at the bottom of this post
I must admit that I was 100% surprised when I heard the news that Blackboard had acquired Angel Learning. I would have never even guessed that this would be Blackboard's next move.
But then a moment later, the absolute brilliance of the idea overwhelmed the surprise. Angel Learning has strong customer growth when Blackboard is doing well in revenue but not gaining customers. Angel Learning has made some inroads into K12 - this is a hard market to crack and the first mover will have real advantages - particularly as sales folks make relationships.
My very next reaction was one of being a little bummed out about Sakai. I really wished that we had invested a bit more energy into improving the 2.x branch to give the market a stronger alternative (Sakai 3 is still a while away). While Sakai 2.x is a great LMS - Sakai historically has had trouble winning straight-up competitive bid situations. Most new Sakai adoptions are because of second-order reasons (all good) like community, controlling one's own destiny, and seeing the importance of non-course use of a collaborative system like Sakai. All these are the reasons I am so happy my school runs Sakai - but they just don't win those RFQs at LMS renewal time.
My next reaction was, "What about standards?". Angel Learning has been a great supporter of standards efforts over the past few years. They shipped IMS Common Cartridge before the spec was completed - that is awesome commitment to supporting standards. Market #1 companies like Backboard naturally lag in adopting standards and Market #2 and #3 companies push for standards like crazy. So when the #2 is merged into the #1 - you expect to lose some momentum.
We shall see if this means that folks from Angel stop showing up to IMS meetings and Blackboard just sends one rep for all three of their products (Blackboard, Vista, and Angel). This is not an impossible situation - it just means that if this results in net fewer active participants - others will need to step up to the plate.
Next I started thinking about the Angel customers - I heard some talk about some spirited discussions in the Angel Learning lists and in the Educause forums. This is natural - some fraction of Angel customers chose "Anything but Blackboard" and now they feel like they have been "re-captured". This is sad to me - I hope we pick our LMS based on what is best for our teachers and students - not for political reasons - and in particular I really dislike positions which are negatively formulated - in a sense they are inherently unjustifiable.
So what might be the real negative impact on current Angel Learning customers? I think that the most appealing aspect of Angel Learning is that they are a "porous" organization. They let large and responsible customers look at the source code and make changes to the source code. Angel Learning makes patches quickly and gives them to advanced customers very easily. When I talk to folks at large midwestern universities who have Angel - they pretty much tell me that "open source" is not a big deal for them (i.e. they don't want to switch to Sakai) because with Angel - they have as much of the source as they need - and are happy not to be responsible for the "whole thing". In a sense, these customers have the best of both worlds - particularly if the school is not interested in being a real developer in a worldwide community like Sakai which takes a lot of energy and commitment.
One of the great complaints about Blackboard is how they lock things down. The reason cited by Blackboard is one of tech support - Blackboard does not want customers breaking things and then blaming Blackboard - a reasonable statement on its face - but for really large sites - some flex is needed. At large sites, a software vendor often is not the expert in their own software as it is running at those sites. Working collaboratively is a great thing. Perhaps the real underlying issue is that Angel is better designed internally to be altered a bit here and there without breaking - Angel evolved in this environment where the vendor and customer work more collaboratively to insure success. For the Angel transition to be successful, Blackboard will have to resist changing Angel to use the "Blackboard way" when it comes to these strategic customer relationships.
The consequences of a mistake on Blackboard's part would be pretty grave - generally these acquisitions work because very few (usually) small customers get mad and switch just to switch for switching sake. But usually large customers grumble for a while and then simply adapt to the new rules and the new landlord. But if Blackboard changes the nature of the relationship with large customers in a significant way - the large customers might start to switch - and if those schools start to switch - I bet they will switch to Sakai - and this will be a large influx of new developer talent for Sakai - and those developers will add Angel-like features to Sakai - making Sakai a better product. So - word to Blackboard - listen to these folks and keep these folks happy - because if you don't, Sakai is always waiting.
For mid-tier customers who are going to switch for switching sake - or switching just to be "anything but Blackboard" - be careful how you think about this. First, don't upend your faculty's lives just because the IT department is steamed - I am a faculty member and I am telling you that this pisses us faculty members off. LMS transitions should not happen on a whim and they should not happen in a rush. Also, if you switch to some other for-profit company and that company experiences a ton of growth in their customer base - your new company might be purchased in a few years by Blackboard. If you set your LMS strategy based on who the shareholders of your software happen to be - you are making a mistake.
This does make an interesting point about the value of getting software from non-profit companies. Companies like Etudes(*) and CampusEAI are non-profit - if they gain a lot of customers - they cannot be purchased - because the "owners" of a non-profit do not get the proceeds. Sakai Foundation is a non-profit for this very reason - the Sakai Foundation holds the copyright on Sakai - but since it is non-profit we can trust that the Sakai Foundation won't sell Sakai when it received some attractive offer.
While it sounds preposterous on the face of it - both rSmart and MoodleRooms *could* be purchased by Blackboard sometime in the future because they are for-profit and "have customers". Often the goal in a take over is to acquire customers locked into contracts as much as it is to acquire intellectual property. So when you purchase open source software from a for-profit company you need to calculate your exit strategy. rSmart nicely provides you with the full source code of their software which you can download - so you could keep using the software and hire another company to give you support on rSmart's Sakai distribution. This is a reasonable exit strategy - you might want to snag a copy of each of the rSmart source releases and keep it handy in case you need it someday. Just the fact that rSmart gives you this option makes rSmart less attractive (valuable) as a takeover target - and in my opinion the policy of releasing all source is good for rSmart's customers since the rSmart version of Sakai is not the same as the Sakai Foundation version of Sakai.
I cannot comment on the extent to which MoodleRooms gives its customers an exit strategy because I simply don't know much about MoodleRooms but it is something for MoodleRooms customers to contemplate. But even though Moodle itself is open source - MoodleRooms may not release *every* line of code necessary to replicate the MoodleRooms environment on your servers. Any non-open source magic glue bits make it harder for customers to switch vendors - and make those companies both more valuable and more susceptible to takeover. (I am not suggesting this is the case for MoodleRooms - just something to think about).
So what do I think we should all do about this acquisition:
(1) Be patient - my opinion is that Blackboard has learned a lot from its WebCT acquisition. If Blackboard avoids big mistakes and takes its time with any changes, this could end up better for customers.
(2) Keep an eye on Blackboard's "opening up" initiatives - make sure that Blackboard continues to participate in standards and continues to encourages portable approach to software (IMS Learning Tools Interoperability) and portable content (IMS Common Cartridge). When these specs are ready - Blackboard needs to put these into their product and support them wholeheartedly. Since the specs are not yet 100% complete - this is still a bit of a wait and see. The market needs to hold Blackboard's feet to the fire and also celebrate when Blackboard moves in the right direction. Behavior is best changed by a combination of positive and negative reinforcement.
(3) Support your local non-profit - if you have not done so everyone should join the Sakai Foundation and IMS *right now*. The market needs vital non-profit organizations to keep the market "fair" - think about how bad it would be right now if this happened and there were no Sakai and no IMS. For those who are not members - other folks have been footing the bill for your "insurance policy" / "safety net". I am very disappointed in the level of University participation in IMS - this should change - we need the customer voice in standards - I know the meetings are tedious at times - but this is about supporting organizations that balance the market.
(4) Immediately install Sakai in addition to your current LMS - fully integrate it - add a logo and a skin and plug in your course roster data - let folks play with it - let adventurous faculty teach with it - use it for project sites for students and faculty - don't train folks on it - let them learn on their own - give limited tech suport - Sakai was designed to be picked up without formal faculty training. If folks like it, usage will grow - if your users don't like it, all you lost was a few servers and some disk for a few years. And if you get peeved at your for-profit vendor at some point in the future - viola - you are already several years into your LMS transition! Or perhaps we will get IMS LTI 2.0 really working and your faculty can teach using any tool from any LMS they like and we can combine Blackboard, Angel, Vista and Sakai tools together in one learning portal. Whatever the future holds - getting a Sakai up and running on your campus is a *good thing* and gives you options and amortizes transition costs.
All in all whenever something like this happens - we all need to look forward and find the opportunities that this makes possible. And in all we do and how we approach everything - remember that this is about teaching and learning and not about IT.
Comments welcome - send them to me via E-Mail and I will add them below. I am happy and eager to correct any factual errors herein that you bring to my attention.
(*) Disclaimer: I am a board member of the non-profit Etudes corporation (www.etudes.org)
Comment from Ian Dolphin
Re the above paragraph:
“Next I started thinking about the Angel customers - I heard some talk about some spirited discussions in the Angel Learning lists and in the Educause forums. This is natural - some fraction of Angel customers chose "Anything but Blackboard" and now they feel like they have been "re-captured". This is sad to me - I hope we pick our LMS based on what is best for our teachers and students - not for political reasons - and in particular I really dislike positions which are negatively formulated - in a sense they are inherently unjustifiable.”
The comments we read on lists and forums are not necessarily speaking with the voice of institutions. It seems apparent that a significant number of institutions, primarily community colleges, switched from BB (ex WebCT) Vista to Angel over the course of the last year. I wouldn’t like to make any kind of judgement on that switch without further information, but I feel it’s a bit of a stretch to link comments in forums to an institutional rationale for change *and then* reduce that change to being for “political reasons”. I don’t really feel an *institution* would select an LMS because it was “anything but Blackboard”. The selection could just as easily been a positive reaction - perhaps Angel was perceived not to be such a large leap for staff and students, perhaps support appeared better - whatever. I’m afraid that your comments might be interpreted somewhat negatively by those Angel customers who switched for genuine reasons. Thought this paragraph spoiled an otherwise extremely interesting piece.
Chuck:Ian - Sorry if my comments appeared to be misleading - just to be clear - I know many schools that chose Angel because Angel was absolutely seen as the best product. My children use Angel at their schools so I have been able to play a bit with Angel and I really like the Angel user interface and functionality.
This is an excerpt from my faculty report that I am about to submit - comments welcome. Last years report is also on my blog.
School of Information
08-09 Faculty Annual Report
(May 1, 2008 to April 30, 2009)
Please return to Barbara Smith by April 30, 2009
My up-to-date Vita is available at:
http://www.dr-chuck.com/dr-chuck/resume/research.htm
http://www.dr-chuck.com/dr-chuck/resume/travel.htm
I. Teaching
A. Classroom teaching
B. Student supervision
1) Doctoral students
None.
2) Other student supervision: list all students whose work you have supervised on an individual basis, and briefly describe your interaction with them.
Gaurav Bhatnagar – GSRA – Gaurav was funded by the medical school to help in our "Next Generation LMS" project. Gaurav – built a product called CloudSocial as part of this work – www.cloudsocial.org - CloudSocial allows the embedding of a Learning Management System in Web page using JavaScript. CloudSocial forms the backbone of my forward looking research into embedding a collaboration and learning management system in a web browser.
Clint Newsom – Independent Study – We worked on developing a embedded learning management system using a framework called ShiftSpace. Clint's work allows CloudSocial tools to be used on web sites without requiring the embedded JavaScript.
Amanda Visconti – Independent Study – We worked on exploring using Google App Engine to host new learning tools. Amanda contributed her work to an Open Source project I am starting called Tsugi – www.tsugiproject.org (a.k.a. CloudCollab).
Laura Rademaker – Independent Study – Laura worked on a web site that allows you to play a game called "Know Your Tweeple" where you identify which twitter friend made which tweet. She entered this the Yahoo hack-a-thon at UM and won third prize. She continued to develop the idea and hopes to release the web site soon.
C. Instructional development: List any new initiatives or major course revisions that you have engaged in
Both SI301 and SI502 were entirely new courses this year. I was given SI502 (Networked Computing) with an eye to making significant revisions to how the course was presented and the course content in order to improve the student experience in the course. So I redeveloped the course material based on live lectures, assignments, and discussion sections. SI301 is a completely new course – I went through the curriculum committee to get the course approved, selected a text book, and developed all-new materials and an approach to teaching the course.
In Fall 2008, I completely revamped and redeveloped SI539 (Design of Complex Web Sites) to switch from Ruby on Rails to the Google App Engine. My primary motivation for this switch was to teach students a technology where they could end up with their software in production at the end of the course. Since Google hosts small App Engine applications for free – this seemed to be a significant benefit to the students. Since the Google on-line documentation for App Engine was aimed at a more advanced audience, I found myself writing basic materials on many different topics – which became the "Using the Google App Engine" book to be published in May 2009 from O'Reilly and Associates.
In Winter 2009, I participated in SI539 (Jim Eng) and SI182 (Paul Resnick) as a mentor. Jim used the draft of my book in SI539 and so there was significant interaction as he worked through the material. I worked with Paul Resnick and Sean Munson as they taught SI182. We had particular interest in further evolving the class to better meet the needs of the Informatics curriculum based on experience when I taught SI182 and when Atul Prakash taught EECS/SI182 and when Atul taught EECS 282.
I continue to serve as one of the School of Information representatives to the Undergraduate Informatics Concentration as well as the undergraduate advisor for students in the Social Computing track.
D. Other: Describe any other significant teaching activities not covered above
I participated in the open.umich.edu open courseware initiative, making both my SI502 and SI539 materials available to the Open Courseware (OCW) team at Michigan. We decided to license the SI502 materials under the emerging CC0 license (approximates public domain internationally) and use the opportunity to be on the forefront of this new licensing trend from Creative Commons.
I taught an SI791 independent study with 12 students. The goal was to give the students opportunities to explore and learn about web technology beyond what we currently offer in our curriculum. The topics covered included: Ruby on Rails, Advanced Google App Engine, JavaScript, AJAX, jQuery, data modeling, GreasMonkey, ShiftSpace, and others. This course met weekly on Tuesday evenings for three hours with an informal agenda (we called it a "hacker jam") – the class meetings were a combination of mini lectures, question and answer sessions, and extreme programming. I invited several professional developers from the UM community to join the meetings so that students had a wider choice of people to ask technical questions about their projects.
II. Research
A. Publications appearing in 2008-2009 list all publications that appeared during this year. Underline all co-authors who are students.
1) Articles in refereed journals - None.
2) Articles in refereed conference proceedings that are comparable to journals in terms of prestige - None.
3) Chapters in edited books - None.
4) Books or monographs
Using Google App Engine Using Google App Engine - Building Web Applications, Published by O'Reilly and Associates, ISBN 10: 0-596-80069-X | ISBN 13: 9780596800697.
5) Articles in workshops, symposia, and less rigorously referred conference proceedings -None.
6) Other publications
Often I will write a paper to submit to a journal or other publication which is see as not suitable for publication after a few months of review. Usually the material I am writing about is rather timely and often more vision than data-oriented research – so sometimes instead of resubmitting the article, I simply put the article up in my Blog. Here are several of these "faux article" blog posts:
CloudSocial: Changing Teaching and Learning by Changing Perspective
http://www.dr-chuck.com/csev-blog/000608.html
Perspective: A Meteor Strike May Cause LMS Systems to become Extinct!
http://www.dr-chuck.com/csev-blog/000606.html
B. Publications in press: List papers that were accepted for publication in 2007-08 but have not yet appeared. Again, underline student co-authors and give page numbers.
None
C. Publications under review.
Journal Article: Accepted for Publication in 2009: Charles Severance, Ted Hanss, Joseph Hardin, IMS Learning Tools Interoperability: A Service-Oriented Approach To Teaching and Learning Tools Technology in Cognition and Learning
D. Invited talks. List all invited talks you gave this year.
Apple Academix Conference - MIT - Boston, MA - March 26, 2008 - Invited Keynote: Beyond the Learning Management System
Etudes User Summit - Los Angeles, CA - April 23-24, 2008 - Invited Keynote: Celebrating the Magic of Teachers
E. Research Support.
F. Other: Describe any other research-related activities not covered above
In my consulting work, I am effectively self-funding my research interests (and associated travel) in exploring service oriented architectures and functionality mash-up for learning management systems. These interactions between commercial and open source players in the market give me the unique access to the market drivers and then influence those market drivers.
Since 07-08 was my first year at SI, I really limited my talks, travel, and presentations to the absolute minimum – working on my research ideas quietly in the background. On February 5, 2009 I gave a presentation and demonstration at the annual Connexions User Conference in Houston, TX describing my research directions – particularly the notion of moving the learning management system into the browser using JavaScript. This talk was very well received and the positive feedback from that talk encouraged me to continue the work and to start speaking more broadly about my work.
III. Service
Please list all formal and informal service (committees, offices held, initiatives, etc.) for each of the areas below.
A. School of Information
I continue to serve as a member of the Informatice Faculty Steering committee organizing the new Informatics concentration in LSA. The new concentration is up and running quite nicely with 25 new majors and growing at a nice rate. I serve as the advisor for students in the Social Computing track. I serve as the advisor for our 20+ Social Computing track undergraduate students.
I chair the SI Undergraduate Committee – this committee is charged with providing guidance and forming SI positions on matters relating to the Informatics Concentration as well as guiding the curriculum aspects of the SI undergraduate courses. Once the Undergraduate committee develops and approves creation and/or courses – they are forwarded to the Curriculum committee for final approval.
B. University of Michigan outside of SI
The "Next Generation LMS" project in the Medical School is starting to build software and run experiments to help understand what kind of software best supports their goals. I work with the following members of the Medical School: Ted Hanss, Casey White, Chris Chapman, Joseph Fantone, Raj Mangrulkar, Mike Bleed, Amitava Shee and others.
This project produced three prototypes in during the 08-09 school year: (a) Enhancing the web expereicnes in an AMT P4 Therapeutics course, (b) supporting an LC course in Ethics in Medicine, and (c) building support software for first-year clinical experiences (Encore) – in development. In addition, we are starting to align and integrate the Next Generation LMS effort with the ongoing Portfolio efforts in the Medical School. This is bringing people from the School of Information, CTools team, and the Medical School together on a single overarching effort to develop new approaches to teaching and learning. The Medical School funded a 1-year GSRA support for Gaurav Bhatnagar and funded my travel in support of collaborative work with the University of the Western Cape.
The project continues to be committed to a careful user-centered approach to their next-generation LMS – we are not rushing towards large-scale production – instead we focus on what we can learn from a series of very rapid user centered design / develop / deploy cycles. A flexible and inclusive methodology is used throughout the project.
I also participated in the "Amazing Blue" program put on by the admissions office to recruit incoming freshman students. I gave a lecture on the "Nash Equilibrium" which was very well received by the students. This was arranged with the help of Meghan Genovese – the coordinator of the Informatics concentration.
C. Editorial activities
1) Editorial boards. List all editorial boards on which you serve. Indicate if you are an editor, associate editor, etc. - None
2) Ad hoc reviewing. Describe any ad hoc journal reviewing you did. - None
3) Conference reviewing. List all conference program committees you served on. Indicate if you were a program chair, area chair, etc. - None
4) Grants reviewing. List all granting agencies for which you performed any panel or ad hoc reviewing. In the interests of confidentiality, do not name the panel. - None
D. Other professional service activities
I am current reviewing a book for Jon Klienberg and David Easley titles "Networks". We used a draft of the book in SI301 and I made many suggestions to the authors for improvements and have been contacted by the publisher of the book to serve as a reviewer on the published version of the book.
E. Community service relevant to SI mission
I continue to serve on the Science Advisory Board for the National eScience Center (http://www.nesc.ac.uk/) in Edinburgh, Scotland. I was appointed to this board in April 2008 – this board advises the eScience center on financial, strategic, and programming directions. I will be required to attend two board meetings annually with at least one board meeting to be held in Edinburgh.
F. Service not included in any of above categories
I was a founding incorporator and now I am a board member for the non-profit company Etudes, Inc. (www.etudes.org). Etudes provides technology, training, and support services around online teaching and distance education for 25 colleges.
IV. Honors and Awards
Please list all honors and awards received in the past year - None
V. Other Information
A. Describe your most significant contributions this year. (One paragraph.)
I would say that my most significant contribution this year was the major revision of SI502 – student feedback indicates that students find the course entertaining, educational, useful and relevant. Given that SI502 is required of all MSI students and it is often taken in the first semester of their MSI – it is important that this course work well. I am very pleased in the work I did in SI539 and SI301. Beyond the classroom, I feel that my greatest impact was through my newly written book on Google and my continued work with IMS on standards and interoperability between Learning Management Systems.
B. Please describe the greatest impact your work as a scholar and teacher has had in the past year. (One paragraph.)
I would say that my greatest impact as a scholar this year was motivating the major players in the Learning Management System marketplace (commercial and open source) toward making real steps toward interoperability and portability between LMS from multiple vendors. As better standards are produced and I help vendors to find ways to adopt these standards, we will free teachers and learners from "stovepipe" learning systems. Efforts like the Medical School LMS, Medical School Portfolio, CloudSocial Project, Tsugi Project, and my IMS Simple LTI effort provide ample examples of the feasibility and value of an interoperable and portable service-oriented approach. However it takes more than one successful effort to affect permanent change in the marketplace – so I must continue to push.
C. Please summarize any interdisciplinary aspects of the activities you were engaged in during the past year. (One paragraph)
My interdisciplinary activities include: (1) working to build the new Informatics concentration in LSA, (2) working with the UM Medical School looking at where teaching and learning technology is going, (3) working with the IMS organization developing standards and specifications, (4) working with the Sakai/CTools team to help evolve the Sakai software and how we use it here at Michigan, (5) working with the LSA Educational Technology team to integrate their SAMS Assessment system into Sakai, (6) working with the LectureTools group (Perry Samson) to integrate LectureTools into Sakai, and (7) working with the SiteMaker team to integrate SiteMaker into Sakai. I also have become involved with some campus-wide IT initiatives working with John King, John Merlin Williams, and Dan Atkins.
D. Outline your major goals in teaching for the coming year. (One paragraph.)
I will be able to teach SI539 with my own textbook next year – now that we have two semesters of experience with SI539 using Google App Engine, I want to really improve the course for the Fall. It is my feeling that the book will allow me to accelerate the course to compress what took 15 weeks in the 08-09 year into about 12-13 weeks this Fall. I hope to use the three extra weeks to go into more depth and detail in the design of web sites. I also want to make the assignments for SI539 to be building a personal portfolio – I hope to bring in speakers on how to design, build, and populate your personal portfolio. I hope as a side effect of SI539 – all MSI students have a personal portfolio hosted on Google App Engine that they can develop over the rest of their MSI career. SI 502 has been quite successful but I feel that there is room for improvement in two areas: (a) we still have a few people who don't "get" programming (about 5-6%) of the students – I want to look very closely at the first four weeks of the course materials to find ways to make sure everyone gets it (b) I really would like to write text materials for the second 2/3 of the course – I think that this will greatly enhance student understanding of the material (i.e. lectures, slides, recorded audio, and the web are not enough) – I may write this book as I teach each week Fall Semester – we will see how much time I have – I hope to write this book as an open textbook using the Connexions (www.cnx.org) authoring and publishing environment. I feel that I could greatly improve SI301 by adding more practical programming exercises around data visualization for the course – this will likely be my major instructional design effort next winter semester.
I am working with O'Reilly to produce a series of video materials to supplement my App Engine book to make the material even more accessible to beginning users.
E. Outline your major goals in research for the coming year. (One paragraph.)
Next year I want to break through in the area of tools interoperability and content portability between Learning Management Systems. My goal is to take the research and work I have been doing for the past five years and see it coming out in shipping commercial and open source products. I feel that the next 12 months will see a strong move toward a "tipping point" where we can move to a place where interoperability and portability can become assumed and will become the natural way of working. My CloudSocial project needs to move from pre-Alpha to pre-Beta – this is on a very slow track and requires a lot of careful education to introduce the concept of an inverted learning environment. I also see my Tsugi project on a slow, gradual track – my goal is to use a combination of the AppEngine book, the Tsugi software framework, and a series of workshops over the next year to teach teachers how to write simple Learning Applications for their own uses – Tsugi allows any teacher to build and deploy simple "clicker-like" applications using the Google App Engine framework in less than 200 lines of code.
I have submitted a grant to take the ideas in CloudSocial and move them into a research/collaborative context. If this grant is funded, it will take this work in a new and important collaborative direction and provide valuable resources to move the project forward more rapidly.
F. For associate and full professors only: Describe your experiences this year in mentoring faculty. (Be specific; name names and specific activities.)
G. For all faculty: Describe your experiences this year in being mentored. (Be specific; provide names.)
Since this was my second year at SI – I needed somewhat less mentoring than last year ☺
Jeff Mackie-Mason has been very helpful as he has guided me into new roles like the Chair of the Undergraduate Committee and undergraduate Social Computing track advisor in Informatics. Jeff has always been my backup and has always had the time to help me when I encountered a new situation.
Judy Lawson has been very helpful in supporting the Informatics concentration and making my job very easy as the lead SI representative to this effort. She brings her extensive experience, creativity, and knowledge about the UM system to bear so Informatics issues are quickly resolved.
Meghan Genovese has also made this year survivable with my new responsibilities. Her continued energy, commitment, skill, talent, positive attitude and expertise makes being a part of the Informatics concentration a joy.
I was very nervous stepping into the lead SI leadership role in the Informatics Concentration vacated by Paul Conway since I knew that he had done such an outstanding job in getting the program started. Thankfully Jeff, Judy, and Meghan have quietly handled so many of the complex details – often before I knew there was something that needed attention. This has made my increased role in Informatics not only "survivable" but actually "enjoyable" and I want to thank all three for their help and support.
Stephanie Teasley has been very helpful in my interactions with the PhD. Program and PhD. Students – particularly when it came to the SI502 GSIs. Even before I understood the issues in running a course with discussion sections and GSIs – she had already taken care of things – setting me up to succeed.
H. Describe your entrepreneurial activities or innovations, if any. Examples might include patents, licensing agreements, innovative services or products.
I continue to be part of the Etudes non-profit corporation as a board member. I have created several nascent open source projects (www.cloudsocial.org and www.tsugiproject.org) to showcase technology that I hope will transform teaching and learning. I have worked with many LMS vendors (both commercial and open source) to work to align efforts across the LMS market around software and content portability and interoperability. I am hoping to create a learning environment around my book through O'Reilly and hope to see my book adopted in K12 as well as adopted elsewhere in higher education.
I. Please provide any additional information you wish to convey to the Dean and Associate Deans.
This is my second year on the faculty at SI. My first year was characterized by being somewhat conservative and careful – I wanted to make sure to get off on the right foot in my first year since I was transitioning into teaching for the first time since 2001.
In this second year, I was a little more confident that I would be successful in my core teaching responsibility so I added some more activities. I took on service roles such as the Undergraduate Committee and Informatics student advisor and lead representative from SI to Informatics. I wrote a book and started several new software projects and continued to expand my work with the CTools team and the Medical School. I added consulting activities as well – carefully selecting consulting opportunities that would fund me to work on things that I found interesting from a research perspective. I also taught an overload course in SI791 – Independent Study which allowed me to work with our more technically advanced students in a smaller setting.
At times, it seemed like I had taken on too much (particularly when I added writing a book to the mix) – but when I look back at the past year – I also accomplished a lot and made progress on a lot of issues that mean a lot to me professionally.
Looking forward to next year I see more of my effort aimed at consolidating some of the gains I have achieved this year in my areas of interest. I want to put SI539 and SI502 on really solid footing and build materials around my book and my open source projects. I don't think I will open up too many new research thrusts in the next year unless my grant is funded. I will focus on smoothing and polishing what has been achieved already.