/
slides.html
129 lines (125 loc) · 6.9 KB
/
slides.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
<div class="row show-grid">
<div class="span12">
<div class="row show-grid">
<div class="span12">
<header class="page-header">
<h1 class="entry title">Slides</h1>
</header>
<div id="minecraft" class="entry-content">
<h3>October 2019 : Generating castles for Minecraft™ using Haskell</h3>
<div class="row show-grid">
<div class="span8">
A lightning talk given at the Haskell Exchange 2019. My kids and I are big fans of Minecraft and we found ourselves wanting to generate large structures using code. We tried Microsoft's Logo-like Steve-bot and whilst it was very easy to use, like any imperative approach, composition was difficult to achieve. Using Haskell, pure functions, Monoids and a prudent use of lenses, a remarkably simple and compositional domain-specific language (DSL) can be built.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/minecraft.pdf" title="Generating castles for Minecraft™ using Haskell">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-minecraft.png" alt="preview"/>
</div>
</div>
</div>
<div id="streaming" class="entry-content">
<h3>October 2018 : Building a Program from Streams</h3>
<div class="row show-grid">
<div class="span8">
A talk given at the Haskell Exchange 2018 which introduces the "streaming" package. I used streaming to build a non-trivial backup program, Atavachron, which is also introduced.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/streaming.pdf" title="Building a Program from Streams">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-streaming.png" alt="preview"/>
</div>
</div>
</div>
<div id="q-edsl" class="entry-content">
<h3>October 2017 : An EDSL for KDB/Q</h3>
<div class="row show-grid">
<div class="span8">
A talk given at the Haskell Exchange 2017 which explores the building of an EDSL for the KDB/Q database language at Standard Chartered. I start with a rationale for choosing such an approach; then review techniques such as Higher-order abstract syntax (HOAS), recursion schemes, meta-programming and embedding Algebraic Datatypes. Finally, I reflect on the success of the project and discuss the lessons learned.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/AnEDSLForKDBQ.pdf" title="An EDSL for KDB/Q">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-qedsl.png" alt="preview"/>
</div>
</div>
</div>
<div id="structural-typing" class="entry-content">
<h3>October 2014 : Structural Typing for Structured Products</h3>
<div class="row show-grid">
<div class="span8">
In this talk, given at the Haskell Exchange 2014, Peter Marks and I walk through the motivation that led us towards using row-polymorphism and extensible records/cases in our DSL, Lucid, for describing financial products and trading strategies.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/StructuralTypingForStructuredProducts.pdf" title="Structural Typing for Structured Products">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-structural.png" alt="preview"/>
</div>
</div>
</div>
<div id="exotic-tools-for-exotic-trades" class="entry-content">
<h3>December 2013 : Exotic Tools for Exotic Trades</h3>
<div class="row show-grid">
<div class="span8">
The Functional Payout Framework is a mature and successful software platform supporting the vast majority of the equity derivatives business within Barclays. The slides for this talk, given at CodeMesh 2013, introduce the project and retrospectively review some of the ideas and techniques that have been used to date.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/HaskellAtBarclays.pdf" title="Exotic Tools for Exotic Trades">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-haskellatbarclays.png" alt="preview"/>
</div>
</div>
</div>
<div id="recursion-schemes-by-example" class="entry-content">
<h3>March 2013 : Recursion Schemes by Example</h3>
<div class="row show-grid">
<div class="span8">
In this talk, given to the London Haskell
Users Group, I explored both the theory and
practice of various recursion schemes
applied to real world problems. I also
demonstrated how to achieve compositional
data-types and data-type generic programs
by modelling recursive types as fixed
points of functors. The slides feature an
abundance of code, starting with simple
list examples and quickly moving on to
more advanced topics, such as program
analysis, optimisation, memoization,
templating and more. The literal haskell
source can be found <a href="https://github.com/willtim/recursion-schemes/raw/master/slides.lhs">here</a>.<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="https://github.com/willtim/recursion-schemes/raw/master/slides-final.pdf" title="Recursion Schemes by Example">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-recursionschemes.png" alt="preview"/>
</div>
</div>
</div>
<div id="git-essentials" class="entry-content">
<h3>October 2011 : Git Essentials</h3>
<div class="row show-grid">
<div class="span8">
A fast and technical overview of the distributed
version control system known as Git; hopefully showing what
the fuss is about.
<p/>
<a class="btn btn-primary" style="margin: 1em 0;"
href="slides/GitEssentialsFinal.pdf" title="Git Essentials">
<i class="icon-picture"></i> Download</a>
</div>
<div class="span4">
<img src="/img/slides-gitessentials.png" alt="preview"/>
</div>
</div>
</div>
</div>
</div>
</div>
</div>