Adam Austin
banner
ataustin.bsky.social
Adam Austin
@ataustin.bsky.social
Director of data science, fanboy of #rstats

Make interoperability, not war.

Also at @ataustin@fosstodon.org
In ~2019 I remember reading about how Walmart was using blockchain technology in distribution. I forget the actual use case, something about tracking trucks. But the lasting impression was "this just sounds like sending data to servers and processing it??"

Anyway I hope that PM got the promotion 🤷‍♂️
January 16, 2026 at 9:10 PM
Small AI win of the day: I needed employee IDs for people who no longer report to me (so I can't see it in the HR system). Copilot was able to trawl my emails and identify old performance statements and expense reports with the info. All things I had access to but never would have found myself.
January 9, 2026 at 10:54 PM
Saner voices are prevailing at Dell, at least for now.

www.theverge.com/news/851047/...
January 9, 2026 at 8:06 PM
Y'all, people at work STILL think Posit is an R-only tool set *screaming internally*
#dataBS
January 8, 2026 at 6:26 PM
Stop and cleanse your timeline with a thread
January 6, 2026 at 9:10 PM
Reposted by Adam Austin
You have to subscribe to the labeler at bsky.app/profile/labe...

It’s a useful labeler!
January 5, 2026 at 9:41 PM
I get @posit.co product updates by email. The pace of development is wild. I've stopped trying to learn what specifically Posit can do and started assuming that whatever you need it to do, it can do (or will do soon).
January 5, 2026 at 5:05 PM
*sighs deeply while logging into the first meeting in 2.5 weeks*
January 5, 2026 at 3:06 PM
That's a wrap on #AdventOfCode 2025! 🎉🎅

I loved the 12-day length. It felt achievable & this is the first year I finished. I did almost every puzzle without loading packages. Tell your friends next time they say R isn't a "real" programming language. 😝

Amazing job @was.tl and thanks for the joy!
January 2, 2026 at 10:53 PM
Just revisited day 2 of #AdventOfCode to tie up some loose ends. I went and learned about regex capturing groups, which made my solution comically short. It helps that R chews through a length-2-million vector without a fuss.

Link to code in the quote post.
#RStats
Day 2 of #AdventOfCode, "still sick" edition.

Need to rest so just posting part 1 for now. It's a literal interpretation: for integers with even number of digits, split in half and compare. This won't hold up in part 2, so maybe I'll dream the solution 😴
Code: github.com/ataustin/adv...
#RStats
advent-of-code/y2025/d02/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
January 2, 2026 at 10:14 PM
Day 11 of #AdventOfCode, "all you need is a matrix" edition!

Since we are asked to find the count of paths, we can use a matrix indicating connected devices. Multiplying the matrix by itself N times gives count of paths of length N between any nodes.
Code on GH: github.com/ataustin/adv...
#RStats
advent-of-code/y2025/d11/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
January 2, 2026 at 4:24 PM
Posting a New Year's Eve cocktail because of this daring garnish
January 1, 2026 at 9:38 PM
Day 10 of #AdventOfCode - part 2.

After struggling with constrOptim(), I broke down and loaded my first pkg this season. lpSolve is *so much* easier, and handles equality and int constraints. It was wild to revisit linear programming after many years.
Code on GH: github.com/ataustin/adv...
#RStats
ah frig, it's constrained optimization isn't it
December 30, 2025 at 7:01 PM
Day 10 of #AdventOfCode, base R - part 1 only.

Since we are dealing with on/off, we can treat each position as a bit. Convert button values and the target state into integers, and use the magic of bitwXor() to flip bits until the target is reached.
Code on GitHub: github.com/ataustin/adv...
#RStats
advent-of-code/y2025/d10/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
December 29, 2025 at 8:04 PM
Reposted by Adam Austin
{livelink} walked so {webrarian} could run. Mini browser-based #rstats environments powered by #webR and its 4-panel editor. YAML config, build, preview. Done.

R package coming soon. #pyodide folks, stay tuned.
December 28, 2025 at 8:33 AM
Day 9 of #AdventOfCode, base R!

Part 2 was tailor-made for all the data nerds (🙋‍♂️) who prefer to understand their problems through visualization. I'm sure the problem could be solved without a plot, but it definitely reduced the possibility space!
Code on GitHub: github.com/ataustin/adv...
#RStats
advent-of-code/y2025/d09/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
December 28, 2025 at 2:06 AM
Day 8 of #AdventOfCode, base R!

I have to believe parts 1 and 2 can both be done with hclust() and cutree(). But I'm missing something obvious in part 1, so it's just some inefficient loops for now.

At any rate, I ❤️ R's built-in data tricks.
Code on GitHub: github.com/ataustin/adv...
#RStats
advent-of-code/y2025/d08/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
December 19, 2025 at 11:05 PM
Fondly remembering my early #RStats days when I spent an hour trying to identify the NAs in a vector before I knew about is.na()
Yes, exactly. Each missing value is equal to itself and unequal to other values. In contrast, R's NA is neither equal nor unequal to anything, including itself
December 18, 2025 at 11:11 PM
I was a couple months into my data analysis for my masters thesis when a friend of mine discovered and pointed out Stata's missing value quirks. It could have been an ugly defense if I hadn't fixed that
I am just learning of this 2015 retraction, adding to my "science as amateur software engineering" files. Seems they classified missing values as obs outcome of interest (divorce). Classified 32% of sample divorced, rather than true 5%. retractionwatch.com/2015/07/21/t...
December 18, 2025 at 5:04 PM
LinkedIn delivering serious insights with its version of Wrapped. Well done, thought leaders everywhere
December 17, 2025 at 10:20 PM
I reject the premise of the question
github.com GitHub @github.com · Dec 16
It was the closest race yet when it came to the top programming language of the year. 👀

So, which are you using more often: TypeScript or Python?
December 17, 2025 at 3:49 AM
My dad still talks about how easy it was to work on cars when he was young. Nowadays you have to know how to decompile the binary
I like old mechanically injected diesel engines. They need zero electricity to run. No computers, just gears. I like that. It’s soothing.
December 17, 2025 at 3:47 AM
Maybe I don't understand business, but if you have to rely on your retired founder to come in to get your strategy back on track (or to watch models train), what does that say about your long-term viability as a company?
whoah, Sergey Brin is back at Google in a big way, probably a reason why we’ve been seeing real turnaround in their AI
December 15, 2025 at 3:09 PM
WHEW! Day 7 of #AdventOfCode, base R only!

Part 2 had me stumped. Shout-out to @karstendick.bsky.social for posting an approach that I could implement, namely "the number of paths through a node is equal to the sum of paths through its parents."
#RStats
github.com/ataustin/adv...
advent-of-code/y2025/d07/solution.R at main · ataustin/advent-of-code
Contribute to ataustin/advent-of-code development by creating an account on GitHub.
github.com
December 12, 2025 at 10:52 PM
Reposted by Adam Austin
I ignored the strip.clip argument in #ggplot2 for way too long 😲

Combined with a small negative margin tweak, you can place facet labels inside each panel. A tiny trick that makes small multiples feel so much cleaner.

🔵 no manual coordinates
🔵 inherits theme styling
🔵 scales nicely when resizing
December 12, 2025 at 12:51 PM