Author Archives: Charles Severance

Python for Everybody, Everywhere

I am very proud to announce courses from my popular Python for Everybody (PY4E) MOOC series is now live and open for enrollment on edX. The series is composed of two courses, Programming for Everybody (Getting Started with Python) and Python Data Structures – you can enroll in both and start learning today.

Back in 2009, my goal for PY4E was very simple: create the ideal first programming book and course for my students at the University of Michigan. There were lots of solid “beginning Python” courses that, in many ways, are not aimed at real beginners with absolutely no technical training, or math knowledge. So I created a course that does not try to teach Computer Science using Python but instead teach a subset of Python that represented the essentials of programming.

When I was originally building the course (in Python 2.0 at the time), I would not have predicted the exciting growth of Python and the success of the MOOC movement. Ten years later, PY4E has reached more than 2 million learners to become the largest Python course in the world, graduating thousands of new Python programmers every week.

As a result of its own success, PY4E is an incredible de-facto prerequisite for almost any Python-oriented course or MOOC. If a person wants to learn “Data Mining” or “AI,” and they have no Python background, they may quickly realize they need to step back and learn the foundations of Python programming. In other instances, students in a first Python programming course may find the technical perspective a bit daunting and can enroll in my introductory Python courses to build confidence.  PY4E helps to fill in the gaps by giving learners a complete picture of programming avoiding language that might be challenging for a beginning learner.

One way or another, PY4E has become the entry point into programming for hundreds of thousands of new programmers. Given the success of the course, free textbook and support materials, and free supporting website (www.py4e.com) – my new goal is to share this introduction to programming with any and all learners.

That is where edX comes in.

PY4E is coming to millions of learners on edX, who are welcome additions to this growing community of Python learners and practitioners. I hope PY4E can serve as a low-barrier introduction to programming for edX learners prior to pursuing any number of excellent Python courses from great institutions. This is an exciting moment toward the goal of reaching as many learners as possible in as many countries as possible.

I’m excited to welcome the edX community to start their programming journey with PY4E. Enroll here today and let’s learn together!

Abstracts for Open Apereo 2019

Sakai Community Update 2019

This presentation will review the progress on Sakai in 2018-2019, covering the Sakai 19 release and looking ahead towards the Sakai 20 release.  We will review new features in Sakai 19, report from SakaiCamp 2019, the Sakai Virtual Conference, and FARM Projects.  We will update attendees on accessibility, QA efforts, documentation efforts, standards compliance, and marketing efforts. We will talk about the future arc of Sakai and how we intend to move Sakai forward to be part of a Next Generation Learning Ecosystem. We will cover these and other aspects of the Sakai product and community in a fun and upbeat talk show format

Tsugi At Five Years Old – An Update

The Tsugi project is now five years old and has been an incubating Apereo project for several years now.  The goal of Tsugi is to provide the ability to build tools and content that take full advantage of the state-of-the art standards based integration into LMS systems and Google Classroom.  Tsugi has been an active participant in the IMS LTI Advantage standardization effort and will be the most advanced open source LTI Advantage integration in the marketplace.  The PHP version of Tsui is production ready and has a commercial affiliate.  The project has recently adjusted its multi-language strategy.  This update will talk about the efforts to date and new directions the project is taking as an attempt to reduce the barriers to adoption.

Marketing Open Source – Why We Need a Race Car

This will talk about the challenges and ideas around marketing an open source Learning Management System (Sakai) when faced with  well-financed commercial market players.   The 100% open source Sakai Project was founded in 2004 and has maintained a 5% market share for over a decade.  The LMS marketplace has a lot of churn and new entrants attack the established products and take away their market share until the new entrants become the “old guard” or get absorbed and the cycle repeats.   The presentation will look at the challenges of marketing open source projects in the face of the strong competition.  We will look at how a race car (@SakaiCar) that runs in a low-cost endurance racing series (@24hoursoflemons) is an interesting strategy in this environment.  If all goes well, we will also bring the race car and racing gear to the event.

Looking at LTI 1.3 in Sakai-19

This session will cover the end-user and administrator user interface for the support for LTI 1.3 in Sakai-19.   This session will also cover the basic technologies that underlie IMS Learning Tools Interoperability (LTI) version 1.3 that makes use of OAuth 2.0, Public/Private Keys, and Java Web Tokens.  This session is about the technologies and there will be another session that will cover how LTI 1.3 is built into and works within Sakai 19.

Which Programming Languages will Still Exist in 2030?

This is a panel discussion that I am proposing.  I am hoping not to be the only panelist :)  I bet we will find plenty of people to talk about this.  I for one will be advocating for the position that Python is starting to be more than just one of the alternatives.   I think that with the Python 2 to Python 3 transition completed, we are beginning to see a world where, if some library can work in Python – ultimately it will work in Python and Python will be the preferred way to do something.  Of course this is just to get people fired up :)

