Sign in

David Robinson

@drob.bsky.social
6.8K followers 85 following 17 posts

Member of Technical Staff at Anthropic. #rstats fan. Dad x2. He/him

PostsRepliesMedia
David Robinson @drob.bsky.social · 04/02/2025
Blown away Using OpenAI’s Deep Research is like collaborating with a PhD student (It told me it would get right on it then ghosted me)
2926 0
David Robinson @drob.bsky.social · 05/12/2024
"How did you spend 2024?" "I'll tell you how I spent 5% of it"
Apple Music Replay '24

#1 Taylor Swift: 25,520
#
1120 0
David Robinson @drob.bsky.social · 02/12/2024
My #rstats solution to Day 2 of #adventofcode * I feel like half of Advent of Code puzzles need a diff(), especially in the early days! * Didn't use much tidyverse today (except map_lgl and between, but those could have easily been replaced)
library(tidyverse)
library(adventdrob)

input <- advent_input(2, 2024)
x <- input$x

is_safe <- function(report) {
  d <- diff(report)
  return((all(d > 0) || all(d < 0)) && all(between(abs(d), 1, 3)))
}

is_safe_part2 <- function(report) {
  return(is_safe(report) ||
           any(map_lgl(seq_along(report), \(i) is_safe(report[-i]))))
}

input$x %>%
  str_split(" ") %>%
  map(as.numeric) %>%
  map_lgl(is_safe_part2) %>%
  sum()
0190 0
David Robinson @drob.bsky.social · 01/12/2024
When I woke up I realized my Part 1 could have been WAY shorter with sort 🤦‍♂️
input %>%
  separate(x, c("first", "second"), convert = TRUE) %>%
  summarize(sum(abs(sort(second) - sort(first))))
050 0
David Robinson @drob.bsky.social · 01/12/2024
My #rstats solution to Day 1 of #adventofcode * Fun use of gather and spread (I know I'm supposed to be using pivot_longer and pivot_wider, but old-dog-new-tricks) * One step I got stuck on was setting a ties.method in rank()
library(tidyverse)
library(adventdrob)

input <- advent_input(1, 2024)

separated <- input %>%
  separate(x, c("first", "second"), convert = TRUE)

# Part 1
separated %>%
  gather(type, value) %>%
  group_by(type) %>%
  mutate(rank = rank(value, ties.method = "first")) %>%
  ungroup() %>%
  spread(type, value) %>%
  summarize(sum(abs(second - first)))

# Part 2
totals %>%
  count(first = second, sort = TRUE) %>%
  inner_join(separated, by = "first") %>%
  summarize(sum(first * n))
2412 0
David Robinson @drob.bsky.social · 26/11/2024
My wife Dana is hiring a full-time Data Engineer at her company! Great role for someone with strong experience in Python, dbt, and Snowflake who wants to join a growing startup in the government data space Please forward to strong data folks you know! www.linkedin.com/jobs/view/40...
Upfront (allupfront.com) is fixing the childcare industry through accurate, complete data so the government, parents, and providers can all make decisions and operate with optimal results. Our SaaS platform cleans, validates, and provides vital insights on childcare data (price, hours, location, availability, etc.) and serves as a central hub for every stakeholder. A Techstars portfolio company, Upfront has seen rapid growth with customers such as the states of Maryland, Arizona, and North Carolina. 



We are looking for a engineer to maintain our system ingest data from our clients, clean and enrich that data, and integrate it into our production system. 



Responsibilities:

Build a system for ingesting daily batches of data from a client’s API
Develop and maintain ETL scripts for processing and enriching that data
Manage data quality and accuracy, such as developing automated tests


We expect you to have:

The ability to architect a data ingestion platform from the ground up
Extensive experience with at least one platform for scheduled ETL pipelines 
Extensive experience in dbt, AWS and Snowflake
Intermediate to advanced proficiency in Python
Attention to detail and proactivity when it comes to data quality


Extra points for:

Skill at visualizing and drawing insights from data
Experience pulling data from public websites
Scrappy mindset- we're a small, but smart team and nothing is above or below our job title
1171 0