Nan Xiao
Blog
Software
Papers
Talks
Books
About
Blog
2025
Customizing Inter with alternative optical sizing presets
Apr 21, 2025
Optimize R foreach loops for parallelism: avoid the .combine argument
Mar 24, 2025
R packages using Rust
Feb 28, 2025
Introducing rtflite for Python
Feb 13, 2025
Prevent RStudio 2024.12.0 from adding ProjectID to .Rproj files
Feb 09, 2025
Introducing pkglite for Python
Jan 16, 2025
Customize testthat snapshot directory with monkey patching
Jan 05, 2025
2024
Skip RStudio splash screen
Dec 17, 2024
tinyvdiff: Minimalist visual regression testing plugin for pytest
Dec 04, 2024
tinytopics: GPU-accelerated topic modeling via constrained neural Poisson NMF
Oct 26, 2024
FLUX.1 + LoRA for styled image generation
Sep 30, 2024
Group sequential trials in industry: a 30-year perspective
Sep 28, 2024
R command-line tool paths on Windows
Sep 15, 2024
ssw is on CRAN
Sep 08, 2024
ggsci 3.2.0: new color palettes from Observable, Bootstrap, and Tailwind CSS
Jul 06, 2024
You should (maybe) enable font ligatures when building with GPT models
Jun 19, 2024
ggsci 3.1.0, ggsurvfit example, and reverse dependency check
May 23, 2024
msaenet 3.1.2 and a sparse survival modeling example
May 12, 2024
stackgbm is on CRAN
Apr 30, 2024
R Package Release Notes: ggsci, protr, and msaenet (Spring 2024)
Apr 21, 2024
Prompt LLMs with R Package Source Code Using pkglite
Mar 28, 2024
Use STIX Fonts in R Markdown and Quarto for Readability
Jan 15, 2024
2023
protr 1.7-0
Nov 10, 2023
9 Questions About Adaptive Design
Oct 06, 2023
Base R Shortcuts: A Repository of Efficient Base R Coding Patterns
Jun 27, 2023
Create Engaging Word Cloud Visualizations from Your Research
Jun 23, 2023
Rethinking the Word Cloud Generator
Jun 19, 2023
Context-Free R Package Release Checklist Generation with usethis
Jun 12, 2023
Fix the 'non-numeric argument to binary operator' Error in R Markdown and Quarto
Jun 06, 2023
Responsive Design for Statistical Graphics with Shiny and ggplot2
Jun 05, 2023
Sparse Index Tracking with msaenet and CVXR: A Two-Stage Regression Approach
May 31, 2023
Find Your Perfect Open Source Font: Introducing the Interactive Typeface Lookbook
May 10, 2023
Compressing PNG Output for R Packages with pngquant and ragg
Apr 09, 2023
Bolden Your Typography in R Markdown and Quarto with MLModern
Mar 20, 2023
ggsci 3.0.0
Mar 08, 2023
Deep Learning GPU Selector
Jan 29, 2023
A General-Purpose Link Checker for R Markdown and Quarto Projects
Jan 16, 2023
Announcing My First VS Code Extension: textmate.rstheme
Jan 02, 2023
2022
New Paper Published: eCTD Submission with Analysis Using R
Sep 28, 2022
GUI Automation with RobotJS
Sep 05, 2022
Training Tissue-Specific Gene Embeddings on GTEx Data
Aug 21, 2022
Automate HTML to PDF Printing with {promises} and {chromote}
Aug 20, 2022
The Past and Future of Shiny Keynote at rstudio::conf(2022)
Aug 17, 2022
Parsing Human-Readable Text Data with Readability.js and R
Aug 02, 2022
The zlib Algorithm for Text/Binary File Classification
Jun 14, 2022
Sensible Defaults
Jun 07, 2022
Honey, I Serialized the Data
May 01, 2022
Five Minute Shiny: Skeleton Loading Screen
Apr 24, 2022
Five Minute Shiny: File Input Area Widget
Apr 17, 2022
Five Minute Shiny: Implement the Switch Input with Bootstrap 5
Apr 14, 2022
Building Paginated News Lists in R Markdown and Shiny with DT
Apr 10, 2022
Adaptive ggplot2 Color Scales with Color Interpolation
Apr 06, 2022
Architecting Large Shiny Apps with Minimal First Contentful Paint Time
Mar 30, 2022
A Simple Link Checker for Hugo and Blogdown Websites
Feb 22, 2022
Font Variant Numeric
Jan 19, 2022
2021
More Than 1,500 File Extensions Are Used Inside R Packages
Dec 01, 2021
Build a PC During the Great GPU Shortage
Sep 26, 2021
Rebranding R Packages with Hexagon Stickers: A Minimalist Approach
Feb 08, 2021
2020
Bayesian Lasso with greta
Dec 07, 2020
Tanka: A Minimalist Bootstrap 4 Theme for Hugo and Blogdown
Nov 23, 2020
Fuzz Testing Your R Code
Sep 28, 2020
Migrating from Disqus to Utterances
Sep 19, 2020
Customize Syntax Highlighting for R distill Websites
May 22, 2020
Disposable Computing with callr
Apr 11, 2020
Self-Hosting Shiny Apps with Linode and Cloudflare
Feb 26, 2020
2019
New Packages on CRAN: tidycwl and biocompute
Dec 14, 2019
Building Regularized Logistic Regressions from Scratch with Computational Graphs in R
Oct 06, 2019
Peak Experience
Oct 02, 2019
64GB RAM
Jun 11, 2019
Removing Google Analytics from All My Websites
Jan 28, 2019
2018
A List of Awesome Shiny Extension Packages
Dec 04, 2018
Renga: A Clean Bootstrap 4 Theme for Hugo and Blogdown
Nov 10, 2018
General-Purpose Programming with R
Oct 25, 2018
The Accidental Product Success
Oct 15, 2018
Implementing Triplet Losses for Implicit Feedback Recommender Systems with R and Keras
Aug 29, 2018
How a Financial Crisis Started
Aug 29, 2018
Prototyping a Recommender System for Binary Implicit Feedback Data with R and Keras
Aug 22, 2018
Building My First Deep Learning Machine
Aug 20, 2018
My OCD for Inbox Zero
Aug 15, 2018
John M. Chambers Award, Product Sense, and the Feature Roadmap for liftr
Jul 30, 2018
It Has Been 15 Years Since MSBlast
Jul 15, 2018
Save the Link Like a Boss
Jul 01, 2018
Learn to Say No The Hard Way
Jun 28, 2018
Shiny Now Supports Async Execution
May 21, 2018
An HTTPS-Censored Future
May 18, 2018
Taking the Long View
May 02, 2018
10 Things That Matter in Deep Learning (1/5)
Apr 12, 2018
The Return of the Native Font Stack
Mar 13, 2018
3 Simple Criteria for Choosing Open Source Projects
Mar 12, 2018
Nothing Without Love
Feb 15, 2018
Buzzword Map, or Buzz World Map
Jan 13, 2018
2017
Papers in My Heart (2017)
Dec 31, 2017
Tanka: A Minimalist Theme for Hugo and Blogdown
Dec 27, 2017
Collected Wisdom
Dec 27, 2017
Time Marches On
Dec 26, 2017