Experiments in Product: Canvas Module Filters

Disclaimer: This is a personal project, and is not endorsed by Instructure or Canvas LMS. Custom JavaScript must be maintained by the institution.

Most (great) product features come from a deep understanding of customers’ problems. It’s tempting to build every “good” or “obvious” feature someone can describe passionately but that leads to thoughtless bloat that breaks the UX. And most things people describe as “obvious” actually have 10,000 questions between the comment and a well researched/tested feature.

Sometimes the stars align and a conversation with an insightful person includes an offhanded “wouldn’t it be neat” comment that’s small enough to quickly prototype and test. And those are just the circumstances that led to this experiment: Module Filters.

Behold! Content filters!

The comment, which was part of a much larger conversation on organization and navigation, was

“Wouldn’t it be neat if you could filter by content type right on the Modules page in Canvas?”

and I agreed. Because Canvas supports custom JavaScript I was able to quickly mockup a functioning prototype for all-important testing and validation.

This project was a good candidate for me to experiment with because it’s

  1. small in scope
  2. technically possible
  3. UI/UX not immediately obvious

Small in Scope

Small changes a person/team can wrap their hands all the way around are ideal for quality, and ensuring it actually addresses the problem. Feature creep is very real though, and I had to repeatedly slap my own hand and say “No! That’s not part of what is being tested here!” Keeping things in scope is tough in the face of the endless waterfall of “wouldn’t it be neat if it also…

Technically Possible

What I mean by technically possible is that 1. the idea is literally possible at all and 2. within my ability to develop. JavaScript is great for uses exactly like this and Canvas allows for this kind of thing, and while the scope of the idea is small, if I knew nothing about HTML/CSS/JavaScript and had to learn all of that first the overall project would have been a somewhat larger commitment.


This is where the bulk of the work (and my excitement for the idea) went. “Filters” in apps don’t have a universal UI: sometimes they’re checkboxes, or a dropdown menu, or toggles, or happen automatically while typing, etc. None of those is right or wrong, and it depends on the situation which direction one might lean. My first version actually uses unstyled checkboxes with labels (which looked awful) just to make sure my code worked. Thinking about the UI/UX also helped me with feature creep in that the UI for a filter like content works well as checkboxes because a user might want any number of filter combinations on/off, but they wouldn’t work well to toggle a single binary state like “has due date”, for example. One might even want different types of filter simultaneously which requires a lot of additional considerations.

Ultimately I settled on an on/off toggle using the corresponding content icon instead of a checkbox with a label to support any combination of content types to be shown/hidden, and to avoid adding text to the app UI. Keeping the filters to just content type made the UI more approachable and let me focus on the UX of how it might be to actually use this feature.

Try It and Tell Me What You Think

I put the code on Github with an MIT license. If you play with it I’d love to hear your thoughts either on the repo or on twitter.

2019 Theme: The Year of Making

I’m more naturally a person of motivation rather than discipline which means things like New Year’s Resolutions™️ and “I’ll start next week/month/quarter/year” because that’s a “good” time to start have always made sense to me. Really I know waiting for the right time to start is just a form of procrastination. Eventually I saw enough of those grand plans fail at first contact with the enemy (a lack of motivation) that I stopped making New Year’s Resolutions™️ at all because they don’t work (at least not for me.)

So I was very intrigued when I heard C.G.P. Grey and Myke discuss yearly themes on Cortex last year and then again a year later. Instead of specific goals in the form of a resolution, themes provide an overarching… theme… to the decisions made during the course of the year. They are intentionally vague, and can even change completely. Since success is defined loosely as “did I consider my theme when I made a decision” it’s hard to really fail, and the results can be more instructive then a cut and dry “did I lose 15lbs or not” style resolution. It’s worth listening to both episodes linked above to hear them think through the concept. (If you catch yourself thinking “It’s already February! I guess I’ll try this next year!” you may be missing the point.)

