Tag Archives : Domain Specific Languages

Register now for Lang.NET Symposium 2009

We’re now accepting registrations and talk proposals for the 2009 Lang.NET Symposium, which will be held on the Microsoft campus April 14th-16th.

For those who aren’t familiar with this event, the Lang.NET Symposium is an opportunity for programming language designers and researchers from industry and academia to get together and basically geek out for two and a half days. And it’s not just Microsoft language wonks like Anders Hejlsberg or platform wonks like Don Box. For example, last year we had Dan Ingalls from Sun, Gilad Bracha from Cadence, John Rose from OpenJDK and Wez Furlong from the PHP Project among many others.

If you’re curious about the kind of talks we typically have at Lang.NET, the talks from 2006 and 2008 are available online. 

I’ve attended bothprevious Lang.NET Symposiums and spoke at last year’s event, but this will be my first as a part of the team driving the event itself. We’ve expanded a little this year, though we’re still a small conference so the signal-to-noise ratio should still be very high. We barely fit in the Platform Lab last year, so we moved this year’s event to Microsoft Research’s sweet new building #99.

This year, we’re very excited to be joined at the hip with Chris Sells’ DSL Developers Conference. Those guys over in CSD are working on some cool language stuff of their own, so it just made sense to hold the two events in the same space, one right after the other. Note, registration for each event is separate. You’re welcome to attend both – we’d love it if you did – just make sure you register for both.

As in the past, there is no cost to attend Lang.NET. You get yourself here and find place to stay and we’ll take care of the content, meals and beers in the evening. Just make sure you let us know you’re coming and what, if anything, you’re interested in getting up and talking about by registering at the Lang.NET Symposium website.

The Reese’s Peanut Butter Cups of Language Conferences

It’s been about 11 months since the last Lang.NET Symposium and we’ve been working on next year’s version. But then we discovered that we’re not the only ones inside Microsoft thinking about having a language conference. A couple of meetings later, and we’ve decided to combine them, which will assuredly lead to side conversations like this:

DSL DevCon Attendee: Hey, you got your compiler in my DSL!

Lang.NET Attendee: Hey, you got your DSL in my compiler!

[They sample the combined content]

Both Attendees: Mmmm, two great conferences that work well together!

Well, maybe not. But seriously, it should be a great combined conference.

However, there are some logistics things we need to work out, like how many days should the combined conference run? We figure the “right” answer to these questions depends on the likely overlap between the two conferences. Frankly, we don’t know what the overlap will be so we decided to simply, you know, ask.

If you are interested in attending Lang.NET, the DSL DevCon, or both next year, please head over to Chris Sells blog and make your voice heard.

Morning Coffee 164

  • Big news since my last Morning Coffee post was the announcement of Live Mesh. I’ve been running it for about a month, and I’m really digging it. Make sure you check out the team blog and watch the developer tour video (be on the lookout for IPy about half way thru the video)


  • I had a great time @ the ALT.NET open space conference last weekend. I was somewhat distracted on Saturday as due to a family communication mixup, I had to bring my son Patrick with me. Jeffrey Palermo shot a cute video of him (3 minutes in) where he explains that he’s at the conference “to be with my dad”. Having a five year old is a little distracting, but everyone was amazingly cool with having him around. When he gets a little older I have no doubt he’ll be attending conferences and leading open sessions.
  • I did a session on F#, but it felt kinda all over the place. I hadn’t touched F# in a few months and it showed IMO. Matt Podwysocki was there to help keep the session from devolving into mass chaos. Thanks Matt.
  • My favorite session of the conference was Scott Hanselman’s “Are We Innovating?” talk, which I think originated from a question I asked him: There are many examples of large OSS projects in other dev communities that get ported to .NET (NHibernate, NAnt, MonoRail, etc). Can you name one that’s gone the other way? I can’t.
  • I took Matt’s advice and joined the local ALT.NET Seattle group.

DyLang Stuff

  • Martin Maly posts about how dynamic method dispatches are cached in three different layers by the DLR. You shouldn’t care about this stuff if you’re a DLR language user, but you will certainly care about it if you’re a DLR language builder.
  • I’m really excited to see Phil Haack (whom I met F2F @ ALT.NET) is experimenting with IronRuby & ASP.NET MVC. True, I’d rather it was IPy, but his Routes.LoadFromRuby would work with Python with very little code change.
  • Note to self, take a deeper look at Twining, the IPy database DSL by David Seruyange.
  • Daily Michael Foord – Ironclad 0.2 Released. Ironclad is a project to implement Python’s C extension API in C# so that IronPython could load standard Python C modules like SciPy and NumPy. So far, they’re able to load the bz2 module

