Sign in

Nan Xiao

@nanxstats.bsky.social
34 followers 13 following 32 posts

Statistician | Co-author of r4csr.org + pycsr.org | Opinions = Mine

PostsRepliesMedia
Nan Xiao @nanxstats.bsky.social · 10/09/2026
shinygenui: Generative UI for Shiny nanx.me/blog/post/sh... #rstats
nanx.me
shinygenui: Generative UI for Shiny
shinygenui brings generative UI to Shiny. Give a language model a catalog of trusted components, and it can build and revise an interactive interface as people describe what they need.
021
Nan Xiao @nanxstats.bsky.social · 18/08/2026
okr: Reproducible R source context for coding agents nanx.me/blog/post/okr/
nanx.me
okr: Reproducible R source context for coding agents
Vendor exact R package sources and reference repositories into a greppable, verifiable tree for coding agents.
012
Nan Xiao @nanxstats.bsky.social · 10/08/2026
Żmij for R: Floating-point to string conversion with round-trip guarantees nanx.me/blog/post/zm...
nanx.me
Żmij for R: Floating-point to string conversion with round-trip guarantees
zmij converts doubles to the shortest decimal strings that parse back to exactly the same values. It brings Victor Zverovich's fast dtoa algorithm to R via Rust and extendr.
000
Nan Xiao @nanxstats.bsky.social · 22/07/2026
Introducing ggsci for Rust nanx.me/blog/post/gg...
nanx.me
Introducing ggsci for Rust
ggsci is now available for Rust: a core crate with the full collection of scientific journal and sci-fi themed color palettes, plus adapters that turn them into Ratatui styles and ggsql scale clauses,...
010
Nan Xiao @nanxstats.bsky.social · 17/07/2026
Building a Homebrew tap to distribute my software nanx.me/blog/post/ho...
nanx.me
Building a Homebrew tap to distribute my software
I built a Homebrew tap that distributes my fonts and CLI tools, so you can install everything with brew install. Here is why I made it, what's inside, and some honest notes on the Homebrew developer e...
020
Nan Xiao @nanxstats.bsky.social · 16/07/2026
Introducing bisectrunk: Parallel Git bisection for real-world regressions nanx.me/blog/post/bi...
nanx.me
Introducing bisectrunk: Parallel Git bisection for real-world regressions
bisectrunk is a Rust CLI for parallel Git bisection of real-world software regressions. It treats every candidate commit as an isolated, cached, resumable experiment, so you can trace a behavior chang...
010
Nan Xiao @nanxstats.bsky.social · 09/07/2026
Two small Python automation tools: asciilint and playwright-byob nanx.me/blog/post/as...
nanx.me
Two small Python automation tools: asciilint and playwright-byob
I'm happy to share two new Python tools: asciilint, a minimal, CI-friendly CLI for character policy checks in text files, and playwright-byob, a tiny helper for launching Playwright against the Chrome...
000
Nan Xiao @nanxstats.bsky.social · 04/06/2026
Anthrosevka Mono: Custom Iosevka build inspired by Anthropic Mono nanx.me/blog/post/an...
nanx.me
Anthrosevka Mono: Custom Iosevka build inspired by Anthropic Mono
A custom Iosevka build inspired by the look and feel of Anthropic Mono.
021
Nan Xiao @nanxstats.bsky.social · 20/04/2026
ggsci 5.0.0 and py-ggsci 2.0.0: Generative Color Scales from Gephi nanx.me/blog/post/gg... #rstats
nanx.me
ggsci 5.0.0 and py-ggsci 2.0.0: Generative Color Scales from Gephi
ggsci 5.0.0 introduces generative color palettes from Gephi. Instead of a fixed list of colors, you get a recipe: define the mood, ask for as many colors as you need, and the palette grows with your d...
162
Nan Xiao @nanxstats.bsky.social · 12/04/2026
Why AI feels useless at work nanx.me/blog/post/wh...
nanx.me
Why AI Feels Useless at Work
AI feels useless at work for the same reason computers felt useless in the 1990s: the workflows haven't caught up with the technology.
000
Nan Xiao @nanxstats.bsky.social · 10/03/2026
Becoming a vibe maintainer nanx.me/blog/post/vi...
nanx.me
Becoming a Vibe Maintainer
I started using AI agents to maintain the awesome-shiny-extensions list: a case study in taste, harness engineering, and the surprising elegance of letting go.
000
Nan Xiao @nanxstats.bsky.social · 05/01/2026
Introducing pytest-r-snapshot: Verifying Python code against R outputs at scale nanx.me/blog/post/py...
nanx.me
Introducing pytest-r-snapshot: Verifying Python code against R outputs at scale
pytest-r-snapshot is a pytest plugin for snapshot testing Python code against reference outputs from R. It enables a portable workflow where you record snapshots locally with R, then replay them every...
000
Nan Xiao @nanxstats.bsky.social · 25/12/2025
Reverse dependency checking {data.table} now only takes 2 hours 44 minutes on a 256-core cloud instance: nanx.me/blog/post/re... #rstats #rust
nanx.me
revdeprun 2.1.0: hunting bottlenecks and a new speedrun record
revdeprun 2.1.0 tackles three bottlenecks in the reverse dependency checking workflow: pak's install scheduler, tarball downloads, and package builds. The result? A new speedrun record: 2 hours 44 min...
120
Nan Xiao @nanxstats.bsky.social · 07/12/2025
DM Mono with Fira Code ligatures nanx.me/blog/post/dm...
nanx.me
DM Mono with Fira Code ligatures
Add a sprinkle of Fira Code ligatures to DM Mono for a unique terminal experience.
000
Nan Xiao @nanxstats.bsky.social · 05/11/2025
Reverse dependency check speedrun: a data.table case study nanx.me/blog/post/re... #rstats
nanx.me
Reverse dependency check speedrun: a data.table case study
How fast can you run reverse dependency checks for a package with 1700+ reverse dependencies? I put revdeprun to the test with data.table on a 48-core cloud instance. Here is what I learned about spee...
011
Nan Xiao @nanxstats.bsky.social · 27/10/2025
revdeprun: Rust CLI for #rstats package reverse dependency check automation nanx.me/blog/post/re...
nanx.me
revdeprun: Rust CLI for R package reverse dependency check automation
revdeprun is a Rust CLI tool that makes running reverse dependency checks on cloud instances as easy as a single command. Learn why this matters for R package maintainers and how it can save you hours...
151
Nan Xiao @nanxstats.bsky.social · 26/09/2025
ggsci 4.0.0: 400+ new color palettes nanx.me/blog/post/gg... #rstats
nanx.me
ggsci 4.0.0: 400+ new color palettes
ggsci 4.0.0 is here, with over 400 new color palettes from Primer, Atlassian, and iTerm2-Color-Schemes to bring more options to your ggplot2 data visualizations.
0131
Nan Xiao @nanxstats.bsky.social · 15/09/2025
Introducing py-ggsci: ggsci color palettes for plotnine in Python nanx.me/blog/post/gg...
nanx.me
Introducing py-ggsci: ggsci color palettes for plotnine in Python
Bring publication-ready color palettes to your Python plots with py-ggsci. This new package ports the popular ggsci palettes from R to plotnine and makes it easy to create beautiful, professional visu...
000
Nan Xiao @nanxstats.bsky.social · 15/08/2025
Markdown Stupefy: tidy AI text in VS Code nanx.me/blog/post/vs...
nanx.me
Markdown Stupefy: Tidy AI Text in VS Code
Markdown Stupefy is a VS Code extension that converts smart punctuation to ASCII, removes emoji, and tidies trailing whitespace so AI-generated text is easy to edit and diff.
000
Nan Xiao @nanxstats.bsky.social · 13/06/2025
A small vibe coding experiment with Claude Code: nanx.me/blog/post/cl...
nanx.me
Refactoring the GPU Selector App with Claude Code: A Vibe Coding Experiment
I rebuilt my deep learning GPU selector app using Claude Code, and here is what I learned from this small vibe coding experiment.
000
Nan Xiao @nanxstats.bsky.social · 03/06/2025
My first #PyCon experience nanx.me/blog/post/my...
nanx.me
My First PyCon Experience
I attended my first PyCon in Pittsburgh. Here is what caught my attention as a statistician by learning from the Python community.
000
Nan Xiao @nanxstats.bsky.social · 12/05/2025
pkgdown.offline: Build pkgdown websites without an internet connection nanx.me/blog/post/pk... #rstats
nanx.me
pkgdown.offline: Build pkgdown websites without an internet connection
Introducing pkgdown.offline, an R package for building pkgdown websites entirely offline. Learn how it addresses recent pkgdown internet requirements, essential for CI/CD pipelines and air-gapped envi...
000
Nan Xiao @nanxstats.bsky.social · 22/04/2025
Customizing Inter with alternative optical sizing presets nanx.me/blog/post/in...
nanx.me
Customizing Inter with alternative optical sizing presets
Fine-tune the popular Inter typeface using optical sizing (opsz) and letter spacing. This post introduces a set of CSS presets to easily adjust its appearance for optimal readability in your web proje...
000
Nan Xiao @nanxstats.bsky.social · 25/03/2025
Optimize R foreach loops for parallelism: avoid the .combine argument nanx.me/blog/post/r-... #rstats
nanx.me
Optimize R foreach loops for parallelism: avoid the .combine argument
Learn why using .combine in R parallel foreach loops can harm performance. Benchmark comparisons show that manual aggregation methods like data.table::rbindlist() significantly accelerate execution.
022
Nan Xiao @nanxstats.bsky.social · 28/02/2025
R packages using Rust nanx.me/blog/post/r-... #rstats
nanx.me
R packages using Rust
r-rust-pkgs is a curated GitHub repository that collects R packages on CRAN that use Rust. It provides a centralized resource for finding high-performance R packages built with Rust, leveraging Rust's...
0101
Nan Xiao @nanxstats.bsky.social · 14/02/2025
Introducing rtflite for Python nanx.me/blog/post/rt...
nanx.me
Introducing rtflite for Python
rtflite is a lightweight Python package for generating production-ready tables, listings, and figures (TLFs) in RTF format, designed for clinical study reporting and regulatory submissions while integ...
000
Nan Xiao @nanxstats.bsky.social · 10/02/2025
Prevent RStudio 2024.12.0 from adding ProjectID to .Rproj files nanx.me/blog/post/rs... #rstats
nanx.me
Prevent RStudio 2024.12.0 from adding ProjectID to .Rproj files
RStudio 2024.12.0 unconditionally adds a ProjectID field to .Rproj files, causing unwanted Git diffs and potential editing conflicts. This post explains the issue and provides an R script to automatic...
120
Nan Xiao @nanxstats.bsky.social · 16/01/2025
Introducing pkglite for #Python nanx.me/blog/post/pk...
nanx.me
Introducing pkglite for Python
pkglite for Python is a simple framework to pack source packages written in any language into a text file and restore them, supporting reproducible research and standard engineering workflows across d...
000
Nan Xiao @nanxstats.bsky.social · 06/01/2025
Customize testthat snapshot directory with monkey patching nanx.me/blog/post/te... #rstats
nanx.me
Customize testthat snapshot directory with monkey patching
Learn how to customize the default snapshot directory in testthat using monkey patching in R. This post provides a practical solution for modifying testthat internals to meet your project's needs, wit...
020
Nan Xiao @nanxstats.bsky.social · 17/12/2024
Skip splash screen in RStudio IDE 2024.12+ nanx.me/blog/post/rs... #rstats
nanx.me
Skip RStudio splash screen
Learn how to skip the RStudio IDE splash screen using simple automation scripts for macOS, Linux, and Windows.
021
Nan Xiao @nanxstats.bsky.social · 06/12/2024
tinyvdiff: Minimalist visual regression testing plugin for pytest nanx.me/blog/post/ti...
nanx.me
tinyvdiff: Minimalist visual regression testing plugin for pytest
Introducing tinyvdiff, a minimalist pytest plugin for visual regression testing in Python. Designed for reproducible workflows, tinyvdiff converts PDFs into SVG snapshots for comparing appearance chan...
020