Processing: an interactive, visual, Java-based DSL

Processing is a project initiated by Ben Fry and Casey Reas in 2001 from the Aesthetics and Computation Group at the MIT Media Lab.

The purpose of the project has been to "promote software literacy within the visual arts" and it was "created to serve as a software sketchbook and to teach fundamentals of computer programming within a visual context."

Ben Fry sums up one of the driving influences for the development of Processing:
"... damned if we’re gonna make students learn how to write a method declaration and “public class Blah extends PApplet” before they can get something to show up on the screen."
Processing works by translating the simplified DSL to Java code, allowing Processing apps to run embedded in browsers as Java applets and anywhere else Java can be found.

some interactive demos: valence, ecosystems, four-letter words , alphabot
many more examples here.

Processing has also been embraced by the physical computing community in projects such as Reactable (demo video).

Embedded probabilistic programming

The paper and slides for Oleg and my presentation on embedded probabilistic programming are online.

I hope that I managed to convey why our DSL for probabilistic inference is useful and what it is like to use it. I didn't get to any detail about how the language is implemented, but it actually is closely related to the paper "J is for JavaScript" by Olivier Danvy, Ian Zerny, and me, presented at the beginning of the conference. Our probabilistic DSL is yet another example of a language whose interpretation requires unconventional (non-sequential) control structure. We prefer to embed this language in as uncreative and homomorphic a way as possible, and delimited control operators indeed reduce the creativity required of the implementors (and the overhead imposed by the implementation).

Nettle

The slides from my talk on Nettle can be found here. The Nettle web page contains further information, including source code.

Thanks to Eric and others for helpful questions and comments!

Command Line OptionS (CLOPS)

Hi everybody,

my slides can be found here. The tool's site is here and the sourceforge one here.

We are planning a new release soon. We would be happy to hear back from you all about your experience with the tool if you decide to use it (or decide not to use it).

J is for JavaScript

Here are the slides from Olivier's talk, and the J is for JavaScript paper via. Ken's web page.

As already noted by Walid, the talk spurred much discussion on the importance of homomorphic translations. The issue raised was that homomorphic translations are trivial and uninteresting. In response, questions were raised as to what problems do not have a homomorphic translation followed by comments on how even a simple alpha-conversion is of interest in the context of DSLs. Our point however, is that translations should be as homomorphic as possible. The benefit being preservation of operational intuition.
  • For the programmer, this means better understanding the behavior of the program after translation.
  • For the host system (compiler and/or runtime) more structural information is available for optimization.
Aside, we do not believe translations should be complex for the sake of complexity.

We would like to thank everybody for a great conference and for the following discussions. Please feel free to post further comments and questions in this thread or by email.

The Best of DSL'09 Award

The Best of DSL'09 Award singles out select papers and discussants. Papers are chosen based on the final versions of the manuscripts. Discussants are selected based on their review of the assigned paper as well as directing the discussion.

Three papers received Best of DSL'09 Award:
  • Operator Language: A Program Generation Framework for Fast Kernels. Franz Franchetti, Frederic de Mesmay, Daniel McFarlin and Markus Pueschel.
  • Embedded Probabilistic Programming. Oleg Kiselyov and Chung-chieh Shan.
  • A DSL for Explaining Probabilistic Reasoning. Martin Erwig and Eric Walkingshaw.
The following discussants received the Best of DSL'09 Award:
  • Oleg Kiselyov
  • Olivier Danvy
Many congratulations to the winners!

Unit Testing DSLs

It was great seeing everyone this past week - thanks to Jeremy and Walid for organizing a very informative and fun conference!

If anyone is interested in the slides I used for the talk on DSL testing, please find those below (please note that there are animations that did not transfer to PDF exactly as rendered in PPT).

PPT slides available here
PDF slides available here

There is a project page for this work available here. The page needs a little refreshing, but has our results on debuggers and testing tools for DSLs. There also is a discussion of the aspect weaver that was designed for grammars. The web page has several video demonstrations of the work.

