Here's the next episode in my exercise videos, in which Rob Pike and Andrew present the application of Go for writing AppEngine web applications.

I'm always looking for material to make my exercise on my training bike less boring. Sometimes music works. Sometimes a movie. Recently, I discovered Google Tech Talks as a nice source of exercise length videos. Here's a good one of Rob Pike presenting Go.

Last year, Pieter Senster came to ask me whether I would be interested in being his TU Delft advisor for a Master's thesis project he would be conducting at Google which involved compilation. For a long time, the only thing I could say about it that he was doing a secret project at Google. Last week the result was announced and is now available for testing. Swiffy is a tool that converts Flash to HTML5. Marcel Gordon writes:

Swiffy uses a compact JSON representation of the animation, which is rendered using SVG and a bit of HTML5 and CSS3. ActionScript 2.0 is also present in the JSON object, and is interpreted in JavaScript in the browser. This representation makes the Swiffy animations almost as compact as the original SWF files.

A small gallery shows Flash animations and their indistinguishable Swiffy conversions.

Acoda extends the WebDSL web programming language with support for database migration based on evolution of the data model of an application.

Sander D. Vermolen, Guido Wachsmuth, Eelco Visser. Generating Database Migration for Evolving Web Applications. In Ewen Denney, Ulrik Pagh Schultz, editors, Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Portland, OR, USA, October 22-23, 2011, Proceedings. ACM, 2011.

Abstract WebDSL is a domain-specific language for the implementation of dynamic web applications with a rich datamodel. It provides developers with object-oriented data modeling concepts but abstracts over implementation details for persisting application data in relational databases. When the underlying data model of an application evolves, persisted application data has to be migrated. While implementing migration at the database level breaks the abstractions provided by WebDSL, an implementation at the data model level requires to intermingle migration with application code. In this paper, we present a domain-specific language for the coupled evolution of data models and application data. It allows to specify data model evolution as a separate concern at the data model level and can be compiled to migration code at the database level. Its linguistic integration with WebDSL enables static checks for evolution validity and correctness.

At last year's GPCE conference in Eindhoven I met Klaus Ostermann and Sebastian Erdweg who turned out to be working with Stratego/XT on the exciting SugarJ project. SugarJ turns MetaBorg into a homogeneous language extension mechanism, enabling the definition of language extensions in libraries that are invoked on import.

The meeting led to a demo, more talk on the walk to the banquet, a visit by Sebastian to TU Delft, collaboration with Lennart Kats on the integration of SugarJ and Spoofax to provide editor support for language extensions, and now a paper at GPCE 2011:

Sebastian Erdweg, Lennart C. L. Kats, Tillmann Rendel, Christian Kastner,  Klaus Ostermann, Eelco Visser. Growing a Language Environment with Editor Libraries. In Ewen Denney, Ulrik Pagh Schultz, editors, Generative Programming and Component Engineering, 7th International Conference, GPCE 2011, Portland, OR, USA, October 22-23, 2011, Proceedings. ACM, 2011.

Abstract Large software projects consist of code written in a multitude of different (possibly domain-specific) languages, which are often deeply interspersed even in single files. While many proposals exist on how to integrate languages semantically and syntactically, the question of how to support this scenario in integrated development environments (IDEs) remains open: How can standard IDE services, such as syntax highlighting, outlining, or reference resolving, be provided in an extensible and compositional way, such that an open mix of languages is supported in a single file? Based on our library-based syntactic extension language for Java, SugarJ, we propose to make IDEs extensible by organizing editor services in editor libraries. Editor libraries are libraries written in the object language, SugarJ, and hence activated and composed through regular import statements on a file-by-file basis. We have implemented an IDE for editor libraries on top of SugarJ and the Eclipse-based Spoofax language workbench. We have validated editor libraries by evolving this IDE into a fully-fledged and schema-aware XML editor as well as an extensible LATEX editor, which we used for writing this paper.