Skip to contents

Throwback Thursday (TT) posts are sent via our social media accounts and highlight a historical blog post.

We use the matomo package to review Matomo blog view metrics and choose a post that which fits any or some of the following:

  • Was published in the same month as the TT post
  • Was published a milestone of years ago (5, 10, 15, etc.)
  • Was an important announcement (first Champions Program, first Dev guide published, etc.)
  • Something specifically related to rOpenSci as an organization
  • Was a popular post
  • Is a perennial theme/idea (i.e. Software Peer Review)

Pick posts that have not been (or have not recently been) highlighted in a TT.

We track TT posts in a private project on rosadmin so we can check if we’ve already used a post in the past.

First we need to update our cached list of post reviews.

matomo_update()
#> Fetching segments
#> Fetching pages and page views
#> Writing new Matomo views to:
#> /home/steffi/.local/share/R/promoutils/views

No we can review the ‘popularity’ of historical posts for a particular month (here, we review for May, the 5th month). In Positron, if the window is wide enough to show the full URL, you should be able to click on the links to open the blog post in your browser to help you decide.

tt_review(which_month = 5)
#> # A tibble: 58 × 3
#>    post_date  nb_visits url                                                                             
#>    <date>         <dbl> <chr>                                                                           
#>  1 2018-05-15      6068 https://ropensci.org/blog/2018/05/15/icon/                                      
#>  2 2020-05-07      4339 https://ropensci.org/blog/2020/05/07/rmd-citations/                             
#>  3 2019-05-09      2702 https://ropensci.org/blog/2019/05/09/tradestatistics/                           
#>  4 2017-05-16      1713 https://ropensci.org/blog/2017/05/16/lingtypology/                              
#>  5 2020-05-28       788 https://ropensci.org/blog/2020/05/28/rsvg2/                                     
#>  6 2015-05-20       621 https://ropensci.org/blog/2015/05/20/database-interfaces/                       
#>  7 2018-05-17       577 https://ropensci.org/blog/2018/05/17/treeio/                                    
#>  8 2023-05-31       519 https://ropensci.org/blog/2023/05/31/runiverse-snapshots/                       
#>  9 2018-05-25       417 https://ropensci.org/blog/2018/05/25/vcr-http-request-cacahing/                 
#> 10 2020-05-19       415 https://ropensci.org/blog/2020/05/19/covid-19-open-data/                        
#> 11 2021-05-04       387 https://ropensci.org/blog/2021/05/04/what-s-new-in-terrainr-0-4-0/              
#> 12 2022-05-31       288 https://ropensci.org/blog/2022/05/31/chatops-review-system-github/              
#> 13 2019-05-14       278 https://ropensci.org/blog/2019/05/14/nasapower/                                 
#> 14 2024-05-17       249 https://ropensci.org/blog/2024/05/17/communication-tips-oss-project/            
#> 15 2026-05-13       242 https://ropensci.org/blog/2026/05/13/anniversary2026/                           
#> 16 2025-05-09       226 https://ropensci.org/blog/2025/05/09/ror/                                       
#> 17 2023-05-17       210 https://ropensci.org/blog/2023/05/17/scheduling-mastodon/                       
#> 18 2013-05-16       131 https://ropensci.org/blog/2013/05/16/pyopensci/                                 
#> 19 2023-05-05       126 https://ropensci.org/blog/2023/05/05/ropensci-champions-program-teams-meet-caro…
#> 20 2025-05-15       114 https://ropensci.org/blog/2025/05/15/puentes-comunidades-campeones-ropensci/    
#> 21 2023-05-16       111 https://ropensci.org/blog/2023/05/16/creditas-is-now-part/                      
#> 22 2018-05-23       111 https://ropensci.org/blog/2018/05/23/taxize-seven-years/                        
#> 23 2022-05-16       109 https://ropensci.org/blog/2022/05/16/requiring-2fa-for-the-ropensci-github-orga…
#> 24 2026-05-06        81 https://ropensci.org/blog/2026/05/06/mentors-2026/                              
#> 25 2023-05-18        78 https://ropensci.org/blog/2023/05/18/ropensci-champions-program-teams-meet-césa…
#> 26 2018-05-08        75 https://ropensci.org/blog/2018/05/08/nomisr/                                    
#> 27 2023-05-11        69 https://ropensci.org/blog/2023/05/11/intro-champion-program-team-victor-laura/  
#> 28 2018-05-03        67 https://ropensci.org/blog/2018/05/03/onboarding-is-work/                        
#> 29 2023-05-09        63 https://ropensci.org/blog/2023/05/09/ropensci-champions-program-teams-meet-hayd…
#> 30 2013-05-27        62 https://ropensci.org/blog/2013/05/27/rbison/                                    
#> 31 2018-05-18        50 https://ropensci.org/blog/2018/05/18/drake-hpc/                                 
#> 32 2014-05-14        47 https://ropensci.org/blog/2014/05/14/ropenhack/                                 
#> 33 2018-05-10        42 https://ropensci.org/blog/2018/05/10/onboarding-social-weather/                 
#> 34 2019-05-21        37 https://ropensci.org/blog/2019/05/21/rodev/                                     
#> 35 2019-05-16        34 https://ropensci.org/blog/2019/05/16/dev-guide-update/                          
#> 36 2017-05-03        32 https://ropensci.org/blog/2017/05/03/textworkshop17/                            
#> 37 2019-05-28        32 https://ropensci.org/blog/2019/05/28/ramlegacy/                                 
#> 38 2014-05-20        25 https://ropensci.org/blog/2014/05/20/taxize_v03/                                
#> 39 2013-05-10        20 https://ropensci.org/blog/2013/05/10/introducing-befdata/                       
#> 40 2016-05-25        17 https://ropensci.org/blog/2016/05/25/software-sustanability-ropensci/           
#> 41 2017-05-01        17 https://ropensci.org/blog/2017/05/01/ropensci-at-meetings/                      
#> 42 2013-05-20        14 https://ropensci.org/blog/2013/05/20/updates/                                   
#> 43 2021-05-03         1 https://ropensci.org/blog/2021/05/03/what-s-new-in-terrainr-0-4-0/              
#> 44 2018-05-08         1 https://ropensci.org/blog/2018/05/08/reproducibility-guide/                     
#> 45 2019-05-09         1 https://ropensci.org/blog/2019/05/09/tradestatistihttps:/oec.world/en/profile/b…
#> 46 2019-05-09         1 https://ropensci.org/blog/2019/05/09/trahttps:/atlas.cid.harvard.edu/explore/st…
#> 47 2019-05-21         1 https://ropensci.org/blog/2019/05/21/reproducible-research/                     
#> 48 2019-05-09         1 https://ropensci.org/blog/2019/05/09/tradestatisticshttps:/atlas.hks.harvard.ed…
#> 49 2019-05-09         1 https://ropensci.org/blog/2019/05/09/trahttps:/atlas.cid.harvard.edu/explore?co…
#> 50 2019-05-09         1 https://ropensci.org/blog/2019/05/09/trahttps:/atlas.cid.harvard.edu/explore?co…
#> 51 2019-05-09         1 https://ropensci.org/blog/2019/05/09/trhttps:/atlas.cid.harvard.edu/explore?cou…
#> 52 2019-05-09         1 https://ropensci.org/blog/2019/05/09https:/atlas.cid.harvard.edu/explore/trades…
#> 53 2019-05-09         1 https://ropensci.org/blog/2019/05/09https:/atlas.cid.harvard.edu/explore?countr…
#> 54 2019-05-09         1 https://ropensci.org/blog/2019/05/09https:/atlas.hks.harvard.edu/explore/trades…
#> 55 2019-05-09         1 https://ropensci.org/blog/2019/05/09https:/atlas.hks.harvard.edu/tradestatistic…
#> 56 2019-05-09         1 https://ropensci.org/blog/2019/05/09/trahttps:/atlas.cid.harvard.edu/profile/co…
#> 57 2019-05-09         1 https://ropensci.org/blog/2019/05/09/tradestatisatlas.cid.harvard.edu/market-sh…
#> 58 2019-05-09         1 https://ropensci.org/blog/2019/05/09/tradhttps:/atlas.hks.harvard.edu/explore?t…

