Monthly Archives: December 2010

Dad’s Christmas Gift: Rose Bowl Tickets – Wisconsin .vs. TCU

Russell and Charles Severance, November 1957My father Russell Severance has been an inspiration for me my whole life. Many fathers put a football in their baby’s crib to encourage their son to become a great athlete. I think that my father put a College Algebra textbook and a graduation tassel in my crib. One of the earliest memories was captured in picture where I was laying on his chest while he was reading a book for a class he was taking for his Electrical Engineering degree at the University of Wisconsin in Madison. I was born while he was going to school and much of our early time together revolved around his education so it is not surprising that teaching, learning and higher education would become a big part of my entire life.

I am also a big fan of the Rose Bowl – I kind of feel like it is the only *real* bowl. Perhaps it is because I have spent so much of my life in the Big-Ten having lived in Wisconsin, Pennsylvania, Minnesota, Ohio, and Michigan. Charles and Brent Severance at the Rose Bowl, January, 2007My alma-mater is Michigan State (three degrees) and I work at the University of Michigan School of Information. I almost went to the Rose Bowl in 1987 when Michigan State went, but it seemed expensive at the time and I was confident that MSU would be back to the Rose Bowl pretty soon and I would go later when I had more money (oops). Then 20 years later in 2007 when University of Michigan was in the Rose Bowl, my good friend Jim Eng got me four tickets so I took Brent, and Ted and Brandon Shotwell out for a great trip as their 2006 Christmas presents and to thank Ted for installing hardwood flooring in my living room.

I was hoping that Michigan State would make the Rose Bowl this year so I would have another excuse to go to a Rose Bowl but that was not to be. But then Wisconsin was selected and I realized that with my dad’s Wisconsin connection I had a great excuse to go and a great surprise Christmas gift for my dad.

My dad has been a fan of Big Ten football forever. In the early 1970’s, when we lived in Ohio, we would listen intently to the radio broadcasts of the great (now classic) Russell, Charles and Greg Severance May 1959Michigan-Ohio State games at the end of each season with great interest in every play. We lived for the situation where either Ohio State or Michigan was first-and-goal on the one yard line! It seemed that time stopped during those four plays.

Then when I was in 11-th grade, we moved to Jackson, MI into the heart of Spartan and Wolverine territory. My father chose Jackson, MI as it was 30 minutes from two great universities and he had five children about to graduate high school and wanted to make sure that we had two choices as to where we pursued our higher education. It shows how much of a priority education was in his and our lives.

Chuck looking cool, circa 1974While I was finishing high school in Jackson, MI I stayed a Ohio State fan. But once I went to MSU as a freshman, I became a Spartan fan and Russ also became a Spartan fan as well. He was almost more of a Spartan fan that than I was. He liked the underdog and hard-working nature of the Spartans. I think that it reminded him of his own hardscrabble fight to get out of depression-era poverty in rural southern New Jersey and find a way to get a good education – an education he fought to make sure all of his children would be assured of having without wondering if they could afford it.

Then in 1999, I went to work at the University of Michigan and we both became fans of the Wolverines as well. With all of our complex and divided loyalties, we both were fans of the Big Ten, only deciding who to root for on the critical games where both teams were schools we rooted for.

So with Wisconsin in the Rose Bowl, I decided that this would be the year Russ would see his Alma Mater in the Rose Bowl in person instead of on TV. Rose Bowl Ticket 2011So I bought some tickets in the north End-Zone off StubHub and booked two first-class tickets to LA using frequent-flier miles and put the plane ticket and Rose Bowl ticket in a card as if it was just another Sam’s gift card like so many Christmases before. The surprise was complete – he was not expecting it and when he looked at the Rose Bowl ticket – it did not dawn on him until someone explained that he would be going to the Rose Bowl in person.

So we leave December 30 in the morning and arrive in LA in time for the traditional pre-bowl pep rally at Santa Monica Pier. Then there are a few more surprise fun destinations on Friday. We won’t go to the parade because that is harder to get tickets to than the game it seems – and it means getting up too early. At the game, we are in the North End Zone at seats Tunnel-26, Row-37, Seat 14. You can take a look at the Rose Bowl Seating Chart to see where we will be sitting. I figure we might get on TV by being in the end-zone section – we can wave at everyone back in Michigan when there is a field goal or extra point. Keep an eye out for us!

