If you haven't already heard, RStudio has developed an incredibly easy way to deploy R on the web with its Shiny Package. For those who have heard, this really isn't new as bloggers have already been blogging about it for some months now, but I have primarily seen a focus on how to build Shiny apps, and feel it's also important to focus on utilizing Shiny Apps for clients.
From Pigeon Hole to Social Web Deployment
I was originally taught C/C++ but I didn't really begin programming until I was introduced to Matlab. A breath of fresh air, I no longer had to manage memory issues, and its mathematics and matrix design allowed me to think about the algorithms as I wrote, rather than the code, much like we write sentences in English without worrying too much about grammar. Removing those human-interpretive layers and allowing the mind to focus on the real challenge at hand had an interesting secondary effect where I eventually began thinking and dreaming in Matlab, and it was easier at times to write a quick algorithm than a descriptive paper. What's more, Matlab had beautiful graphics which greatly simplified the communicative process, as a good graphic is self-evident to a much larger crowd.
Fast forward and today we are an open source and socially networked community where the web is our medium. Social Networks are not reserved for Facebook and Twitter, in a way when you use a new Package in R you're "Friending" its developer and anyone else who uses it. For working individually this is a great model, but unfortunately to deploy the power of AI, machine learning, or even simple algorithms and make use of the web-medium required the additional skillset of web-programming. Although not an overly complicated skillset to be proficient at, like running, biking, or swimming, just because you once ran seven minutes per mile doesn't mean you can after a few years of inactivity.
Enter RStudio Shiny, an instant hit. In the second half of 2012 I worked on a project using D3.js, Spring MVC, and Renjin, the idea being more administrative in that UI developers could focus on UI and algorithm developers could focus on algorithms, perhaps eventually meeting in the middle. I was practically building a custom version of Shiny, and for 90% of the intended use stories, I wish Shiny had been available early in 2012.
Thousands of lines of code were cut by an order of magnitude when implementing in Shiny, and just like when back in the day Matlab let me think in terms of algorithms, Shiny is letting me think in terms of communicating with my audience. If I can plot it in R, I can host it on a Shiny Server. R is already excellent for writing algorithms, and once a framework is written in Shiny, integrating new algorithms or new plots is as simple as replacing function calls. This allows you to quickly iterate between meetings and create an interactive experience that is self evident to everyone because it's closely related to the conversation at hand. What's more, because it's web based, the experience goes beyond the meeting and everyone from the CEO to Administrative Assistants can explore the underlying data, creating a common thread for discussion much like chatting about the Oscars around the proverbial water cooler. Shiny Democratizes Data.
The response to Shiny has been very positive, and its use is quickly becoming wide-spread. Like Yoda said, "See past the decisions already made we can" (I may be paraphrasing), we can see the next steps for Shiny, including interactive plots, user-friendly reactive functions, easier web deployment with Shiny Servers, and integration of third party applications such as GoogleVis and D3js. With respect to Yoda, Shiny's allowed me to decide that dynamic interaction with data, for the wider data science community, is the clear next step.