Dear past self: blog


February 27, 2020

1930s black and white image of a man using a printing press.

I’m pretty sure that {blogdown} is a bit easier than {printingpressdown}1.


There are many reasons to start that R blog you’ve been thinking about. First and foremost, do it for you.

Why blog?

I’ve stumbled into writing 50 posts on this blog. There was no plan. I have no strategy. It’s working so far.

My only regret was not starting sooner. How would I convince me-from-the-past?

  1. It’s your reference library
  2. It only has to be good enough
  3. There are others like you

I’ll explain.

1. It’s your reference library

I forget everything. That’s especially true for code.

Keeping a written record of what you’ve learnt is a good way of storing that information outside of your head.

Writing a narrative will help explain the code and make sure you understand it in your own words. That’ll make it easier to pick up later.

It helps if what you write is available to you everywhere all the time as well. It needs to be open and on the internet.

Proof is in the pudding: I’ve lost count of the number of times I’ve referred back to my own posts on creating an R package, web scraping and fixing leaky pipes, for example.

For me, ‘blog or it didn’t happen’ is probably a good mantra.

2. It only has to be good enough

Perfectionism is cruel and returns are diminishing. I sat on a thesis for months longer than I should have. Did it improve in that time? Marginally. Did it affect the outcome? Not really.

The spell was broken when someone told me that ‘it only has to be good enough’.

You have finite time and too much stuff to do, so maybe efficiency should be the focus. There’s a real, obtainable, minimum level of effort that will get you to a thing that works.

Consider that in the context of writing blog posts for yourself. They only have to be good enough to remind you of what you did so you can redo the thing at some point in the future.

This will also encourage you to keep it short and simple. You’re far more likely to finish it that way. Write a follow-up later if you want to.

3. There are others like you

R solves so many problems efficiently and reproducibly. It’s particularly needed in the public sector, where I work, to build trust, reduce costs and do things quicker. I think there are plenty of people in this boat; why else are you reading this?

I’m not a ‘programmer’, however. I wasn’t specifically trained in statistics. I definitely didn’t ‘get’ R at first and I’m probably never going to be an ‘expert’. So I might as well keep learning and sharing.

Being visible with your learning means that others can help you and give you ideas. Being open might even encourage other learners to get involved, too.

Consider people like Sharla Gelfand and David Keyes (of R for the Rest of Us), who are visible on Twitter and unafraid of asking questions. One of R’s unique selling points is its friendly community. Make the most of it.

Ultimately, you don’t owe anything to anyone. But there are other people like you. Why not learn in the open and help lower the barrier to entry?

More reasons

I think this would be enough to convince me-from-the-past, but maybe it’s not enough for you.

After I started writing this I came across Rebecca Barter’s nice talk on Becoming an R Blogger at the recent RStudio Conference. Rebecca has also written a supporting blog post with some helpful information.

In particular, Rebecca mentions some reasons beyond ‘doing it for yourself’, like building up a portfolio of work, gaining exposure and squeezing some productivity into your procrastination. All extremely valid.

Try it and let me know how it goes.


Session info
Last rendered: 2023-07-22 16:10:55 BST
R version 4.3.1 (2023-06-16)
Platform: aarch64-apple-darwin20 (64-bit)
Running under: macOS Ventura 13.2.1

Matrix products: default
BLAS:   /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRblas.0.dylib 
LAPACK: /Library/Frameworks/R.framework/Versions/4.3-arm64/Resources/lib/libRlapack.dylib;  LAPACK version 3.11.0

[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8

time zone: Europe/London
tzcode source: internal

attached base packages:
[1] stats     graphics  grDevices utils     datasets  methods   base     

loaded via a namespace (and not attached):
 [1] htmlwidgets_1.6.2 compiler_4.3.1    fastmap_1.1.1     cli_3.6.1        
 [5] tools_4.3.1       htmltools_0.5.5   rstudioapi_0.15.0 yaml_2.3.7       
 [9] rmarkdown_2.23    knitr_1.43.1      jsonlite_1.8.7    xfun_0.39        
[13] digest_0.6.33     rlang_1.1.1       evaluate_0.21    


  1. Public Domain.↩︎