January 29, 2008

Pedagogy: Permitting Anonymous users in Sites

I have used a feature in Sakai where you add the ".anon" role to a site and then give .anon site.visit and other permissions as you see fit.

This makes it so that the site is directly accessible via a URL - without any login process at all. You as the instructor have complete control over what these anonymous users see and can do in your site. Sakai smartly hides and shows buttons based on the permissions you give anonymous users.

I have this all set to the point where I have a completely public site for the course I am teaching at

http://www.si182.com/course.htm

Note that you need no account nor login to see my course materials and peruse the site. I currently have the e-mail archive tool hidden for privacy issues. But I could unhide the E-Mail tool and you could see our course mail list too.

I will continue to experiement with this - I have already found a few little things that could be improved for anonymous users - I will file JIRAs on this stuff and work on it.

I take inspiration from this from the excellent keynote from Hal Abelson at the Amsterdam conference where he encouraged us to think open first and then hide materials only when there is a reason to hide the materials. Also Bodington hs the notion of making materials trivially public at its core as well.

Posted by csev at 12:10 AM

January 27, 2008

Going for the Gusto in Sakai's Storage Layer SAK-12387

As I have been blasting my way through improving the performance of the MailTool - it is pretty clear that we need to improve our APIs for things like Messages to allow tool writers (and Web Service consumers) to Filter, Search, and Page on pretty much any call that returns a List.

Otherwise we just won't scale and we won't be cool at all. The Mail Archive tool keeling over just happens to be the first place our lack of rich search, filter, and paging options in our APIs makes us look very uncool and unscalable.

So I whipped up a JIRA to talk about it. Actually I am already about 25% done with this because I had to knock the cobwebs out of BaseMessage and Storage APIs to make MailArchive work well. Now I want to do it everywhere. I don't want to make all the implementations super-fast like Mail will be (actually mail will be superfast most of the time and tolerably slow on searches). Most importantly Mail Archive will not crash servers and tick off impatient users.

Here is the JIRA:

http://bugs.sakaiproject.org/jira/browse/SAK-12837

I include the text of the JIRA below. The people who mostly care about this are Ian, Beth, Glenn, Zhen, Jim, and me. These are the folks who own tools that are using the old DbDouble and DbFlat series of self-built ORMs from the CHEF era.

The basic idea here is to improve the performance of the Message series of APIs and the Storage series of implementations. This is a high level view of this work:

- Add methods to the Message Apis which expose the capabilities to Page, Filter, Sort, and Search through messages

- Change the Storage API to allow these structures to be passed all the way down to the Storage layer.

- Make a Search filter which is a special case of a org.sakaiproject.javax.Filter - this way Storage layers can separately optimize search if they prefer.

A search is subtly different from a filter. Depending on implementation, a search might be optimized to use a LIKE clause in SQL or even consult a Lucene-like index to search entities. A filter is a very precise mechanism which retrieves and parses every entity - presenting it to the filter and allowing the filter to decide if the message is to be included. When searching, ascending or descending order may not be date - it might be relevance depending on impementation of that particular Storage. It is also possible that some implementations will simply treat search as a special case of filter and still retrieve all messages and do the search on parsed messages. Keeping these methods separate means that it is *possible* to separately optimize these operations separately.

Once this mostly interface is done, we have many ways to improve performance of large structures which are stored in Storage backed stores and then as the stores improve their implementations, we can teach the tools to call the more efficient methods over time.

Even if Storage layers do some simple optimization, such as reading all the messages and using search/filer to discard them in the storage layer instead of discarding them in the tool - this will save tons of in-memory footprint when large messages sets are returned - just to page through messages 15-21. We can gain a lot of benefit to memory footprint with very simple changes to the Storage layer.

While this sounds complex and invasive - it actually is not so bad. For Message - we add new methods and supply inefficient but completely functional implementations - so anything that extends BaseMessage is fine and things that make calls to the new methods work no worse than they did before.

When we add methods to Storage - we will have to stub the newly missing methods out in all of the implementations. We can provide functional, inefficient implementations to each of these new methods. Another alternative is simply throw a run-time error in some of the the implementations - then when a tool writer starts making calls to the new high level methods which make calls to the new Storage methods - they will encounter the exceptions and add/debug the storage code. We will provide implementations for all of the utility classes in the db directory (i.e. DbFlat, DbDouble, etc).

This allows us to start paging and searching in SQL and perhaps even add Lucene to the mix for searching Entities. Ultimately this might lead the way to a general implementation of Message API using JSR-170. By adding these methods and evolving tools to cal the efficient methods - we pre-tune tool code to anticipate JSR-170 based Message APIs.

