Lukas Renggli is a software engineer at Google who specializes in meta-models. He discusses several meta-models he has worked with including Protocol Buffers for serialization, Magritte for generic services, Google Web Toolkit for model-driven web development, and Helvetia for programming languages. He explains how each meta-model provides practical benefits like extensibility, language independence, and enabling the creation of specialized tools and applications.
Convert to study guideBETA
Transform any presentation into a summarized study guide, highlighting the most important points and key insights.
4. Lukas Renggli
Software Engineer at Google
YouTube Video Analytics
SCG Alumni
Bachelor, Master and PhD
Open-Source Communities
Seaside, Magritte and Pier
Helvetia, PetitParser
5. Roadmap
1. Protocol Bu鍖ers
Meta-data model for serialization
2. Magritte
Meta-model for generic services
3. Google Web Toolkit
Model-driven web architecture
4. Helvetia
Meta-model for programming languages
13. Why not XML/JSON?
Protocol Bu鍖ers are
310 times smaller
20100 times faster
consistent code generators
less ambiguous
evolvable
14. message Person { message Person {
required int32 id = 1; required int32 id = 1;
required string name = 2; required string name = 2;
optional string email = 3; repeated string email = 3;
} repeated Phone phone = 4;
}
:Person
:Person
:Person
15. Describe your data once, and use it
across platforms and languages
Evolution supported by design
Used at Google for almost all
data storage (鍖le formats, database)
remote procedure protocols (RPC)
30. Is this really a model?
public class Main implements EntryPoint {
public void onModuleLoad() {
Label label = new Label(Hello World);
RootPanel.add(label);
}
}
31. Is this really a model?
public class Main implements EntryPoint {
public void onModuleLoad() {
Label label = new Label(Hello World);
RootPanel.add(label);
}
}
High-level
Widgets
32. Is this really a model?
public class Main implements EntryPoint {
public void onModuleLoad() {
Label label = new Label(Hello World);
RootPanel.add(label);
}
}
High-level Description
Widgets Language
33. public class Main implements EntryPoint {
public void onModuleLoad() { platform
Label label = new Label(Hello World);
RootPanel.add(label); independent
}
} model
model
transformation
34. Transformation
Mozilla Chrome Safari IE ...
English
French
German
...
35. GWT
Write JavaScript using a high-level widget
library in a well de鍖ned (statically typed)
language
Translate and optimize code towards
speci鍖c browsers
Debugging actually works nowadays
36. He vetia
Helvetia
Meta-model for programming languages