For my first crack at this themes thing I’ve decided to make 2019 The Year of Making. I’ve dabbled in lots of different creative pursuits and never stuck with any of them to a level of mastery. What all those pursuits have in common is that I enjoy making things: writing code and prose, making art and podcasts, building things physical and digital. So this year I want to do more making of any and all kinds. When I think about what to do in my free time, or with my wife or my kids, and even at work, my theme will make me ask “could I make something?” Some of what I make will be crap, or go unused or unfinished, and that’s ok. Because the theme is just making.

I started around the New Year (old habits die hard) and this last month has been great. I’ve also gotten myself an accountability buddy who wishes she made things more often, and making this blog post is public accountability; both of which are hopefully good for keeping me disciplined when motivation is fleeting.

Portal, from Facebook

Facebook, a company whose name is shorthand for “doesn’t care about privacy or security”, and who had a massive data breach as recently as this month, somehow got it into their heads that we should let them put a camera in our homes.

I’m as techno-optimist as anyone. I use Google services and have some smart devices, but this nonsense? Hard pass.

Igor, commenting on Product Hunt, really put it best:

I’d rather have Sauron’s eye in my crib than this.

Digital Wellbeing

This is not a “Why I Quit Social Media and You Should Too”™️ Medium post; I just want to share some of my feelings and experiences. You do you. 😁

I’ve been thinking a lot about attention and where I pay it, and in true Baader-Meinhof fashion it looks like I’m not the only one. I’ve thought on and off about this for a while, mostly through the lens of “productive uses of my time”, but it started to come into focus this Spring when I noticed how negative an impact Twitter was having on my mood. Around that same time Google and Apple decided to call attention to the situation by building “digital wellbeing” tools right into Android and iOS.

My concern is less the total time I spend on Social Media, News, Reddit, etc., and more the habit of turning to them in every free second and the micro aggressions that are notifications (plus a healthy dose of FOMO). I ended up with two broad buckets: things to stop entirely, and things to manage better.

Things to stop entirely:

  • Facebook
  • Political Twitter

Things to manage better:

  • Twitter
  • Instagram
  • Google News
  • Reddit
  • Pocket
  • Youtube

I’ve been living with the changes below for about two months (as of the time of this writing) and the FOMO is real but dwindling every day, and the reduction in stress is significant. I’m going to live with these changes for a while before I look for more tweaks, but even if I stop here (and don’t let nearly identical things fill the gaps) I still call it a win.

Stop Entirely


This one was easy; I deleted my account over a year ago and have never looked back. Screw Facebook. 😎

Political Twitter

Lots of muted accounts and keywords and hashtags. Also unfollowing accounts that are purely political. I don’t begrudge anyone their activism and I would never say a celebrity should “stick to X” but I also have a very real limit to how much horror and vitriol I think it’s healthy to consume and the firehose of Twitter makes it way more likely you’ll drown while just trying to stay hydrated.

Manage Better


Twitter in general can be great and terrible and being very careful who I follow and engage with goes a long way to making it more great and less terrible. For accounts that occasionally tweet/retweet things I want to avoid we go back to the tried and true method of muting muting muting. I also uninstalled the app from my devices which de facto reduced how frequently I check Twitter dramatically.


Instagram has never been one of my major social networks and that means I follow a very small core group, which is good. I did notice I would just open it as something to do way more often than I liked just to “see if there’s anything new” so that app got the boot was well. Bonus: now that I check Instagram less often when I do open the website there actually is new stuff and I get to enjoy it.

Google News

I started using Google News when they released the refreshed app and it quickly became a thing to check when bored. On many Android phones there is also the Google Feed which is basically Google News anyway, so I was actually conditioned to the new Google News experience many months ago without even realizing it. Google does an excellent job of showing me stuff I (mostly) care about from sources I (mostly) respect so I have decided to continue using it with two key changes: 1. the Google Feed, which is basically just Google News anyway, has been disabled on my phone so I stop just swiping over to it and 2. Google News is limited to 30 minutes per day and becomes inaccessible automatically after that.


Reddit has always been a binge service for me; I either don’t use it at all or I use it way too damn much. Similar to Twitter I’ve made it better by aggressively curating the subreddits I subscribe to and never perusing things like r/all or r/popular. I’ve gotten my subscriptions refined enough that limiting time spent isn’t a necessity now.


