Jeff Isaak More stories

Chapter 1

A browser extension in an evening

The parent portal, a long-standing pet peeve, and Refresh for MyEducation BC.

I have a pet peeve, and it’s badly designed software. Ugly software, for a start: in this day and age, there’s no excuse for ugly. But worse than ugly is software that makes the people using it pay for the shortcuts of the people who built it.

And while I’m at it: why is software sold to governments and institutions so reliably crap? I have a theory. The people who choose it are almost never the people who have to use it, the contract runs for a decade whether it’s any good or not, and the people stuck with it every day don’t get a vote. Nobody who signed the contract has ever had to use it to sign a field-trip form.

The tax on bad software

Every confusing label is a few seconds of someone squinting. Every extra click is a few more. Every “just remember to do this first” in a training session is a mistake waiting for someone who wasn’t in the room. Bad design is a tax, and it’s never paid by the people who designed it. It’s paid by the parent at the kitchen table at 9:30 at night, the school secretary on the first day back, the teacher entering marks on a Sunday.

Good engineering costs the builder something once. Bad engineering costs every user something every day, forever. I find that deeply irritating, in the way only something that’s both avoidable and widespread can be.

The parent portal

In British Columbia, every public school, and a lot of independent ones, runs on a system called MyEducation BC. Parents see it through a web portal: report cards, attendance, permission forms, schedules. I see it as a parent. And I saw the problems. Oh yes, I did.

The MyEducation BC home page: a stock-photo banner under the heading Welcome to MyEducation BC Production, three empty To Do tables, the same welcome repeated in red, a How to Navigate tutorial, and the permission forms in a Tasks table at the lower right, one of them labelled Recieve Form.
The real MyEducation BC home page. The forms that need signing are in the Tasks table at the lower right. Our family’s details have been swapped for the same sample family used in the Refresh screenshots below.
  • The top third of the home page is a stock-photo banner, over the heading “Welcome to MyEducation BC Production”. Production is the name of the server. It’s been shown to every parent in the province.
  • Below that, three empty tables, each saying “No assignments scheduled.”
  • The thing I actually needed to do, sign a stack of permission forms, was in a four-column table in the lower right, with a typo: “Recieve Form”. Opening the first form took five clicks.
  • The Family tab opens an administrator’s data grid, with columns headed LegalLast and LegalFirst. Even with one child, you click on a surname to get in.
  • Grades are labelled Clssrm, Tdy and Dsm. The table scrolls sideways on a desktop monitor. One filter is labelled “4 Term 10-12 2023 English %-LG”.
  • Attendance shows “0 of 0 selected” above “No matching records”.
  • Emergency contacts are sorted by a number called Priority, from 1 to 99.
  • Nearly everything opens in a popup window, including the calendar you use to pick a date.
The MyEducation BC Family tab: a data grid with columns LegalLast, LegalFirst, LegalMiddle, DOB, Pupil number, Grade and School > Name, a Search on LegalLast box, 0 of 1 selected, and side tabs including Membership and Transactions.
The Family tab. One child, shown as a database query: “Search on LegalLast”, “0 of 1 selected”, and a surname you click to get in. Sample data.
The MyEducation BC Academics classes list with columns Description, Term, Teacher, Clssrm, Term Performance, Abs, Tdy and Dsm, and a Search on Term box.
Classes. Clssrm, Abs, Tdy, Dsm: classroom, absences, tardies and dismissals, if you know the code. Sample data.

None of these is a disaster on its own. Together they’re the tax: a portal that works, technically, while asking every parent to learn to read a database.

Refresh

So, that evening, I wrote a browser extension to fix what I could from my side of the screen. I called it Refresh for MyEducation BC. It runs only on the MyEducation BC site, and only in your browser, and it redraws the parent portal: what needs doing goes first, labels are in plain language, names are written first name first, and the popups open in a panel on the page instead.

The MyEducation BC home page with Refresh: a greeting, four permission forms to sign at the top, and tiles for reports, assignments and family information.
The same home page with Refresh. Forms that need signing come first. Sample data.

The rule I set for it was rebuild, don’t patch. Refresh draws its own interface, but it keeps the site’s real forms on the page, hidden, and its buttons drive them. It never invents a submission, and it never moves a control out of the form it belongs to. If a page doesn’t look the way it expects, it leaves the page alone. Being clever about someone else’s permission forms is how you end up consenting to a field trip you didn’t mean to.

A student's classes with Refresh: English 9, Science 9, Math 9 and Social Studies 9, each with its teacher, room and current mark.
Classes, without the abbreviations. Sample data.

It came to about 3,350 lines of JavaScript and CSS. It asks for one browser permission (to remember whether it’s switched on), it has no server, and nothing you see on MyEducation BC leaves your computer. It was on the Chrome Web Store by the next morning.

The family page with Refresh: one card per child with their grade and school, and links to their classes, attendance and reports.
The family page, as a parent would expect it rather than as a database grid. Sample data.

What’s underneath

Restyling a website from the outside teaches you a lot about it. Some of what I found was cosmetic. Some of it wasn’t. The report card was published on the Home page while the Documents tab, where you’d look for it, was empty: two places for one thing. Legal and preferred names were mixed from page to page. The system was clearly built around the people who administer it, and the parent view was a thin coat of paint on top.

You can only fix so much with paint. The things that bothered me most, the ones that cost teachers and office staff real time, weren’t on any page I could restyle. They were in how the system works.

The next afternoon, between updates to the extension, I started planning a student information system. It seemed like an obvious question at the time.

How hard can it be?