Skip to content

Tag: SQLite

4 articles tagged with "SQLite"

Seattle Events Collector

September 28, 2026 • Project

A pipeline that pulls events from 50+ Seattle venues, ticketing APIs and calendar feeds, merges the duplicates, and serves one digest as a web UI, RSS and iCal feeds, and personalized email. 63 commits from May to September 2026, over 4,700 lines of Python outside the scrapers. Architecture Scraping layer. Static HTML (BeautifulSoup, 35+ sites), JSON APIs (Ticketmaster, Bandsintown, ESPN, Luma, Eventbrite), JavaScript-heavy sites via Playwright, and iCal feeds. Every scraper returns the same Event model.

Read more →

My Airline Points Kept Changing, So I Built a Watcher

July 8, 2026 • 3 min read

Written up in October 2026. Dates are when I actually built it. Airline rewards activity isn’t a log, it’s a table that quietly edits itself. Points post late, get adjusted, sometimes vanish. I wanted a ping the moment my own account’s history changed, so I built a watcher: about 900 lines of Python with 60 unit tests. It only ever reads my own account. Don’t hash the columns, hash the meaning Each activity row gets a SHA-256 over (date, description, amount).

Read more →

Rewards Account Change Watcher

July 8, 2026 • Project

A headless watcher that monitors a loyalty-program account, detects any change to its activity history (including edits and deletions of old rows), and alerts me on Telegram. It only reads my own account. About 900 lines of Python with 60 unit tests, built in three days. Architecture fetch, diff, alert, then persist. Each run captures the account’s data, diffs it against stored state, sends one message summarizing changes, and only then saves the new state.

Read more →

How Do You Know a Shopping Bonus Is Actually Good?

March 22, 2026 • 2 min read

Written up in October 2026. Dates are when I actually built it. Airline shopping portals love to scream “5X POINTS!!!” at you. Is that a great rate, or just a Tuesday? The portal will never tell you, because it only shows you today. So I built a tracker that remembers. Code’s here. The data model is the whole project I put everything in Cloudflare D1 (SQLite) and spent most of my time on the schema, because the questions I wanted to answer (“is this an all-time high?

Read more →