Pocket is my read later service of choice, which means I occasionally check it to see if there is something I saved that now might be a good time to read (narrator: it never is), but I also use IFTTT to consume the RSS feeds of a few web comics I follow and pocket them. That means I’m also regularly “just checking” for new comics since they don’t all release on a regular schedule.

Update: While writing this paragraph I decided to stop using Pocket altogether. I changed my IFTTT recipes to send my handful of webcomics to Todoist instead with a due date in the evening so they’re out of my face, and deleted my Pocket account. If I want to save something to read later it can go into my Todoist inbox.


I subscribe to a few channels on Youtube and I enjoy them tremendously. They don’t take up too much of my life and I get a lot out of them. I also do not have the problem of trolling all over to watch related videos, live video, or any of that other nonsense. My issue is that Youtube keeps screwing with their notifications so I find myself “just checking” youtube a lot. It’s only a second of wasted time but it’s a lot of wasted mental cycles. I don’t have a good fix for this one yet (let me know if you do!) but as it’s a mostly minor problem I haven’t invested a lot optimizing here.

House of Mirrors: Filling Your Course with Feedback and Reflection

It’s been a dream of mine to present at InstructureCon, and after five years and one false start it finally happened! If you want to hear me talk about feedback and reflection in course design while wearing a really awkward t-shirt, check out the video below.

When you’re done with that you can watch all the other amazing presentations too because Instructure posts them all publicly.


As that tweet says, I tried a 100 Days of X challenge, specifically for design. I spent way more than 100 days on it but I did finish and it felt like a productive experiment. Having that little extra nudge to think about design in products, services, and everyday objects around me really helped focus my thoughts on how things are designed, and to try to deconstruct why they might be designed that way.

Check out the entire thread here. Update 2019-07-03: I started using TweetDelete so this thread is no longer accessible. I was almost sad to delete it until I realized that Twitter won’t even display the entire thread because it’s too long. 🙄 I have my archive so I may turn that into a post of it’s own one day. If you want to know how and why you should also purge your Twitter history check out this great post by The Verge.


“It’s hard to be a fan of Twitter right now. The company is sticking up for conspiracy theorist Alex Jones, when nearly all other platforms have given him the boot, it’s overrun with bots, and now it’s breaking users’ favorite third-party Twitter clients like Tweetbot and Twitterific by shutting off APIs these apps relied on. Worse still, is that Twitter isn’t taking full responsibility for its decisions.”

“Maybe it’s time to close the apps – third-party and otherwise. Maybe it’s time to go dark. Get off the feeds. Take a break. Move on.”

via TechCrunch

Twitter doesn’t need to be perfect to be useful, but they’re trying so. hard. to be useless, and worse; harmful. 💔

Also a friendly reminder that the hashtag, #breakingmytwitter, some users are rallying around is only possible because of someone else’s good idea, not Twitter’s.

Weapons of Math Destruction

Google terror-mazed people last week with Google Duplex, and is also under fire from folks at the EFF over project Maven (not to mention some of their own employees.) Then yesterday a Toronto declaration called on algorithms to respect human rights. Russell Brandom, writing for The Verge:

“We must keep our focus on how these technologies will affect individual human beings and human rights,” the preamble reads. “In a world of machine learning systems, who will bear accountability for harming human rights?”

The declaration has already been signed by Amnesty International, Access Now, Human Rights Watch, and the Wikimedia Foundation. More signatories are expected in the weeks to come.

Coincidentally, as all of this is happening one of my library holds, Weapons of Math Destruction, became available. It’s a quick read and is a great primer on big data, the algorithms big data feeds, and the questions we need to be asking. These technologies are powerful amplifiers of what we put into them, and operate in ways that make them nearly impossible to control once the genie is out of the bottle. And they can be used for tremendous good, but it’s even more important that we don’t let them be used for evil in the pursuit of that good.

You Can't Trust Video Anymore

I’ve seen examples of this technology before, and this is going to rapidly become a serious issue and be a major part of digital and social literacy going forward.

via @buzzfeed on twitter

State of the Podcasts

