UPDATE July 2020: The code for this service is now public on GitHub
Have you ever found yourself asking “how can I make sure I don’t miss the next version release of package X”?
That’s the exact problem I set out to solve with CRANalerts. Simply provide your email address and an R package name, and every time the package gets updated on CRAN in the future, you’ll get notified.
It all started in January, when Jim Hester was getting ready to submit a new version of readr
to CRAN. The new version would have broken my code, so Jim submitted a PR to my package that would ensure my code will still work after the update. I didn’t want to accept the PR until readr
was actually on CRAN, so I just started checking CRAN every few days to see when readr
is updatd already.
Over the next two months, I received the usual emails asking me when various packages of mine are going to be updated on CRAN. This happens often, but I never paid much attention to it. Usually when I got asked “how do I know when shinyjs is updated on CRAN?” my response was “check the page every week”. Yup, very helpful, I know!
But now that this problem became relevant to me, I eventually figured that manually checking a website continually is no good, so I sent out a tweet asking if there’s any service that will alert me when a CRAN package gets updated. People gave some suggestions, but there was nothing specifically for my purpose. So, since the weekend was coming up and I had a lot of actual work to do, what better way to procrastinate than to build this service? And so that’s exactly what I did last weekend.
For those wondering—yes, of course I had to make this a Shiny app. I actually started building it with Node.js initially, but I quickly thought “nah, go Shiny or go home!”. To be honest, I think this is a case where Shiny was not necessarily the absolute best tool for the job, but I did want to see if I could build a decent-ish service with Shiny. And so be it. CRANalerts is fully a Shiny app.
You’ll hopefully agree that this website doesn’t look like a Shiny app. UI/UX is always very important to me; I make sure that whatever I build is not only functional, but looks good and is intuitive and user-friendly. But getting it to look pretty was not a trivial task, here is what CRANalerts looked like after 1 day of work:
Beautiful, right? In the everything-is-beautiful-in-its-own-unique-way kind of beautiful. A draft version of CRANalerts was ready after a day, but it actually took me another full day to just come up with a design and implement it to a point where I thought it looked good enough. Literally half the time was spent on coding, and half on making it pretty.
while it is important for me to make my tools look nice, I also realize it’s not my forte—it doesn’t come quickly or naturally to me, and it ends up taking up a lot more of my time than I would like. If anyone has a good eye for design and would like to help me on my next projects, I would really appreciate your help, feel free to send me a message! (You don’t have to be a graphic designer by profession, I think a lot of people in the R community have much better artistic skills than myself.)
Keep in mind that this entire service was built in a weekend and did not have the resources get properly thoroughly tested, so it’s possible you’ll encounter problems. If you do have any feedback, feel free to let me know. And if you’d like to support my work on this project and future projects (including supporting server costs, AWS fees, maintenance of tools, etc), I appreciate any donations :)