Boris Brodski · Languages · since 2002
Programming languages & DSLs
A full language built from parser to IDE, two decades of Xtext, and domain-specific languages that became the primary specification artefact of a national tax platform. Screencasts on all of it at xtextcasts.org.
Built a language. IDScript: syntax, high-performance parser, bytecode compiler and VM, standard library, C bridge, OLE automation, Eclipse RCP IDE — four years, in production.
Xtext since 1.0, Langium now. DSLs at the core of a public-sector platform for over a decade; talks at XtextCON and EclipseCon; xtextcasts.org.
Model-driven for real. Layered DSLs generating persistence, services and UI — designed, built and maintained, not slide-ware.
Parser toolbox. JavaCC, Yacc/Bison, ANTLR, hand-written; Haskell for the ideas.
IDScript
Between 2002 and 2007 I designed and implemented a new version of a company’s scripting language for customer-specific processes: rule sets, workflows, document generation, PDF form evaluation. Everything a language needs — syntax, a high-performance parser, bytecode compiler, virtual machine, standard library, a bidirectional C ↔ script bridge, generic OLE automation of Word and Excel, a plugin interface, bytecode encryption, a converter from the old syntax, an Eclipse RCP IDE and a LaTeX manual. It shipped to banks and real-estate companies.
Xtext and model-driven development
Xtext came in 2006 with version 1.0, first in a model-driven RAD framework that generated persistence, server and client layers from two layered DSLs, then in a ten-page web form generated from a DSL. Since 2012 it is at the heart of the KONSENS backend component I architect: text models as the primary artefact, maintained and evolved for over a decade by a team of 15+. That story was the XtextCON 2014 talk “Pay your taxes with Xtext”. Newer work uses Langium.
Teaching it
xtextcasts.org holds the screencasts; the Eclipse DemoCamp and EclipseCon talks covered embedded DSLs for testing enterprise applications, which also became an Eclipse Magazin article.
What I do for clients
- Language and DSL design: syntax, semantics, tooling, migration from legacy formats.
- Xtext and Langium projects — new, or rescuing ones that grew without a plan.
- Model-driven architectures that generate code worth maintaining.
- Training and coaching for teams adopting DSLs.
Relevant work
-
Software industrialisation with model-driven development
Two layered DSLs in Xtext 1.0 — a server DSL for the data model and a GUI DSL derived from it — generating persistence, DTO converters and client masks with business constraints. A complete model-driven RAD stack, designed and built as initiator.
JavaXtext 1.0Java EE 6JBoss 6Eclipse RCPPostgreSQLOracle DB
-
IDScript — a general-purpose scripting language
A complete language, built over four years — syntax, high-performance parser, bytecode compiler, virtual machine, standard library, a bidirectional C ↔ script bridge, generic OLE automation of Word and Excel, a plugin interface, a converter from the old syntax, an Eclipse RCP IDE and the LaTeX manual. Used in production for rule sets, workflows and document generation.
- Parser, bytecode compiler and virtual machine built from scratch
- Bidirectional C ↔ script bridge and generic OLE automation
- Eclipse RCP IDE and full language documentation
CC++OLEEclipse RCPJavaLaTeXVisual Studio
-
KONSENS — backend platform for German tax administration
Xtext text-model-driven development at the heart of a large public-sector platform — DSLs as the primary specification artefact, with generated persistence, services and UI, maintained over a decade ("Pay your taxes with Xtext", XtextCON 2014).
- Architecture and design authority; coaching a team of 15+ engineers
- Text-model-driven development with Xtext at the core of the platform
- Test-driven, with infrastructure as code (Puppet)
Java EEJBoss EAPXtextHibernateSOAPOracle DBEclipse RCPVaadinMavenGradlePuppetTDD
-
Web forms generated from Xtext models
Ten-page interactive form with complex business rules expressed in an Xtext DSL and generated into backend and JSF frontend.
JavaXtext 2.1XtendJava EEJSFJBoss 5HibernateOracle DBIntelliJ
-
Rule DSL for task distribution
Rule language for task distribution with regex support and user-defined functions, compiled through the Eclipse JDT compiler; the DSL doubled as the test specification.
JavaJavaCCEclipse JDT compilerDroolsRocketJ
-
Statutory accident insurance software — new development
Code generation from UML models (Enterprise Architect) and ANTLR-based parsing in a large Java EE project.
Java EEHibernateAspectJJBoss 4/5Eclipse RCPEnterprise ArchitectANTLROracle DB 11gPL/SQL
-
Programming competitions, Russia
1st place Moscow, 4th of ~100 nationally — the algorithmic foundation under everything since.
Pascal
Skills in this direction
AI & machine learning
- ★★★★★ Python 2011–
Languages & DSLs
- ★★★★★ Parser 2002–
- ★★★★★ Interpreter & bytecode VM design 2002–2007
- ★★★★★ Xtext / Xtend 2006–
- ★★★★☆ Langium 2023–
- ★★★★★ Eclipse Modeling Framework (EMF) 2016–
- ★★★★★ Model-driven architecture (MDA / MDSD) 2006–
- ★★★★★ JavaCC 2004–2010
- ★★★★☆ Yacc / Bison 2005–2007
- ★★★☆☆ ANTLR 2008–2010
- ★★★★☆ Haskell 2004–2009
Java
- ★★★★★ Java 2002–
- ★★★★★ SWT / JFace / Eclipse RCP 2005–
Infrastructure
- ★★★★★ LaTeX / TikZ 2004–
Talks & writing
- 2015-03 Automatisierte Tests, die Spaß machen — Enterprise-Applikationen mit Xtend und Embedded DSLs effektiv testen — Eclipse Magazin 3.15 · article
- 2015-11 Writing tests with Jnario — Eclipse DemoCamp Bonn · 20 min, German
- 2014-11 Write scalable enterprise application tests with Xfactory — Eclipse DemoCamp Bonn · 20 min, German
- 2014-10 Write cool scalable enterprise application tests with Xtend & embedded DSLs — EclipseCon Europe, Ludwigsburg · 35 min, English
- 2014-06 Pay your taxes with Xtext — Eclipse DemoCamp Kassel · 20 min, German
- 2014-05 Pay your taxes with Xtext — a case study — XtextCON, Kiel · 30 min, English
- 2013-12 Boost JUnit tests with Xtend — Eclipse DemoCamp Frankfurt · 20 min, German
- 2013-11 Boost JUnit tests with Xtend and JMockit — Eclipse DemoCamp Bonn · 20 min, English
- 2013-06 Test-driven development with Jnario — Eclipse DemoCamp Bonn · 20 min, German
- ongoing xtextcasts.org — Screencasts on Xtext and language engineering · xtextcasts.org