It’s been exactly a year since I wrote about the previous State of the Podcasts so it’s time for an updated list. A notable shift away from some of the tech pundits I used to follow towards new voices, and some added design focused shows.

Product, Design, and UX Books

I’ve been doing a lot of reading on Product, Design, and UX. Blogs are great, and there’s no replacing real discussion of a problem or hands on experience, but I still found myself wanting some “traditional” books too. Below in alphabetical order are some books that I found useful.

Disclosure: I use library extension whenever possible and the links below are Amazon Affiliate links. I genuinely recommend these books, and supporting your local library, but if you do prefer to buy books supporting me isn’t such a bad way to do it.

Zucked Over


Zuckerberg: “This is their information. They own it.”

BBC: “And you won’t sell it?”

Zuckerberg: “No! Of course not.”

2010 (less than one year later…)

Facebook’s Zuckerberg Says The Age of Privacy Is Over

Inspired by Edward Snowden’s post on Twitter.

How To Make The Library Even Easier

Public libraries, one of society’s greatest contributions to knowledge sharing, education, and community, are already pretty damn easy to use. Most of them are something like this:

  1. Go into a library
  2. “Prove” you live on more or less the same planet
  3. Get (very nearly) free and unlimited access to books, movies, the internet, and way more

Easy as that is, it’s hard to argue with the convenience of mashing “Buy Now” on Amazon and having books sent wirelessly to your devices, or thrown indifferently placed gently at your door by a nice stranger. Enter Library Extension.

Screenshot of Library Extension download page I ❤️ you so much, Library Extension.

I’ve been using this simple extension for years that lets you tell it which libraries you care about, then every time you’re on a book listing at Amazon, Google Books, Goodreads (and some others) it shows you if that book is available at any of your libraries. It even lets you jump directly to checkout or placing a hold. If you’re lazy like I am you can restrict it to eBooks and audiobooks so you get all the book borrowing goodness of using your library without having to ever actually go to it. It’s fantastic! It saves you time and money, and it makes it dead simple to read books you might not want to buy.

Go get Library Extension right now and support your library.

Falcon Heavy Launch

Falcon Heavy Launches

It’s pretty typical for people in the tech industry to complain about technology (and I get the difference between complaining and criticism) but I think it’s healthy to step back sometimes and marvel a little bit. SpaceX’s Falcon Heavy launch was such an opportunity for me.

  • Not just because it was incredible to behold
  • Not just because space is wondrous and important to humanity
  • Not just because two of the boosters gently landed in near perfect synchronization (and upright!)

Falcon Heavy boosters landing upright

Though I will never get tired of watching that.

No, to me the most marvelous part of it all was that I happened to be with my wife and we were able to watch the whole thing live from my phone while flying in a plane. People in the sky, using their magic glass rectangles, to watch synchronized rocket landings that sent a Tesla to Mars.

Starman in his Tesla heading to Mars

Pretty. Damn. Cool.

Google Photos Shared Libraries

Back in May at Google IO Google announced Shared Libraries coming to Google Photos. From The Keyword:

Wouldn’t it be easier if you could automatically share relevant photos with [your spouse/partner/best friend]? For example, I would love it if every photo I ever took of my kids was shared with my wife.

This is exactly what I have been waiting for. My wife is the shutterbug of the family so many of the best photos of the kids, particularly ones I’m in and couldn’t have taken myself, are trapped in Susan’s library. Now, thanks to Google’s always awesome sometimes creepy face detection, any photo I ever take with my kids in them is automatically shared to her and vice-versa. The post goes on:

…when they share their library with you, you can automatically save the photos you want so they also show up in search and in the movies, collages and other fun creations Google Photos makes for you.

And that extra bit of smart design has made all the difference. These photos aren’t just visible to me, they are now part of my library which means Google Photos treats them like any other photo in my library and backs them up (never hurts to have more backups), creates collages and movies and animations, and makes them searchable. The day after we set this up I got twenty notifications* from the Google Photos Assistant that all manner of adorable baby photos I’d never seen before had been artfully arranged for me.