This primarily affects tools that use the DbFlat and DbDouble series of Storage Mechanisms (directory db) and tools that use the generic Message API (directory message).

A non-inclusive tool list is Announcements, Mail Archive, MOTD, deprecated Chat, deprecated Discussion, and others. Resources may be affected - but the storage implementation of Resources has already begun to move away from the DbDouble patterns and uses an increasingly independent storage layer as it moves toward talking to JSR-170 directly. The only likely impact on Resources may e to add a few more method signatures for the Storage class.

This will need careful QA testing and awareness of all the developers of these tools to keep an eye out for issues that might arise due to these changes.

Posted by csev at 01:30 PM

January 20, 2008

Not Skipping Unit Tests in Sakai - Maven 2

I have been using -Dmaven.skip.test=true for so long in Sakai - I had hard-coded it into my settings.xml

The whole Sakai now compiles with unit tests and the Continuum Build running at Cambridge does its builds with unit tests turned on. Nightly2 does not yet compile with unit tests turned on.

As a developer - you might want to start turning unit tests on or you will break the Cambridge build. I got caught when I checked in something that broke the Continuum build at Cam build but not nightly2. Thanks to Aaron and Ian for being gentle - and thanks to Aaron for his IM advice that led me to the solution below - I felt like I was in Sakai beginner school because I felt so lost.

There are two ways that unit tests get turned off. First, my mvn commands always looked like this:

mvn -Dmaven.test.skip=true -Dmaven.tomcat.home=/Users/cs ....

Just remove the obvious suppression of the tests in your mvn command - but for some of us we just coded it into our settings.xml which is stored in

~/.m2/settings.xml

I had a line that looks like this:

<maven.test.skip>true</maven.test.skip>

Now I have taken it out and joined the ranks of the hip and cool unit testers in Sakai. Also it reduces the number of times I am embarassed when I break the Caret build. Also it means that I am happy to add some stuff to the already existing unit cool tests in the portal made by Ian so my new work is also unit tested.

You might still want to to turn off unit tests when you compile all of Sakai after a fresh checkout - it adds some time to the process. But when you are working on a chunk of Sakai and in particular before you check something in - make sure to pass unit tests before you check new code in.

Posted by csev at 12:13 PM

January 18, 2008

I am loving the new Apple Stuff from MacWorld

I cannot believe that folks are disappointed in the announcements at this week's Macworld. This is clearly a situation where the expectations have gotten so high that simply being amazing is a disappointment for the market. What a bunch of knuckleheads.

I really like the fact that my iPhone just got better through a free upgrade. I was all prepared to pay another $400 to get GPS in my iPhone - and no, the current feature is *not* GPS - but it is close enough for 80% of what I want to do. The best application for this is saying "Where is the closest steakhouse?" or "Where is the closest Best Buy?" - this is like science fiction stuff. And I just downloaded it for free. It is somewhere between 500 feet and 1/2 mile in accuracy in my testing. It seems that my daughter's iPhone purchased in December has better GPS accuracy than my phone which was purchased as soon as iPhones came out. In side by side testing her phone is better - kind of weird.

The even cooler thing is that my daughter upgraded her iPhone software without even talking to me and figured it all out herself. Got to like Apple's ability to write software for consumers.

The new Apple Air Macbook is simply awesome - one again Apple challenges the other vendors to really know what folks need - no disk drive at all - great move. No Ethernet - great move. Solid-state disk as a way-too-expensive option - great move. Apple s god at taking future stuff and making it today stuff. This is making a portable portable - I kind of miss the really ultra-portables like the Vadem Clio and the Nec 800 - lets watch the Air morph into a 3Ghz 2GB 13 hour battery screamer in the next few years and then say "Steve missed the mark". We must walk before we fly. The Apple Air is already ready to glide long distances - lets give it a while and see where it goes.

I personally credit Apple with straightening out the mess of multiple wireless specs when they picked one and introduced the Airport. They take advanced stuff and make it common place and then up the manufacturing and then reduce the price - and then the other vendors jump on and follow - further increasing the economies of scale for everyone including the folks who don't buy Apple hardware.

I even am geeked about the gesture stuff in the Air - I really like gestures on my iPhone - yes I initially thought they were lame - but that was until I got good at gestures - now I love gestures and happily teach gestures to unsuspecting people at a dinner table. People (myself included) never appreciate the depth of an Apple design and second guess - until they live with it for a while and realize that Apple designers were right all along - it takes skill to do something that most people think is wrong - but then end up being right.

