OmniCourse-Agent is ready!

Waiting screen

Learning is fun! ^__^ And online courses have been, for months, one of my favorite didactic media!

However, it is also true that any human activity cannot proceed by chance: on the contrary, it is paramount to constantly monitor the intellectual effort so as to understand its main directions and, consequently, guide the overall process.

The very first idea that came to my mind in order to keep track of my completed courses was a spreadsheet - but its traditional tabular format was definitely not expressive enough - I needed a much finer analysis.

OmniCourse, at the very heart of the 13th version of my website, is the most important step towards such a goal, as it mixes:

  • a minimalist React component displaying drillable pie charts and tables
  • a flexible taxonomy of online courses - expressed in JSON format and almost completely arbitrary in terms of structure and nesting
  • a drill-down engine, computing the total number of courses and minutes spent

However, even though OmniCourse automates most of the mathematical work, it can still feel somehow impractical due to a few aspects:

  • data entry: course information must be manually gathered, which can be fairly cumbersome as the number of courses increases
  • data format: by default, JSON is not validated; therefore, creating descriptors can be very error-prone

OmniCourse-Agent to the rescue

OmniCourse-Agent fills the gaps left by OmniCourse: when the user visits the web page of a course, a click on its toolbar button is all that it takes to automatically generate an OmniCourse descriptor using the information gathered from the page itself!


Exploring advanced JavaScript

OmniCourse-Agent is an open-source browser extension devoted to learning, but it was a veritable learning experience by itself:

  • browser APIs - for both Chrome and Firefox - were a totally unexplored field for me. Consequently, I had to revise my architecture a few times - in particular, to achieve elegant message passing between the extension components
  • vanilla ES6 concepts - such as:

    • IIFEs, especially to create modules
    • Promises - with lots of async/await
    • DOM manipulation - mainly via querySelector
    • modern syntax
  • Node APIs and packages - to create elegant and flexible build scripts that are also OS-independent

Future developments

OmniCourse-Agent is currently not available on the main extension portals - instead, its artifacts can be downloaded from its GitHub page.

This situation introduces 2 major disadvantages:

  • the installation process is slightly more difficult - but that can be solved via the instructions within its README file
  • the update process is not automatic - that is, new versions must be installed manually

However, I'm considering the idea of deploying OmniCourse-Agent to the official extension portals - so please, stay tuned! ^__^!

Further references