Once we’ve decided on a post, we can use the tt_post() function to grab the relevant details and prepare the code for a series of socials_post_issues()

tt_post(
  date = "2021-05-09", # Original blog post date
  title = "Roaringly Acknowledge Organizations with ROR IDs in DESCRIPTION", # Title or original post
  url = "ror", # Slug from the original post
  print = TRUE # only here for illustration, so the code is printed in addition to being copied
)
#> 
#> promoutils::socials_post_issue(
#>   time = "2027-05-06 08:00:00", tz = "America/Vancouver",
#>   where = "mastodon", dry_run = FALSE,
#>   over_char_limit = cli::cli_warn,
#>   title = "TT",
#>   body = "[blog] Throw-back Thursday!
#> 
#> <-- Interesting description/blurb mentioning the author -->
#> 
#> :hourglass_flowing_sand: Roaringly Acknowledge Organizations with ROR IDs in DESCRIPTION
#> :calendar: May 9, 2021
#> :link: https://ropensci.org/blog/2021/05/09/ror/
#> ")
#> 
#> 
#> promoutils::socials_post_issue(
#>   time = "2027-05-06 08:00:00", tz = "America/Vancouver",
#>   where = "linkedin", dry_run = FALSE,
#>   over_char_limit = cli::cli_warn,
#>   title = "TT",
#>   body = "[blog] Throw-back Thursday!
#> 
#> <-- Interesting description/blurb mentioning the author -->
#> 
#> :hourglass_flowing_sand: Roaringly Acknowledge Organizations with ROR IDs in DESCRIPTION
#> :calendar: May 9, 2021
#> :link: https://ropensci.org/blog/2021/05/09/ror/
#> ")