I will be tweeting status and pictures as the trip progresses and taking lots of pictures so you can follow along if you like.

P.S. Go Badgers!

Using the Edmodo LMS To Teach SI791:Open Source Software Development Course

I am teaching a course next semester on open source software development focusing on improving the user experience of Sakai 2.9. My students will be a combination of user experience experts, UI designers, information architects and software developers.

I am using Edmodo rather than Sakai as the primary learning management platform for the course. Part of my goal is to get us to “think outside the box” as we think about re-designing Sakai 2.9’s portal.

I am really excited about the Social aspects of Edmodo and the fact that it has an excellent iPhone application. I also like the way Edmodo handles private and public information – for example, you can follow the course materials and discussion (those we choose to publish) at the following URL:

http://www.edmodo.com/public/si791-sak/group_id/161836

Since this course will be very dynamic and we will evolve it together, the more conversation-oriented nature of Edmodo will be a great fit for this course.

Members of the Sakai community are welcome to lurk in as members of the SI791 Edmodo site and even participate – send Dr. Chuck an E-Mail for the secret join code after you make your Edmodo account.

The more I play with it, the more I am tempted to use it for my SI124 – Networked Thinking course as well.

I am less tempted to use Edmodo for my larger and more structured courses like SI539 – Design of Complex Web Sites and SI502 – Networked Computing since they are more book oriented, well-organized and pretty fast-paced in terms of material. Sakai still feels like a good tool to “manage” those courses.

I think that using more than one LMS next semester will be fun both for me and for the students as a collective usability exercise.

And yes, I see the irony in teaching a course about open source development working on an open source project but using a close-source cloud-hosted technology. And I do need to get used to type “Edmodo” (like the dragon) as compared to “Edmoto” (like a motocross bike).

Reaction: LMS Market Trends and Michael Feldstein

Michael has two excellent blog posts about his vision regarding the state of the LMS market and his expectations of the trends in the LMS market over the next four years.

http://mfeldstein.com/the-evolving-lms-market-part-i/
http://mfeldstein.com/the-evolving-lms-market-part-ii/

Not surprisingly, we see things a little differently so I added a comment to his post which I replicate here.

I think that if you re-drew your market share graphs with Moodle stacked on top, it would be clearer that Moodle has real, significant growth, and Sakai and Desire2Learn are growing very gently in terms of customer counts. I think the for schools who decide to switch who are price conscious, Moodle is nearly always be the choice and so Moodle will slowly completely take over the “lower-end” of the market.

But as you also have said previously – the low-end of the marketplace (historically Bb Basic, WebCT CE, and Moodle) is not where the real money is at and so even if the number Blackboard client numbers may have declined, revenues continue strong because the remaining customers (a) buy more, and (b) pay well. And any new customers they get are high-end schools.

So if we segment the market into the “price conscious” and the “not-so-price conscious”, we end up with two sub-markets, and Sakai, D2L, and Blackboard will fight of the the piece of the market that represents the schools with real money to spend.

I am not suggesting Moodle is an inferior product in any way. I just think Moodle’s market approach is dramatically different than the other three. Moodle has the low-cost / high volume model completely owned and are making good revenue in large and increasing volumes of low-marginal-revenue customers and an outstanding franchise model. The other three are fighting for the “high-cost-per-sale” crowd – and when you win one of those, you make more money per customer.

You see grand tectonic shifts in market share that are in motion and seemingly inevitable. I disagree – I see a market that is shifting from a seller’s market to a buyer’s market. Blackboard, Desire2Learn and Sakai will have to deliver more and more and deliver better and better to keep or gain customers. It is now a race and in the next four years there will likely be a clearer winner than now.

It kind of looks like the market has been tweaked as much as it will be tweaked by acquisitions. Those willing to sell have sold. The rest are in it for the long haul. With the acquisition option seemingly off the table – the only other option is to compete based on building the best product.

