It has been more than two years since Karthik requested the (most famous?) yolo = TRUE feature in xaringan, and I feel amused to see people still having great fun with it.
The implementation was actually not too complicated. The idea is that we just randomly insert new slides with background images (the default is Karl’s mustache photo) into existing slides. We know that slide pages are separated by three dashes ---, so what we need to do is to find out the three dashes, and replace a random set of them with
---
background-image: url(path/to/the/image)
---
In fact, there is a function xaringan:::yolofy() to implement this. It has two arguments: x, a character vector of the Markdown source of the original slides, and config, a list of configurations that specify how many times (or probability) you want the image to appear in the slides, and which image you want to use.
x2 = xaringan:::yolofy(
x = c('---', 'First', '---', 'Second', '---', 'Third'),
config = list(times = 2, img = 'karl-mustache.jpg')
)
cat(x2, sep = '\n')
---
background-image: url(karl-mustache.jpg)
---
First
---
Second
---
background-image: url(karl-mustache.jpg)
---
Third
If you have read the source code of xaringan::yolofy(), you will realize that the yolo option of xaringan::moon_reader is flexible. Below are all valid usage:
output:
xaringan::moon_reader:
yolo: true # make Karl appear once randomly
output:
xaringan::moon_reader:
yolo: false
output:
xaringan::moon_reader:
yolo: 3 # let Karl appear at most 3 times
output:
xaringan::moon_reader:
yolo: 0.2 # appear in 20% of original slides
output:
xaringan::moon_reader:
yolo:
times: 5
img: kangaroo.jpg # use a different image 5 times
This has been one of the most representative “low effort, high return” examples in my packages. I think the actual implementation contributed the least to its influence. The key was Karthik’s idea and Karl Bromona-Lisa’s picture. I was just lucky enough to have seen both.
Donate
As a freelancer (currently working as a contractor) and a dad of three kids, I truly appreciate your donation to support my writing and open-source software development! Your contribution helps me cope with financial uncertainty better, so I can spend more time on producing high-quality content and software. You can make a donation through methods below.
-
Venmo:
@yihui_xie, or Zelle:xie@yihui.name -
Paypal
-
If you have a Paypal account, you can follow the link https://paypal.me/YihuiXie or find me on Paypal via my email
xie@yihui.name. Please choose the payment type as “Family and Friends” (instead of “Goods and Services”) to avoid extra fees. -
If you don’t have Paypal, you may donate through this link via your debit or credit card. Paypal will charge a fee on my side.
-
-
Other ways:
WeChat Pay (微信支付:谢益辉) Alipay (支付宝:谢益辉) 

When sending money, please be sure to add a note “gift” or “donation” if possible, so it won’t be treated as my taxable income but a genuine gift. Needless to say, donation is completely voluntary and I appreciate any amount you can give.
Please feel free to email me if you prefer a different way to give. Thank you very much!
I’ll give back a significant portion of the donations to the open-source community and charities. For the record, I received about $30,000 in total (before tax) in 2024-25, and gave back about $15,000 (after tax).