til: Using htmltest to find broken links in your blog

While working on my blog I discovered that some of the image and link sources in different posts had become broken without me noticing. Outside of “hugo says OK” I don’t have any other validation running on my blog so I decided to look for something that could lint the rendered output for dead links and other issues. I tried a number of different tools but ended up using htmltest. It runs after hugo renders the static output of my blog in a public/ directory in the project root.
Read more →

til: Addressing S3 URIs with Pandas using s3fs

Another short “today I learned” post from the analytics mines. If you have previous experience writing any form of data munging or analytics tasks then you have almost certainly encountered Python, Pandas, and AWS S3 in some combination. These jobs usually follow the structure: download the files from S3. deserialize them into Python objects & create Pandas dataframes. perform calculations over these dataframes. Normally #1 and #2 would be wasted repetitive work that is left to the reader, but there is a better way.
Read more →

til: About the /.well-known/change-password URI

I attended BSidesSF this year for the first time in a while and saw Aalaa Kamal Satti and Yuru Shao of Pinterest speak about their efforts on password security for both Pinterest’s consumer and business users. During their talk they spoke about implementing support for the /.well-known/change-password URI that allows websites to integrate with the password managers that ship within most modern browsers. These password managers have had features like checking for compromised credentials via HaveIBeenPwned for a while but prior to the .
Read more →

til: A simple ETL task in Airflow using PostgresHook

This week at work I had the need to build a small ETL (Export, Transform, Load) process to move some data from PostgreSQL database A (a primary relational database used by our application to serve customer traffic) to PostgreSQL database B (a back-of-house instance used to perform metering and other usage analytics). We already use Apache Airflow to orchestrate the metering tasks, data sync and Stripe API interactions, so building this process in Airflow was my first choice.
Read more →

Share early, share often

Last year I started making a more deliberate effort to make digital memories of everyday life in the form of audio recordings, photos, and video. While I’ve long been a fan of taking a camera with me on trips, the months-long absences of any photos in my Lightroom library made me realize how much every day life I was neglecting to record. As a byproduct of this new habit I’ve ended up with a bunch of material documenting in greater detail the electronics and musics side projects that have occupied more and more of my time since 2019.
Read more →

Making a More Accessible Web

Web content accessibility has been on my mind recently as I watched one of the other engineering teams at Intercom in San Francisco undertake to make the Intercom Messenger accessible and compliant with the Web Content Accessiblity Guidelines (WCAG) 2.0 Level AA. Despite the continued growth and evolution of the internet it has yet to really live up to its true potential as universally accessible communication, and the accessibility landscape of online content is no exception.
Read more →

Making again

This is an extension of my last post: A brief musical journey, as well as a number of stories which I’ve been posting on Instagram in recent days. As part of my of my adventures in the world of producing elecronic music I came across the fascinating world of modular synthesis. Modular synthesizers are composable musical instruments which are built up of many discrete modules, almost like the Lego bricks of synthesizers.
Read more →

A brief musical journey

I’m back! It’s been a while but I’ve decided to dust off my old blog and to start trying to write some more regular updates as to what I’ve been doing these last 18 months. For those of you who I’ve not seen in a while it’s been a busy time. One of the primary things I’ve been spending time at recently has been all things music, in particular both learning to create and attending more live electronic music.
Read more →