Google has done something far better than just shared libraries. We take pictures of all kinds of things with our phones like where we parked or the model number of something we might buy; I don’t need to see or share all that noise. If you have any loved ones and you wish sharing photos could be automatic, now it is.

Go set shared libraries up right now.

*Actually one notification that twenty items were ready for review, which is also an appreciated bit of design thinking.

SEGA Forever

SEGA announced SEGA Forever recently and promised to bring “every classic SEGA game” to Android and iOS for free, and even includes some cool enhancements like cloud saves and controller support. There is some beautiful irony about saying your 16-bit era games will, in fact, support controllers.

There are, of course, also ads. From Polygon:

The big caveat is that every Sega Forever title has ads. […] To get around the ads, players can spend $1.99 to get a purer experience. […] All Sega Forever games will be available at this price, the publisher said, and that includes those coming to the program in the future.

When I heard about this my mind boggled at the possibilities. SEGA pretty much doesn’t have to do anything except slap some ads in an emulator and ship ROMs already floating around the internet anyway. High quality emulators already exist for the 8/16/32-bit systems for mobile devices but the industry precedent this potentially sets is what interests me. Imagine all those retro games you miss or missed, accessible on a device you already carry everywhere you go, for free(ish)!

Except that’s apparently not what they did according to ars technica:

Sega’s performance issues stem from the use of a new emulator based in Unity. […] Players that already paid for one of the launch games… also suffered from issues, including the inability to remove advertisements from the game.

The article goes on to highlight some possibly justifiable sour grapes from Retro Arch:

“Sorry to all the people that are experiencing subpar performance with this Unity thing,” the RetroArch devs tweeted. […] “Hell, they could have had this running on the desktop right now on top of consoles and maybe some netplay as well. Oh well…”

All of this leaves me asking: SEGA… what the hell? All you had to do was pick any of a dozen emulators and sell them to us or slap some ads in there. Cloud saves are cool (and the emulators already support controllers) but nostalgia goggles will make people play classic games without enhancements. Instead of a super slick emulator experience what you end up with is this mess:

Sonic the Hedgehog title screen Ad #1 New Game screen and ad #2 Character select screen and ad #3 Sonic the Hedgehog actual title screen Act 1 complete Ad #4

In the 60ish seconds it took me to open the game and finish Act 1 of Green Hill Zone I got to enjoy four ads, two of which are video ads with countdown-to-skip timers which I’m sure generates huge numbers of mistaps.

I wanted this post to be glowing praise of SEGA for their open mindedness, willingness to adapt to the times, and clever way of generating boatloads of revenue (not to mention good will) for basically no effort. Instead I’m now lamenting the future think pieces that will explain why Sony and Microsoft never followed suit because of how spectacular a failure SEGA Forever was. And don’t hold out hope for Nintendo just yet as they seem to be continuing their strategy of releasing bespoke hardware instead of just giving us the games on the platforms we already use..

Luckily it’s still very early days for SEGA Forever, so I haven’t completely given up hope that they can turn this around and make a compelling case to the industry that the ship-ROMs-make-money business model is a valid one. Sony and Microsoft, if you’re reading this you have an opportunity to Sherlock SEGA and make all your Gen 1 stuff free (with ads if you must 🙄) and show them how it’s done. Plenty of modern devices can handle emulation from that generation, like say the powerful PCs you both make and sell.

Or you can take matters into your own hands and just build a RetroPie.

Hundreds of Podcasts

I’ve been meaning to write about this since before Sunrise Robot shut down but it’s just as relevant now, and better late than never.

When Mike and I first started Flipping Tables and published episode 000 (why did I name them like that?!) it struck a stark contrast against some of the podcasts I listened to that had episodes totaling close to four digits. I genuinely wondered how we would ever get there from here. Turns out when you make your art week after week for years you end up with a lot of art. Flipping Tables ran for three years, and our other shows ran for the two years that Sunrise Robot was active, so how did the numbers stack up?

345 episodes our small team produced in three years. And that’s a big number if taken all at once, but averaged out it’s only 2.2 episodes/week. For “two people talking” style podcasts like the ones on Sunrise Robot that’s a really managable amount of work session by session that only seems unmanageable in aggregate. It can suck starting over with episode 1 (fool me once!) but taken day by day it’s not so bad.