Here is the other coolest thing - the next time I get a laptop - I won't get a compromise laptop like the one I have now (MacBook Pro) - which is a pretty fine desktop + laptop combo. It has the disk space and expansion of a desktop (sort of) and it is a bit heavier than 3lbs so it is light (sort of). When I next buy a computer I will get an absolutely bitching desktop with like 8 procesors and 2TB - then I can do a bunch of video editing. And I will have a laptop that is light and powerful capable of doing development and video editing - just not the heaviest editing. Think of the world going forward as a desktop plus a "shuttlecraft". And the Shuttle craft is plenty powerful on its own. But the mother-ship can have a crew of hundreds.

Oh yeah and the last thing - did you notice that the new laptops from the side look just like the alien pods that came down the lightening bolts in War of the Worlds? Yeah - you are feeling me.

Oh yeah one last last thing - I wonder how many employees Dell sends to Macworld - how else will figure out what next years Dell's are supposed to imitate.. Just when Dell got out their own shiny black imitation iMac - now they need a War of the Worlds shaped shuttlecraft portable laptop with curved edges.... Sucks to be a Dell industrial designer the week after MacWorld. I would love to be a fly on the wall at the Dell design meetings this Monday.

Ok - It is a Friday and I had fun today doing some video editing so I am in a good mood.

Posted by csev at 07:34 PM

January 17, 2008

Pedagogy: Teaching in a Semi-Public Manner

Since I am interested in Open Courseware and the long-term benefits of open materials to society, I am teaching my courses this semester in a semi-public manner - I am trying to think of my materials as "open first" or "public first".

I will protect only those materials and information that I feel need protecting.

Using Sakai as my LMS system has been great because it has a lot of features that allow me to remix my own content in Sakai. Frankly over the past few years features and capabilities have been added from many of the Sakai developers that make this fun.

What is amazing to me is how much of this I can already do with Sakai - just knowing the ins and outs of Sakai's features - of course it does not hurt that I was part of adding these features into Sakai over the past few years.

It also helps to have spent a bunch of time talking to folks at Cambridge, Oxford, and Leeds to understand the "more open" approach to teaching that is present in the UK. (Video)

If you are interested in taking a look at my semi-public site - go to www.si182.com

In the rest of the blog post, I outline some of the things I have done.

Here is a list of what I have done so far.

Teach 95% of the course in a Project site with open membership. This was done by having tech support associate my course roster with a project site that I created. I wish this site could have a "vanity" id so my outside URLs would not be so ugly. The only technical bit is that Project sites do not have proper AUTHZ templates for "Student" roles. The quick solution for this is to simply go through all of the tools and give the students the permissions you desire. It took a while before I realized that students were not getting E-Mail from the project site.

My project site has these tools: Announcements, Resources, Podcasts, Polls, E-Mail Archive, Textbook (Web Content), and Calendar (iFrame to Google's calendar).

My course site only has the Assignments tool for grading - and *nothing else*. Of Course Roster is only viewable by me. So grades and Roster are the *only* private things in the course. If I end up using materials under "fair use", I might have to store some resources in the course site. I generally avoid "fair use" things - luckily in the software world - there is so much free stuff that I don't find a need to do fair use. I understand that other courses might have less of a choice in this.

Furthermore I mark my Resources as completely public and Podcasts as public and set my project site to joinable by everyone with a role of Observer. This coupled with University of Michigan's wonderfully liberal friend account policy means that *anyone* can get into my course from anywhere (I have to invite friends if their accounts this is their first use of CTools).

Building the really public site - www.si182.com

Once this is all setup I can make a site that simply points to the public urls inside of Sakai. This results on a top nav bar with the following links:

Book - A page with an iframe that points to the publisher web page for the book.

Resources - This points to a URL in the access servlet for the course material without a file name. Thanks ot a lot of work by Chuck Hedrick of Rutgers back in the 2.1 days, Access Servlet in Sakai will serve up directory listings if you do not have a file name on the URL. Try it here and see what happens.

Podcasts - these are public by default so you just need to show the URL with instructions for subscribing.

Calendar - Since I use a public Google Calendar - one more iFrame and viola! We have the same course calendar inside my course - also outside my course.

The primary thing that is missing in my completely public site is E-Mail archive. I could do that - but something inside of me tells me that I would like to know who is listening as I admit to making screw ups in Lecture 3 to my class. Anyone can listen by joining - I just don't want people Googling "Python Idiot" later and coming to my mailing list - perhaps in time my attitude for that will change as well. Funny - the notion of knowing who was listening was important in the early design of the Bodington LMS.

The E-Mail is in the project site - not the course site - this is because I want those my lurkers to step in and help when they can - and this *has* happened so I like it a lot. It is probably no surprise that I run the E-Mail list in my class much like a open source dev list. Anyone and everyone are encouraged to talk and help each other - mail is not a broadcast-only medium for me - it is a community.

Probably the last point to make is that I am trying to experiment with building a community around a course and idea that lasts beyond a semester - I hope that when the course is all over - some students from each semester - will stick around and help me teach the next round of incoming students. Ultimately this leads to a very natural and organic approach to teaching.

So much to experiment with and so little time :)

