← Projects

MYLD

How I built it

Chrome extension · September 2026 · Beta on the Chrome Web Store

I kept clicking through every course just to find out what was due next.

My work at Laurier lived in four places: assignments and quizzes on MyLearningSpace, homework on Pearson, more homework on Achieve, and due dates that moved around between them. I tried Eric Zou’s WATnow, which does this for Waterloo’s LEARN, and wished Laurier had one. So I built it.

MYLD is a Chrome side panel that puts every deadline in one list, from overdue to later. It’s on the Chrome Web Store, it’s in beta, and all of the code is on GitHub.

Where a deadline goes

Three lines, one transfer, and they all meet at your list. Pick a situation to watch the route it takes, or tap any station to see what happens there.

124↻ every 30 minyour MyLS tabyour coursesdue datesclean-upwhat changed?assignment pagepage readeris it done?same assignment?your listwhen to tell youreminder
a prof posts an assignmentOn the next sync (every 30 minutes, or when you hit Sync) MYLD reads each course's calendar, folders and quizzes. The new assignment lands in your list under the right week.

The hard part: is this the same assignment?

Profs often post a Pearson or Achieve assignment on MyLearningSpace too, under a slightly different name. Show both and the list lies: two deadlines for one piece of work, and one of them never gets checked off.

So MYLD strips platform names and filler like “Assignment” or “(online)”, and treats HW and Homework, or Ch. and Chapter, as the same. Then it gets strict. Chapter, quiz, part and week numbers have to match exactly. Due dates can be up to 26 hours apart. And a match has to be unique both ways: if an item could pair more than one way, nothing is merged.

  • Achieve – Ch. 4 HWChapter 4 HomeworkShows once. Same once the platform name goes and Ch. 4 HW becomes Chapter 4 Homework.
  • Ch. 4 HWChapter 5 HomeworkBoth stay. Chapter numbers have to match exactly.
  • Chapter 4 Homework, due 11:59 PMthe same, read in UTCShows once. Due dates can be up to 26 hours apart, which covers a time zone mix-up.
  • Chapter 4 HomeworkChapter 4 Homework, in another classBoth stay. Different class, different work.
  • one MyLS itemmatches on Pearson and AchieveBoth stay. It could pair two ways, so nothing is merged.

When it isn’t sure, it shows both. A duplicate is annoying. A missing deadline is worse. Every decision it makes is listed in Settings, so you can see why two things were or weren’t merged.

Only reading, never touching

MYLD has no server. It never sees your password and doesn’t copy cookies. Every request to MyLearningSpace goes through the tab you’re already signed into, and only to a short allow-list of read-only addresses. On Pearson and Achieve it reads the page you have open, and never clicks, expands or submits anything.

That makes some things harder. It can only see what’s loaded, so the platform is still the final word on a deadline, and the side panel says so.

What I cut

Two features made it into the beta and then out again. Top Hat support never synced on a real account, and the Google Calendar export was never connected to a Google sign-in. Both had code, settings and tests. I deleted all of it rather than ship buttons that don’t work.

The README says exactly what has been checked on a real account and what has only passed tests. MyLearningSpace sync works on mine. Pearson Mastering has only been tested against page layouts I assumed, and it says that too.

Testing pages I don’t control

Every page reader runs against saved copies of course pages, with a tiny fake browser so the tests need nothing installed. When Pearson changes its layout, I want a failing test, not a wrong list. The suite has 60 tests and has been run in three time zones, because a deadline at 11:59 PM is exactly where time zones bite.

What’s next

Checking the parts that have only passed tests on real accounts: Pearson Mastering, Achieve’s late and scored statuses, and the matching on real course titles. After that, version 4.0.

↑↓ to move↵ to openesc to close