About

My name is Andy Miller. I went to school for civil engineering, but hiring companies were more interested in computing than civil engineering, so that’s the path I took in my career. I’ve worked for a paper company, two utilities, a chip maker, myself, and now I’m in the learning technologies industry. This last is by far the most satisfying. The industry is filled with people that want to improve the world and we have in our hands the ability to make a tangible, widespread difference.

Coding makes me happy. This blog is one of the symptoms.

23 Responses to About

  1. von Stebut says:

    Hi Andy, One of our customers wants to use some context form a cours located in Moodle to a LMS (Cornerstone) which does not contain the LTI plugin.
    My questions are :
    – Is it possible/consistent to make a javascript Consumer Tool and put in in a SCORM package ?
    – If not, (and if I can convaince the LMS providers), Is it easy to install and use your consumer Tool in a cornerstone LMS (aspx server) ?

    Thank you very much for your answer.
    Best regards,

    Uta

    • Andy says:

      Yes, you can easily write an Tool Consumer in javascript. But I don’t recommend it. You will need to include the OAuth Consumer Secret in the javascript so you can generate the signature. And that would defeat the purpose of the secret.

      It is very easy to use my LtiLibrary to add LTI functionality to an ASP.NET application. Search NuGet for LTI to find both the LtiLibrary and a sample to get you started.

  2. Hi Andy, look, I have a problem with the lti library 1.4 because the request (ltirequest) changed and I don’t know how to get the new ltirequest.generatesignature, this function need the secret but return a null value for me. Do you have an example with the new ltiresquest?

  3. David says:

    Hi Andy,

    Is there a version of the LTI library that supports .NET 4.0?

    Thanks,

  4. N says:

    Hello Andy, I am getting this error, can you help me?
    Role Teacher does not exist.
    Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

    Exception Details: System.InvalidOperationException: Role Teacher does not exist.

    Source Error:

    Line 105: {
    Line 106: if (!UserManager.IsInRole(userId, roleName))
    Line 107: UserManager.AddToRole(userId, roleName);

  5. Hi,Andy
    Thank you for your posts. I am Huang from China. I am working on development tools for Canvas(LMS). But I am using PHP, is there any way let me know how to development tools for canvas with PHP?
    Hope to see your reply soon.
    Have a nice day!

  6. Scott Carson says:

    HI Andy,
    I am trying to develop a LTI Provider Using .Net WinForms, I was curious how do i accept the request and where it goes to? Meaning if we add the resourse in Moodle how do we accept that request?

  7. Scott Carson says:

    Andy,
    I am trying to implement Outcomes v2 in my application. The consumer I am testing against is moodle. I have done the folllowing:

    LtiLibrary.Core.Outcomes.v2.LisResult result = new LtiLibrary.Core.Outcomes.v2.LisResult();
    LtiLibrary.Core.Outcomes.v2.LisPerson person = new LtiLibrary.Core.Outcomes.v2.LisPerson();

    result.Comment = “Good Job”;
    result.ResultAgent = person;

    result.ResultScore = “50%”;
    result.TotalScore = 5;

    Exception ex = LtiLibrary.Core.Outcomes.v2.OutcomesClient.PostResult(result, Request.Form[“lis_outcome_service_url”].ToString(), Request.Form[“oauth_consumer_key”].ToString(), clsLtiParams.SharedSecret).Exception;

    My question is where does the parameters defined in lis_result_sourcedid go. I understand that currently there is no reference to a user in the LMS. How do i do this?

    • Andy says:

      lis_result_sourcedid and lis_outcome_service_url are not used in the draft version of Outcomes 2. Instead you would include the result sourcedid in the result service url.

  8. Hello Andy,

    your SimpleLti example contains a provider skeleton in a ASP.NET WebPages application. I’ve coded a complex Latin vocabulary app running on WebPages, not MVC. I’m not currently able to move it to MVC. Is there any way your LtiLibrary can support such a WebPages app as a provider? I probably need basic authentication and Outcomes 1 results transmission back to the Moodle consumer.

    Any help or links to helpful explanatory documents would be greatly appreciated.

    Yours,

    Tobias Schliebitz

  9. aletheia2808 says:

    Hello Andy,

    your SimpleLti example contains a provider skeleton in a ASP.NET WebPages application. I’ve coded a complex Latin vocabulary app running on WebPages, not MVC. I’m not currently able to move it to MVC. Is there any way your LtiLibrary can support such a WebPages app as a provider? I probably need basic authentication and Outcomes 1 results transmission back to the Moodle consumer.

    Any help or links to helpful explanatory documents would be greatly appreciated.

    Yours, Tobias

    • Andy says:

      Hello Tobias,

      SimpleLti has both a consumer and a provider implemented as WebPages. The provider is in Tool.aspx and Tool.aspx.cs.

      If you have more questions, please post them in GitHub. Sometimes other people answer them before I can.

      Andy

  10. Rodney says:

    Hi Andy,

    I am using your AspNetCore to create LTI Providers and that has gone very well. I am trying to write simple tests to just call them with a HttpClient but having trouble figuring out how to get an LtiRequest transformed easily into the body of a post request in the HttpClient. I know you have extension methods for ViewModels and other things. Didn’t see any way to use an LtiRequest with an HttpClient. It seems I would have to manually create the basic required body key/value pairs and then also create an LtiRequest so I can get the signature to add as well.

    I see that most of the tests and samples are not based on Dot Net Core and all the samples are around ASP.NET and simple to just call a provider via just a simple HttpClient.

    Any help would be appreciated.

    • Andy says:

      Hello Rodney,

      You do need to create the body key/value pairs. Check out the ConsumerShould tests. They use HttpClient. GetContent creates the body key/value pairs.

      If you have more questions, please post them in GitHub. Sometimes other people will respond more quickly then I can.

  11. Ram says:

    Hi Andy – Appreciate if you can share a basic Node.js sample for LTI integration (consumer portion). We are planning to use LTI for some of our courses, we use node.js/javascript.
    Thanks.

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.