3 min read

Pride, ethical debt, and an e-card side project

Pride, ethical debt, and an e-card side project

It seems like I blinked and June has flown by! I'm now back home in Toronto and trying not to melt in the heat waves that seem to be happening more frequently in Ontario.

One of the highlights of the past month for me was getting the opportunity to celebrate Pride in not just one, but two major Canadian cities!

Parade float for the Assembly of Manitoba Chiefs in Winnipeg
Ada all decked out for Pride in Toronto

I hope for other folks who celebrate Pride in June that you also had a good one!

Things that I'm musing about right now

A concept that I've learned about recently and have been giving a lot of thought to is "ethical debt".

It's a form of debt incurred in software development when choices are made that prioritize speed of delivery while deferring thought and discussion over the ethical ramifications of what is being created and its wider impacts.

If you're interested in learning more about ethical debt, you can find the podcast where I first heard about it here. The current boom in AI is driving more conversations around this and will likely continue in the months and years to come.

I might write more on ethical debt in a future post, but at the moment I'm still digesting what I've learned so far and am continuing to learn. I'm particularly thinking about how an average software developer like myself would engage with and manage this kind of debt alongside the traditional 'technical debt' that we're more familiar with in our profession.

Fun things I've been up to

Toronto Public Library e-card

After a long hiatus, I've finally gotten a chance to pick one of my side projects back up again - generating a barcode from the library card number of my Toronto Public Library (TPL) card.

I know there are mobile apps that let you store various loyalty, membership, or library cards on your phone, but it was a great excuse for me to build a project in React Native for learning purposes.

At the moment I'm deploying the project as a single page web application to test that the barcode generation works correctly, but, at the end of this, I'd like to try and publish it as a small Google Play app so that once it's installed, there's no need to make a request to any server. I'll share a link to the Github repository once I'm there!

Things I've learned from it so far:

  1. There are different types of barcode formats that libraries can use

In trying to figure out which one TPL used, I found out that the three most common ones used by libraries were "Coda 39", "Codabar", and "Follett Interleaved 2 of 5".

I learned that 'patron' labels (your library card number) typically start with '2' whereas item labels for books, movies, etc. typically start with '3'. From the book that I had checked out at the time, this looked to be accurate for TPL.

Now for what I consider to be the nerdiest part of this project - to determine if TPL used one of the three formats mentioned previously, I used online generators to create a barcode from the item number of the book I had checked out and compared it with the barcode that I saw on the book's label. I also checked it against my library card number/barcode to confirm.

Turns out TPL uses the Codabar format.

  1. Rendering a barcode in Javascript is extremely annoying

I gotta admit, I nearly pulled my hair out trying to do this. There's a package called jsbarcode that does a lot of legwork for you but I struggled to get this working nicely in my project. Fortunately, someone had put together a sample of using the package in a React Native app and I'm forever grateful to them for unblocking me on this.

Following Copa America

It's the first time that Canada has been invited to play in the Copa America football tournament and we're in the semifinals! I haven't been following the tournament too closely because I feel like I accidentally jinx the team I root for when I do watch.

That being said, I'm planning on taking the risk on tomorrow because Canada will be up against Argentina and I'm sure it'll be a wild game to watch.