Comments

Stephen Marquad made the comment that I could go even farther using the .auth role to effectively make my site nearly completely visible to anonymous users.

He is exactly right - I need to experiment with that feature and see how it fits into my teaching. I may need to do some clever AUHZ to get buttons to show to the anonymous folks like I want to - I could use Worksite in an frameset to make navigation natural or even use the PDA portal in a frameset to make it really easy.

Hmmm. Thanks Stephen.

Posted by csev at 11:12 AM

January 16, 2008

A Quote from Noah Botimer

Noah just dropped this little gem in an E-Mail on a list - I figured I would grab it and keep it forever.

I suppose I'm also trying to mention that "Sakai" is at least four things to us:

  1. A collaboration / learning system
  2. A framework for building collaborative tools
  3. A community of schools, affiliates, and generally cool/brilliant people
  4. A foundation of visionaries to steward 1-3

So, when someone asks "what can I do with Sakai?", the perspective is usually #1, but we shouldn't forget 2-4.  In so many ways, we're like the Eclipse project, with a vibrant community around a set general tools for building really cool specific tools.  Where we differ is that we have large-scale deployments with varied institutional contexts, where many of the end users are non-technical.  That brings a whole new set of responsibilities and opportunities.

- Noah Botimer 16-Jan-2008

Posted by csev at 12:26 PM

January 15, 2008

Pedagogy: Technology Classrooms - Thoughts/Comments

I was asked by a reporter to comment on technology classrooms - my response got a little long so I figured I would put it here to keep it.

Technology in The Classroom

Do you think you can just comment on the importance of technology in today's university classrooms? Just a couple of highlights on the topic would be greatly appreciated.

I have been involved in technology in the classroom from many perspectives - currently I am teaching and using the technology. In previous periods of my career I have been a technology developer and a technology deployer.

My comments below are from the perspective of a teacher.

At some level, the reason that we all invest in improving technology in classrooms is to improve teaching. However just installing the technology is not sufficient - teachers much choose to use new classroom technology and then find ways to improve their teaching using the new technology.

The problem is that for a teacher to figure out how to best use a new technology they must be able to experiment with it and then begin to depend on it - and then begin to change their teaching based on how the technology allows them to teach better. Depending on a technology is a big deal - because once you integrate a technology into your teaching - the student experience suffers when that technology is not there or fails somehow - teachers who try a new technology and depend on it - quickly retreat when the technology lets them down.

So I will talk about three categories of classroom technology starting with essential features that I cannot teach without and moving to things I dream about in a classroom.

The Essentials

The first category of technologies if the ones that I found in most classrooms and have come to depend on and have fully integrated into my teaching approach.

A reliable projector is a must - this is obvious. If I go into a classroom without a projector - my teaching effectiveness drops about 70% immediately. Things like having an old projector not capable of displaying 1024x768 or greater has a negative impact on my teaching. I recently went into a class and the projector was not displaying red - my slides are very colorful and the color delivers semantic meaning on my slides - so even losing one color had an impact on the student's experience. Good lighting and lighting control is also important - you need to be able to block out the sun so students can see the slides. You also need to be able to light different parts of the rooms differently.

The second most essential element in a classroom is good audio. Increasingly I use short video clips and recorded materials to enhance my teaching. I have gone so far as to pre-record some of my lectures and play them back in short segments during class - allowing the students to stop the lecture to ask me questions just like it was a real lecture. Then after class the students get the same lecture as a podcast - but without the interruptions for review and study. This is now my approach in many classes - it simply will not work in a room without high quality audio throughout. So now I depend on good audio.

A whiteboard that is not hidden by the screen is very important as it allows and hoc questions without disrupting the flow of the slides and allows ancillary material to be presented near the slide material.

Interestingly most of the podiums I encounter always show the podium computer display instead of simply mirroring what is on the projectors. So I end up looking over my shoulder all the time to manipulate my mouse. The podium display should always mirror the projector - sadly there are often little technical issues which happen when the podium display mirrors the projector display.

Emerging Technologies

The second category of technologies are ones that I see coming and find interesting and might experiment with - but am not ready to depend on and integrate deeply into my teaching approach.

Computers in the Podium - I generally do not like to depend on the podium computer at all. Usually podium computers have a really localized software install, and you need some local account from the local IT folks to use it, and you cannot install software on it. I only assume that these computers have a working web browser and can display PowerPoint in an emergency - not much else. The podium computers provide an important function - but not one that changes my teaching because I cannot count on them. Of course it is important to note that I teach software, technology and web development - so I am a pretty demanding customer :)

