Advertisement · 728 × 90

Posts by Yihui Xie

Announcing TinyTeX Binaries for arm64 and musl-based Linux - Yihui Xie | 谢益辉 Three years ago, Cole Arendt requested pre-built TinyTeX binaries for ARM Linux. Today, I’m happy to announce that we now provide pre-built TinyTeX binaries for arm64 and musl-based Linux (e.g. ...

In case you aren't aware, TinyTeX has started offering binaries for ARM and musl-based Linux since last month: yihui.org/en/2026/03/t... Enjoy the extra 5 minutes saved!

BTW, I didn't know musl/Alpine Linux before. While working on TinyTeX binary for it, I was intrigued and also quite impressed.

5 hours ago 3 2 0 0
TinyTeX - Yihui Xie | 谢益辉 TinyTeX is a custom LaTeX distribution based on TeX Live that is small in size, but functions well in most cases, especially for R users. If you run into the problem of missing LaTeX packages, it &hel...

Alternatively you can use the shell script to install it (which I'd recommend because the script is always up-to-date and not subject to the R package tinytex): yihui.org/tinytex/#ins... 2/2

6 hours ago 1 0 0 0
Docker CI/CD requests wrong URL while installing TinyTeX · Issue #497 · rstudio/tinytex I have a CI/CD workflow that installs tinytex in a Docker-Container like this: FROM rocker/r-ver:4.4.0 RUN install2.r --error tinytex && \ R -q -e "tinytex::install_tinytex(); tinytex::reinstall_ti...

If you install TinyTeX via tinytex::install_tinytex(), please make sure you are using the latest CRAN version of tinytex (>= v0.59): github.com/rstudio/tiny... Older versions will point to an outdated download link and fail the installation. 1/2

6 hours ago 1 2 1 0

The alternative is I provide an option so edge case users can explicitly grab the extra resources when needed. I don't like this manual solution, but it's hard to make it automatic (possible, but that would be a long way to go).

6 hours ago 0 0 0 0

For this particular problem, I don't need AI engineers. It's a matter of human decision. If I don't care about this 400Kb, I could ship this bloat to all users, which would make my life (code) easier but is wasteful to most users. The bloat is only for edge cases.

6 hours ago 0 0 1 0
tinypng() Benchmarks

Here are some benchmarks and demos for PNG: pkg.yihui.org/tinyimg/exam...

10 hours ago 2 2 0 0
Preview
GitHub - yihui/tinyimg: An R package for optimizing and compressing images An R package for optimizing and compressing images - yihui/tinyimg

My first experiment with using Rust in an R package: github.com/yihui/tinyimg Blog post: yihui.org/en/2026/03/t... I failed to figure out an ideal universal threshold for the color difference for lossy PNG optimization. If anyone has expertise on this, I'll truly appreciate your help!

11 hours ago 13 3 2 0

So sad... I can't imagine what this meant for his family. It hurts so much when I think of his 1 year old son... I just wrote down a few memories about Tomas in a blog post: yihui.org/en/2026/04/t...

1 day ago 15 0 0 0
Advertisement

Sometimes I feel I must be crazy to spend a whole day trying to come up with a proper solution to save only 400Kb for users. Storage is cheap, bandwidth is fast, my time is precious, and does anyone (besides my insane self) care about this 400Kb at all?

1 day ago 29 3 5 0
gglite/R/render.R at 52612e171ba387a79e7ebc24a2a9bbef2f53a468 · yihui/gglite (Experimental!!) An R package for data visualization via g2 (based on the Grammar of Graphics) - yihui/gglite

I'm not sure if I can explain this in a short message, but historically it was not easy to define S3 methods in your package on S3 generics from other ppl's pkgs without taking hard dependency on their pkgs. Things have changed later. Now it's just a few lines of code like github.com/yihui/gglite...

2 days ago 1 0 0 0

So your idea of using S3 methods is absolutely a great one, but it all depends on whether the function is S3, e.g. print() and summary(), perfect; table() and title(), nope...

2 days ago 0 0 1 0

Actually no, it's not forbidden. S3 was designed to be extensible, not only by the owner of the S3 generic, but any other people. You are allowed to define an S3 method on an S3 generic that you don't own (e.g. in base R). Unfortunately, many good names are not S3, such as `stats::filter()`.

2 days ago 1 0 2 0

`grepl('^[A-Z]', commit_message)` is a simple indicator on whether the work was done by me or AI. If a git commit message starts with a lowercase letter, you can know for sure the work was done by my own fingers because I'm often too lazy/tired to press Shift when writing a commit message.

2 days ago 24 4 0 1

Yes, that's a good idea in some cases. For a package that often requires users to call multiple functions in one expression (e.g. pipe), I feel the prefix naming approach is quite clumsy, e.g.

do_setup(data) |>
do_process(args...) |>
do_more(...) |>
do_summarize() |>
do_view()

4 days ago 1 1 1 0

Perhaps this should be called "liteeval"... github.com/yihui/gglite...

4 days ago 5 0 0 0

I share only one goal with tidyeval: to have a way to avoid typing quotes on variable names. Other than that, I have no interest in tidyeval and never tried to learn the magic there. Formula is only for typing and extracting bare variable names as strings, and there's no eval() going on at all.

4 days ago 3 0 1 0
Advertisement

Thank you! I have to admit that I have far less expertise on graphics than on R Markdown, although it had been my strongest interest for a number of years in the beginning of my R journey. Needless to say, I'd welcome any feedback from experts like you!

4 days ago 3 0 0 0

Oh yes, "reverse title case" to the rescue! titlE(), legenD(), datA(), vieW()... Or "wave case": LaOuT(), tRaNsFoRm(), BoXpLoT()... Suddenly so many free names to claim! AI doesn't need to press Shift when coding for us, so no problem for AI agents. Deal.

5 days ago 6 0 1 0

Naming used to be hard because it was just hard to come up with good names (expressive, memorable, etc). Now I think naming is hard mostly because good names have been exhausted. I feel so hard to find a verb or noun for a func name that hasn't been used in base R or any moderately popular R package

5 days ago 28 1 2 0

One of the best things for keeping things ultra lightweight is that webR-based applications can run faster, e.g., pkg.yihui.org/gglite/playg...

5 days ago 11 0 1 0

I think that has become my pattern---trying to avoid pandoc, knitr, htmlwidgets, jquery, bootstrap... For this particular pkg, if two <script> tags work just fine, there's no reason to introduce deps on htmlwidgets (yes, the pkg works for rmarkdown, quarto, and even jupyter although i use none)

5 days ago 11 0 1 0

I have to emphasize that it's still at a very very stage and many things haven't settled (even function names). I've been thinking this for years but started (vibe) coding mostly from last week... Please feel free to provide feedback via Github issues, or send PRs from Copilot/Claude/whatever.

5 days ago 30 0 1 0

or:

within(data.frame(x = rnorm(10)), y <- 3 * x + 5)

1 month ago 2 0 0 0

Yes, (in theory) you can. I mentioned the possibility in the last section of the post.

1 month ago 1 0 0 0
The man (manual of R packages), the myth (extremely confusing), the legend (`graphics::legend()`). Generated via Google Gemini with my intentionally confusing prompts.

The man (manual of R packages), the myth (extremely confusing), the legend (`graphics::legend()`). Generated via Google Gemini with my intentionally confusing prompts.

No one understands my soul better than you.

2 months ago 2 0 0 0

Sorry I'm a few years late to the party, but I'm here finally! :) yihui.org/en/2026/01/h... Thank you all so much for your generous support over the past two years!

2 months ago 99 9 5 2
Advertisement

With knitr/rmarkdown, you can also include other chunks in one chunk: bookdown.org/yihui/rmarkd... Unless I misread Knuth's paper when I was a graduate student, I think knitr had implemented what he mentioned.

7 months ago 3 0 0 0

Unfortunately or maybe fortunately, it's no longer actively maintained because there isn't much to maintain anymore. Pin the Hugo version, and then it's stable as rock :)

8 months ago 2 0 0 0

I wonder if this new $600 iPhone would last another 10 years. I'm not optimistic about it... I hate that things are so tightly tied to phones, and phone apps become the only way out.

10 months ago 0 0 0 0

Finally I had to let go my 10-year-old iPhone 6 last week because I must install MS Authenticator. Basically my old iPhone couldn't install any app due to its age, which had been fine to me because I use only one app primarily until last week when certain IT department started requiring this MS app.

10 months ago 1 0 1 0