You seem to feel as though you know at this moment who will win or lose. Not surprisingly you paint a pretty gloomy picture for Blackboard. I feel that the race has just begun and that Blackboard, D2L, and Sakai have an equal shot at winning starting now. The winner of the race will be that LMS that throws themselves at making their user’s happy rather than looking furtively to the left, right or over their shoulder at their competition.

I would suggest that Blackboard has just as much chance to surprise and delight their current and future customers if they put their mind to it. And the game is theirs to win as long as they hold the largest market share. If Blackboard combines a dedication to making their users truly happy with their product – and with their current entrenched market position – they can easily out-run Sakai and D2L. Of course the question is, “will they make that commitment and stick with it?” or will they “coast on their market share and end up the Lotus-123 of teaching and learning”. If I take that Lotus-123 analogy way-too-far, that would mean that D2L becomes Microsoft and Sakai becomes Open Office :). And if I take it even further, years later when Oracle buys …

Sorry about that digression in italics – back to my story. My feeling is that Blackboard literally has no other choice but to work hard to please their customers. It is the only way to maximize shareholder value at this point in the marketplace where we are moving towards a buyers market. Remember how the US finally “won” the cold war….

What is absolutely clear to me is that any LMS vendor (Sakai, Moodle, D2L, Blackboard, etc) that sits on their hands for the next four years – will likely end up outside looking in. So it is time for everyone in the marketplace to play strong or go home. An frankly, everyone in the market needs to just get cranking and build the best damn teacher-and-learner-centered mousetrap ever seen and stop imagining that unseen forces are inexorably driving the market to one advantage or another.

ATutor 2.0.2 Released and Basic LTI Support for ATutor is Alpha

I spent my spare time in the last few weeks working on IMS Basic LTI support for ATutor that even included a short trip to their new offices at the Ontario College of Art and Design (www.ocad.ca). First and foremost I need to thank Cindy Li, Greg Gay and Harris Wong of the ATutor team for their great mentoring and quick assistance when I needed it.

The BasicLTI support in ATutor is probably the richest UI for Basic LTI I have built yet – it is informed by all the other designs of how to best put Basic LTI into a course management system. Also, since ATutor also supports IMS Common Cartridge 1.0 – it was the first time I wrote Basic LTI support with a mind to connect it to a Common Cartridge import / export. While that is not yet done (CC 1.1 support), I laid the groundwork for connecting CC 1.0 and Basic LTI 1.0 to form CC 1.1 in an upcoming release. In this release I just focused on getting a good Basic LTI implementation into ATutor content system.

Here is a video of ATutor Basic LTI passing validation: http://www.vimeo.com/18074396

Some of my favourite features include:

  • The ability for either an administrator or an instructor to make a virtual tool placement.
  • The use of the recently-minted ATutor content plugin capabilities which is a clever combination of JQuery and PHP call backs that was design and built by Cindy in *less than a day*.
  • Full support of the IMS Basic LTI Extensions

I also really enjoyed working in the ATutor framework and exploring their module structure. I really love PHP’s flexibility and extendability and found the code very clean and easy to read. I followed a strict MVC pattern in each file that dealt with objects. I handled MVC by simply doing Model work first, Controller work second, and then View at the end. It is framework-free MVC and it is pretty when you do it.

I also decided to build (yet another) object-relational-mapper – I generally hate the way we are forced to code frameworks like Rails, Hibernate, Symfony, etc – they simply are too Draconian in how we write code. All of these frameworks have lots of goodness but the over-obsession on inversion of control makes them too constricting in the long run.

So I wrote my own – I called the Form-Oriented-Object-Relational-Mapper (FOORM). I wrote it an then used it in my Basic LTI implementation. The basic idea is that you describe form data and then make backing tables for the data. FOORM handles: (a) generating forms for edit, (b) generating simple view output, (c) validating input data, (d) creating properly escaped INSERT sequences, and (e) creating properly escaped UPDATE sequences. It also does some cool AUTHZ filtering of forms based on a notion of “control rows”. It does not do much in the way of SELECT support – SELECTs are hand-built.

Later I wll clean it up a bit and write it up but here is a simplified code snippet from the Model portion of Basic LTI for ATutor:

if ( at_form_validate($blti_instructor_form, $msg) ) {
        $fields = array('course_id' => $_SESSION['course_id']);
        $sql = at_form_update($_POST, $blti_instructor_form, $fields);
        $sql = 'UPDATE '.TABLE_PREFIX."basiclti_tools SET ".$sql." WHERE id = $tool".
               " AND course_id = ". $_SESSION['course_id'];
        $result = mysql_query($sql, $db) or die(mysql_error());
}

The at_form_update gives the properly escaped key/value SET pairs for the data coming in from the
POST request.

The $blti_instructor_form (subset) looks as follows:

$blti_instructor_form = array(
        'title:text:label=bl_title:required=true:size=25',
        'toolid:id:label=bl_toolid:required=true:size=16',
        'toolurl:url:label=bl_toolurl:required=true:size=80',
        'description:textarea:label=bl_description:required=true:rows=2:cols=25',
        'preferheight:integer:label=bl_preferheight:size=80',
        'allowpreferheight:radio:label=bl_allowpreferheight:choices=off,on',
        'launchinpopup:radio:label=bl_launchinpopup:choices=off,on,content',
        'allowcustomparameters:radio:label=bl_allowcustomparameters:choices=off,on',
        'customparameters:textarea:label=bl_customparameters:rows=5:cols=25',
        );

The form array defines how things are to look on the screen as well as the validation rules for the fields and the names of the columns in the database.

In general is is concise and elegant and allows the programmer fine-grain control of the ORM process and yet takes on much of the burden of long INSERT/UPDATE statements and complex validation rules.

I will play with it more in the future and generalize it more and perhaps release FOORM at some point.

All in all a fun few weeks working as an ATutor contributor. I look forward to interacting with the ATutor community as they become interested in Basic LTI.

What is the School of Information ?

As part of preparation for a retreat (which I missed), I was asked for the elevator pitch for the UM School of Information – so I whipped this bit up.

The School of Information is much more than just the study of technology for technology sake. Fifty years ago, it was a challenge simply to create computer based technology and the creative problems that needed solving were how to make technology, faster, more reliable, and more capable. In today’s world, we do continue to improve technology, but the greater challenge is how people will use the amazing technology that we are already capable of building. This problem is no longer merely a technical or engineering problem. The challenge of what we will do with technology is as much about how people can best use technology to how technology can help us make sense of the ever increasing amount of information in our world. To meet this challenge, we need people with a broad range of skills from psychology to graphic design to research methods to programming. We need people who are skilled in many different disciplines rather than people who are highly specialized in a narrow siloed field. The UM School of Information is producing these inherently cross-disciplinary creative workers for a wide range of fields. Graduates of SI are not just ready for a single job, they are ready for many different jobs and challenges both at the beginning and throughout their career.

CalDAV Connection to Google Calendar on the iPhone/iPad Fails

Caldav problems on IPhone googleI am sheepishly writing this blog post in hopes that someone else might save a few minutes when they are trying to set up their connection to Google Calendar via CalDAV and failing repeatedly. I spent 30 minutes figuring this little user error out.

The mistake I made was to keep mistakenly clicking “Add CardDAV Account” instead of “Add CalDAV Account”. I tried it several times and followed the same wrong path. Sheesh. It does not help that the screen to add a CardDAV account is exactly the same as the screen to add a CalDAV account and the CardDAV link is first.

Yes – I get it. I should have read the screen before clicking – but on the small iPhone I just scanned too quickly. And looking at the screenshot, it might be hard to imagine that anyone would make such a mistake – they make it pretty obvious if you slow down to read what is on the screen. Once I got to the CalDAV screen it worked perfectly. Not surprisingly when I put my Google credentials into CardDAV, it failed every time.

The real information for how to do this properly is here at Google:

http://www.google.com/support/mobile/bin/answer.py?answer=151674

The instructions are well-written and quite simple. This blog post is only for those of us who read screens impatiently and try to do five things at once.