Computers in the Podium with pens to annotate the screens. Increasingly podium computers have really nifty tablet style screens that allows one to annotate the screens. I *love* to annotate my screens - I use OminDazzle for the Macintosh and *love* it. But as I am not much a fan of podium computers I cannot use these screens. I actually wish that I could plug those tablet screens into *my* computer and use them for my computer rather than the podium computers - because then I could reduce the risk that the podium computer won't work for my purposes. For people with Windows tablet PC's they already have this capability - it is sadly missing for Apple Laptops and I must use my mouse for annotation - ick.

Two projectors in a room - I am starting to see more larger rooms with two projectors - I have not yet found a way to change my teaching to take advantage of this. It is still quicker for me to switch what I am showing on a single display. However, when I am working intensely, I really like to have a lot of screen real estate and multiple displays might be quite nice - it would be really nice if I could drive both projectors from a single keyboard - this requires a desktop - not a laptop. This also requires a podium where I can see both displays at the same time without having to look over my shoulder and move the mouse. I am sure that two displays is very useful for classes where there is commonly discussion about a photo - such as art or biology - but for me - I just want them to be "more screen real estate".

Dinner Theater Room layout - This is not exactly a technology - but it is wonderful so I want to mention it. My favorite room on campus holds about 40 students seated at four person tables with plenty of space between tables to move around - I can get to any student to help without crawling over another student.

Computers on desks have become a complete waste of space. The best rooms that want to be used for technology courses have laptops in the room in a locked cabinet. This way, for the few students who don't have a laptop or for a student that forgets their laptop, I can open a cabinet and hand them a laptop for use during class - this is outstanding. However - of course - I cannot install software on these laptops. I would like to see a way that we could use remote desktop software to allow these portables to work in a software environment that I maintain. If I am teaching a Java programming class - I have software the students need to use.

Dream Technologies

Thee are a few technologies that I generally do not see in classrooms but would really like to see.

Remote access - I would like to be able to teach my courses remotely while I am traveling. I would also like to have guest lecturers in my classes from far away. And I would like to be able to record my guest lecturers for later viewing by the class. I am not yet sure the right approach in terms of software for this. It is important that my guest lecturers do not have to install software on their end - this suggests the use of Skype, Gizmo, or iChat Theater (or any of the above). Other than software, the biggest problem is a microphone so that there can be interactive discussions. I think that we should explore equipping professors with Polycom microphones to begin to experiment with this approach. This might be something to make work nicely in a dedicated podium system - including having the microphone properly connected and everything balanced out so it works well.

Lecture recording and archive - I have always wished for a way to record lectures in a simple ad hoc manner. Unfortunately no simple solution for this exists that is reliable and non-intrusive. My current workaround is to record audio - only with a USB MP3 player with audio recording support. Sansa makes a number of these which are simple and very good. They are simple to use and quite reliable and completely under the control of the instructor - and I can use them in any lecture setting.

Posted by csev at 10:07 AM

January 14, 2008

Dallas Cowboys, A Class Move by Terrell Owens backing Tony Romo

Somehow this year I am more interested in football than usual. The playoff games are good and there are a lot of good teams who are on the brink of destiny. Also I work on lectures on my laptop during the games so it is not completely unproductive.

This morning there is a video clip of Terrel Owens crying a bit as he defends Tony Romo's recent vacation to Mexico. Basically he says "back off my teammate - we lost as a team" and then he breaks up a bit in a tough manly way. He breaks up in a way that if you made fun of him - he would pound you into dust.

Here is my point - this is leadership. Terrell Owens is a veteran player - he knows what it is like to have the media ready to blame him for everything that went wrong.

Frankly for the Dallas Cowboys this has been a pretty good season - you don't win the super bowl every year - and this year they did better than expected. For the media to define the season into a failure because of a close loss to a good team in the playoffs where Tony and the Cowboys played very well - but just game up on the slightly shorter end of the stick - would be a crime and not good for the Cowboys prospects next year.

So after the game, Terrell did what he knew he had to do. He did something that made sure that the attention was partially on Terrell and not exclusively on Tony for the next few days. As a veteran he stepped up and directed some of the media frenzy at himself to take some away from Tony. And it worked - CNN this morning talked more about Terrell than Tony.

And after a few days - no one will care. The media and fans will realize that this was a great season for the Cowboys and instead of looking for blame where there is none, they will get thinking about how to make next season better and supporting their quarterback. And Tony can learn from the loss and hopefully do better next year for the Cowboys and take them even further in the playoffs.

