Blog
A collection of snippets, experiences, and longer content documenting my findings over time.
Feb 1, 2024
Serializing OpenAI API Responses for Logging with Pydantic
When working with external APIs, I lean heavily on logging as much information I can for requests and responses. Sometimes, the solution is obvious, but can still be easy to miss!
Read moreApr 5, 2022
Using Django's JSONField? You probably don't need it. Here's why
If you find yourself using JSONField in Django, you might not know that you're really using JSONB. How can this impact your application?
Read moreMar 5, 2022
Deleting Git branches in bulk
Deleting several Git branches at once with normal Git deletion commands can become a real headache. Thankfully, there's an easier alternative to this.
Read moreFeb 1, 2022
Disabling the Tailwind input ring
If you've ever worked with Tailwind, you've probably come across an input ring – but it isn't always clear on how to remove this ring.
Read moreJan 27, 2022
Cherry-picking done easy
Have you ever needed to cherry-pick several commits between two branches, but ran into conflicts every time? I made this mistake myself – but cherry-picking doesn’t have to be hard.
Read moreDec 1, 2021
The Impact of Layout on User Experience: A Study
This paper documents a study that spanned over several months (September 2019 - April 2020), in which I performed a two-part analysis & experiment on the most popular site layouts and how user experience is affected.
Read moreNov 22, 2021
Hiding primary keys and database IDs using Hashids
We often don't want to show primary keys or model IDs to users, and doing so can be more harmful than you might think. As a solution, we can make "hashes" to mask IDs while still maintaining uniqueness.
Read moreNov 15, 2021
Sticky Footers
Sticky footers are really easy to do and only require about 10 lines of code. We start by making the actual page at least the height of the screen, and then we move the footer to the bottom of the page with auto margin if there isn't enough content to push it down.
Read moreOct 26, 2021
Zillow's confusing keyword UX
An exploration into Zillow's confusing keyword UX, and how listing sites can improve.
Read moreOct 16, 2021
Design for your developers, not just your users
Though it's impossible to be perfect, there are ways to improve developer productivity and establish a better foundation for how your apps are built. It starts by designing for your developers.
Read moreOct 9, 2021
My experience of moving from Laravel to Django
Before my current role, I spent most of my professional development career writing web apps in Laravel. I learned Laravel out of necessity after learning PHP and quickly grew fond of the framework, but later moved to using Django as my primary framework. Despite a simple transition, even some of the more basic concepts gave me trouble regarding terminology and patterns.
Read moreOct 6, 2021
Handling bulk update or create on Django models through filters
Recently, I came across a case where I needed to handle either bulk creates or bulk updates on a set of Django records within the same endpoint. Unfortunately, Django doesn't have a way of handling this "either-or" eloquently – but there's a feasible approach to this issue.
Read moreOct 3, 2021
Setting up Supabase with Next.js and Vercel
In this article, you'll learn how to connect your Supbabase project with your Next.js app hosted through Vercel. Within a matter of minutes, you'll have fully-fledged authentication, database, subscription support, and more.
Read moreSep 2, 2021
Using Hotjar and Google Analytics with Next.js to track behavior
As a developer, my go-to analytics tools are Hotjar and Google Analytics for both small, personal projects, and more complex applications. When I get a choice, Next.js is my favorite React framework – it offers server-side rendering (SSR), a growing and responsive community, and integrates easily with my favorite CSS framework, TailwindCSS.
Read moreNov 10, 2019
Integrating Gatsby, Tailwind, and Storybook
One of my current projects is dedicated to documenting and describing UX research that I’ll be conducting within the coming weeks. In building this project, I got the idea to use Tailwind, Gatsby, Firebase, and Storybook to get my hands dirty whilst still being able to build the app without too much effort.
Read more