█▀█ ▄▀█ ▀█▀ █▀█ █ █▀▀ █▄▀ █▀▀ █▄ █ █▀▄ █▀█ █▀▀ █▀▀
█▀▀ █▀█ █ █▀▄ █ █▄▄ █ █ ██▄ █ ▀█ █▄▀ █▀▄ ██▄ ▄▄█
data engineer · python · sql · patrickendr.es
$ whoami
Data engineer with a SRE mindset. Running pipelines at JobGet.
Mostly Python and SQL against Snowflake, sometimes other back end tasks.
$ stack --sorted
python ████████████████████░░░░ daily driver · airflow, pandas, pyspark, requests
sql ███████████████████░░░░░ snowflake, stored procedures, optimization
infrastructure ███████████████░░░░░░░░░ terraform, ci/cd, data testing
javascript ██████████░░░░░░░░░░░░░░ enough to be dangerous$ ls -1 ~/projects
gi_scraper Multi-tenant Shopify catalog scraper. Walks a list of storefronts, normalizes products.jsoninto typeddataclasses(product / variant / image), and lands flat CSVs. Usescurl_cffito survive TLS fingerprinting. Pythonnhl_wiki_agg Aggregates all 32 NHL rosters off Wikipedia into one normalized CSV — or one per team. Generator-based parsing, identifies itself with a real User-Agent, raises on bad status instead of silently writing garbage. Python · BeautifulSoup boxing_wiki_agg Flattens current boxing rankings — every division, every sanctioning body — into one deduplicated roster per division. Building it surfaced three bugs in the parse: a hardcoded division count silently dropping Strawweight, two fighters glued into a single name, and title annotations breaking dedupe across bodies. Python · BeautifulSoup
$ cat notes/why-scrapers.md
All of my public projects currently are scrapers related to my hobbies: jiu jitsu, hockey, boxing.
Going to aim some more projects in the future.$ cat contact.txtweb patrickendr.es mail patrickjendres92@gmail.com github @patrickendres
$ _