Other Stuff

  • Congrats to Brad and Jim for shipping xUnit.net 1.0.
  • Everyone seems to be jumping on the functional C# coding bandwagon. Bart De Smet’s series on pattern matching in C# is currently at eight posts. Now Luca Bolognese is in on the action, with three posts so far on functional code in C#. I like how Luca keeps writing that the C# syntax is “not terrible” for functional programming. Again, why suffer thru the “not terrible” syntax when you could be using F# instead? (via Charlie Calvert)
  • I need to take a look at VLinq. Charlie and Scott Hanselman both mentioned it recently.
  • I would like to have been in the conversation with Ted Neward, Neal Ford, Venkat Subramaniam, Don Box and Amanda Silver.
  • I haven’t had any time to play with XNA of late, which means the great list of GDC videos Dave Weller posted on the XNA team blog will remain beyond my ability to invest time for now.
  • There’s a new drop of Spec# from MS Research. IronRuby is using Spec# heavily as I recall.

Practical Parsing in F#

I’m interested in parsing because I’m interested in Domain Specific Languages. F# is pretty good for internal DSLs, but internal DSLs are obviously limited by the syntax of the host language. If you want complete control over the language, you’ve got to build your own parser.

The defacto standard for parser development is Yet Another Compiler Compiler, or yacc. There’s a version of yacc for .NET as well as one specifically for F#. However, I’m not a fan of yacc. Yacc parsers are specified using context-free grammar (aka CFG). But CFG’s can be ambiguous – actually, it’s nearly impossible to build an unambiguous CFG. Personally, I’m a big fan of Parsing Expression Grammars (or PEGs) which among other advantages makes it impossible to develop ambiguous grammars. Furthermore, PEGs don’t require a separate lexical analyzer like lex, so I think they’re more suitable for building modular compilers.

Since I like PEGs and F# so much, I developed a parser for the PEG grammar from the original PEG whitepaper using F#. The grammar is much simpler than a language like C#, but with twenty nine grammar productions it’s certainly not trivial. The F# implementation is fairly straightforward backtracking recursive decent parser, which makes it easy to understand even if you’re not a parser guru. It’s also small – around 400 lines of code including comments. But I think the code illustrates both the general value of Functional Programming as well as the specific value of F#. Here’s how the series is shaping up (though this is subject to change):

I was originally planning to post the code for the parser itself with this post. However, i find that I’m revising the code as I write the articles in this series, so I’m going to hold off for now. If you’re really desperate, drop me a line and I’ll see what I can do.

Update – Almost forgot, if you’re going to follow along at home, I’m using the latest version of F#, v1.9.3.7. Note, the F# Downloads page on the MS Research is woefully out of date, so go to the MS Research Downloads page. Currently, it’s the most recent release. It snaps into VS 2005 and 2008 plus has command line tools. If you’re an VS Express user, Douglas Stockwell explained how to roll your own F# Express.

Much Later Update – The code is now available on my Skydrive.

Morning Coffee 118 – ITARC SoCal Edition