By the way – thanks to Google for the CalDAV Feature – for the first time in over a decade, my desktop, web, and handheld calendars are all read-write from all my devices. I know that it has been possible for a long time but I never liked server solutions or pay solutions. The last time I had this was Windows Mobile 2.0 on a Casio in 1998, I think. Good times.

Cute Kitty and a Possum

Eddie The CatSo we have this cat named ‘Eddie’ and Eddie is a mostly indoor cat but is very brave and would like to go outside and take on the world and set it straight. For example right now as I type this, Eddie is peering out the window of my second-floor home office scanning the neighborhood to see if there is anything amiss that he might need to go out and straighten out.

We only let him out in the back yard and then only for a few minutes to keep him from sneaking away. We live in a neighborhood near some woods so there are often rabbits in our backyard or deer just beyond the fence. When we let the dog out, we turn on the lights and bang on the door to give the rabbits a running start before the dog is out there. He got a bit of rabbit fur once – but thankfully so far has not gotten a complete rabbit snack.

But when we let the cat out, there is no such warning. You figure that a rabbit can out run a cat pretty easily. So last night, I let the cat out without turning on the light or banging on the door. I turned the light on just after the cat started running across the patio to see a Possum in the middle of the yard. And the cat was chasing the possum full-speed. I had socks on so I could not intervene quickly and was dreading having a terrible fight in the backyard that I was quite sure the cat would lose.

As the possum waddled away and the cat closed, the cat started to realize three things: (a) this was not a cat, (b) this was not a dog, and (c) the closer he got – the more it was apparent that this thing was bigger than him. So just before he got close enough to engage the possum, he pulled up slowed down and stopped and watched as the possum hid behind our shed.

Whew! I got my shoes on and retrieved the cat and had a long talk with him about the fact that for him such an engagement might seem like a game whilst for the possum, it would be seeing it as a life and death situation – and when one side thinks something is a game and the other side is afraid of dying – usually the “gamer” loses. I think he understood. For good measure I had the same talk with the dog – and emphasized that while possums seem slow and vulnerable – they pack a mean punch when cornered – and are not at all tasty. I hope he understood – but I think he kind of ignored me implying that he would make his own decision if confronted with a possum in the back yard. Ah well – he was warned.

Locking the IPhone Keyboard During Calls to Avoid Inadvertent Mute

Finally after having my iPhone for several months now and getting quite tired of it hanging up or going on mute when it touches my face, I did a little research. The funny thing is that my iPhone 1, iPhone 3, and iPhone 3GS never had this problem – I could hold them to my face for an entire call and it would never push buttons while up to my face. But the iPhone 4 is terrible – I have taken to holding the phone at a 30-degree angle away from my face and only touching my head above my ear with the top of the phone. Grrr.

So this morning, armed with a cup of coffee and a few minutes I started doing some research. I started with “iphone lock keyboard during call” as my search and quickly found this discussion.

It seemed as though most of the discussion was confused and off point – but I kept reading and got way down to this comment from Scott Woermann:

The solution that I’ve found is this: while on the call, hit the home button. The call is still active, with the green bar across the top for getting “back” to the phone interface. So then, just hit the sleep/power button. It will then lock the screen and bring up the slider button, and the call stays up! Hope it works for others…

He is close but not quite right. His trick only works if you receive a call – but not if you make a call — urg. But the workaround is to only press the home button after you make the call and not press the power button – then at least you won’t be in the phone UI. You might inadvertently buy an eBook or something bid on eBay item with your face but it will be hard for your face to hang up the call or put you on Mute. So we have a less-than-elegant solution – but that is OK.

So now I am again a happy guy. As with most times when I am unhappy with Apple’s usability shortcomings – the most common problem is that there is a *really simple solution* that I cannot find and since there is only one way to do something – so if you don’t get the simple solution, you are lost.

I still think a simple “Lock” key on the phone with a nice finger slide to unlock would be cool. Sadly, the top button used to do this but now it hang up the call. While I have not tested all versions thoroughly, it seems from my recollection that about the time the top button switched from “lock” to “hang-up” is about the same time as I went from not needing a lock button to needing a lock button to avoid face-muting my phone :) Ah well I have a solution that works well enough for now.

And my coffee is still hot…