Gel: A Generic Extensible Language

Here are the slides from my presentation on Gel. You should also check out the source code for Gel here.

There is an online version of Gel, although it is not the latest version. Feel free to download the latest version and run it, or use the online version. Either way let us know what you think, or where we could improve.

Thanks for the all comments and the great discussion lead by Andy.

Panel

Slides from the panel are now available online as PDF and PPT.

Update the wikipedia DSL page

DSL at wikipedia.

What are important DSL research questions?

Post them!

Expertise Gap

Here is a 2006 paper from Sun that is related to the panel conversation concerning the cooperation between "domain" scientists and computer scientists. The paper discusses the existence of a large "expertise gap" in developing HPC applications, but I believe it is very relevant and informative for those involved in the use or development of DSLs.

Hagl and Explanaining Probabilistic Reasoning

I have posted the slides for my presentation on Hagl, and my presentation on explaining probabilistic reasoning.

Hagl is available for download if you'd like to play around with it. If you do, please tell me about your experience! Unfortunately, the page behind the link above is not very user friendly (yet). The most recent version of Hagl, presented today, is hagl-current.tgz, and the version that corresponds to the paper is hagl-dsl.tgz. In both, there is an "Examples" directory that should help to get you started.

Martin has also begun a page on explanation-oriented programming that gives a nice high-level overview of our goals.

Finally, I'd like to thank the discussants for both their encouraging words and for initiating insightful and interesting conversation.

If anybody would like to post their comments here, or email them to Martin and I directly, that would also be greatly appreciated.

Workshop on Generic Programming 2009

I just want to recommend you to participate in the Workshop on Generic Programming held in Edinburgh on 30:th of Aug.
We have seen examples of Generic Programming in a number of talks, including Andy Gill's KURE, Daniel Lincke's concept framework, Tobias Walter's Ontologies, Sumant's LEESA, ...

Early reg. deadline is on Monday ...

Ad hoc meetings (Zoe's presentation)

I talked to Zoe offline about how meetings may be organized and she has explained to me that the meetings are scraped from the google calendar --- to obtain the times and participants (and record them in their DSL).

Makes me curious whether one day I will go to a conference and everything will be set up through pervasive computing techniques. :)

Notes Pending

I'd like to encourage everyone to post PDF and ppt of their talks as soon as possible. A nice style for doing this has already been established by various speakers in previous posts below. The sooner you do this, the more comments you will get on your work.

The following notes will be moved to future posts once discussants have created their entries.

Olivier's talk:

- To respond to William's question, "compiler" in Olivier's talk basically means translation, and it tends to be a source-to-source translation
- Olivier: An environment is a mapping. Explicit substitutions have an operational semantics, and in particular give rise to the need to compositions on environments.
- Big disagreement about the importance of the importance of compositional translations.

Ken Friis' talk

- Oleg: I absolutely loved your discussant presentation! Where does the initial/final embedding terminology come from? Can you provide a reference? (These forms seems to correspond to what is typically called deep/shallow embedding)

Jeff's talk

- Four out of the five panelists mentioned lack of tool support as the main problems facing adoption of DSLs. I thought that that was a very well articulated observation.
- Also noted that we currently focus for the most part on piggy-backing on an existing GPL.
- Really liked example of debugging an ANTLR grammar, and point about going beyond reusing "just" the compiler of the GPL.

Henrik's keynote
- I really liked the explanation of causal and acausal modeling with linear circuit components. Using the linear circuit components as examples components makes it easier to see why directing the equations can lead to an exponential explosion in the number of ways that components can be combined.
- Breaking pendulum is a great example of a hybrid system! I can imagine a lot of variants illustrating all kinds of different HS issues.

Mikolas talk:
- Wow! It was scary to realize that "rm *" can actually mean "rm -rf *" if you happen to have a file called "-rf".