Class move Terrell.

Posted by csev at 07:10 AM

January 10, 2008

Response to Michael Feldstein's Blog about Gadgets Versus Portlets

Michael asked a cool question in his blog about gadgets versus portlets.

http://mfeldstein.com/gadgets-instead-of-portlets/

My response is in Michael's blog - I replicate it here as well.

Michael - Excellent opening statement. My response is less technical than Antranig's - I treat "gadget" as a Google gadget - not a generic gadget.

I have been working with Java Portlets (JSR_168) and WSRP (Web Services for Remote Portlets) now for a long time - trying to use them and then finding them not well suited for many applications and then trying to get involved in improving them.

I think that architecturally Google Gadgets, Facebook applications, and remote portlets are *exactly the same thing*. Effectively they all describe a way to build a UI out of rectangles where the rectangles come from various sources and servers and can be written in very different languages.

The only thing that Facebook and Google has added to the discussion is that they have built their standards for integrating "rectangles" in such a way that many people can implement them. The formal standards like JSR-168 and WSRP are aimed at "Enterprise Developers" who are being paid to do this stuff - and it it takes a month to figure out how to do a "hello world" application - there is no harm - because everyone is getting paid.

For Google and Facebook - they need people to use their stuff and quickly - because few will be paid to build gadgets or Facebook applications - mostly it will be people who have some cool idea and want to join the cloud. This means that Google and Facebook give us a rich but simple interface focused on using REST - and in particular focused on making the first few steps really really easy.

Easy and loosely coupled also has a cost - performance tuning can be harder and you lose control of your data. You lose control of the service level agreements - you lose control of privacy - you lose control over a lot of things - but you gain vast richness.

So to summarize the first part of my comments - I see Google Gadgets and Facebook applications solving a problem that portlets and WSRP could not solve in a way that is satisfactory to the market. Google and FB step into a vacuum - provide a crude but effective solution and we all take off running and having fun - and doing things we wished were possible a long time ago.

The second part of this is about IMS Tool Interoperability. Eventually we will need a way of mashing up functionality from many sources without compromising performance, functionality, privacy, or quality. IMS Tool Interoperability *wants* to solve this problem and we are making slow progress on it - I wish I had five programmers I could just tell what to do next on IMS TI - then we would make some progress.