Abstract for Pengiucon 2019.

Marketing Open Source – Why We Need a Race Car

This will talk about the challenges and ideas around marketing an open source Learning Management System (Sakai) when faced with  well-financed commercial market players.   The 100% open source Sakai Project was founded in 2004 and has maintained a 5% market share for over a decade.  The LMS marketplace has a lot of churn and new entrants attack the established products and take away their market share until the new entrants become the “old guard” or get absorbed and the cycle repeats.   The presentation will look at the challenges of marketing open source projects in the face of the strong competition.  We will look at how a race car (@SakaiCar) that runs in a low-cost endurance racing series (@24hoursoflemons) is an interesting strategy in this environment.  If all goes well, we will also bring the race car and racing gear to the event.

See also: https://www.sakaiger.com/sakaicar/

Abstract for 2019 Penguicon

Abstract: Building Learning Tools for Brightspace using the Tsugi Application Environment

Tsugi is a free and open source framework that makes developing applications to for integration into Brightspace using standards like LTI 1.1, LTI 1.3, ContentItem, DeepLinking and LTI Advantage.  Tsugi allows developers to invest effort in improving learning instead of integration details.

This presentation will introduce users to the free and open source Learning Application development environment available at www.tsugi.org. Brightspace supports the IMS Learning Tools Interoperability to allow external tools to be easily integrated into Brightspace and used to increase the richness and diversity of the course experience.   External tools can provide functionality not present in Brightspace like a course map tool, or social grading system, a prompted writing tool, or a YouTube viewer with Caliper analytics.   External tools can also be rich auto-graders that make online classes both more interesting and more effective.  Imagine if you could easily develop an interactive system like Pearson’s MyMathLab for *your* course and topic.  Tsugi provides a set of libraries that allow you to write learning applications without any need to read an LMS integration specification.  Tsugi’s run-time environment takes care of complying with the necessary standards to make plugging Tsugi tools into Brightspace, or any other LMS.  Building tools using Tsugi will will allow you to simultaneously support LTI 1.1, 2.0 and LTI 1.3 with no code changes to your applications.  Tsugi also takes care of supporting IMS Content Item, Deep Linking, and the new services available in LTI Advantage for your application.  Tsugi also provides a scalable hosting environment that is as easy to deploy as WordPress and allows institutions to host tools and provide an “App Store” of available tools to their users.  There is also a free cloud-based Tsugi App Store that provides scalable hosting for open source Tsugi applications at www.tsugicloud.org.  It is easy to learn to write Tsugi applications using the online materials at www.tsugi.org.

F2F @Coursera Office Hours Wednesday December 12, 7:00-8:30PM Hotel Shangri-La, Bengaluru, Krishna Room

Here are the logistics of the Face-To-Face Coursera office hours in Bengaluru, India.

We will meet Wednesday December 12, 7:00-8:30PM at the Hotel Shangri-La, Bengaluru in the Krishna Room on the second floor of the hotel.

Shangri-La Hotel, Bengaluru
No 56-6B Palace Road
Bengaluru 560052 India

http://www.shangri-la.com/bengaluru/shangrila/

http://www.shangri-la.com/uploadedFiles/SLBL_Hotel-Fact-Sheet_EN.pdf

There is no charge for this event.

This event will be a little better organized than my previous office hours.   The hotel is providing snacks and drinks and Shroff Publishing has provided a number of copies of the Python for Everybody textbook that they print and sell in India:

https://www.shroffpublishers.com/books/9789352136278/

I will also have some Coursera stickers and pens to hand out :)  It should be fun.  I am looking forward to seeing you on Wednesday.

I am still working on arrangements for office hours in Mumbai in a few days – I will send a note about them as soon as I can.

Here is a map view of all my (70) office hour videos since 2012 with my most recent office hours video in the center of the map. You can click on the pins to see the videos.

http://www.dr-chuck.com/office/

I hope to see you at this or a future office hours. 

Inside the World’s Largest Python Course on Coursera

This presentation will take a look at the “Python for Everybody” series of courses on the Coursera platform. This course has impacted over 1.3 million students over the last five years. We will look a the history and goals of the course and how the course works to create a learning community. We will show how the free open educational resources (OERs) and book associated with the course have been used by teachers, students, and courses around the world to form a network of educational activities centered around Python. We will also cover briefly the Tsugi (www.tsugi.org) software that is used to build the learning assessments and distribute the OER materials in a way that enables maximum reusability of the materials for other teachers.

Abstract

Deprecated Tsugi Sub Projects

As you have been hearing on the Tsugi developer list and in my public presentations,  Tsugi is going to build a new approach for adding tools that uses web services rather than a shared database connection across libraries  written in multiple languages.

This means that new environments will be easier to build and support over the long-term and Tsugi will be able to provide a tool environment  that will meet and exceed the privacy requirements of GDPR and similar privacy oriented measures.

