Skip to content

Commit 880c0a7

Browse files
committed
Reorganize folder structure; merge into a single task
1 parent e9c9d45 commit 880c0a7

6 files changed

+114
-116
lines changed

README.md

+18-5
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,28 @@ In the first hour, we will do a brief explanation of data-driven APIs, and then
1515
- participants submit their solutions for critique
1616
- review and discussion of solutions
1717

18-
## The Katas
1918

20-
0. [Maybe something here]()
19+
## Your Design Task
2120

22-
1. [Designing a data-driven DSL based on an existing declarative DSL](/docs/data-driven-by-porting.md)
21+
1. Choose one of the problem domains from [this list](./problem-domains.md).
2322

24-
2. [Designing a data-driven DSL from scratch](/docs/data-driven-from-scratch.md)
23+
We recommend choosing a problem domain that you are at least somewhat familiar with (to better understand how your syntax might be used in practice).
2524

25+
If you've thought of other problem domain that you'd like to design a data-driven API for, go ahead!
2626

27-
After you're done with any of the exercises, if you'd like to have them potentially discussed in Part 2 of the workshop, add a link to [the spreadsheet](https://docs.google.com/spreadsheets/d/1F7TGID104-ayVhOT47RV3fCLHpvAaeOGZScIKdvG9-8/edit?usp=sharing).
27+
28+
2. Design a data-driven DSL for that problem domain.
29+
30+
give some examples of how you would use it.
31+
32+
see [the template](./template.md)
33+
34+
The task is *not* to implement the system, it is just to design the data-driven API.
35+
36+
You do not have to implement the entire language, just use the existing language as inspiration.
37+
38+
3. Reflect using [these questions](./evaluating-notations.md)
39+
40+
4. After you're done with your design(s), if you'd like to have them potentially discussed in Part 2 of the workshop, add a link to [the spreadsheet](https://docs.google.com/spreadsheets/d/1F7TGID104-ayVhOT47RV3fCLHpvAaeOGZScIKdvG9-8/edit?usp=sharing).
2841

2942

docs/data-driven-by-porting.md

-83
This file was deleted.
File renamed without changes.
File renamed without changes.
Original file line numberDiff line numberDiff line change
@@ -1,40 +1,42 @@
1-
### ERD Diagrams
21

3-
Like DOT, but, just for ERD diagrams. (A more limited domain might allow for a simpler syntax)
42

53

6-
### Argument Parsing
4+
### Modeling Physical Systems (Modelica)
75

8-
“data driven ‘spec’ for what a commandline can take in”,
9-
What would the extracted data look like?
6+
Modelica is a language used to model complex systems, such as the electrical and mechanical subsystems of a car. Modelica lets you define components (such as a "resistor") with input and output "pins", define equations that related the various inputs and outs (ex. `V = IR`), and then hook up and simulate a network of components.
107

11-
`./program -l -p 8080 -d /usr/logs -g a,b,c,d,e`
8+
Resources
9+
- [Modelica by Example (Book)](https://book.xogeny.com/)
10+
- [Modelica on Wikipedia](https://en.wikipedia.org/wiki/Modelica)
1211

1312

14-
### ACL on Data Structures
13+
### System Dynamics
1514

16-
Representing ACL rules on certain fields (to then be used to ‘filter’ data structures)
15+
representing System Dynamics (stocks and flows)
16+
https://en.wikipedia.org/wiki/System_dynamics
1717

1818

19-
### Finite-State Machines
20-
https://en.wikipedia.org/wiki/Finite-state_machine
21-
19+
### Mathematical Notation
2220

21+
https://en.wikipedia.org/wiki/TeX#Mathematical_example
2322

23+
for generating, manipulating and then..
24+
… converting for use in latex
25+
… converting for use in a symbolic math system (Maple, Mathematica)
2426

25-
### End-to-End Testing
2627

27-
declarative format to run E2E tests
28+
### Gherkin
2829

29-
can do so w/ full support of language
30-
but, since the domain is pretty limited (visit url, click button 'x', check for value 'y', etc.), could a data-driven syntax work?
30+
Gherkin is a language used for writing BDD test cases.
3131

32+
Resources
33+
- [Gherkin on Wikipedia](https://en.wikipedia.org/wiki/Cucumber_(software)#Gherkin_language)
34+
- [Gherkin Docs](https://cucumber.io/docs/gherkin/reference/)
3235

33-
https://github.com/teamcapybara/capybara
34-
https://en.wikipedia.org/wiki/Selenium_(software)
35-
https://developers.google.com/web/tools/puppeteer
3636

37+
### Describing Language Grammars (Instaparse)
3738

39+
[Instaparse](https://github.com/engelberg/instaparse) is an existing Clojure library for describing context-free grammars, but it uses an [EBNF](https://en.wikipedia.org/wiki/Extended_Backus%E2%80%93Naur_form) based custom-string syntax. What might it look like if it was data-driven?
3840

3941

4042
### Musical Notation
@@ -50,21 +52,88 @@ https://en.wikipedia.org/wiki/MusicXML
5052

5153

5254

55+
### Dockerfiles
5356

54-
### Mathematical Notation
5557

56-
https://en.wikipedia.org/wiki/TeX#Mathematical_example
58+
### Describing Graphs (DOT / GraphViz)
5759

58-
for generating, manipulating and then..
59-
… converting for use in latex
60-
… converting for use in a symbolic math system (Maple, Mathematica)
60+
DOT is a language used for describing graphs (the nodes-and-vertices kind, not the bar-chart kind). Tools like GraphViz consume DOT files and use various algorithms to render the graphs.
6161

62+
Resources
63+
- [DOT on Wikipedia](https://en.wikipedia.org/wiki/DOT_(graph_description_language))
64+
- [Lots of Examples](http://graphviz.org/gallery/)
6265

63-
### System Dynamics
6466

65-
representing System Dynamics (stocks and flows)
66-
https://en.wikipedia.org/wiki/System_dynamics
67+
### rake
68+
69+
Rake is a language used to describe tasks and dependencies in the context of software build automation.
6770

71+
define tasks, with optional multiple dependencies
72+
73+
Resources
74+
- [Rake on Wikpedia](https://en.wikipedia.org/wiki/Rake_(software))
75+
- [Martin Fowler's Intro to Rake](https://martinfowler.com/articles/rake.html)
76+
77+
78+
### AWK
79+
80+
AWK is a language for extracting and manipulating data from text files.
81+
82+
Resources
83+
- [AWK on Wikipedia](https://en.wikipedia.org/wiki/AWK)
84+
85+
86+
### XSLT... for EDN?
87+
88+
XSLT is a language for describing transformations of XML documents in XML syntax.
89+
90+
Perhaps, it'd be possible to create a similar language for transforming EDN documents in EDN?
91+
92+
Resources
93+
- (XSLT on Wikipedia)[https://en.wikipedia.org/wiki/XSLT]
94+
95+
96+
### Board Games
97+
98+
https://en.wikipedia.org/wiki/Portable_Game_Notation
99+
https://en.wikipedia.org/wiki/Smart_Game_Format
100+
101+
102+
### ERD Diagrams
103+
104+
Like DOT, but, just for ERD diagrams. (A more limited domain might allow for a simpler syntax)
105+
106+
107+
### Argument Parsing
108+
109+
“data driven ‘spec’ for what a commandline can take in”,
110+
What would the extracted data look like?
111+
112+
`./program -l -p 8080 -d /usr/logs -g a,b,c,d,e`
113+
114+
115+
### ACL on Data Structures
116+
117+
Representing ACL rules on certain fields (to then be used to ‘filter’ data structures)
118+
119+
120+
### Finite-State Machines
121+
https://en.wikipedia.org/wiki/Finite-state_machine
122+
123+
124+
125+
126+
### End-to-End Testing
127+
128+
declarative format to run E2E tests
129+
130+
can do so w/ full support of language
131+
but, since the domain is pretty limited (visit url, click button 'x', check for value 'y', etc.), could a data-driven syntax work?
132+
133+
134+
https://github.com/teamcapybara/capybara
135+
https://en.wikipedia.org/wiki/Selenium_(software)
136+
https://developers.google.com/web/tools/puppeteer
68137

69138

70139
### Chemical Formulas
@@ -76,7 +145,6 @@ https://www.webqc.org/balance.php
76145
https://en.wikipedia.org/wiki/International_Chemical_Identifier
77146

78147

79-
80148
### Chemical Structural Formulas
81149

82150
Representing the molecular structure of a complex compound, for the purpose of then generating a diagram (one or more of: skeletal diagram, Lewis dot diagram, etc.)
@@ -90,8 +158,8 @@ https://en.wikipedia.org/wiki/International_Chemical_Identifier
90158
http://www.xml-cml.org/documentation/index.html
91159

92160

93-
94161
### Board Games
95162

96163
https://en.wikipedia.org/wiki/Portable_Game_Notation
97164
https://en.wikipedia.org/wiki/Smart_Game_Format
165+

template.md

Whitespace-only changes.

0 commit comments

Comments
 (0)