Oege's keynote:
- It was really interesting to hear about the "denotationalist movement". While the syntactic approach could be criticized, I don't think it can be called "the wrong approach" because it was, for some time, the only approach: effects, aliasing, and sharing have for a long time made it quite hard to work accurately with denotational semantics.
- William suggested talking about the number of typing bugs that have been found by using the static analysis.

Franz's talk:
- Loved your version of the "hacking slide"!

CheapThreads and FSMLang

The presentation slides for the CheapThreads (Model-driven Engineering from Modular Monadic Semantics: Implementation Techniques Targeting Hardware and Software) talk can be found here. While the slides for the FSMLang talk can be found at this link.

Initial and Final Embeddings

[This was posted on behalf of Oleg by Walid]

I must confess that I didn't mean to cause so much controversy. My presentation of the initial and final embeddings was intentionally simplified: I removed the parts that were not relevant as far as Ken's paper was concerned. In that simplified introduction, the final embedding indeed looks very much like the `shallow' embedding. However, generally we want to interpret a term in several ways. Therefore, in the full definition, the final embedding includes the parameterization over the 'repr' type, and, crucially, repr is a type constructor.

The extensive discussion of the final embedding can be found in the paper, written with Jacques Carette and Chung-chieh Shan: http://okmij.org/ftp/Computation/tagless-typed.html#tagless-final please also see the JFP paper http://www.cas.mcmaster.ca/~carette/publications/jfp.pdf The paper describes multiple interpretations of the same term in detail. Recently we found that we could express several abstract interpretations and program analyses as instantiations of the final embedding. The related work section of the JFP paper discusses the encoding of terms in elimination form, as a coalgebraic structure, and
the categorical interpretation.

Is the co-algebraic structure final, that is, does it correspond to the terminal object in some category? It seems that could be the case at least in simple cases; for example, see http://okmij.org/ftp/Computation/tagless-typed.html#in-fin Relating Final and Initial typed tagless representations

Combining DSLs and Ontologies using Metamodel Integration

Here are the slides of my talk about "Combining DSLs and Ontologies using Metamodel Integration". The paper can be found here.
Please feel free to comment on both!

Generic Libraries in C++ with Concepts from High-Level Domain Descriptions in Haskell

Here are the talk slides as PDF. Thanks to the comments of our discussant Martin Erwig.

LEESA: An embedded traversal DSL in C++

The LEESA paper is here and the talk slides are here. Another blog already has a post about LEESA. My extended responses to the questions asked by discussant, Tony Sloane, and other attendees of the DSL'09 conference can be found in the first comment.

The Two-Layer Domain Specificity Hypothesis

We have heard that Excel or SQL are domain-specific languages. They are domain-specific in one sense, but not so in another. Excel provides a specific grid-based model to express computations and SQL offers specific operations to operate on tables. In this technical sense both languages are more specific than general-purpose languages. However, both languages are generic in the sense that they can be used for many different application domains, such as accounting spreadsheets or personnel databases. In this sense, Excel and SQL are not domain specific languages.

Domain-specific languages for those domains can well be implemented using Excel and SQL, respectively, but Excel and SQL are, of course, not languages that are specific to these domains only. So we can distinguish between two different notions of domain specificity: (1) Domain-specificity in the technical sense, and (2) domain-specificity in the application sense. Excel and SQL are domain-specific in the technical sense, but they are not domain-specific in the application sense. They might, however, be called domain-suitable for specific applications, that is, Excel is domain suitable for accounting applications, and SQL is domain suitable for personnel databases.


Kiama: demo of embedding strategies and attributes in Scala

If anyone is interested in a demo of our Kiama library that embeds strategic programming and attribute grammars in Scala, please reply here and we can arrange to meet during the conference. Code, a couple of papers and some incomplete documentation is available on the Kiama project site.

Tony Sloane

KURE - A Haskell hosted DSL for writing transformation systems

The KURE talk slides are available as PDF.

Dinner tonight

There will be sparkling wine and canapés at 7pm, followed by dinner at 7.30pm (in the Ruth Deech Building, where the lectures are taking place). The menu:
  • Grilled Goat's Cheese on Brioche with Sundried Tomato and Balsamic Dressing
  • Rump of Lamb with Potato Cake, Roasted Root Vegetables, and a Red Wine Jus (or Butternut Squash Risotto with Roasted Asparagus, for vegetarians)
  • Summer Pudding Torte with Blackcurrent Coulis
The wines are
  • Côtes de Saint Mont (Gascony) white
  • Côtes du Rhône red

Slides and notes for the MuDDy presentation

Following is the slides used for the presentation, including the discussant slides prepared by Oleg Kiselyov.
Please find notes from me and Oleg (discussant) in the third comment.

Boating humour

To lighten up the tone of this blog a bit here is an excerpt from "Three men in a boat"
http://www.gutenberg.org/dirs/etext95/3boat10.txt

"Rather an amusing thing happened while dressing that morning. I was very
cold when I got back into the boat, and, in my hurry to get my shirt on,
I accidentally jerked it into the water. It made me awfully wild,
especially as George burst out laughing. I could not see anything to
laugh at, and I told George so, and he only laughed the more. I never
saw a man laugh so much. I quite lost my temper with him at last, and I
pointed out to him what a drivelling maniac of an imbecile idiot he was;
but he only roared the louder. And then, just as I was landing the
shirt, I noticed that it was not my shirt at all, but George's, which I
had mistaken for mine; whereupon the humour of the thing struck me for
the first time, and I began to laugh. And the more I looked from
George's wet shirt to George, roaring with laughter, the more I was
amused, and I laughed so much that I had to let the shirt fall back into
the water again.

"Ar'n't you - you - going to get it out?" said George, between his
shrieks.

I could not answer him at all for a while, I was laughing so, but, at
last, between my peals I managed to jerk out:

"It isn't my shirt - it's YOURS!"

I never saw a man's face change from lively to severe so suddenly in all
my life before.

"What!" he yelled, springing up. "You silly cuckoo! Why can't you be
more careful what you're doing? Why the deuce don't you go and dress on
the bank? You're not fit to be in a boat, you're not. Gimme the
hitcher."

I tried to make him see the fun of the thing, but he could not. George
is very dense at seeing a joke sometimes.
"

Kickoff Sessions Slides

The slides for the Kickoff talk have been posted in power point format and PDF. Note that the PDF is quite big.

The initial set of questions posed for participants and for discussion at the panel include:
  • What are the research priorities in this areas?
  • What are the key technical challenges?
  • What are the core tools available for work in this area?
  • How does a practitioner go about building a DSL today?
  • How do you evaluate the success of a DSL?
  • Do do you chose the domain for your DSL?
  • What is a domain, anyway?!
  • Should there be a DSL'10 or DSL'11?
  • Should we have a followup journal version?
  • Should we consider having a DSL summer school?
If you have additional questions, or answers to these questions, please add them as comments to this post.

Conference Begins

The working conference has started. Walid is just wrapping up his introductory lecture. I'm looking forward to seeing how the discussant format works.

Conference registration

The registration desk will be open from 0900 on Wednesday (although I hope to be there from 0830). We have coffee from 0900 too, so come along, collect your bits and bobs, and meet up there. Events start properly at 0930.

What's on in Oxford

(Apart from WCDSL, of course!)

The Daily Information newssheet (which, in the typical Oxonian way, is weekly outside term-time) has listings of theatre shows, gigs etc during the week. If you're at a loose end and want to do something cultural, you might want to look at this. (It covers Friday to Thursday, so a new issue will be out on the last day of the conference.)

I can heartily recommend the recently-renovated Pitt Rivers anthropological museum, a treasure-trove of colonial artefacts, and the Natural History Museum that you pass through to get to it. If you're feeling a bit geekier, the Museum of the History of Science (the original site of the world's first public museum, the Ashmolean) has a new exhibition on architecture as mathematical practice - and it is just round the corner from the Bodleian Library, which has two exhibitions about book-binding on, and just across the road from Blackwell's bookshop. All of these sights are free.

Travel to WCDSL

I'm afraid OUCL's website appears to be down at the moment, so you won't be able to look at the local information. Sorry about that - I hope it will be fixed tomorrow. The conference venue and accommodation is in St Anne's College, Oxford OX2 6HT. College provides some travel information.

If you're flying in to London Heathrow airport, the best way to get to Oxford is to take the Airline bus from Heathrow's Central Bus Station to Oxford's Gloucester Green Bus Station (which is the last stop, so you can't miss it). The bus takes 90 minutes, runs every 30 minutes (except overnight, when it drops to every 120 minutes), and costs £25 for a period return. The same company runs a bus service from London Gatwick airport, but it takes about 2 hours and runs every hour.

Walid took the bus from Heathrow and says it worked great. Buying the return ticket is worth it, because one way is something like £20.

There are taxis from the bus station to college (5 minutes, I guess about £5), or it's a 15 minute walk - I've shown the route on this Google map.

Guidelines for Discussants

As announced previously, each technical talk will have a discussant. The discussant's goal is to guide meaningful and focused discussions of the paper. Each discussant will read the paper ahead of time, will comment on the paper following the presentation, and before opening the floor to questions. The guidelines for discussants are as follows:
  1. Provide a brief summary of the problem being solved and the technique used.
  2. Suggest a classification of the type of research in this paper in context of the community-wide research efforts on Domain Specific Languages.
  3. Suggest applications or benefits beyond what was stated in the paper.
  4. Where necessary, posit questions about whether a specific idea can be used to enhance what has been attained in this work.
  5. Point out areas aspects of the work that you really liked, and/or, make a controversial statement that you believe would initiate an important discussion on a topic related to the subject of the paper.
Ultimately, your goal is to help bring out the best in the work, and to position its result in the best way possible in the context of the DSL research community's efforts.

Conference proceedings (LNCS 5658)

...have been printed, and are now sitting in boxes in my office. They look good, folks! You can see for yourself. If you have an LNCS subscription, you can read the online version too.

Internet access in St Anne's

The college has just sent me some information about internet access in the venue. A sheet of paper with this information will be available for collection in the lodge when you arrive, but you might want to take a look beforehand. In particular:
  • Although there is wireless access in public areas, there is only wired access in bedrooms. You can buy an ethernet cable from the lodge, but you might prefer to bring one with you.
  • The university prohibits peer-to-peer file-sharing applications, and will (at least threaten to) cut off your access if you use them over a university connection. This includes applications like the BBC iPlayer. So if you want to download some TV to watch, you'll have to do it before you get to Oxford.

Presentation requirements

I'm assuming that each presenter will be using their own laptop, and connecting to the data projector in the lecture theatre. Please let me know in advance if this is not the case, and you have different requirements (eg you're not bringing a laptop and want a computer to be provided, or you need a whiteboard or overhead projector).

Social events at DSL'09

I hope the weather continues like it has been this week - it's been hot and sunny, which is most unusual for Wimbledon season. I'm planning a punting trip for Wednesday evening: on the River Cherwell, upstream a short way to the Victoria Arms pub, a convivial drink with dinner outside, then a relaxed float back downstream to the boathouse before it gets dark. You might like to read about the boathouse, and to do some homework first - although I hope to rope in some local guides to assist with the transport.

Welcome!

Greetings all!

This blog provides a place for participants in the IFIP TC-2 Working Conference on Domain-Specific Languages (DSL'09) to share ideas relating to all aspects of DSL's. To begin, we will use it to continue the discussion started at the conference kickoff meeting.