Microsoft Research Blog

The Microsoft Research blog provides in-depth views and perspectives from our researchers, scientists and engineers, plus information about noteworthy events and conferences, scholarships, and fellowships designed for academic and scientific communities.

Bringing TouchDevelop to the Cloud

October 28, 2013 | Posted by Microsoft Research Blog

Posted by Rob Knies

Sebastian Burckhardt 

In this new, cloud-enabled era, users of various devices want—nay, expect—their apps and data to be available everywhere and all the time. The future is here, right, so why not?

The devil, though, as always, is in the details. And details are exactly what Sebastian Burckhardt is motivated to master.

Burckhardt, a Microsoft Research scientist with the Research in Software Engineering team, focuses on the study of programming models for concurrent, parallel, and distributed systems. On Oct. 30, he will be discussing Cloud Sessions, a programming abstraction available as a feature in TouchDevelop, a cross-platform app-development environment from Microsoft Research, during SPLASH 2013, the Association for Computing Machinery’s Special Interest Group on Programming Languages conference on Systems, Programming, Languages and Applications: Software for Humanity, being held Oct. 26-31 in Indianapolis.

TouchDevelop is designed to make app development simpler and to enable programmers to reach a larger audience, to educate students and beginners, and to do all this while delivering a fully cross-platform, touch-based experience for all screen factors—phone, tablet, and PC.

The power of such a vision is easy to imagine—and to demonstrate. TouchDevelop has been embraced across all educational levels, from K-12 to higher education, as well as within industry. Almost 43,000 scripts have been published using the TouchDevelop platform.

But while TouchDevelop might appeal to those who want to program using the device of their choice, it’s no simple matter to make that experience seamless when the cloud comes into play.

“Delivering a responsive experience on mobile devices can be quite challenging when connections are slow or temporarily unavailable,” says Burckhardt, the designer of the programming abstraction. “With Cloud Sessions, we radically simplify app development by automating the most challenging part of this puzzle. All structured data stored in Cloud Sessions, such as tables or indexes, are automatically synchronized across the participating devices and backed up in the cloud—and, thus, are always available, regardless of issues with connectivity or failures.”

TouchDevelop fully embraces the mobile+cloud paradigm, Burckhardt notes, with regard to both the app-development experience and the apps being developed. It can get complicated.

“The biggest intellectual challenge,” he says, “was to rethink how programs should interact with persistent, structured, shared data in a way that leads to simple, very compact code, yet remains expressive enough to write typical apps. In particular, it required a novel approach to structuring data in such a way that conflicts can always be resolved automatically.

“Implementing this vision inside TouchDevelop was also quite challenging, as it required writing components that run on very different platforms—TypeScript in the browser, C# on Windows Azure cloud services. Of course, that is precisely the idea: We ‘bite the bullet’ on replication, conflict resolution, connectivity, authentication, and scalable cloud services to make life easier for the app developer.”

Those are decisions you are able to make when your interests extend to memory-consistency models, concurrency testing, self-adjusting computation, and the programming model of concurrent revisions. Burckhardt embraces such thorny challenges.

“My favorite results in computer science are the ones that make complex problems look simple,” he says. “Perhaps this has something to do with my background as a mathematician, where we strive to find compact, elegant proofs for difficult theorems.

“In the TouchDevelop context, simplicity is, in fact, quite important for practical purposes. Keeping programs compact means it is easier to teach programming, to rapidly prototype app ideas, and to work with small screens and touch-based interfaces without keyboards. Trying to accelerate the normal course of things in this way is exciting, and working with students is always fun.”