You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+18-5
Original file line number
Diff line number
Diff line change
@@ -15,15 +15,28 @@ In the first hour, we will do a brief explanation of data-driven APIs, and then
15
15
- participants submit their solutions for critique
16
16
- review and discussion of solutions
17
17
18
-
## The Katas
19
18
20
-
0.[Maybe something here]()
19
+
## Your Design Task
21
20
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).
23
22
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).
25
24
25
+
If you've thought of other problem domain that you'd like to design a data-driven API for, go ahead!
26
26
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).
Like DOT, but, just for ERD diagrams. (A more limited domain might allow for a simpler syntax)
4
2
5
3
6
-
### Argument Parsing
4
+
### Modeling Physical Systems (Modelica)
7
5
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.
10
7
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)
12
11
13
12
14
-
### ACL on Data Structures
13
+
### System Dynamics
15
14
16
-
Representing ACL rules on certain fields (to then be used to ‘filter’ data structures)
[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?
… 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.
61
61
62
+
Resources
63
+
-[DOT on Wikipedia](https://en.wikipedia.org/wiki/DOT_(graph_description_language))
64
+
-[Lots of Examples](http://graphviz.org/gallery/)
62
65
63
-
### System Dynamics
64
66
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.
67
70
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]
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.)
0 commit comments