We paste this code into an R script. Note that while it automatically gets the post information and the date when this TT should be posted, we still need to flesh this post out and add some details.

So, let’s do so:

# May 2026 -------------------------------------------------------------------
promoutils::socials_post_issue(
  time = "2026-05-07 08:00:00",
  tz = "America/Vancouver",
  where = "mastodon",
  dry_run = FALSE,
  over_char_limit = cli::cli_warn,
  title = "TT",
  body = "[blog] Throw-back Thursday!

Last year @maelle@mastodon.social introduced the idea of ROR IDs (tldr; ROR IDs are to Organizations what ORCiDs are to individuals). Have you set your organizations up with ROR IDs and put them in all the docs yet? 

:hourglass_flowing_sand: Roaringly Acknowledge Organizations with ROR IDs in DESCRIPTION
:calendar: May 9, 2025
:link: https://ropensci.org/blog/2025/05/09/ror/
"
)

promoutils::socials_post_issue(
  time = "2026-05-07 08:00:00",
  tz = "America/Vancouver",
  where = "linkedin",
  dry_run = FALSE,
  over_char_limit = cli::cli_warn,
  title = "TT",
  body = "[blog] Throw-back Thursday!

  Last year Maëlle Salmon introduced the idea of ROR IDs (tldr; ROR IDs are to Organizations what ORCiDs are to individuals). Have you set your organizations up with ROR IDs and put them in all the docs yet? 

:hourglass_flowing_sand: Roaringly Acknowledge Organizations with ROR IDs in DESCRIPTION
:calendar: May 9, 2025
:link: https://ropensci.org/blog/2025/05/09/ror/
"
)

Now we can run this code which will create the draft post issues in the GitHub repository. It will also open these issues in the browser, don’t forget to review and remove the ‘draft’ and ‘needs-review’ labels to finalize the scheduling!