The following efforts that I have put together for Tsugi over the years  are now deprecated:

https://github.com/tsugiproject/tsugi-node/blob/master/README.md

https://github.com/tsugiproject/tsugi-node-sample/blob/master/README.md

https://github.com/tsugiproject/tsugi-laravel-sample/blob/master/README.md

https://github.com/tsugiproject/pytsugi/blob/master/README.md

https://github.com/tsugiproject/pytsugi-web2py/blob/master/README.md

I would also recommend that there be no further investment in Tsugi PHP tools that depend on the Silex framework as it has been deprecated and I don’t expect to upgrade it.

If you have built Tsugi PHP tools that are currently working within  Tsugi-PHP – they won’t be broken – what is there currently will be  maintained.  But some of the deprecated bits will be frozen going  forward.  If you are building a new tool before the new development  model is complete, simply build it in generic (non-framework) PHP like the tools in https://github.com/tsugitools

In time I expect to build new sample code in Laravel, Python, and Node that makes use of the Tsugi APIs and services in time.

These deprecations allow me to “clear the deck” to focus on the next  generation and make sure no one starts new work in an Tsugi environment that will not continue to be supported.

Questions welcome.

Sakai 12.5 maintenance released!

(Posted on behalf of Wilma Hodges – Sakai PMC / Community Coordinator)

I’m pleased to announce on behalf of the worldwide community that Sakai 12.5 was released on Nov. 18 and is currently available for downloading [1] !

Sakai 12.5 has 43 improvements [2] including

  • 9 fixes in Assignments

  • 6 fixes in Tests & Quizzes (Samigo)

  • 3 fixes in Gradebook

Other areas improved include:

  • Calendar

  • Chat Room

  • Commons

  • Lessons

  • Membership

  • Messages

  • Polls

  • Portal

  • PostEm

  • Profile

  • Resources

  • Sign Up

  • Site Info

  • Web Services

There were 2 security issues fixed in 12.5 (details will be sent to the Sakai Security Announcements list).

Please also note the upgrade information page [3] for important notes related to performing the upgrade. 2 Quartz jobs need to be run to complete the conversion steps for Sakai 12, including a new one for the Job Scheduler in 12.1.

[1] Downloading information available at – http://source.sakaiproject.org/release/12.5/

[2] 12.4 Fixes by Tool –  https://confluence.sakaiproject.org/display/DOC/12.5+Fixes+by+Tool

[3] https://confluence.sakaiproject.org/display/DOC/Sakai+12+upgrade+information

 

Wilma Hodges, Ed.D.

Sakai PMC – Community Coordinator

Putting Sakai Behind Cloudflare

I love Cloudflare.  I use it extensively for any production server I support.  I use it for https termination, DDOS mitigation, performance improvement for static content, super flexible DNS management and many more things.

In building my support for IMS LTI Advantage I decided I just needed a server that would run a particular tag or branch of Sakai in production for basic testing rather than pushing everything to master and waiting until the nightly server went through the rebuild.

Here are my notes on putting Sakai behind Cloudflare.

– In CloudFlare under “Overview” Make sure SSL is “Flexible” to keep CloudFlare talking on the backend on port 80

– In CloudFlare, Make a rule for “Automatic HTTPS Rewrites”

– In CloudFlare make a rule that matches

*.sakaicloud.com/webcomponents/*
Cache Level: Cache Everything, Opportunistic Encryption: On

*.sakaicloud.com/library/*
Cache Level: Cache Everything, Opportunistic Encryption: On

*.sakaicloud.com/imsblis/*
Browser Integrity Check: Off, Always Online: Off, Security Level: Essentially Off, Cache Level: Bypas

– In the Sakai server in the file ./apache-tomcat-8.0.30/conf/server.xml set up the connector like this

<Connector port="80" 
    protocol="HTTP/1.1"   
    connectionTimeout="20000" 
    scheme="https"  />

This runs an http (port 80) without requiring any key fussing.  Since Cloudflare does the SSL we don’t need it in Tomcat.   See https://tomcat.apache.org/tomcat-7.0-doc/config/http.html#SSL_Support

Interestingly, one thing I did not need to do was adjust the caching for the “/library” urls in Sakai.   Sakai sets all the headers so well that Cloudflare needs no further guidance and neither does the browser.  Just as a simple test, the actual un-cached download for the initial page in Sakai Prior to login is 8.8KB.  That is *KILO-BYTES*.  A normal post-login page in Sakai’s Lessons is 31.4 KB  data transferred. Amazingly low bandwidth usage for an enterprise application like Sakai.

Pretty cool.

If you want to run your Sakai on port 8080 (i.e. not root) but CloudFlare insists on 80, you can do the following trick:

iptables -A INPUT -i eth0 -p tcp --dport 80 -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 8080 -j ACCEPT
iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 8080

Thanks to https://iwearshorts.com/blog/redirect-port-80-to-8080-using-iptables/