eLearning Frenzy

eLearning is like a sewer, what you get out of it depends on what you put into it.



BbWorld Devcon Session Post: Easing Migration Tension with an Effective SaaS Testing Plan

Access Blackboard Org for PDF handouts referred to in this post:

ID: easing
password: bbworld18


  • Explore your needs
  • Pertinent Gannon project mgmt steps
    – Project desc and scope
    – Business Obj.
    – Measure of Success
    – Stakeholders
  • Testing Plan
    – Mapping Key processes
    – Creating testing list and plan
    – Choosing a team
  • Coordinating Events
  • Pre and Post-testing
  • Questions
  • (Thursday afternoon – full workshop session @ BbWorld)
  • Gannon Project MGMT Approach
    • Choosing a Team
      – See the Gannon Charter (found in Blackboard Org – access credentials at start of post)
      Project Description
      – Scope
      Business Objectives
      Measures of Success


    • Define ‘key stakeholders’ who need to be aware of project (those doing the work and those affected by the work)
    • Notify and verify role
    • ID Replacements to represent key areas of university where needed
  • Examples: faculty, student, Instructional Designers, support desk, accessibility rep, LMS admin, IT
  • Implement a kickoff meeting with stakeholders (include gimmes, snacks, food)
  • Testing: Multi-phased (Planning to test)
  • Phase 1
    • Map Key Processes (single sign-on, flat file uploads from sis)
      Ask: What external entities will be affected?

    Phase 2

      Create testing list and plan
      – Review list and plan to ensure completeness

    Phase 3

    • Team Identification Process (Testing team)
      – ID Team members
      – Notify and verify
      – roles for testing
      – their responsibilities
  • Coordinating Events
    • Coordinate events for limited disruption
      Follow SaaS Testing plan (document in organization – link above)
      – Serves as communication plan

    Pre and Post Testing

    • Test your TEST instance
      – production will be identical
    • Keep a record of any changes

    BbWorld18 Devcon Session Post: Collaborate Ultra: WebRTC and our MCU

    What is WebRTC?

    WebRTC is an open source project that provides browsers and mobile applications with Real-Time Communications (RTC) capabilities via simple APIs. The WebRTC components have been optimized to best serve this purpose

    • Web Real-time Communication
    • Interoperation across vendors
    • Standards managed by W3C and IETF
    • Open-Source Mobile
  • Why use WebRTC
    • Gets audio/video to/from a and b fast
      Critical mass across browsers and devices
      – no need to reinvent the wheel
      – lower friction due to “no plugin” installation
      – User control over permissions
      Easy to work with
      – Leverage HTML5/Javascript
      – Lots of APIs (getUserMedia,RTCPeerConnection, RTCDataChannel, getStats)
      Click a link: connected!
      A lot of hype but perhaps not overhyped

    Collaboration WebRTC Adoption

    • Collab’s choice of WebRTC was not so straightforward
    • in 2014
      – Poor browser support (chrome early Firefox)
      – Codec wars in effect
    • Collaborate’s choice: Use WebRTC to deliver browser-based conferencing
      – What about Collaboration original
      – Only Chrome was mature enough at the time to meet market expectations
      – Multiple HQ videos with good sync
      – Desktop Sharing
      – Other browsers use flash required (one video no desktop sharing)
      – We’ve been adding additional browsers as they mature Firefox in 2016, Safari 11 and Edge are on the way)
      – Flash end of life: 2020
  • Browser Implementations
    • Codec Wars
      SDP vs ORTC
      Browser Compliance
      Browser Permissions

    Codec Wars:

    • Audio agreed to: OPUS
      – High speed collision between technologies
      – Low bit rates for speech
      – High bit rates for music
      – Forward Error Correction
    • Video- not so much
      – VP8 from the Google Camp
      – H.264 from the Cisco/Apple/Microsoft
      – No significant performance difference, we don’t care!
      – Patents main blocker for H.264
      – Finally Solved by MPEG LA (via Cisco) giving it away.
  • SDP vs ORTC
    • How to describe the details for the media session?
      – Capabilities and connectivity between peers
      Session Description Protocol
      – Text-based and very complex for multi-channel
      – Existing browsers use SDP
      – Even here, two different versions: Unified Plan vs Plan B
      Object Real-Time Communications
      – Simpler and less proscriptive
      – Microsoft used ORTC and not SDP for Edge

    Browser Compliance

    • After years of in-fighting we have a standard: WebRTC 1.0
      – Working Group first created in May 2011
      – Originally expected to finish end of Feb 2013
      – Last call Started October 2016
      – First candidate Recommendation: November 2017
    • Browsers have different degrees of adherence to standards
    • Adapter.js Serves to normalize subtle browser differences
  • Browser Permissions
    • Microphone/camera access
      The camera light
      User fingerprinting
      Local IP address enumeration

    WebRTC Connections

    • We’ve exchanged SDP; now how do we connect to send/receive audio and video?
    • Simplest case almost never works – users are very rarely connected to directly to the internet
    • Need to handle a wide range of possible network configurations
    • Network Address Translations
    • IPv4 address limitations: running out of IP Addresses
    • Works fantastically well for normal web requests
    • Terrible for real-time media
    • User Datagram Protocal
      – fast, buy lossy “best effort”
    • Transmission Control Protocol
      – reliable, but slow “guaranteed”
    • For real-time media, time is king: prefer loss over delay
    • Transport Layer Security
      – Encrypted, secure, private
      – For UDP or TCP
  • Collaborate’s MCU – Core Technology
  • Peer to Peer – WebRTC is about connecting two endpoints with media. How do you create a conference?
  • Multipoint Conferencing Unit
  • Selective Forwarding Unit
    • Hybrid

    Bandwidth adaptation

    • Packet Loss: sequence Numbers
    • Latency: time stamp
    • How our MCU technology improves the experience
      – Differing bandwidth
      – Quantizing Modes
      – Three Bands
      – High bit rate (pass through)
      – Low bit rate
      – Ultra low bit rate

    Key Differentiators

    • prioritization
      – audio: by adapting quickly, we can ensure that video bandwidth does not interrupt audio traffic
      – video: high quality video for primary speaker and/or desktop sharing
    • Customization
      – Each viewer gets the best quality available to them,based on their bandwidth
    • Scale
      – Collaborate supports 500 users in a single session.
  • Future of WebRTC
    • Scalable Video Coding: VP9 vs H.265 -> VC1
      Data Channels
      – Chat/Subtitles
      – File transfers
      – Synchronization/Gaming
      An enabling technology: endless applications
      – AI agents: bots!
      – Internet of Things

    Future Adaptations for Collaborate and WebRTC

    • Prepare for Flash EOL (2020)
      – Safari 11 and Edge native support (on the roadmap)
      – Plugin for Safari 10 and IE11, and/or end support
    • Example feature Requests
      – Dedicated video channels (sign language, labs, presentations)
      – More Videos
      – Primary limitation is available bandwidth
      – Desktop Cursor Control
      – WebRTC desktop sharing is not VNC

    BbWorld18 Devcon Session Post: Integrating Learn with LTI and REST


    Note: most of this session is in the “coming soon category”

    What are we trying to solve?

    • Integrate ISV(independent software vendor) tools with original and ULTRA Learn
    • Access to content
      – Publisher Text books
      – Open educational resources
    • Use of specialized “tools” not built by Blackboard:
      – Assignment
      – Test
      – Grading
      – Video Creation
      – Course Evaluation
      – Games
    • Better Security!!
  • Content Market (built into learn experience)
    • Publishers, LTI tools.
      Links bring up ISV UI
      Getting 3rd party content into LEARN seamlessly

    Your Experience

    • Tool Developer
    • Learn Administrator/Instructor/User
    • Ultra Experience
    • Building Blocks
    • LTI
    • REST API
  • LTI Advantage – four new specifications that work together
  • New Security Model based on existing standards
    • OAuth 2.0
      OpenID Connect (OIDC)
      JWT (JSON Web Tokens)
      Library support for most languages (see
      Better security (harder to crack)
      Asymmetric keys (not sharing keys between tool and LMS)
      New terminology to better match OAuth 2 terminology:
      – Tool (tool provider) – Client in OAuth 2.0
      – Platform (tool consumer or LMS) – Resource Server
      – Users
      – Grades

    New Security Model & Contract

    NEw Deployment ID for Tools

    LTI Resource Link (Formerly known as Basic LTI Launch)

    JWT and OpenID Connect Fields

    LTI 1.3 Core in a Nutshell

    LTI Deep Linking 2.0 (Formerly Content-Item Message

    LTI Deep Linking Request (from Platform)

    Assignment and Grades Service 2.0

    • Post a score from tool
    • Get result from platform
      -result does not necessarily equal score
    • Create line items (grade book columns) by the tool in the platform’s grade book
      – may or may not be associated with a resource
    • Requires OAuth 2.0 security model (bearer token, scopes)
  • Developer Portal –
    • Rich set of RESTFUL APIs
      Well documented
      Use in conjunction with LTI
      – get information about a course
      – Gradebook schemas
      – Attempts for a user
      – Group Information
      – ETC.

    BbWorld18 Devcon Session Blog: Introduction to Attendance

    • Overview of attendance functionality
    • Feature/service architecture
    • Integration architecture
    • Impact and future guidelines
  • Attendance shows up in a roster view with students on left and tabular content on right with the Day, if they were present, late, absent and excused columns.
  • A grade can be calculated for it and it is added to grade book.
  • Principles for New Solution
    • Foundation for future integrations into product portfolio
      Separate application and data store, singer source of truth
      API First
      Take advantage of latest tech

    Service Architecture

    • Multi-tenant service, data serrated by unique user I’d
    • Application tier developed in java
    • Dropwizard library for API/controllers
    • JDBI for data access
    • Flyway for database scheme management
    • Deployed as docker containers on Kubernets
    • Postgres 9.6 for database
  • Integration Architecture
  • Security Architecture
  • Why did we choose this architecture?
    Building Functionality as a separate service has advantages.
    • Separate application & database adds no load to learn
      Natively built on REST API, easy to integrate into other products
      Standalone, small service can choose the most appropriate technologies for a given function
      Separate service can be tested and deployed in isolation.

    Integration Architecture

    • Standalone SaaS easily integrated across portfolio
    • integrate 3rd party services through developer portal (future)
    • API first (REST) enables complete access to service functionality through APIs
  • Blueprint for future work
    • Building services as separate has advantages can can be applied to broad set of problems
      Important architectural pattern that will help apply on larger scale over time
      Leads to tighter integration and more consistent functionality across product suite
      Services can be gradually rolled out and integrated Bb applications
      Scalability of entire eco-system will improve over monolithic application: more stable, more consistent and predictable performance
      Used in other areas besides attendance, box integration, cloud storage integration, Ultra institution pages.

    General Impact

    • Service based architecture is mostly transparent to end users, but affects developers and integrators.
    • Not all data I contained in LEARN anymore
    • Not all functionality is available via Java API anymore
    • Data will be aggregated into data lake
    • Functionality is exposed through REST APIs
    • Use REST APIs to future prof customizations and extensions.

    Blog at

    Up ↑