Monthly Archives: October 2020

Email Answer: Can you help me with my learning or one of your free / open classes that I am taking?

I get a number of messages per week from students who take my courses online.  I have well over a half million online students so I don’t have time to individually respond to all the messages I get via Twitter, Email, or LinkedIn.

I do skim all the messages I get – but only reply to a few.

Before I talk about the messages that I don’t answer, let me talk about the messages that I *do* answer like the following:

  • I am using an auto-grader in your course and it is broken.  If you have a screen shot where my code has an error message – I want to know about it and want to fix it.  I will bug you and ask you to keep testing the problem until I verify it is fixed.
  • If you find a typo or mistake in one of my web sites or books – I would like to hear about it.  I like to fix little things so the quality of the materials is kept high.
  • If you want to translate some of my course material to a new language – that is really cool and I want to hear about that.
  • You are a teacher and want to adopt or have used my materials for a course you are teaching.  I love that and want to hear about it.

The following types of messages are read – but I rarely reply to them:

  • Can you write a recommendation for me?  I only write recommendations for students I work with outside of class.  I don’t even write recommendations for students who take my courses on-campus at University of Michigan.   I *understand* that recommendations are difficult to get.  I just feel really bad writing a recommendation that says “I had Tony in class, and because he did not cause any trouble I would not even recognize Tony if he came up to me.”   I love writing recommendations for students when there is real collaboration.
  • Could you design a plan of study for me? Could you give me career advice?   I have some videos about career advice in some of my courses but don’t have time to be an individual career counselor.
  • Can you be my mentor?  I only mentor about 2-4 students per year – and I work with students because their interests (i.e. educational technology, open source, and open content) align with my interests and I get help from the students on my work.
  • Any question about Coursera, edX, or FutureLearn payments, dates, sessions, etc.   I provide my material to these MOOC platforms and they run the courses.  I don’t have veto power over what the platforms do or when the courses run or what the due dates are for each assignment.
  • Could you sign a certificate of attendance so I can get reimbursement?  This is an issue with the MOOC providers – I do not check ID nor take attendance in these courses so I can not and certify anything.
  • Any message about an honor code violation where you “mistakenly” uploaded something that was not your own work and you got caught.  These messages usually weave some long intricate story and want “one more chance” – I ignore these messages.   Read the assignments, do your own work and don’t take short cuts.
  • Can we connect on LinkedIn?  I only connect on LinkedIn to people I know professionally.  I don’t connect to students at all until I have worked with them on a project.

As I said above – I do see virtually every message and skim them all.  Sometimes something in a message will jump out at me.  Skimming a message is pretty quick but writing a reply takes a lot of time that I just don’t have.

