Steve Dignam
RSS
Github
-
TikTok Favorites Exporter
via python, sqlite, and yt-dlpDec 2, 2023
-
Ensuring All Proto Fields Are Set
Use the descriptor LukeOct 8, 2023
-
Sharing Links
To track, or not to trackAug 12, 2023
-
Writing Java like TypeScript
Embracing varJul 9, 2023
-
The Many Problems with Celery
With some possible fixesMay 20, 2023
-
Abandoning logging for structlog
Structured logs for greater goodApr 9, 2023
-
Dark Mode for Emails
Auto conversion and media queriesMar 2, 2023
-
The Case for JavaScript Without Semicolons
Less is more!Feb 12, 2023
-
Scraping Whisk's GRPC-web API
Binary is annoyingFeb 2, 2023
-
Preloading with JS Apps
Injecting some JSON and metadata into the pageJan 12, 2023
-
Backwards Compatible API Changes
What is safe to merge?Jan 8, 2023
-
Free Tier Hosted Postgres Comparision
Free Trials and Actual Free TiersDec 13, 2022
-
Blurhash or Downscaled and Blurred
Quality vs storageDec 6, 2022
-
Zero to Connection String
it's a race!Nov 19, 2022
-
cursor: pointer and user-select: none
and their usageNov 19, 2022
-
Cutting Peak CPU in Half By Caching SSL Context
A little py-spy goes a long wayNov 9, 2022
-
Undoing changes to a file in a GitHub Pull Request
A little `git diff`, a little `git apply`Nov 8, 2022
-
The Limits of Browser Storage
Depends on the browserOct 31, 2022
-
Sync to Async Python for Speed
10x perf gains by using asyncio in PythonOct 15, 2022
-
Gradually Enabling noImplicitAny
TypeScript ESlint to the rescueOct 1, 2022
-
HTTP Timeouts
Setting an overall timeout in various languagesSep 4, 2022
-
Scroll Restoration with Client Side Routing
Instagram's vs Flickr's approachJul 15, 2022
-
Inaccurate Theme Flashing
Some examplesJun 11, 2022
-
Reachability and Apple Music
UIKit has forsaken usMay 14, 2022
-
Problems Debugging iOS Safari from Mac
ERROR: invalid input syntax for type inetApr 10, 2022
-
A Decent Database Service
Lots of features requiredMar 19, 2022
-
Problems with Flow
TypeScript FTWMar 1, 2022
-
Prefix Your Env Vars
Namespaces are goodJan 29, 2022
-
Hosting Apps on a Subdomain?
A SurveyJan 14, 2022
-
CSP and CSS-in-JS
No runtime CSS-in-JS for you!Jan 13, 2022
-
Trimming Text
-webkit-line-clamp enhancedJan 1, 2022
-
Async Data Loading in React
Sum Types vs Bools vs SuspenseNov 20, 2021
-
input[type="number"]
Unexpected change eventsSep 9, 2021
-
Avoiding Implicit Conversions in TypeScript
With the help of ESLintAug 11, 2021
-
Beware of Array Spread
hitting the limits of the call stackJul 24, 2021
-
Better Review Apps
aka Preview Deployments, Deploy Previews, etc.May 28, 2021
-
What Node.js' HTTP server gets wrong
Or, how CPS isn't user friendlyApr 7, 2021
-
Are you sure you want `?` and not `| undefined` in your type?
Optional vs possibly `undefined` in TypeScriptMar 16, 2021
-
Debugging a Chrome Performance Bug
A lesson in measuringFeb 4, 2021
-
Handling Signals in Heroku
Insufficent configJan 17, 2021
-
Typed SQL Client & Query DSL in Python
Pushing Python's static typing to the limitsJan 4, 2021
-
Static Typing an ORM in Python
Tips for adding static types to an ORMNov 23, 2020
-
Type Stubs for Native Python Modules
Packing and unpacking wheelsNov 12, 2020
-
Towards a Better Heroku
Requirements for a PaaSOct 25, 2020
-
Leaving the ORM Behind
Composing raw SQL queries in PythonOct 4, 2020
-
Heroku Deployment Deception
Deploys take a whileSep 18, 2020
-
Relative and Absolute Imports in Python & TypeScript
Beware of ambiguitySep 7, 2020
-
./.venv/bin/activate isn't magic
You don't need itSep 7, 2020
-
Pesky Globals, Even with TypeScript
And how to avoid themJul 24, 2020
-
Dynamic To Static Languages
Type checkers for dynamic languagesJul 8, 2020
-
Faster CI Builds in a Monorepo
A little bash goes a long wayMay 3, 2020
-
Stylex in TypeScript
Another approach to CSS-in-JSApr 18, 2020
-
Avoiding Another TypeScript Compiler Bug with ESLint
ESLint FTWApr 15, 2020
-
User Defined Ordering Made Easy
ints, floats, decimals, rationals, and stringsMar 31, 2020
-
Preventing Unindexed Queries in Django
An exploration in runtime checkingFeb 15, 2020
-
Preventing N+1 Queries in Django
Django ORM requiredFeb 9, 2020
-
Debugging Performance Issues with Py-Spy
With included SVGsFeb 8, 2020
-
Newtypes in TypeScript
Nominal typing in a structural worldDec 11, 2019
-
Distributing a Python Project with Pex and Poetry
Executable zip filesNov 17, 2019
-
Soundness with Mypy, Flow, and Typescript
A brief comparisionNov 9, 2019
-
Arbitrary Precision Decimal Fields with Django ORM
Using Postgres features from DjangoOct 24, 2019
-
Avoiding TypeScript Compiler Bugs via ESlint Rules
Initialize your declarationsOct 14, 2019
-
Exhaustiveness Checking and Breaking API Changes
Adding enum variants is breakingSep 15, 2019
-
Python's Async Stack Traces
Much nicer than JSAug 30, 2019
-
Replacing YAML With Dhall
Static typing your configJul 31, 2019
-
Unclogging an Asyncio Event Loop
A little cProfile goes a long wayJun 13, 2019
-
Python's Pathlib in Swift
Cute operator overloadingMay 13, 2019
-
Deterministic Bundles With Webpack
Beware of random in SassFeb 10, 2019
-
Tslint Rule
Lessions in writing a new ruleJan 18, 2019
-
Sum Types for Remote Data in TypeScript
Use the compiler Luke!Dec 27, 2018
-
Creating A Flake8 Lint
Pretty straight forwardDec 16, 2018
-
Detecting Recursion In Python
Fun with inspectDec 13, 2018
-
Autonomous Transactions in Postgres
By using another connectionOct 12, 2018
-
Are Parser Generators Common? No.
Handwritten vs generated language parsersSep 18, 2018
-
React, Redux, and TypeScript walk into a – Type Error
Comparing Redux libraries for side-effectSep 2, 2018
-
Handling Strings
A comparision of various languagesAug 8, 2018