DSL Developers Conference

DSL Developers Conference

applied topics in domain specific languages

April 16-17, 2009, Microsoft Campus, Redmond, WA


Spirit of the Developer's Conference

The goal of the DSL Developer's Conference is to cut away all the unessential conference baggage and concentrate on why we're spending time at a conference in the first place -- the talks by industry experts and experienced practitioners. By doing so, we can keep your wasted time to a minimum. In fact, if you don't go away with your head hurting from all the new ideas you've heard, we've haven't done our job!

Summary

What 2 days of practical, applied DSL sessions from industry experts and practitioners
When April 16th, 1pm-6pm (registration at noon), April 17th, 9am-6pm
Where

Microsoft Research Building 99, Room 1919
14820 NE 36th Street
Redmond, WA 98052
USA

(on the other side of 520 from main campus)

If you're flying, you want to target the Seattle-Tacoma Int'l Airport (SEA).

Cost $0 for 1.5 days of sessions (half the bargain at twice the cost!)
      <h2>See what you missed!</h2>
      <p>
        <a runat="server" href="https://msdn.microsoft.com/en-us/dd229322.aspx#dsl">The recorded talks and slides are available for download.</a>
      </p>
      <h2>Synchronized with Lang.NET</h2>
      <p>The conference will be right after <a runat="server" href="https://www.langnetsymposium.com/">the Lang.NET conference</a>. Lang.NET will be focused on general-purpose languages, whereas the DSL DevCon will focus on domain-specific languages. The idea is that if you want to attend one or the other or both, that's totally fine. We'll have 2.5 days of Lang.NET on April 14-16 and then 1.5 days of DSL DevCon.</p>
      <h2>Schedule</h2>
      <p>
        <em>This schedule is subject to change without notice due to the whims of the conference organizer (me).</em>
      </p>
      <table border="0" cellpadding="0" cellspacing="0" class="grid" id="table5">
        <tbody>
          <tr>
            <td valign="top">
              <strong>When</strong>
            </td>
            <td valign="top">
              <strong>What</strong>
            </td>
            <td valign="top">
              <strong>Who</strong>
            </td>
          </tr>
          <tr>
            <td colspan="3" valign="top">
              <strong>Thursday, April 16<sup>th</sup></strong>
            </td>
          </tr>
          <tr>
            <td valign="top">12:00pm</td>
            <td valign="top">Registration</td>
            <td valign="top"> </td>
          </tr>
          <tr>
            <td valign="top">12:45pm</td>
            <td valign="top">Welcome</td>
            <td valign="top">Chris Sells</td>
          </tr>
          <tr>
            <td valign="top">1:00pm</td>
            <td valign="top">Keynote: Meta-Introduction to DSLs</td>
            <td valign="top">Martin Fowler</td>
          </tr>
          <tr>
            <td valign="top">2:00pm</td>
            <td valign="top">M DSLs: Deep Dive</td>
            <td valign="top">Paul Vick</td>
          </tr>
          <tr>
            <td valign="top">3:00pm</td>
            <td valign="top">Domain Specific Languages for automated testing of equity order management systems and trading machines</td>
            <td valign="top">Tom Rodgers</td>
          </tr>
          <tr>
            <td valign="top">4:00pm</td>
            <td valign="top">DSLs in the Horn Package Manager</td>
            <td valign="top">Paul Cowan</td>
          </tr>
          <tr>
            <td valign="top">5:00pm</td>
            <td valign="top">How to implement DSLs with Groovy</td>
            <td valign="top">Guillaume Laforge</td>
          </tr>
          <tr>
            <td valign="top">6:00pm</td>
            <td valign="top">Reception (food and beverages)</td>
            <td valign="top"> </td>
          </tr>
          <tr>
            <td valign="top">6:45pm</td>
            <td valign="top">DSL Panel</td>
            <td valign="top">All speakers</td>
          </tr>
          <tr>
            <td colspan="3" valign="top">
              <strong>Friday, April 17<sup>th</sup></strong>
            </td>
          </tr>
          <tr>
            <td valign="top">7:30am</td>
            <td valign="top">Breakfast</td>
            <td valign="top"> </td>
          </tr>
          <tr>
            <td valign="top">9:00am</td>
            <td valign="top">Textual DSLs and Code Generation with Eclipse Tools</td>
            <td valign="top">Markus Voelter</td>
          </tr>
          <tr>
            <td valign="top">10:00am</td>
            <td valign="top">JavaScript DSLs for the Client Side</td>
            <td valign="top">Dionysios G. Synodinos</td>
          </tr>
          <tr>
            <td valign="top">11:00am</td>
            <td valign="top">Functional vs. Dynamic DSLs: The Smackdown</td>
            <td valign="top">Ted Neward, Bradford Cross</td>
          </tr>
          <tr>
            <td valign="top">11:45am</td>
            <td valign="top">Lunch</td>
            <td valign="top"> </td>
          </tr>
          <tr>
            <td valign="top">1:00pm</td>
            <td valign="top">Embedding DSLs in Newspeak: EBNF, Hopscotch and NewShell</td>
            <td valign="top">Gilad Bracha</td>
          </tr>
          <tr>
            <td valign="top">2:00pm</td>
            <td valign="top">A DSL for Cool Effects in Adobe Pixel Bender</td>
            <td valign="top">Bob Archer, Chuck Rose</td>
          </tr>
          <tr>
            <td valign="top">3:00pm</td>
            <td valign="top">Language Oriented Programming in F#</td>
            <td valign="top">Roger Castillo</td>
          </tr>
          <tr>
            <td valign="top">4:00pm</td>
            <td valign="top">Intentional Software</td>
            <td valign="top">Magnus Christerson</td>
          </tr>
        </tbody>
      </table>

      <h2>Sessions</h2>
      <h3>Keynote: Meta-Introduction to DSLs</h3>
      <p>
        <em xmlns="https://www.w3.org/1999/xhtml">Martin Fowler</em>
      </p>
      <p>As Martin begins to see the light at the end of the tunnel on drafting his DSL book, he's been prone to give more talks introducing DSLs. While he wouldn't consider it appropriate to give such a talk at this august gathering, he did think it would be interesting to do a meta-talk version of his introductory talk. For this he'll walk through the same material, but instead talk about why he thinks the approach he takes to an introduction is a useful way to guide people in their approach to DSLs.</p>
      <h3>M DSLs: Deep Dive</h3>
      <p>
        <em>Paul Vick</em>
      </p>
      <p>We will do a deep dive into the M parser generator and may even have some new features to talk about as well.</p>
      <h3>Domain Specific Languages for automated testing of equity order management systems and trading machines</h3>
      <p>
        <em>Tom Rodgers</em>
      </p>
      <p>Equity and Equity Options exchanges (NYSE, NASDAQ, CBOE, etc.) support a version of the FIX messaging standard for sending market quotes and orders. While the mechanics of creating, sending, and responding to FIX based requests and tracking their lifecycle are fairly straightforward, it tends to be fairly cumbersome to create test scenarios for simulating market behavior for testing trading strategies and systems against as the knowledge required often rests with traders and financial engineers, not software developers. This talk would present a DSL using the "Oslo" toolset that is capable of expressing order generation and responses from a range of market behaviors in terms of FIX messages in a dialect suitable for use by traders and financial engineers.</p>
      <h3>DSLs in the Horn Package Manager</h3>
      <p>
        <em>Paul Cowan</em>
      </p>
      <p>One thing sadly lacking in the world of .NET is a package manager that can take the pain out of both maintaining and installing .NET packages. Notable examples of existing package managers on other platforms include Maven and App-Get. The horn open source project has been created with the goal of creating such a package manager. Package metaphors are described in separate DSL files that contain build metadata and dependency references. The DSL files live in a directory tree that models the dependency structure. BOO was chosen for the internal DSL, firstly because it is a CLR implementation and secondly for it's built in DSL support and lastly because of Iron Ruby's infancy.</p>
      <h3>How to implement DSLs with Groovy</h3>
      <p>
        <em>Guillaume Laforge</em>
      </p>
      <p>Groovy's a JVM-based dynamic language, with a Java-like syntax that was made pretty flexible for DSLs.</p>
      <h3>Textual DSLs and Code Generation with Eclipse Tools</h3>
      <p>
        <em>Markus Voelter</em>
      </p>
      <p>As part of the Eclipse Modeling Project, a number of tools for defining DSLs and generating code have been developed over the last couple of years. In this talk, Markus will show a subset of these tools that have proven particularly useful. These include Xtext for definition of textual DSLs and editors, Check for defining constraints, as well as Xtend and Xpand for transforming models and generating code. Markus will motivate the approach by looking at how textual languages are used for software architecture modeling.</p>
      <h3>JavaScript DSLs for the Client Side</h3>
      <p>
        <em>Dionysios G. Synodinos</em>
      </p>
      <p>This presentation will feature introductory material on JavaScript Metaprogramming, how these concepts map to the popular toolkits and frameworks (jQuery, Dojo, etc) and future directions for this work.</p>
      <h3>Functional vs. Dynamic DSLs: The Smackdown</h3>
      <p>
        <em xmlns="https://www.w3.org/1999/xhtml">Ted Neward</em>
        <em>and</em>
        <em xmlns="https://www.w3.org/1999/xhtml">Bradford Cross</em>
      </p>
      <p>With the growing adoption of DSLs and DSL terminology into the mainstream has come a controversy over "external" (parser/AST/code-gen based) vs "internal" (hosted inside another programming language) DSLs. In this presentation, we take the approach that the complexity and power of an external DSL is hardly necessary for most DSL tasks, and that internal DSLs are the way to go. We discuss the difference between "compositional" and "computational" DSLs, a new way of thinking about constructing a DSL, and do so in the terms of two languages popularly used to host internal DSLs: Haskell (expressed mostly through F# code, owing to its functional nature) and Ruby (expressed mostly through Groovy code, owing to its dynamic nature).</p>
      <h3>Embedding DSLs in Newspeak: EBNF, Hopscotch and NewShell</h3>
      <p>
        <em>Gilad Bracha</em>
      </p>
      <p>Newspeak is a new programming language particularly suited to supporting DSLs, both internal and external. Newspeak's syntax is a natural fit for internal DSLs, which can leverage the language's powerful modularity and reflection. An important internal DSL is a BNF/PEG variant that is actually a powerful parser combinator library, that helps build external DSLs.</p>
      <h3>A DSL for Cool Effects in Adobe Pixel Bender</h3>
      <p>
        <em>Bob Archer and Chuck Rose</em>
      </p>
      <p>Pixel Bender is a domain specific language for image processing algorithms (cool effects). The most important part of a Pixel Bender program is a function which given a location returns the color and transparency of the pixel at that location. This is a textbook parallel problem and therefore lends itself to vastly increased speedups using the wide parallelism of modern GPU hardware and multi-core CPUs. By creating a DSL, associated compilers, and runtime framework, it is possible to easily add effects to products such as Adobe Photoshop and Adobe After Effects.</p>
      <h3>Language Oriented Programming in F#</h3>
      <p>Roger Castillo</p>
      <p>Roger will present one approach to Language Oriented Programming in F#, a technique in which software designers borrow techniques from language design to organize software architectures. In this approach, simple embedded DSLs called combinator libraries are explored. Roger will show two combinator libraries, one for managing a build process, the other for creating complex 3D visualizations. Attendees will see how the combinator library approach can be applied to these two very different problems. Essentially, a combinator library encourages the designer to break down a problem into elementary pieces and provide ways to recursively compose and reuse these pieces into an abstract description of a problem. Attendees will see a real world example of functional software design, see the use of DSLs and functional design to make the code more readable and provide modularity, see a demonstration of concise techniques for dealing with metadata in one tenth of the code and see how this obviates whole classes of runtime errors at compile time.</p>
      <h3>Intentional Software</h3>
      <p>
        <em>Magnus Christerson</em>
      </p>
      <p>Intentional Software is pioneering a radical new software approach that separates business domain knowledge from software engineering knowledge. This approach accelerates software creation and maintenance as domain experts themselves contribute domain knowledge in their favorite domain language and notation. Business domain knowledge is weaved into running software through domain transformations.</p>
      <h2>Speakers</h2>
      <h3>Bob Archer</h3>
      <p>Bob Archer is the lead for the Pixel Bender compiler team. He has worked on domain specific languages for image processing, music typesetting and game scripting.</p>
      <h3>Gilad Bracha</h3>
      <p>Gilad used to the keeper of the Java language specification. In the past two years, he's built a new platform called Newspeak. You can find out more about him and this work at his web site <a runat="server" href="https://bracha.org">bracha.org</a>, or at <a runat="server" href="https://newspeaklanguage.org">newspeaklanguage.org</a>.</p>
      <h3>Roger Castillo</h3>
      <p>Roger H. Castillo is also a co-founder of A6 Systems and the former founder and CTO of AlterPoint, Inc., which provides network management software to enterprise networks. Roger H. Castillo has over 15 years of software development experience and over 10 years of executive management experience as a CTO and VP of Development.  Roger has developed and designed software systems for mission critical environments, built R&amp;D organizations and shipped numerous releases of software to both consumer and enterprise markets. Roger Castillo has delivered F# solutions to large enterprise clients through the A6 consulting practice.</p>
      <h3>Magnus Christerson</h3>
      <p>Magnus Christerson is Vice President of Product Management for Intentional Software Corporation.</p>
      <h3>Paul Cowan</h3>
      <p>Paul Cowan is a .NET developer situated in Glasgow, Scotland. Paul is currently in the process of starting his own business where he is keen to create a development environment using the platforms, frameworks and principals that have influenced him over the past years. He is a prominent member of the Scottish ALT.NET community where he has been trying to spread the word of a better .NET story.</p>
      <h3>Bradford Cross</h3>
      <p>Brad is a programmer. This is not meant to snub or trivialize this bio in any way. Believe it or not, this bio took a lot of reflection for him. He even wrote a poem about it entitled "just a programmer."</p>
      <h3>Martin Fowler</h3>
      <p>Martin is an author, speaker, consultant and general loud-mouth on software development. He concentrates on designing enterprise software - looking at what makes a good design and what practices are needed to come up with good design. Martin's been a pioneer of object-oriented technology, refactoring, patterns, agile methodologies, domain modeling, the Unified Modeling Language (UML), and Extreme Programming. He has a odd title of Chief Scientist at ThoughtWorks - a rather good application development company.</p>
      <h3>Guillaume Laforge</h3>
      <p>Guillaume is the creator of Grails (Groovy + Spring + Hibernate) in the Java space, which is one of the more popular web frameworks/tools these days. (According to Ted Neward, Groovy is "the late-night drunken binger love child of Ruby and Java.")</p>
      <h3>Ted Neward</h3>
      <p>Ted Neward is a Principal Consultant with ThoughtWorks, a global consulting firm. He focuses on programming languages, virtual execution engines, and large-scale enterprise systems and integration. He's written close to a dozen books in the .NET and Java ecosystems, has hundreds of articles in both areas scattered around the Web, and speaks at conferences around the world. He resides in the Pacific Northwest.</p>
      <h3>Tom Rodgers</h3>
      <p>Tom is a Senior Developer at Matlock Capital, LLC specializing in order management systems and exchange connectivity. He has worked in the financial industry for 13 years. Matlock Capital is a privately held investment business specializing in automated equity and equity options trading using advanced analytics.</p>
      <h3>Chuck Rose</h3>
      <p>Charles F. Rose, III is a senior computer scientist in the Pixel Bender compiler team at Adobe Systems Incorporated. His interest in domain specific languages spans his entire career. Prior to joining Adobe, he was a developer of the Microsoft Direct-3D High Level Shading Language compiler and a development lead of the extensible rights markup language (XrML), a declarative DSL for security policy expression and evaluation.</p>
      <h3>Dionysios G. Synodinos</h3>
      <p>Dionysios is a Web Engineer at NTUA and a freelance consultant, focusing on Rich Internet Applications, Web Application Security, Multi-channel access and Web Services. Going back and forth between server side programming and UI design for more than a decade, he has been involved in diverse software projects and contributed to different technical publications. Dionysios also blogs, twitters and firmly believes that "inside every large post is a small post struggling to get out".</p>
      <h3>Paul Vick</h3>
      <p>Paul Vick is an architect on the "Oslo" team. He is responsible for, among other things, the language processing capabilities of the "M" language. Prior to "Oslo," Paul was the language architect for Visual Basic, where he led the language design team and drove the re-design of the language for the .NET Framework. He also oversaw the design and implementation of the Visual Basic compiler. Paul originally began his career working at Microsoft on the Microsoft Access team. He is the original author of the Visual Basic .NET Language Specification and the Addison Wesley book "The Visual Basic .NET Language." His weblog can be found at <a runat="server" href="https://www.panopticoncentral.net">https://www.panopticoncentral.net</a>.</p>
      <h3>Markus Voelter</h3>
      <p>Markus Volter works as an independent researcher, consultant and coach for itemis AG in Stuttgart, Germany. His focus is on software architecture, model-driven software development and domain specific languages as well as on product line engineering. Markus also regularly writes (articles, patterns, books) and speaks (trainings, conferences) on those subjects. Contact him via voelter@acm.org or <a runat="server" href="https://www.voelter.de">www.voelter.de</a>.</p>
      <h2>Subject to Change</h2>
      <p>All of the material on this web site is subject to change. In fact, it's feedback from you, the DSL developer community, that can affect change. <a runat="server" href="mailto:csells@microsoft.com?subject=i've%20got%20something%20to%20say%20about%20the%20dsl%20devcon">If you've got something to say, say it now.</a></p>
    </div>
  </div>
</td>
<td valign="top" style="width:300px;">
  <div class="RightAdRail">
    <ContentInclude Identifier="dd799193" runat="server" />
  </div>
</td>