The problem is that this is not as simple as mashing up RSS feeds for our own newspaper. The simple example (moving towards Antranig's comments above) is when I want to outsource both my content file storage and my testing engine - i.e. neither run in my enterprise LMS.

Lets say for example, I am using Microsoft SharePoint for my file hosting, Sakai for my enterprise LMS and grading, and QuestionMark for my assessment hosting. I am authoring a test question and want to add an image to the question - I click on a button in my question authoring environment and the application needs to bring up a list of files from SharePoint for me to choose from in the QuestionMark UI. Then when the students take the tests - the grades need to end up in Sakai. And I am just a simple faculty member - I want this to just *happen*.

The sad thing is that this is all pretty technically feasible. But no standards exist for it and no one is willing to be the guinea pig for the application and no one seems willing to work with unfinished standards and iteratively evolve them to get to the point where real work can be done.

The good news is that organizations with money to burn and well-funded teams looking at how to make more money in the future are looking at this (i.e. Google and Facebook) - we (the teaching and learning market) are not part of their thinking and don't get much influence in where they are going. But for me - at least there is *some* investment in what will be the future service oriented architecture for learning.

I am sitting back and watching with some glee as Google and FB beat each other up trying to out-innovate each other for the next few years - my feeling is that they will end up with an 80% solution and then for teaching and learning applications, we can build on their technical design and user interaction patterns.

I think that a company could make a *lot* of money if they decided to get ahead of this and add T/L innovations to the FB/Gadget world. It would not be that hard - Google and FB are solving all of the provisioning, markup, authentication, and sand-boxing problems - we just need to add some standards for content and authorization.

But the road ahead is not simple nor trivial - there will need to be a several year investment in solutions that will need to be thrown away - given that teaching and learning cannot affect Google or Facebook's direction - we are at their mercy.

But this is how innovators work - they take risk trying to find their way into a market that does not yet exist and when it initially does exist - it will not be too lucrative. But sometime later - it will replace the old market and become the only market - then all of the former market leaders kick themselves and ask "Damn, why didn't we think of that?".

Of course the reality is that those former market leaders were probably told repeatedly by members of their organizations where the future was going - but these future thinkers in the market leading organizations are told - "This all sounds interesting, but how will your idea increase next quarter's revenues by 10%? Unless we can find a way to affect revenue next quarter - we will sit back and wait until someone else figures this out and then jump on as a late adopter.".

Readers should Google for the "The Innovator's Dilemma" from Clayton Christensen and read it cover to cover - one of my favourite books.

I also wrote about this in a (soon to be published) Journal article in June 2007 - an excerpt from that article is up on my blog:

Functionality Mashup - FaceBook APIs - Here comes Google OpenSocial

Posted by csev at 11:17 AM

January 08, 2008

Restoring Sound after iShowU / SoundFlower

I like to use iShowU to record my screen - sometimes I do record system audio. iShowU uses Sound Flower to do this. Most of the time - iShowU properly disables SoundFlower when it is done - but sometimes it does not. This is what you do when SoundFlower is stuck on (this is Mac OS/X 10.5)

Preferences -> Sound -> Output

Switch the output back to your built in speakers.

You know this has happened when you try to change the volume on your mac and the mac refuses to change the volume and you see the little "international not" symbol in the little volume display that pops up.

This fix is also described at the Soundflower page:

http://www.cycling74.com/products/soundflower

Posted by csev at 08:59 AM

January 07, 2008

Spain Visit Notes

In my recent visit to Spain (15-Dec-2007 - 20-Dec-2007) my primary intention was to work technically with the multi-university Campus project building interoperability between Sakai and Moodle using OKI OSIDs and the Campus Project OKI bus. I am very excited about this project because as far as I know this is the first time an organization has decided *not* to choose between Sakai and Moodle - but instead - they decided to use both Sakai and Moodle.

This is a great challenge and there is a talented and well funded team in place making very good progress. As with any time you venture into uncharted technical waters - time becomes and issue. The teams are working under a lot of time pressure - so I wanted to come and visit as soon as classes were over to see how / if I could help. I scheduled five days in order to visit all of the Sakai universities in Cataelonia - Lleida, Valencia, and LaSalle in Barcelona. Previously I had only visited Lleida.

Saturday December 15

Arrived at noon from London Luton Airport. Met with Lluis Vincent of Las Salle University, his wife, and Edward and Xavier to have lunch and dinner and plan the visit. It was cold, windy, and raining - we had great fun - we went through a cathedral filled with people taking their chidren to a nativity display and went to a christmas market - I learned some Catalan traditions - The tradition about striking a particular tree with a stick and then the tree "emits" presents. I also learned about another interesting tradition described at www.caganer.com.

At about 11, Edward and Xavier left us - and we went to Luz de Gas (www.luzdegas.com) - there was a great band named Talking Rabbit and free drinks because the bartender was from the same town as Lluis.

Sunday December 16

Got up and took a train to Valencia - this is a very beautiful trip with mountains on one side and the Mediterranean Sea on the other side and much of the trip goes through orange groves and small towns. I did not see much of it because I was mostly sleeping due to the previous late night at the disco.

When I arrived in Valencia - my hotel was downtown and it was awesome - very modern architecture. An awesome bathroom - and free Internet. The Valencia downtown has a river that is no longer a river - because it was diverted and the river is now a park with very modern buildings that house concert halls and museums. I had a few hours before dinner at 9PM so I went to the science museum and the Titanic museum.

I had dinner with Miguel Ferrando (CIO), Aristóteles Cañero (User Support), and Raúl Mengod (Sakai lead at UPV). It was a very nice dinner and we talked about the UPV installation of Sakai and planned Monday's visit. Afterward Miguel and Raul took me on a brief tour of the city showing me the old and new sections and the old walls including a wall where marks from Napolean's cannonballs can still be seen.

Monday December 17

We started with a demonstration of the unique features of the Sakai instance running at UPV. They are the largest installation in Europe with over 40,000 users. They have invested in further internationalization of Sakai because there is a legal requirement for the students to be able to pick the language of their choosing - and everything (including tool names) must change to the new language. Valencia has done significant work on Samigo to fix issues and problems and is now happy with Samigo - they have a great relationship with Stanford and have been giving Stanford their fixes which have been put into the trunk of Samigo.

Another very interesting approach that they have taken is to use Oracle's web toolkit to make simple tools. They write the tools in Oracle and then make a variation of the Web Content Tool which knows how to construct the URL to Oracle. These tools are protected by single sign on. The tools manipulate Sakai data tables directly- something that can be done as long as great care is taken. Typically each tool does a very simple task - users do not even know these tools are not part of Sakai. A clever and quick solution to local problems.

They are starting to look at 2.5 and approximating the effort it will take. They will do two steps - first they will work to get many of their fixes and improvements into trunk. Then they will take a version of 2.5 and back-port their patches - then they will apply their local modifications to the 2.5+ version. This is a very clever approach which makes it easier for them to upgrade to future versions of Sakai and we all benefit.

We also looked at one of their very clever lecture capture technologies - Polimedia. As you well know I am a lecture capture geek so I found this very interesting. The particular cleverness of Polymedia is that UPV has 6 small studios, each operated by a single person. Faculty book the studios to make modules - the studios are very popular. The pedagogy is to record 5-15 minute segments that are reusable - these become part of a library that the instructor can pull from. My own thinking is that these videos might be part of a lecture - but not the whole lecture. I will experiment with this approach next semester.

I already recorded my first lecture (Introduction to Ruby) at UPV. It was great fun. I wish I had started the lecture with this joke: "Hi, I am a Mac and this is my PowerPoint". You will get the joke when you take a look at the video.

http://www.dr-chuck.com/media.php?id=85

During the rest of the day, we visited the Cave 3D environment and a novel approach to 3D HD cameras. The visit finished with Aristóteles taking us on a tour of their campus television station - it was a very efficient operation wit a strong focus on producing local content on a regular basis. You know me - I am always fascinated with media stuff :)