It does not make me happy to ignore these messages – I wish I had time to reply to them all.  If I replied to every message it would take more time than I have in a day and I would get nothing done :(

So I apologize in advance.

-Chuck

 

 

 

 

How to build a JSR-168 Portlet in Sakai

Using JSR-168 portlets is the only way to have a page (like Overview) with multiple tools on the page rendered without iframes.  The portal only removes iframes when a page has one tool.  If there are > 1 tools – it uses iframes.   But JSR-168 tools never use iframes no matter how many there are on the page.

It is pretty easy to convert a servlet-style tool to portlet-style – in particular if the tool uses either JSP or Velocity templates, t is pretty simple.

Here is an example of a tool that uses Velocity:

https://github.com/sakaiproject/sakai/tree/master/web/web-portlet

https://github.com/sakaiproject/sakai/blob/master/web/web-portlet/src/java/org/sakaiproject/portlets/PortletIFrame.java

This was a direct conversion from an old iframe+servlet style tool used in earlier versions of Sakai:

https://github.com/sakaiproject/sakai/tree/master/web/web-tool

If you want to use JSP as your templating language, the following is a sample JSR-168 portlet:

https://github.com/sakaiproject/sakai/tree/master/basiclti/basiclti-portlet

https://github.com/sakaiproject/sakai/blob/master/basiclti/basiclti-portlet/src/java/org/sakaiproject/portlets/IMSBLTIPortlet.java

The portlet model sends GETs go to “view” methods and POSTs to “action” methods.  Our Velocity tools have the same concept of action and view – but they are hand-layered on top of a servlet using convention and classes like VelocityPortletPaneledAction so the pattern will be familiar for those who wander through old Sakai code.

Another interesting bit of Portlets is that they have view “modes” like “Help” and “Edit” that are part of the spec.  Velocity “portlets” have panels but they are not as formally defined.

For example if you see a JSR-168  portlet in Sakai (image)  (Home Information is a portlet) , there is a “Edit” button that comes from the *portal* in the portal title line.  That edit is not part of the portlet’s markup – the portlet simply declares one of its views as “the edit view” and Sakai puts up the button and wires it up.

For an old-school Velocity servlet pretending to be a portlet in an iframe (like Message of the in the image) the “edit mode” is just another panel in the tool and the tool puts out markup with a link to its “edit view” in “Options” below.

It is surprisingly easy to convert from the old to the new because the view/panel and action patterns already are pretty parallel – the velocity servlet that is a fake portlet was one of the inspirations for  JSR-168 so the similarity is not random.  Both were “cool” MVC approaches in 2001-2003.

I love the JSR-168 pattern for multiple independent rectangles on a page.  There is a clever pattern that allows all of the rectangles to handle the back button and refresh in a consistent manner for all three rectangles simultaneously.  I would love it if all the Sakai tools were rewritten as portlets – but with the magic iframe inlining since Sakai 11 – it is only really beneficial for synoptic tools.

Beyond an Accessible LMS – An Accessible LMS Community

TL;DR: Chris Knapp’s Post about two weeks of his experiences in the Sakai community

For over 15 years, the Sakai Learning Management System has been committed to building a product that not only meets the legal requirements of accessibility – but has the higher goal of making the Sakai user experience “excellent” for visually impaired learners.   We feel that an LMS must take that extra step because access to a good education is not a luxury – it is a fundamental human right.

Sakai greatly benefited from having Jutta Treviranus on our board during our early days.   Jutta helped us understand that accessibility for an LMS was not just a “checkbox”.  She not only inspired us to make Sakai a great product for visually impaired learners (i.e. all of us), she shared her research and innovation (i.e. https://idrc.ocadu.ca/ )  with us to give us the tools to achieve those goals.

Sakai is beginning an effort to take the next steps in becoming an accessible community.  Our goal is to make special efforts to being visually impaired contributors in as regular members of the community.  Our goal is for VI members to participate in all aspects of Sakai from development, to quality assurance and community leadership.  Of course one of their contributions will help us maintain the high standard for accessibility in the Sakai product – but our goals are broader than that.

My company (Learning Experiences) has retained Chris Knapp of Knapp Strategic to be embedded in the community and help us improve the accessibility of all of our processes and tools.   He will be integrated as part of the Sakai QA team (Chris is not a coder) and help us adapt all aspects of our human processes and/or tool chains to make them more accessible.

Once Chris works through how to be a visually impaired Sakai contributor, we will begin to recruit and Learning Experiences will pay other visually impaired people to be Sakai contributors.  We are just getting started with this but we have high hopes for the effort.

Chris wrote a blog post that summarizes his first few weeks of his involvement as a VI contributor in Sakai.

I will just say that it has been only a few weeks but has been great fun for me.  So far one of my favorite eye-opening moments was when Chris attended our weekly Marketing meeting.  We got to talking about an upcoming social media launch and we were talking about how images of the Sakaiger might be best used in the campaign.

Sitting in the Zoom meeting, I realized that Chris had absolutely no idea what the Sakaiger looked like.  And he had no idea even what the “rings of water” Sakai logo looked like.   So I sent him a stuffed Sakaiger and several knit caps with the Sakai “Jewel” logo on them.

A stuffed Sakaiger is an accessible three-dimensional version of a mascot image!  I never would have thought of that – except that once Chris was in a meeting with us – it was immediately obvious. Pretty cool.