I got really, really bored this week, so I decided to go back to the R package, tinieR, that I released last year (if you haven’t seen it before, tinieR shrinks image file sizes using the TinyPNG.com API). My idle tinkering ended up with a few cool little additions to the package, so I figured it was time for a new release: v0.4.1!
Why 0.4.1? Because I set it all up to be 0.4.0, but then I wasn’t entirely happy with some things and kept tinkering, and didn’t realise that it wasn’t exactly straightforward to change git release/tag options. So .1 it is…
Here are the main additions to the package:
- Added ability to set global defaults for
tinify_defaults(). Changes made are printed to the console, and if called without any arguments, prints all current default settings.
- Added new
tinify()to change the “_tiny” suffix applied to tinified file names.
- Added new
return_path = "proj"option to
tinify()to return the path to the newly tinified file relative to the project directory, no matter the current working directory.
You can read more in the new package vignette here.
Useful things I learnt
Aside from being slightly useful, the main reason I work on tinieR is to give me an excuse to poke around in R and learn new things about the language. So what did this latest round of tinkering show me?
tinify_defaults()really taught me about how to set and retrieve options in R, and in particular, how useful it is that they have a
defaultargument to fall back on when not set.
- It also taught me more about returning
warningsin R, how to suppress warnings when required, and how to use
tryCatchto collect errors and supply my own or perform a new action.
- …And how to deal with storing, setting, and retrieving these default options for use in package tests (using
- I didn’t end up actually using it (yet), but I also found out about the crayon package for printing coloured text to the R console – fun!
- The new
return_pathgot me familiar with the rprojroot package. I’d used it before for… something that I forget, but it was great to really spend some time poking around in it. It’s a very useful package when you need it!
- I wrote my first vignette, and it was interesting to see how the usethis package and my prior experience with Rmarkdown made it exceptionally easy.
- Not directly for the release of 0.4.1, but I also spent some time tinkering with the pkgdown configuration for the package documentation site. Nothing drastic, just a new theme and some moving around of contents, but good to know!
I really recommend developing a package for getting to know R better. It doesn’t have to do much fancy – tinieR certainly doesn’t – but having problems to solve really gives purpose to your learning. If you want to try it, check out the R Packages book by Hadley Wickham and Jenny Bryan for a complete guide!