I’m not back on blog sabbatical, but between finishing my presentation and attending ITARC SoCal earlier this week – not to mention being sick – I didn’t have time to write anything. Normal Morning Coffee resumes tomorrow, here’s a summary of my notes from on my two days at ITARC.

  • Scott Ambler did the opening keynote on agile enterprise architecture strategy.
    • He claims that success is more prevalent in the industry that people think, because the industry has a narrow definition of success. If you change (aka widen) the definition, the success rate goes way up! That’s not exactly useful, but he referred to an as-yet-unpublished survey on project success rate that should be up on DDJ “soon”. I’d like to see that raw data.
    • While I agree with most of his points, Scott’s presentation style is very abrasive. For example, he makes the point that there is no one-size-fits-all process, which I couldn’t agree with more. But does he say it like that? No, he says “Repeatable processes? What an incredibly stupid idea!” even though the room is full of folks who probably think repeatable process is actually a good idea.
    • Scott suggested that unit tests are the best way to specify requirements. I’ve heard this before from agile practitioners, but something nags at me about it. Certainly, having executable requirements is a huge plus. But how can you be sure they’re the right requirements if the stakeholders can’t read them?
    • This keynote setup what turned out to be a major theme for the conference – traditional vs. non-traditional enterprise architecture. Or as I would characterize it: Industrial vs. Post Industrial architecture.
  • Simon Guest presented on user experience in architecture, which is his specialty these days. He lays out a UX model that was very compelling. I’m not sure if there’s a whitepaper version of this model (there should be) but you can see the model as he lays it out in powerpoint. I’ve seen Simon’s UX decks, but never actually seen him present it, so that was a treat.
  • I skipped Ted Neward’s session in order to take in something new. So I went to see Daniel Brookshier of No Magic talk about DoDAF – the Dept. of Defense Architecture Framework. I had met Daniel the night before at dinner and while No Magic primarily sells UML modeling tools, we seemed to agree that UML is most useful (in my opinion “at all useful”) when you imbue the vanilla models with custom semantics – aka you turn them into a DSL. So while I liked hanging out with Daniel, his DoDAF session did nothing except ensure I never work for the DoD. There’s no amount of money that’s worth dealing with the two dozen or so bureaucratic models that are all wholly isolated from anything that actually executes. Daniel kept saying how easy these models are to build. I’m sure they are, but that’s not the problem. Since they’re not an intrinsic part of a construction process, they won’t stay up to date. This was a very industrial approach – Daniel even stated at one point that he was “anti-Ambler”.
  • David Chappell did the second keynote on grid-enabled SOA.
    • When did David join Oracle? I guess I haven’t been paying much attention to competitors since I moved to MSIT.
    • There’s an article version of this presentation available, but I haven’t read it yet.
    • For me, the best part of this presentation was him acknowledging that there’s a need for non-stateless services, something he has blogged about recently. I’m not sure I agree with his framework for stateful interaction, but at least he’s admitting that it’s needed. Now if I could only convince the Connected Systems Division…
    • The rest of his talk was basically a sales pitch for the Coherence product Oracle recently bought. Basically, it’s a huge, multi-node, redundant, in-memory database. While I’m sure there are a few high-end problems out there – my immediate thought was travel and David mentioned SABRE is one of their customers – this is not a good general purpose solution, though David was positioning it as such.
  • My talk on “Moving Beyond Industrial Software” was after the second keynote. It was good, if sparsely attended. I’m doing it again @ the p&p Summit so I’ll post the slides and hopefully a recording after that.
  • I skipped the last session of the day to decompress, so the next session I went to was the day two opening keynote by Fred Waskiewicz, OMG’s Director of Standards. His talk, unsurprisingly, was on the value of standards – in particular, OMG’s standards. This was about as anti-Ambler, anti-agile, pro-industrial a presentation as you could make. I’d heard this spiel before, so I mostly tuned out. I did challenge Fred on his point that the UML models are at a higher level of abstraction than code. They’re not – they’re a visualization and they’re very useful, but they’re at the exact same level of abstraction as code. That’s why you can automatically generate the visualization in tools like Visual Studio’s class designer. Fred didn’t have much of a response to my question, though he did point out that some models like Business Process Models are, in fact, higher levels of abstraction.
  • Next was what I thought was the best presentation of the entire show, IASA Founder Paul Preiss on what architects need to know. Note, I’m not brown-nosing Paul here – I’m the guy that first decided to commit Microsoft as an IASA sponsor, so he has to like me even if I thought his session was crap. Paul talked about architect as a career, comparing it to doctors. He worries that he’s over-using that analogy, but software architect has much more in common career wise than it does with building architects IMO. I wonder where one might do their architecture residency? He also thinks of architects as “living governance”, saying that project managers answer to the stakeholders while architects are beholden to the stockholders. I like that approach to governance.
  • Finally, I attended Vince Casarez’s session on Web 2.0 in the enterprise. Vince is an Oracle VP and this turned into a sales pitch like David Chappell’s keynote did. I’m not sure what product it was, but it reminded me of QEDWiki from IBM that I saw at ETech last year, which isn’t a complement. If you’re going to build an enterprise mashup designer, is it just me or is “lots of code spew” a poor model. Why not go for something like Popfly or Pipes?
  • I left early the second day in order to get home before my kids went to sleep (which I failed at due to lack of naptime). Overall, the conference was pretty good, though a bit sparsely attended in part I think because they held it in San Diego. The Orange Country IASA user group is very popular, so I don’t understand why they didn’t just hold it around there somewhere. Live and learn, I guess. They did have to postpone the DC event until next year sometime. Here’s hoping I get invited to that as well as well as ITARC SoCal ’08 (note, that *is* brown-nosing a bit)