At the end of the day I took the train back to Barcelona.

Tuesday December 18

I spent the day at LaSalle. In the morning I met with the Open Campus Project team to discuss technical aspects. First met with I met with Xavier Gumara, Edward Cespdes, and Maiye who make up the LaSalle Open Campus Project technical team. They are working on a SCORM engine, a and QTI statistical analysis tool, and a synchronous graphical virtual classroom which emulates a physical classroom. After a demonstration of the LaSalle Open Campus tools we met with the Campus Project lead architects - Pablo Casaro and Francesc Santanach - we reviewed the symmetry of the OKI bus - I was also introduced to some of the technical approaches they have been using to help speed development. There are a set of tests called the "Dummy OSIDs" that allow work to be done independently.

Later in the morning I gave my talk to the faculty and staff at LaSalle. Here is the Url of that talk:

http://www-personal.umich.edu/~csev/talks/2007/2007_12_17_lasalle.ppt

It was interesting for me to talk about Sakai from a teacher perspective. I had a lot of good interaction with the group after the talk - since Sakai is in pilot at LaSalle and they are also looking at Moodle I was asked about comparing the two products and projects.

After the talk we went to lunch with some of the influential folks in teaching and learning on the LaSalle campus. One topic we talked about was the importance of portfolios in the upcoming changes for the Bologna process.

I spent the rest of the afternoon with the LaSalle technical team. For dinner we went to a bar named Los Toreros - it was chosen by Maiyeeiia - we had great Sangria and the food was really good - my new favorite restaurant in Barcelona.

Wednesday December 19

Alex Balleste picked me up and took me to Lleida. At Lleida, the first thing we did was to review Alex's work on the Campus project - building the Sakai version server side of the OKI bus for the Campus project. While there is a lot of work to do and very tight timelines - the OKI work is very mature. I met the new CIO for Lleida. For lunch we had some very very delicious baked snails.

At lunch we met with the Dean of the Informatics at Lleida and we explored the notion of an exchange program between Lleida and the Michigan School of Information.

After lunch I had to catch the bus back to Barcelona.

Since this was my last evening in Barcelona Lluis and I went to dinner at Cafe Viena to sample the best sandwich in the world:

http://travel2.nytimes.com/2006/10/15/travel/15Bites.html

Afterwards we went to the Luz De Gas again (http://www.luzdegas.com/). Because Lluis is well-connected, we got a tour of the backstage and later the Mayor of Barcelona came backstage as well and we got to meet the mayor and his press corps. It was a great time - pictures start at:

http://www.dr-chuck.com/images/2007/12/index.php?img=20-12-07_211107_04.jpg

Summary

This was a great trip - I was glad to get to visit Valencia since they have done so much for Sakai. I learned a lot about the Campus project - they are making excellent progress even though they have very tight timeline.

I really enjoyed my meetings at the campuses - particularly now that I can talk from the perspective of a teacher using Sakai.

Probably the biggest thing that the three campuses (LaSalle, Lleida, and Valencia) have in common is the need for a portfolio system - while they might be able to begin some experiments with OSP - my guess is that really meet the needs of the Bologna process - significant new functionality will be needed.

Posted by csev at 07:03 PM

January 04, 2008

Rails Install Notes - Dropping back a Rails Version from 2.0 to 1.0

gem install rails --include-dependencies -v 1.2.6

gem uninstall rails

Select gem to uninstall:
1. rails-1.2.2
2. rails-1.2.6
3. rails-2.0.2
4. All versions
> 3
Successfully uninstalled rails version 2.0.2

Oh yeah - this is cool http://rubyosx.rubyforge.org/

Posted by csev at 02:21 PM