-
Notifications
You must be signed in to change notification settings - Fork 4
Expand file tree
/
Copy pathindex.html
More file actions
978 lines (924 loc) · 51.8 KB
/
index.html
File metadata and controls
978 lines (924 loc) · 51.8 KB
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
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
<!DOCTYPE html>
<html class="no-js" lang="en">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1, minimum-scale=1, maximum-scale=1" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="Expires" content="-1" />
<title>(def shef) - A monthly functional programming meetup in Sheffield</title>
<link rel="stylesheet" href="css/main.css" />
<!-- IE Fix for HTML5 Tags -->
<!--[if lt IE 9]>
<script src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
</head>
<body>
<header>
<div class="row">
<hgroup>
<h1>
(def shef)
<span class="subheader">A monthly functional programming meetup in Sheffield</span>
</h1>
</hgroup>
</div>
</header>
<div class="row">
<div class="all-columns">
<p class="lead">
We get together on the second Tuesday of every month to talk about various
aspects of
<a href="http://en.wikipedia.org/wiki/Functional_programming"
>functional programming</a>.
</p>
<p>
<a
href="https://twitter.com/def_shef"
class="twitter-follow-button"
data-show-count="false" data-lang="en" data-dnt="true"
>Follow @def_shef
</a>
—
<a href="https://groups.google.com/forum/#!forum/def-shef"
>Mailing List</a>
—
<a href="https://opentechcalendar.co.uk/group/235-def-shef"
>Events Calendar</a>
</p>
<p>Anyone attending the event must adhere to the <a href="http://confcodeofconduct.com/">Code of Conduct</a>. To report any incidents <a href="mailto:paul.brabban+defshef@gmail.com">email us</a>.
</div>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef46">
<a name="defshef46"></a>
<h2>Audio Synthesis in F# with John Stovin</h2>
<p class="meeting-info"> Tuesday May 8th, 2018 - 7:00pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/audio-synthesis-in-f-with-john-stovin-tickets-44304964341">Tickets</a>
</p>
<P>John Stovin presents "Audio Synthesis in F#"</p>
<p>Specifically, John will share with you how reactive event handling and lazy sequences can be used together to create a simple software-based audio synthesizer.
No knowledge of signal processing theory is required. John will start with a simple, non-technical and non-mathematical explanation of the basic concepts of digital signal processing. John will then build on that explanation to show how to design a basic signal flow and processing elements using pure functional elements, and how to make this signal flow interact with external devices in real time.
F# topics covered will include: Seq & List; Event Handling; Sequence comprehension; Higher-order functions, particularly unfold.</p>
<p>If you would like to follow along with code during the talk, you will need a Windows laptop (John's code currently only supports Windows audio) with an audio card, F# and an editor.</p>
<p>This is a beginner-friendly talk.</p>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef45">
<a name="defshef45"></a>
<h2>Dependent Typing with Idris</h2>
<p class="meeting-info"> Tuesday March 13th, 2018 - 6:30pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/dependent-typing-with-idris-tickets-43507538218">Tickets</a>
</p>
<P>In March's (def shef), we're looking at dependent typing and the kinds of problems it can help with, using the Idris language.</p>
<p>We're all beginners with this language, so everyone is welcome! We'll be working through introductory materials
(feel free to have a read around and a go yourself beforehand) and looking for problems that demonstrate the advantages of a dependently typed language.
This will be a hands-on session that isn't very structured.
You'll need a laptop and it'll help if you've already installed Idris (alternatively you can try using an online REPL like https://tryidris.herokuapp.com/console)</p>
<p>This is a beginner-friendly talk.</p>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef44">
<a name="defshef44"></a>
<h2>REPL-Driven Development</h2>
<p class="meeting-info"> Tuesday February 13th, 2018 - 6:30pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-43-writing-a-tile-matching-game-fp-style-tickets-39358339854">Tickets</a>
</p>
<P>Ever wondered what makes Clojure so appealing to work with?
In February, Ed will show how the REPL and other unusual features of Clojure make it a productive and fun language to use!<p>
<p>He'll begin with a brief introduction to Clojure before diving into an interactive, live coding session.
If you want to brush up on your Clojure in the meantime, http://www.4clojure.com/ is a collection of many Clojure exercises to practice.
Get set up quickly with https://clojure.org/guides/getting_started, and https://www.braveclojure.com/ is a great, free introduction to the language.</p>
<p>This is a beginner-friendly talk.</p>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef43">
<a name="defshef41"></a>
<h2>Writing a tile-matching game, FP style</h2>
<p class="meeting-info"> Tuesday January 9th, 2018 - 6:30pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-43-writing-a-tile-matching-game-fp-style-tickets-39358339854">Tickets</a>
</p>
<P>Ever wondered how to write a tile-matching game (like Candy Crush and the earlier Bejeweled)?
Traditionally game developers would write a game - the graphics, state, and user interaction - in an imperative style, but recently the functional approach is getting more popular.
<p>Hakim Cassimally (BBC, Manchester LambdaLounge) has been exploring the process of developing a tile-matching game in Clojure.
He'll present present some of the basics of modelling the game grid, and playing a basic event loop,
introducing some important concepts in functional programming and simple game development.</p>
<p>This is a beginner-friendly talk.</P>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef41">
<a name="defshef41"></a>
<h2>(def shef 41) Lean Coffee</h2>
<p class="meeting-info"> Tuesday November 14, 2017 - 6:30pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-41-lean-coffee-tickets-39357278680">Tickets</a>
</p>
<P>Everything is better when it's lean, even coffee and functional programming.</P>
<p>We'll try the lean coffee format at at (def shef 41)... bring your own agenda!
Anything you want to talk about, whatever your experience with functional programming. The broader range of topics the better!</p>
<p>What do I need? Nothing - just bring yourself.</P>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef40">
<a name="defshef40"></a>
<h2>(def shef 40) More Monad Challenges</h2>
<p class="meeting-info"> Tuesday October 10, 2017 - 6:30pm
- <a href="https://www.google.com/maps/search/?api=1&query=Rutland Arms, 86 Brown Street, Sheffield, S1 2BS">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-40-more-monad-challenges-tickets-37913945632">Tickets</a>
</p>
<P>We had a look at the <A HREF="http://mightybyte.github.io/monad-challenges/" TARGET="_blank" TITLE="Monad Challenges" REL="noreferrer noopener nofollow noopener noreferrer nofollow">The Monad Challenges</A> in August's <A HREF="http://defshef.github.io/#ep38" TARGET="_blank" TITLE="(def shef 38)" REL="noreferrer noopener nofollow noopener noreferrer nofollow">(def shef 38)</A>. They're a thought-provoking set of problems to solve, designed to help you "discover" monads rather than teach them to you.<BR></P>
<P>We enjoyed the last session and so we're revisiting! The Monad Challenges are written in Haskell, but I think you could have a go in other functional languages too.</P>
<P>(def shef) is open to all, beginners and experts alike. If you're new to functional programming, we'd love you to come along and wel'll help you get started!</P>
<P>We thank Sky Betting and Gaming for kindly sponsoring this event. <A HREF="http://appointments.thesundaytimes.co.uk/article/best100companies/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">One of the Sunday Times' Top 100 companies to work for</A>, based in Leeds and Sheffield, there are all sorts of <A HREF="http://engineering.skybettingandgaming.com/jobs/" TARGET="_blank" REL="noreferrer noopener nofollow noopener noreferrer nofollow">roles available now</A>.</P>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef38">
<a name="ep39"></a>
<h2>(def shef 39)</h2>
<h4>Open Session</h4>
<p class="meeting-info">
12th September - 6:30pm
- <a href="https://www.google.co.uk/maps/place/Rutland+Arms/@53.3829734,-1.4867661,15z/data=!4m12!1m6!3m5!1s0x48798283792328cf:0x135de40704798852!2sRutland+Arms!8m2!3d53.3765183!4d-1.4674836!3m4!1s0x48798283792328cf:0x135de40704798852!8m2!3d53.3765183!4d-1.4674836?hl=en">Rutland Arms</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-39-open-session-tickets-37562605765">Tickets</a>
</p>
<p>We're in a new venue this month, the upstairs room at the Rutland Arms in Sheffield.</p>
<p>This is an open session. Everyone is welcome to come along, regardless of experience. If you don't know what functional programming is (or why you care), or if you want to talk Clojure vs. Haskell, this is the session for you!</p>
<p>Bring a laptop if you want to get hands-on.</p>
<aside>(def shef) thanks Sky Betting and Gaming for kindly sponsoring this event.
<a href="http://appointments.thesundaytimes.co.uk/article/best100companies/">One of the Sunday Times' Top 100 companies to work for</a>, based in Leeds and Sheffield, there are
<a href="http://engineering.skybettingandgaming.com/jobs/">roles available now</a>.<aside>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef38">
<a name="ep38"></a>
<h2>(def shef 38)</h2>
<h4>Monad Challenges</h4>
<p class="meeting-info">
8th August - 6:30pm
- <a href="https://www.google.nl/maps/place/Showroom+Workstation/@53.3771232,-1.4675653,17z/data=!3m1!4b1!4m5!3m4!1s0x487978659957b795:0xfc0f717d35a50d86!8m2!3d53.37712!4d-1.4653766?hl=en">Showroom Workstation</a>
- <a href="https://www.eventbrite.co.uk/e/def-shef-38-monad-challenges-tickets-36435942886">Tickets</a>
</p>
<p>It's time for the <a href="http://mightybyte.github.io/monad-challenges/">Monad Challenges</a>!</p>
<p>They're a set a problems designed to be a hands-on introduction to Monads, written in Haskell.
A fairly basic knowledge of Haskell is required and the concepts you'll need to understand are listed on the Monad Challenges page.
You'll also a computer and a working Haskell environment. If you're just getting started, there's plenty of tutorials out there like
<a href="http://learnyouahaskell.com">learnyouahaskell.com</a> that should get you set up and cover off the concepts.</p>
<p>All experience levels welcome.
I'm a Haskell beginner myself, so I'm doing these tutorials to prepare!
If you're struggling with the language or the concepts, come along anyway and we'll help you!</p>
<p>Thanks to Mat for suggesting this topic!</p>
<aside>(def shef) thanks Sky Betting and Gaming for kindly sponsoring this event.
<a href="http://appointments.thesundaytimes.co.uk/article/best100companies/">One of the Sunday Times' Top 100 companies to work for</a>, based in Leeds and Sheffield, there are
<a href="http://engineering.skybettingandgaming.com/jobs/">roles available now</a>.<aside>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef37">
<a name="ep37"></a>
<h2>(def shef 37)</h2>
<h4>Finite State Automata and Friends</h4>
<p class="meeting-info">
11th July - 6:30pm - <a href="https://www.google.nl/maps/place/Showroom+Workstation/@53.3771232,-1.4675653,17z/data=!3m1!4b1!4m5!3m4!1s0x487978659957b795:0xfc0f717d35a50d86!8m2!3d53.37712!4d-1.4653766?hl=en">Showroom Workstation</a> - <a href="https://www.eventbrite.co.uk/e/def-shef-37-finite-state-automata-and-friends-tickets-35983887777">Tickets</a>
</p>
<p>We're going to have a go at the <a href="http://mightybyte.github.io/monad-challenges/">Monad Challenges</a> next month. You'll need some Haskell (or a language with similar capabilities) so this month, we'll take on a less taxing challenge - understanding and implementing Finite State Automata in a functional style.</p>
<p>Finite state automata are a classic idea in computer science and and are able to recognise regular expressions.
If you've read Tom Stuart's <a href="http://computationbook.com/"/>"Understanding Computation"</a>, we'll be following chapter 3, but implementing in funcional styles instead of in OO ruby. It's a nice problem to try out a new langauge... maybe Haskell!</p>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef36">
<a name="ep36"></a>
<h2>(def shef 36)</h2>
<h4>More Neural Networks</h4>
<p class="meeting-info">
13th June - 6:30pm - <a href="https://www.google.nl/maps/place/Showroom+Workstation/@53.3771232,-1.4675653,17z/data=!3m1!4b1!4m5!3m4!1s0x487978659957b795:0xfc0f717d35a50d86!8m2!3d53.37712!4d-1.4653766?hl=en">Showroom Workstation</a> - <a href="https://www.eventbrite.co.uk/e/def-shef-36-more-neural-networks-tickets-34607960341">Tickets</a>
</p>
<p>In <a href="#ep34">(def shef 34)</a> we looked at the basic components of a neural network, and the group was interested in doing more with this topic.</p>
<p>We're going to take a more structured look at neural network implementation in a functional style with the goal of having a working network that can learn something by the end of the session.</p>
<p>The worksheet and resources are being built in <a href="https://github.com/defshef/36-more-neural-networks">The (def shef) org at Github</a>.</p>
<p>Attendance of the previous session won't be necessary. We're happy to help beginners in machine learning or functional programming!</p>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef35">
<a name="ep35"></a>
<h2>(def shef 35)</h2>
<h4>Functional Refactor My Code</h4>
<p class="meeting-info">
09th May - 6:30pm - <a href="https://www.google.nl/maps/place/Showroom+Workstation/@53.3771232,-1.4675653,17z/data=!3m1!4b1!4m5!3m4!1s0x487978659957b795:0xfc0f717d35a50d86!8m2!3d53.37712!4d-1.4653766?hl=en">Showroom Workstation</a> - <a href="https://www.eventbrite.co.uk/e/def-shef-35-refactor-my-code-tickets-33805696749">Tickets</a>
</p>
<p>Bring our your code! We'll be looking at how functional programming techniques can help improve the code you work with everyday. Everything from shell scripts to Haskell is fair game, and everyone welcome - whether you're a functional programming ninja or you don't know exactly what functional programming is!</p>
<p>We'll also have some examples ready to get things moving, fork and PR <a href="https://github.com/defshef/35-refactor-my-code">https://github.com/defshef/35-refactor-my-code</a> to add your favourite!</p>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef34">
<a name="ep34"></a>
<h2>(def shef 34)</h2>
<h4>More Machine Learning: Neural Networks</h4>
<p class="meeting-info">
11th April - 6:30pm - <a href="https://www.google.nl/maps/place/Showroom+Cafe+Bar/@53.3775542,-1.4652453,15z/data=!4m5!3m4!1s0x0:0x3c3131fc81080ff5!8m2!3d53.3775542!4d-1.4652453">Showroom Cafe Bar</a> - <a href="https://www.eventbrite.co.uk/e/def-shef-34-more-machine-learning-neural-networks-tickets-33172491816">Tickets</a>
</p>
<p>In (def shef 33) we explored the k-nearest-neighbour classifier. This time, we're looking at a more well-known approach - neural networks.</p>
<p>This is a bigger, more maths-y topic and it'll be a less structured exploration. We'll be officially exploring the theory and implementation by working through Andrej Kaparthy's <a href="http://karpathy.github.io/neuralnets/">Hacker's guide to Neural Networks</a> in languages of our choice, but you're also free to come along and take your own path!</p>
<p>Thanks to Sky Betting and Gaming for sponsoring this event!</p>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef33">
<a name="ep33"></a>
<h2>(def shef 33)</h2>
<h4>Dojo: Machine Learning with kNN</h4>
<p class="meeting-info">
7th March - 6:30pm - <a href="https://www.google.nl/maps/place/Showroom+Workstation/@53.3771232,-1.4675653,17z/data=!3m1!4b1!4m5!3m4!1s0x487978659957b795:0xfc0f717d35a50d86!8m2!3d53.37712!4d-1.4653766?hl=en">Showroom Workstation</a> - <a href="https://www.eventbrite.co.uk/e/def-shef-33-tickets-31779533440">Get a Free Ticket</a>
</p>
<p>The <a href="https://www.youtube.com/watch?v=UqYde-LULfs" target="_blank">k-nearest neighbours classifier</a> is a classic machine learning algorithm. We'll use functional languages to implement a classifier, then use it with real-world public data sets to solve classification problems.</p>
<p>Once you've implemented and explored the algorithm, there are many details you can dive deeper on. How does your algorithm perform on larger data sets, and can you speed it up? How about plugging in different distance functions? If you're already an ML expert, you can look at a more advanced algorithm and compare performance with the kNN implementations.</p>
<p>The plan is to run the dojo in small groups by language. I've
put together a
guide <a href="https://github.com/defshef/dojo-knn">here</a>, so
feel free to get familiar with the problem ahead of time. I know
at least one person plans to solve the problem in their go-to
language before the dojo, then try to implement it in a different
language in the session.</p>
<p>If it goes well and there's interest, we could run a follow-up in a future (def shef) to review and dig more into the machine learning and optimisation aspects.</p>
<p>We're trying free ticketing through EventBrite. You won't <strong>need</strong> a ticket to attend, but hopefully it'll help predict how many people are coming. We can also e-mail attendees any information they'll need, reminders, etc. Contact through this mechanism will be kept to a respectful minimum!
</p>
<p>If you have any feedback on the use of ticketing, positive or negative, please let us know on the <a href="https://groups.google.com/forum/#!topic/def-shef/w_2K7ZSuVds">Google Group</a>, <a href="https://twitter.com/def_shef">@def_shef on Twitter</a> or by <a href="mailto:paul.brabban+defshef@gmail.com">email</a>.
</p>
</article>
</div>
<div class="row">
<article class="meeting all-columns" id="defshef32">
<h2>(def shef 32)</h2>
<h4>New Year Coding Dojo</h4>
<p class="meeting-info">
10th January - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
After a brief hiatus, (def shef) is back for 2017 with a coding dojo.
</p>
<p>
We'll be picking a small toy problem, and then breaking off into small groups to have a go at solutions in whatever functional programming language our hearts desire. If there's time we'll compare our solutions to each other.
</p>
<p>
This could be a great excuse to try something new, or simply to tinker with your pet language. Make sure you bring a laptop.
</p>
<p>
The kata we'll be doing this month is <big><a href="https://github.com/gigasquid/wonderland-clojure-katas/tree/master/alphabet-cipher">The Alphabet Cipher</a></big>. If you can read Clojure there are some <a href="https://github.com/gigasquid/wonderland-clojure-katas/blob/master/alphabet-cipher/test/alphabet_cipher/coder_test.clj">sample testcases</a> you can use. Any even remotely functional language or approach is allowed.
</p>
<p>If you can't make it tonight, feel free to have a go at home.</p>
</article>
</div>
<div class="row">
<div class="all-columns">
<h2>Potential Future Topics</h2>
<p>
At our first meeting, we came up with a bunch of topics we might like to
cover at meetings. If you have any other suggestions, or you'd be interested
in running a talk / session on any of these topics then please let us know.
</p>
<ul>
<li>Map, Zip & Fold</li>
<li>Purity / Referential Transparency</li>
<li>Recursion</li>
<li>Homoiconicity</li>
<li>Immutability</li>
<li>Lazy Evaluation</li>
<li>History of Functional Programming</li>
<li>Dedicated Hardware</li>
<li>Program Synthesis</li>
<li>Monads</li>
<li>Program Proofs</li>
<li>Concurrency</li>
<li>What problems FP solves</li>
<li>Lambda Calculus</li>
<li>Pattern Matching</li>
<li>Literate Programming</li>
<li>Point-free style</li>
<li>Currying</li>
<li>Higher Order Functions</li>
<li>Type Systems & Type Inference</li>
<li>Monads Revisited</li>
<li>Gradual Typing</li>
<li>Declarative Programming</li>
<li>Logic Programming</li>
<li>Erlang</li>
<li>Haskell</li>
<li>Macros</li>
<li>Functional Style in Language X</li>
<li>Functional Reactive Programming</li>
<li>Lisps
<ul>
<li>Scheme</li>
<li>Clojure</li>
<li>Common Lisp</li>
<li>Emacs</li>
</ul>
</li>
<li>OCaml and other MLs</li>
<li>F#</li>
<li>LINQ</li>
<li>Make my code functional</li>
<li>Actor Pattern</li>
<li>Real world experiences</li>
</ul>
</div>
</div>
<div class="row">
<h2>Previous Meetings</h2>
<article class="meeting all-columns" id="defshef1">
<h2>(def shef 1)</h2>
<p class="meeting-info">12th November - 6:30pm - Electric Works</p>
<p>
To kick things off we'll be doing some introductions, and then launching into a round-table discussion on "What's good about functional programming". We may even talk about some bad things too!
</p>
<p>
We'll also be dicussing future plans for the group, so if you've got any great ideas - bring them along.
</p>
</article>
<article class="meeting all-columns" id="defshef2">
<h2>(def shef 2)</h2>
<p class="meeting-info">10th December - 6:30pm - Electric Works</p>
<p>
This month we'll be running a practical session, solving some sample
problems using lists, recursion and traditional functional approaches.
</p>
<p>
The problems will be suitable for newcomers to functional programming,
but we'll also have some slightly trickier problems for those of you with
a bit more experience.
</p>
<p><a href="/meeting-2.html">The problems are available here</a></p>
</article>
<article class="meeting all-columns" id="defshef3">
<h2>(def shef 3)</h2>
<p class="meeting-info">14th January - 6:30pm - Electric Works</p>
<p>
This month we'll be looking through some of the solutions to last month's
problems, and planning out some sessions for the months ahead.
</p>
<p>
<a href="https://github.com/defshef/defshef2">Some sample solutions are available on GitHub</a>
</p>
</article>
<article class="meeting all-columns" id="defshef4">
<h2>(def shef 4)</h2>
<h4>C# is a functional language. No, really.</h4>
<p class="meeting-info">11th February - 6:30pm - Electric Works</p>
<p>
This month <a href="https://twitter.com/johnstovin">John Stovin</a> will be
talking to us about LINQ in C# and also giving us a little flavour of F#.
</p>
</article>
<article class="meeting all-columns" id="defshef5">
<h2>(def shef 5)</h2>
<h4>XMonad</h4>
<p class="meeting-info">11th March - 6:30pm - Electric Works</p>
<p>
This month <a href="https://twitter.com/LewisCowper">Lewis Cowper</a> is
going to tell us all about XMonad - the Haskell based window manager.
</p>
</article>
<article class="meeting all-columns" id="defshef6">
<h2>(def shef 6)</h2>
<h4>Parallelism and Concurrency in Haskell</h4>
<p class="meeting-info">13th May - 6:30pm - Electric Works</p>
<p>
You can never have too much Haskell, so this month we have
<a href="https://twitter.com/codingteddybear">Andrei Pambuccian</a> talking
to us about parallelism and concurrency.
</p>
<p>
Haskell features certain approaches to paralellism and concurrency that are specific to functional programming languages, enabling the programmer to quickly switch between sequential and parallel code. The presentation will explore parallel programming via the built-in monad Eval, the Strategy type and the monad Par, each of whom has its own trade-offs in terms of performance, maintainability and ease of implementation, then go into threading via Concurrent Haskell and finally describe the Haskell bindings for OpenCL. Sample code and performance statistics will be available for each of the methods described.
</p>
</article>
<article class="meeting all-columns" id="defshef7">
<h2>(def shef 7)</h2>
<h4>An introduction to the Rust programming language</h4>
<p class="meeting-info">10th June - 6:30pm - Electric Works</p>
<p>
Something a bit different this month, we have
<a href="https://twitter.com/davbo">Dave King</a> talking to us about
something not entirely functional programming, but interesting and relevant
regardless.
</p>
<p>
Mozilla Research are building an experimental web browser named
<a href="https://github.com/mozilla/servo">Servo</a>.
While experienced with large C and C++ codebases they have avoided these languages for Servo.
Instead developing it in <a href="http://www.rust-lang.org/">Rust</a>,
a relatively new language also from Mozilla Research.
</p><p>
Rust is a systems level language with a focus on being a "safe, concurrent, practical language". Many features of Rust are drawn from the functional programming world such as algebraic data types and type inference.
</p><p>
Other features include:
</p><ul>
<li>pattern matching</li>
<li>closures</li>
<li>zero-cost abstractions</li>
<li>guaranteed memory safety</li>
<li>optional garbage collection</li>
<li>concurrency without data races</li>
<li>minimal runtime</li>
<li>efficient C bindings</li>
</ul>
</article>
<article class="meeting all-columns" id="defshef8">
<h2>(def shef 8)</h2>
<h4>Scala gives you <code>Option[S]</code></h4>
<p class="meeting-info">8th July - 6:30pm - Electric Works</p>
<p>
This month <a href="https://twitter.com/i_c_murray">Ian Murray</a> is going
to be giving a brief introduction to Scala, including it's approach to
mixing OO- and FP-like language features. Scala <em>encourages</em>, but
does not <em>enforce</em>, use of several aspects from functional
programming. By being able to express different styles of programming,
Scala is able to offer developers new to FP a more gradual learning curve,
while still offering the <em>purer</em> functional programmer plenty to
chew on.
</p>
<p>
<a href="http://www.scala-lang.org/">Scala</a> is a strongly- and
statically-typed functional programming language that runs on the JVM, but
also provides object-like features to try and provide the user with the
best of both worlds.
</p>
</article>
<article class="meeting all-columns" id="defshef9">
<h2>(def shef 9)</h2>
<h4>A Summer Social</h4>
<p class="meeting-info">12th August - 6:30pm - Rutland Arms</p>
<p>
There's no official speaker this month, instead we'll be making the most of
the British summer by hanging out in a beer garden. There'll still be plenty
of functional chatter, and we'll be back with a proper talk in September.
<p>
</article>
<article class="meeting all-columns" id="defshef10">
<h2>(def shef 10)</h2>
<h4>Channels in Go</h4>
<p class="meeting-info">9th September - 6:30pm - Electric Works</p>
<p>
This month <a href="https://twitter.com/awsmsrc">Luke Roberts</a> will be
telling us all about Go's channels, and the benefits that they bring.
</p>
<p>
Channels are an abstraction around asynchronous message passing that can
make code that deals with concurrency much easier to reason about.
</p>
</article>
<article class="meeting all-columns" id="defshef11">
<h2>(def shef 11)</h2>
<h4>Strange Loop Movie Night</h4>
<p class="meeting-info">14th October - 6:30pm - Electric Works</p>
<p>
<a href="https://thestrangeloop.com/">Strangeloop</a> is an awesome
conference that features, among many other topics, lots of great practical
and theoretical talks about Functional Programming. It was held on the 18th
and 19th of September, and lucky for us they're publishing the recordings of
every single talk already!
</p>
<p>
We ended up watching and dsicussing the following two talks:
</p>
<ul>
<li><a href="https://www.youtube.com/watch?v=uwrCQmpZ8Ts"
>Coder Decoder: Functional Programmer Lingo Explained, with Pictures</a> by Katie Miller</li>
<li><a href="https://www.youtube.com/watch?v=4i7KrG1Afbk"
>Idris: Practical Dependent Types with Practical Examples</a> by Brian McKenna</li>
</ul>
<p>You can see the other available videos on the
<a href="http://www.youtube.com/channel/UC_QIfHvN9auy2CoOdSfMWDw/videos"
>Strange Loop YouTube Channel</a> and the full list of all sessions is on
<a href="https://thestrangeloop.com/sessions"
>the main strangeloop website</a>.
</p>
</article>
<article class="meeting all-columns" id="defshef12">
<h2>(def shef 12)</h2>
<h4>Straightforward UIs with ClojureScript</h4>
<p class="meeting-info">11th November - 6:30pm - Electric Works</p>
<p>Entry to the Electric Works will be around the back after 5:30pm, head up
the stairs by the car park entrance and follow the building around to your
right.</p>
<p>
This month <a href="https://twitter.com/glenathan">I'll</a> be doing a bit
of a practical session.
<a href="http://clojure.org/clojurescript">ClojureScript</a> is a variant of
Clojure that runs compiles down to javascript and runs in the browser.
Being a lisp that promotes immutable datastructures, it enables some
really powerful approaches to building clean and simple user interfaces.
</p>
<p>
We'll be making use of some fancy live-reloading tools and judicious
separation of state and behaviour in order to build up a functional user
interface. For simplicity we'll be implementing <a
href="https://github.com/tastejs/todomvc/blob/master/app-spec.md">TodoMVC</a>.
Don't worry if you're not really a frontend person,
we'll make sure there's plenty of sample code so you can focus on the
important bits.
</p>
<p>
To assist with setup and save time on the night, please ensure you have
Java JRE 7 or 8 installed, as well as <a
href="http://leiningen.org/#install">leiningen</a>.
</p>
<p>
The code for this workshop can be found at
<a href="https://github.com/defshef/defshef12">the github repo</a>.
</p>
</article>
<article class="meeting all-columns" id="defshef13">
<h2>(def shef 13)</h2>
<h4>Interesting features of Scheme</h4>
<p class="meeting-info">13th January - 6:30pm - Electric Works</p>
<p>Entry to the Electric Works will be around the back after 5:30pm, head up
the stairs by the car park entrance and follow the building around to your
right.</p>
<p>
This month, in a continuation of our unofficial "Neat things in language
X" series, <a href="https://twitter.com/caolan">Caolan</a> will be talking
to us about some of the more interesting features of
<a href="http://www.schemers.org/">Scheme</a>.
</p>
<p>
The example code shown is going to be in
<a href="http://www.call-cc.org/">Chicken Scheme</a>, so feel free to
brush up a little bit beforehand.
</p>
</article>
<article class="meeting all-columns" id="defshef14">
<h2>(def shef 14)</h2>
<h4>Rich Hickey's Greatest Hits</h4>
<p class="meeting-info">
10th February - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>Note that this month we have a new larger venue! We'll gather in the
lobby from about 6:15 before heading upstairs once people arrive.</p>
<p>
After the success of the last movie night, we return with another:
Rich Hickey, creator of Clojure is well known for his very well laid out
and generally excellent technical talks.
</p>
<p>
We'll be selecting from the handily prepared <a
href="http://thechangelog.com/rich-hickeys-greatest-hits/">Rich Hickey's
Greatest Hits</a>. Be prepared to hear about how we can simplify what
we're doing to build software, and how to spend more time thinking. There
might be some mention of Functional Programming and Lisps in there too.
</p>
</article>
<article class="meeting all-columns" id="defshef15">
<h2>(def shef 15)</h2>
<h4>No Talk in March</h4>
<p class="meeting-info">
10th March - 6:30pm - Sheffield Tap
</p>
<p>
No talk this month, but there will be an informal social gathering in the
Sheffield Tap with a drink or two and the usual functional programming
chit-chat.
</p>
</article>
<article class="meeting all-columns" id="defshef16">
<h2>(def shef 16)</h2>
<h4>A taste of Erlang</h4>
<p class="meeting-info">
14th April - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
Another entry for our "Neat things in language X" series,
<a href="https://twitter.com/jwheare">James Wheare</a> will be introducing
us to the weird and wonderful world of
<a href="http://www.erlang.org/">Erlang</a>. There may even be a guest
appearance of Erlang: The Movie.
</p>
</article>
<article class="meeting all-columns" id="defshef17">
<h2>(def shef 17)</h2>
<h4>The Magic of Hot Code Reloading</h4>
<p class="meeting-info">
12th May - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
<a href="https://twitter.com/glenathan">Glen Mailer</a> will be showing off a bit of hot reloading magic.
</p>
<ol>
<li>Edit file.</li>
<li>Save file.</li>
<li>Compile code.</li>
<li>Reload browser.</li>
<li>Click around and interact with the page.</li>
<li>Somehow get back to the <i><b>exact same state</b></i>.</li>
<li>Check result.</li>
<li>Not quite right.</li>
<li>Go back to step 1, do not pass go, do not collect £200.</li>
</ol>
<p>
Interpreted languages, fast compile times & fast test suites are great
at reducing the feedback cycle, but those aren't the only areas where
feedback is important.
</p>
<p>
What if you could edit your code and see the effects immediately?
Going from step 1 to step 7 in the scenario above without having to do
anything in between. How would having that sort of instant feedback affect
the way you work?
</p>
<p>
I'll show how this can be achieved in a few different common (and
uncommon) programming languages, and what sort of concessions (if any) you
have to make in your code to make it work.
</p>
<p>
This isn't just a crazy fringe idea: it's been around in some form or
another for ages, and it's something we can and should be using right now.
</p>
</article>
<article class="meeting all-columns" id="defshef18">
<h2>(def shef 18)</h2>
<h4>An introduction to F# by way of turtles</h4>
<p class="meeting-info">
9th June - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p><a href="http://fsharp.org/">F#</a> is a statically-typed, open source, functional-first language on the CLR which combines
functional idioms such as immutability and
pattern matching with advanced features like type providers and asynchronous workflows, while remaining accessible to the
less functionally-inclined by including a healthy dose of OO and everything that comes with the .net ecosystem.</p>
<p>
In this session, <a href="https://twitter.com/relentlessdev">Grant Crofton</a> will be showing everyone how awesome it
is by using it to write a simple <a href="http://en.wikipedia.org/wiki/Logo_%28programming_language%29">Logo</a> interpreter,
commonly used to draw stuff with Turtles. This may or may not include any live coding, depending on how much he wants the audience to suffer..</p>
</article>
<article class="meeting all-columns" id="defshef19">
<h2>(def shef 19)</h2>
<h4>The ClojureScript Experience</h4>
<p class="meeting-info">
14th July - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
We haven't had a practical session for a while, and as there was quite a small turnout to <a href="#defshef12">(def shef 12)</a>, I've decided to re-use the exercise from that one again.
</p>
<p>
We'll be working on a small TodoMVC implementation written using Reagent and ClojureScript. No previous knowledge is required, but it will help if you have <a href="https://github.com/technomancy/leiningen#installation">Leiningen</a> installed before you arrive.
</p>
<p class="lead">
<a href="https://github.com/defshef/defshef12#def-shef-12"
>The guide for the workshop is available on github</a>
</p>
</article>
<article class="meeting all-columns" id="defshef20">
<h2>(def shef 20)</h2>
<h4>Graph Databases and Markov Chains for AI<br>(without much I)</h4>
<p class="meeting-info">
8th September - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month we'll be hearing from
<a href="https://twitter.com/allegary">Gary Martin</a>:
</p>
<p>
When we look to start a new programming project, we often take the tools we
already know for granted and reach for the tools that we know. This is as true
for databases as it is for programming languages. In this talk we are going to
look at using a graph database as an appropriate storage model for Markov chains
and conversation simulation.
</p>
</article>
<article class="meeting all-columns" id="defshef21">
<h2>(def shef 21)</h2>
<h4>PureScript and functional programming on the web.</h4>
<p class="meeting-info">
13th October - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
Becky Conning will be getting us excited about PureScript and functional programming on the web.
</p>
<p>
Becky has used Javascript for everything for quite a while and over time has found the approaches and technologies that were helping her the most have their roots in functional programming. Today she works for SlamData writing web application tests and features using PureScript every day.
</p>
<p>
Purescript is written in and inspired by Haskell. Luckily for us web developers, Purescript modules compile to CommonJS modules making it surprisingly easy to interface between Javascript and Purescript in both directions.
</p>
<p>
There are also versions of Purescript in development that compile to Python and C++.
</p>
<p>
Becky will be sharing her excitement about the possibilities of functional programming for application development with you and we’ll building a small application to help get you motivated.
</p>
<p>So whether you’re a Javascript developer, a seasoned functional programmer or just interested in applications come on down and get excited about Purescript and functional programming for applications!
</p>
</article>
<article class="meeting all-columns" id="defshef22">
<h2>(def shef 22)</h2>
<h4>Strangeloop Movie Night</h4>
<p class="meeting-info">
10th November - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
It's that time of year again!
<a href="https://thestrangeloop.com/">Strangeloop</a> is an awesome
conference that features, among many other topics, lots of great practical
and theoretical talks about Functional Programming. I was lucky enough to
attend, and they've published the recordings of every single talk already,
so we all get to benefit without the crippling cost of international
airfare.
</p>
<p>
I'll be picking out a shortlist of the best, we'll select which talk or
talks to watch on the night, so if you have any suggestions let me know on
twitter or just bring it up when you arrive.
</p>
<p>You can see the videos on the
<a href="https://www.youtube.com/playlist?list=PLcGKfGEEONaCIl5eU53uPBnRJ9rbIH32R"
>Strange Loop 2015 YouTube Playlist</a> and the full list of all sessions
is on
<a href="http://thestrangeloop.com/2015/sessions.html"
>the main strangeloop website</a>.
</p>
</article>
<article class="meeting all-columns" id="defshef23">
<h2>(def shef 23)</h2>
<h4>Happy New Year</h4>
<p class="meeting-info">
12th January - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month we're just doing a little get together to kick off the new year,
and find out what people would like to hear about in the forthcoming months.
Please drop by and get involved!
</p>
</article>
<article class="meeting all-columns" id="defshef24">
<h2>(def shef 24)</h2>
<h4>From techno to textiles: live coding pattern in Haskell</h4>
<p class="meeting-info">
9th February - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month <a href="http://slab.org">Alex McLean</a> will be talking to us
about music, in his own words:
</p>
<p>
I've been writing code to make music since around the year 2000, at first in
Perl but more recently in <a href="https://www.haskell.org/">Haskell</a>, in
particular developing the free/open source <a
href="http://tidal.lurk.org/">Tidal</a> environment since around 2010. Tidal
represents musical pattern as pure functions from time to events, providing
an expressive language for sequencing, combining and transforming patterns.
I've performed widely with Tidal in a range of collaborations, including as
part of the Algorave movement that I co-founded.
</p>
<p>
In this talk I'll demonstrate Tidal, go through the way that pattern is
represented and try to unearth how pure functional programming has made it
possible. I'll try to make it interesting for people new to programming and
functional programming, as well as the more experienced. If there's time and
interest I can also talk about related research I'm involved with in
representing the structure of textiles in a similar manner.
</p>
</article>
<article class="meeting all-columns" id="defshef25">
<h2>(def shef 25)</h2>
<h4>Not a proper meetup</h4>
<p class="meeting-info">
8th March - 6:30pm - Rutland Arms
</p>
<p>
This month no-one is available to organise a proper meetup, so instead we'll just head to the Rutland Arms for some functional programming chatter.
</p>
<p>
We'll be back in April with something practical to whet your appetites.
</p>
</article>
<article class="meeting all-columns" id="defshef26">
<h2>(def shef 26)</h2>
<h4>Something practical</h4>
<p class="meeting-info">
12th April - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month we'll be working on something practical you can sink your teeth into and get a flavour of somewhat-real-world functional programming.
</p>
<p>
The plan is to take a task that we'd normally think of as something that fits object oriented programming very well, and see how to approach it with our functional hats on.
</p>
<p>
The format will be small groups split by choice of language, so hopefully there should be something to interest everyone. I can guarantee some Clojure, for anything else it'll depend who shows up. Bring your laptops!
</p>
</article>
<article class="meeting all-columns" id="defshef27">
<h2>(def shef 27)</h2>
<h4>Follow-up to our practical</h4>
<p class="meeting-info">
10th May - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month we'll be sharing our experiences and code from the various solutions and approaches people took last month.
</p>
<p>
The practical session we did was on <a href="https://github.com/defshef/defshef-blackjack">Blackjack</a>, and the variety of approaches and languages people took was impressive.
</p>
</article>
<article class="meeting all-columns" id="defshef28">
<h2>(def shef 28)</h2>
<h4>A practical guide to creating UI apps in F#</h4>
<p class="meeting-info">
14th June - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>This month we've got Ben Robinson giving us a talk:</p>
<p>
Traditionally when creating UI apps we end up having maintain lots of mutating (and fragile) state. So we will creating a simple desktop application from the ground up using using a Functional Reactive Programming style (and judiciously borrowing ideas ideas from modern frameworks like React/Flux) that is declarative and easy to understand.
</p>
</article>
<article class="meeting all-columns" id="defshef29">
<h2>(def shef 29)</h2>
<h4>Try Elm Yourselves</h4>
<p class="meeting-info">
12th July - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month will be a practical session, so bring your laptops! We'll be exploring <a href="http://elm-lang.org/">Elm</a> - a strongly typed functional programming language that targets the browser and focuses on being accessible to newcomers.
</p>
</article>
<article class="meeting all-columns" id="defshef30">
<h2>(def shef 30)</h2>
<h4>The Never Changing Face of Immutability</h4>
<p class="meeting-info">
9th August - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
This month we have an out-of-towner coming in to talk, <a href="https://twitter.com/agile_geek">Chris Howe-Jones</a>.
</p>
<p>
This talk should be a great introduction to functional and immutable thinking, so please do bring your mutable-OO friends along too! Chris doesn't want to give too much away, but he did have this to say:
</p>
<blockquote>
<p>This talk explores the changes in technology over time and how this has led to a rise in a different way of managing state within applications.
</p>
</blockquote>
</article>
<article class="meeting all-columns" id="defshef31">
<h2>(def shef 31)</h2>
<h4>Strangeloop 2016 Movie Night</h4>
<p class="meeting-info">
11th October - 6:30pm - <a href="http://www.union-st.org/">Union St</a>
</p>
<p>
It's that time of year again!
<a href="https://thestrangeloop.com/">Strangeloop</a> is an awesome
conference that features, among many other topics, lots of great practical
and theoretical talks about Functional Programming. I was lucky enough to
attend, and they've published the recordings of the talks already,
so we all get to benefit without the crippling cost of international
airfare.
</p>
<p>
I'll be picking out a shortlist of the best, we'll select which talk or
talks to watch on the night, so if you have any suggestions let me know on
twitter or just bring it up when you arrive.
</p>
<p>You can see the list of videos on the
<a href="https://www.youtube.com/playlist?list=PLcGKfGEEONaDvuLDFFKRfzbsaBuVVXdYa"
>Strange Loop 2016 YouTube Playlist</a> and the full list of all sessions
is on
<a href="https://thestrangeloop.com/schedule.html"
>the main strangeloop website</a>.
</p>
</article>
</div>
</div>
<footer>
<div clas="row">
<div class="all-columns">
<a href="http://github.com/defshef/defshef.github.io">View on Github</a>
</div>
</div>
</footer>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-45798716-1', 'defshef.github.io');
ga('send', 'pageview');
</script>
</body>
</html>