Recently I discovered I had a project that needed an authentication and authorization solution that went further than just a straightforward application checking a user record in a database.
I remembered that Mozilla’s services like their Firefox Add-ons portal effectively functioned like I envisioned mine would need to. Digging under-the-hood I realized that Mozilla was using OpenID Connect (OIDC) and that made a lot of sense as it is just OAuth plus an identity solution.
I then evaluated what was available on PyPi for me to reuse with my Django project and discovered the two major components I needed to bring this together:
Django OIDC Provider: This is the identity server component. It’ll manage all the client credentials for you and ties into Django’s core auth model/view features
Mozilla’s Django OIDC: This is the client component - you point it at a compatible OIDC Provider and it’ll do the OAuth dance for you and then link that project’s Django core auth accounts to those from your provider
Both projects are well documented and will work just-about-out-of-the-box with some modifications to your Django projects’ settings files. I personally found I needed to use the extensibility options of both projects to do things like offer custom OIDC claims but I found the extensibility portions to be relatively easy.
I’m thankful that Mozilla works in the open and uses Django because reading through their source code gave me a lot of confidence that this idea would work for my needs. Without that assurance, I think I would have needed to do quite a lot more testing to convince me that it was a solution worth pursuing.
I bought 1st & Goal, an American football board game, last year but hadn’t really played it through until today. Feels like a more detailed simulation of a football game than one might expect for a board game.
🎬 We took our kids to see The Kid Who Would Be King. It is an earnest take on the modern children’s fantasy genre. My older kids enjoyed it but my youngest found it too suspenseful. I thought the costume and set design was terrific. 👍
I hit a wall on a work project earlier this week and I find sometimes it helps to return to an old stomping ground: blogging. I’ve been happy with my Hugo & AWS blog setup but I’m always on the lookout for a better system. Based on positive feedback in the micro.blog community I wanted to try out Blot.im from David Merfield.
Overall, my initial impressions are extremely positive.
Blot hits the sweet spot of a baked blog with the development responsiveness of a more dynamic system. The custom theme system is simple enough to quickly customize but robust enough for someone like me to gently push it a little farther than a custom theme might typically go. There are a lot of nice touches - including a dashboard view of 404 (missing file) requests and a method to help you quickly redirect those to the right place.
The other strong thing Blot has going for it: David. David comes across as a responsive and thoughtful person. Over a couple of days David listened to my stream-of-thought experience with his software and gave helpful feedback while also leveraging our dicussions to improve the Blot software for the community as a whole. I know a the “one person” software model has scaling issues and there’s always risk involved with such a tight coupling of individual to the product but in this case I think David is absolutely the biggest selling point of Blot over something like my previous blog tooling (Hugo.)
The HomePod, by all accounts, “sounds” amazing but the fact that it is a single user device when it comes to the Siri features (“check my email”) seems like a real drawback when the thing is going to live smack-dab in the middle of my living room with family of five Apple users.
Airplay 2 seems pretty cool particularly the ability to stream music to multiple AirPlay devices at the same time. Our current “home speaker” is usually our Apple TV playing music through our TV speakers over HDMI. It is not great but it works and it is easy for everyone to use… for the most part.
I just so happen to have an Airport Express lying around, not used. We retired our Airport-based WiFi network after years of Apple neglecting it and the performance being subpar giving our home’s fast fiber connection. The interesting thing about the Express is that you can disable the WiFi radio, put the device into “bridge mode”, and just plug into your existing router with an ethernet cable.
With that in mind I plugged a pair of old computer speakers that sound reasonably decent into the Airport Express optical audio input. I updated the device’s firmware and used the Airport Utility to configure it as an ethernet-only AirPlay hub as noted. Then I used the Home app on iOS 12 to add it as HomeKit device. This was a little finicky but I had to “Add an Accessory”, then select the manual “I don’t have a HomeKit code” option. It took a few tries but the Express device did show up and was added in a just few seconds. I added it to same HomeKit room as my Apple TV (which is also in the same “main floor” zone.)
From there I went back to my Phone’s Music app picked a song and was able to tap both speaker options and music was streaming at the same time with no lag from both my Apple TV and the Express speaker output. It is pretty amazing. I suspect this setup will not work if I wanted to say watch a movie on my Apple TV and have the Audio come out of both places but I’m going to mess around and see if I can get it to work.
Update: I’m not sure what I was thinking about audio not working from both sources during movies - it works just fine and there was nothing else required. A nice little bit of Apple magic.
If SeaTac Airport is in your top-ten US airports list (at least in 2018) you need to throw out your research and start over. The TSA wait times are terrible 24/7 and the food options stink outside of 9-5 hours.
The results of WebAIM’s second survey of Users with Low Vision is out. One data point of interest was “60.4% always or often use a keyboard for web page navigation” - keyboard support is the biggest deficiency I find in most Web and mobile applications today.
A fresh batch of pizza dough for our Calzone Mummies that we make every Halloween for the kids.
🎵 I came across CVSBANGERS in my iTunes library and it reminded me that things were not terrible for a while.
DEVONthink To GO, an iOS knowledge manager, has powerful search tools but is crippled in odd ways. Example: You can import a photo and it will capture the geolocation but you can’t search by location. ¯\_(ツ)_/¯
ferret is a web scraper written in go that provides it is own declarative language for defining tasks and works over HTTP or on-top of a headless Chrome instance so you can deal with a DOM. I particularly like the interactive command-line tool for exploratiory scraping.
Sans Forgetica is a font “designed using the principles of cognitive psychology to help you to better remember your study notes.” The typeface was created by Stephen Banham, founder of Melbourne’s Letterbox type foundry, along with others from Royal Melbourne Institute of Technology (RMIT) University.
Tonight I downloaded my Twitter archive then wrote a Python script to delete all 15,000+ tweets found in the archived JSONtweet.js file. Twitter brings me only sadness and anger lately. Hilariously, my Twitter archive says I’ve blocked over 18,000 accounts. What a nice place!