Mastodon and GNU Social

Everyone is talking about the ugh “Twitter Killer” Mastodon and many are predictably seizing on the wrong thing. Mostly that it is a Twitter killer, which it might be but probably isn’t, and isn’t really the point. The point of Mastodon, and more broadly GNU Social, is that Twitter-like communication needs to be standardized and federated and not owned by a single company. From Robek.World:

Mastodon Social is the name of an instance on GNU Social which uses the OStatus protocol to connect to a vast variety of servers in what’s known as a federation. Mastodon is also the name of the software being used on that server, which was developed by Eugen “Gargron” Rochko. It was built with Ruby on Rails, Redux, and React.js. I learned the latter from the Wikipedia page, which is about the extent of research given by any of the other articles published this week.

Source: What is GNU Social and is Mastodon Social a “Twitter Clone”?

If history is any indicator this whole Mastodon thing won’t last long but I really hope it, or at least what it represents, survives. In the meantime I’m trying to help it survive by being part of the community.

I'm @lyonsinbeta@mastodon.network so check me out and give me a follow if you're into that sort of thing.

Update 2017-07-07: I’m @lyonsinbeta@mastodon.xyz now because mastodon.network went down with no indication the admin will be fixing it. That can happen in a federated network.

State of the Podcasts

Considering how long I’ve been listening to podcasts and podcasting, I can’t believe I’ve never shared a list of what I actually listen to myself. Here, in alphabetical order, are all the shows I’m currently subscribed to. I’ve listen to many others, but I purge shows that end or I grow impossibly weary of. I’m looking at you Welcome to Nightvale.

My podcatcher of choice for getting all these lovely shows into my earholes is still Pocket Casts because it’s the best, has Android, iOS, and web apps, and is also is the best. Like any sensible person I’ve worked up to listening at 1.5x and now when I hear Wait Wait… on the radio at normal speed everyone sounds drunk.

I was, until recently, a masochistic completionist who actually listened to every episode of every show until I realized just how dumb that is. A combination of accelerated playback speed, purging shows I had stopped enjoying, and skipping an episode I am not interested in has made keeping up with this lengthy list possible.

Nostalgia Goggles

Nostalgia Goggles album art

Last fall Mike and I made the tough decision to end Flipping Tables and to sunset Sunrise Robot. It was the right thing to do, but I wasn’t ready to be done with podcasting just yet.

Podcasting can be addictive and it wasn’t long after we started Flipping Tables I was thinking of other shows I’d like do. Running the network kept any of them from really taking shape, but one show idea kept creeping back into my thoughts. It was just a loose concept: a kind of book club for classic video games. Do those old games hold up or are they only classic in our memories? Do we all just have Nostalgia Googles on?

I’ve been playing video games longer than I can remember, but work, family, and other hobbies made them take a back seat. Like… way in the back. More like holding onto the bumper and getting dragged. I’ve played some modern games, and I’ll indulge in a mobile game now and then, but reliving the classics always felt silly when there are so many “new” games I “should” be playing instead. Games are supposed to be fun, not an obligation. So what if I’m replaying Link to the Past for the 30th time?

With my calendar about to free up in a post Flipping Tables world the hunger to start a new show came back. Then completely out of nowhere a good friend said to me “Hey we should do a podcast together.” (Fun fact: that is basically how Flipping Tables started.) I pitched him the idea, told him which microphone to buy, then many hours of gaming, note taking, and ranting later we released our first two episodes: Super Mario World, and Sonic 2.

I’m excited to spend more time gaming. I’m excited to spend more time with George (the good friend and now co-host I mentioned above.) I’m excited to be back in front of a microphone podcasting. I’m thankful to the talented Michael Edwards for our album art and the generous Danny Wiessner for our theme music. And I’m incredibly flattered that people are excited to listen to us.

Our first two episodes are fun and ridiculous, and there will be another coming every other week on Tuesdays. Go listen, and if you like what you hear, subscribe to get the latest delivered automatically.