-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy patharchive.html
617 lines (573 loc) · 58.9 KB
/
archive.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
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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Leeds Code Dojo - Archive</title>
<script src="js/jquery-1.9.1.js"></script>
<script src="js/jquery-ui.js"></script>
<script src="js/functions.js" type="text/javascript"></script>
<!--<link rel="stylesheet" href="css/bootstrap.min.css">-->
<link href="css/main.css" rel="stylesheet" />
<!-- Gallery Viewer -->
<link href="gallery/css/jquery.galleryview-3.0-dev.css" rel="stylesheet" />
<script src="gallery/js/jquery.galleryview-3.0-dev.js"></script>
<script src="gallery/js/jquery.timers-1.2.js"></script>
</head>
<body class="archive-page">
<header>
<div class="containContent ident-section">
<a href="index.html"><h1 class="home-link" title="Home">Leeds Code Dojo</h1></a>
<h2 class="strap-line f-right" title="Strapline">Less Talk More Code</h2>
</div>
</header>
<section class="mainIdent">
<img src="images/overlay.png" id="mainIdentImage" alt="Dojo Illustration" />
</section>
<section class="subHeader">
<div class="containContent">
<p><img src="images/event-archive.gif" title="Event Archive" class="archive-title" /></p>
</div>
</section>
<section class="content">
<div class="containContent">
<div class="content-article">
<!-- archive event -->
<img src="images/event/44-slides.jpg" class="event-image" />
<p class="date-heading">Strong Pair Programming - Wednesday 1st August 2018</p>
<p>
Are you still doing that old weak pair programming style? Are you often sat there watching someone code, telling people that they have a typo, or that they have missed a semi colon?
</p>
<p>
At Leeds Code Dojo in August we tried our hands at STRONG pair programming, guided by LCD regular <a href="https://www.meetup.com/members/162133802/">James Pittendreigh</a>.
</p>
<p>
The key principle is:
<ul><li>"For an idea to go from your head into the computer, it MUST go through someone else's hands"</li></ul>
</p>
<p>
We paired up and had a go at the Diamond Kata to give this method a good run. It's fair to say it met with limited success - some pairs thought it was an interesting thing to try, but many didn't really see the benefit and found it a bit awkward to do.
</p>
<p>
I don't think the kata we chose really helped, as it was quite difficult to arrive at a solution iteratively, so swapping pairs didn't happen as much as it could have.
</p>
<p>
You can see the <a href="https://github.com/LeedsCodeDojo/strong-pair-programming-dojo">kata and solutions</a> on guthub, with the usual photos etc. <a href="https://www.meetup.com/Leeds-Code-Dojo/events/252903199/">on Meetup</a>.
</p>
<!-- archive event -->
<img src="images/befinge-fizzbuzz.png" class="event-image" />
<p class="date-heading">To Infinity and Befunge - Wednesday 6th June 2018</p>
<p>
This month we looked at an 'Esoteric' programming language called Befunge where the code is written as instructions scattered across a 2D grid rather than in a traditional program.
</p>
<p>
Befunge programs are similar to Turing machines and we rolled up our sleeves to delve into this language, skillfully guided by <a href="https://www.meetup.com/members/187831041/">Andy Bowes</a>, by first writing interpreters for a cut-down Befunge instructions set then trying to solve a couple of problems using them.
</p>
<p>
It was a good session, the interpreter part was of a fair complexity but several people managed to get onto using Befunge. It's a very interesting and challenging language to use, certainly not something you can imagine wanting to write business apps in but could be quite handy for code golf!
</p>
<p>
You can see the <a href="https://github.com/LeedsCodeDojo/Befunge">materials and solutions</a> on guthub, with the usual photos etc. <a href="https://www.meetup.com/Leeds-Code-Dojo/events/250685681/">on Meetup</a>.
</p>
<!-- archive event -->
<img src="images/event/42-hat.jpg" class="event-image" />
<p class="date-heading">Farkle - Wednesday 2nd May 2018</p>
<p>
This month we returned to the traditional TDD Kata format, using Test Driven Development and Pair Programming to implement a scorer for the dice game Farkle.
</p>
<p>
Usually we're pretty relaxed with how closely participants follow the rules of TDD, but this time we went extra-strict, even maintaining a Wall of Shame for those foolish enough to ignore Uncle Bob. James even brought along his hand-crafted <a href="http://blog.gdinwiddie.com/2012/12/26/tdd-hat/">TDD hat</a> to help him remember the steps!
</p>
<p>
As if he'd forget..
</p>
<p>
There are some <a href="https://github.com/LeedsCodeDojo/Farkle"></a>solutions and instruction on github</a>, with the usual photos <a href="https://www.meetup.com/Leeds-Code-Dojo/events/249824949/">on Meetup</a>.
</p>
<!-- archive event -->
<img src="images/event/41-pres.jpg" class="event-image" />
<p class="date-heading">Mining for BrassBitCoin - Wednesday 7th March 2018</p>
<p>
Everyone knows that Yorkshire has everything. However, it didn't have it's own currency. So it was time to put that right, as we built and mined our first Yorkshire cryptocurrency - the BrassBitCoin!
</p>
<p>
Utilising leading-edge Blockchain technology, LCD benefactor and cryptocurrency expert* <a href="https://www.meetup.com/members/88235242/">Adam Pridmore</a> guided us through the process of defining and then mining for our very own digital currency. (* Relatively speaking. I think he read an article on it once.)
</p>
<p>
And if that wasn't enough, we got to keep all of the priceless (or possibly worthless) coins mined!
</p>
<p>
This was a very interesting session, personally I feel much more up to speed with the basic concepts of cryptocurrencies having implemented a (very) basic version. But more importantly, will the BrassBitCoin catch on and make us all millionairs?! Given the lax validation of transactions I'm going to guess not, but maybe we can address these issues with BrassBitCoin v2 in a future session..
</p>
<p>
You can see the code and information <a href="https://github.com/LeedsCodeDojo/BrassBitCoin">on github</a>, and some photos <a href="https://www.meetup.com/Leeds-Code-Dojo/events/248099724/">on Meetup</a>.
</p>
<!-- archive event -->
<img src="images/event/40-scores.jpg" class="event-image" />
<p class="date-heading">Code Wars - Wednesday 7th Feb 2018</p>
<p>
This month we had a go at <a href="https://www.codewars.com/">Codewars</a>, a site which lets you pit yourself against yourself or others by completing increasingly harder coding challenges. All in a friendly, learning-oriented way of course!
</p>
<p>
Codewars is one of the new generation of coding challenge sites, making good use of social interaction and user-generated problems to provide a great learning/coding challenge experience. Using an online IDE supporting a large range of languages, you can increase your rank by solving a wide range of problems, and also gain honour by completing challenges, beta testing problems, and even writing your own kata to be used on the site.
</p>
<p>
Starting from scratch, the goal was simple - see who could be at the top of the leaderboard by the end of the night! There were a couple of leaders throughout the session, with team tomhalson leading for the most part, but team georgipavlov came through to take it at the last refresh!
</p>
<p>
There is nothing on GitHub this time, but you can still see the <a href="https://www.meetup.com/Leeds-Code-Dojo/events/247510432/">event on Meetup</a>.
</p>
<!-- archive event -->
<img src="images/event/39-work-whiteboard.jpg" class="event-image" />
<p class="date-heading">Coding Deathmatch: Static vs Dynamic - Wednesday 3rd Jan 2018</p>
<p>
We kicked off 2018 with a good old-fashioned grudge match, pitting the safety and runtime speed of statically typed languages against the ease of writing and flexibility of dynamic ones.
</p>
<p>
Both statically typed (e.g. C, C#, Java) and dynamically typed (Lisp, Ruby, Python) languages have been around for a while, but until now it has not been clear which is the better language design. Does the compile-time safety net of static typing really reduce the number of bugs, or is the hassle of making all of your types line up time that could be better spent writing more awesome software? Is dynmically typed code really easier to write, or do you end up spending longer working out what 'x' is supposed to represent?
</p>
<p>
Using the language of their choice, coders were paired up and put into the dynamic or static group, to work on the Bowling Game Score problem. We had a few languages in use including Haskell, C#, Rust and JavaScript, and although we tried to even out the groups there were more people in the static language camp.
</p>
<p>
At the end of the session, we got the pairs to split up and mark each other's solutions using some predefined test cases. The results were very good, with most teams managing a perfect score. In the end it came down to just one or two failed test cases.. Ultimately, the result was:
</p>
<p>
Static Languages FTW!
</p>
<p>
The problem and some solutions are up <a href="https://github.com/LeedsCodeDojo/StaticVsDynamic">on github</a>, and you can see some <a href="https://www.meetup.com/Leeds-Code-Dojo/events/245751729/">photos of the night</a> on Meetup.
</p>
<!-- archive event -->
<img src="images/event/38-pub.jpg" class="event-image" />
<p class="date-heading">Christmas Coding - Wednesday 6th December 2017</p>
<p>
To help people get ready for the festive season (assuming they weren't sick of it already), we had a go at some vaguely Christmassy programming problems from <a href="http://adventofcode.com">Advent of Code</a>.
</p>
<p>
It turned out to be a good set of problems, starting off relatively simple but quickly ramping up. I think everyone managed to finish the first day's problems, and some managed to get onto the 5th and 6th!
</p>
<p>
As usual a number of languages were in use including Scala, C#, F#, Java, C++, JavaScript and APL. In a suprising turn of events, the person who got the furthest was using not some fancy pattern-matching asynchronous functional hipster language, but good old Excel and VBA!
</p>
<p>
It's not your tools, as they say, but how you use them..
</p>
<p>
Check out the <a href="https://www.meetup.com/Leeds-Code-Dojo/events/244862033/">photos on Meetup</a>, and the usual selection of <a href="https://github.com/LeedsCodeDojo/ChristmasCoding2017">solutions on github</a>.
</p>
<!-- archive event -->
<img src="images/event/37 talk small.jpg" class="event-image" />
<p class="date-heading">Try a Language: Kotlin - Wednesday 1st November 2017</p>
<p>
This month, <a href="https://www.meetup.com/members/187831041/">Andy Bowes</a> introduced us to <a href="http://kotlinlang.org/">Kotlin</a>, a programming language that provides a pragmatic combination of OOP & Functional Programming. As many members of LCD will testify, Andy has been raving about the language for the past 18 months. Kotlin has been rapidly gaining in popularity, especially since Google announced in May 2017 that <a href="https://blog.jetbrains.com/kotlin/2017/05/kotlin-on-android-now-official/">Kotlin is an officially supported language for Android development</a>.
</p>
<p>
This session allowed people to get hands-on with this new language to become familiar with it's features & idioms by working on some problems put together by Andy, from Hello World through FizzBuzz all the way to interacting with a complex REST web service.
</p>
<p>
There are a couple of <a href="https://www.meetup.com/Leeds-Code-Dojo/events/243949427/">photos on Meetup</a>. The problems, cheat sheet, base solution and other info are on <a href="https://github.com/LeedsCodeDojo/TryKotlin">github</a>.
</p>
<!-- archive event -->
<img src="images/event/36-table-3.jpg" class="event-image" />
<p class="date-heading">Get Cryptic - Wednesday 4th October 2017</p>
<p>
In October we had a look at some Cryptography-based exercises from <a href="http://cryptopals.com">CryptoPals.com</a>. We started off with the basics, writing code to convert between different binary formats such as Hex and base64, moving onto breaking simple ciphers.
</p>
<p>
<a href="https://github.com/c9952594">Craig Norton</a> Provided the expertise for the evening, despite it being his birthday, having worked through several of the exercises previously.
</p>
<p>
Despite being described as 'relatively easy' on the website, most participants found the first set of exercises fairly challenging, but I think most people got through one or two. There was a lot of bit-shifting, binary XOR, bit masking, and other shenanigans that I suspect most people hadn't used since school, but it was all good clean programming fun!
</p>
<p>
Photos are up on <a href="https://www.meetup.com/Leeds-Code-Dojo/events/243651530/">the Meetup page</a>. Information, links and solutions can be found on <a href="https://github.com/LeedsCodeDojo/GetCryptic">github</a>.
</p>
<!-- archive event -->
<img src="images/event/35-people1.jpg" class="event-image" />
<p class="date-heading">Try a Language: Rust - Wednesday 6th September 2017</p>
<p>
This month, <a href="https://twitter.com/ant1441">Adam Hodgen</a> guided us through the <a href="https://www.rust-lang.org/en-US/">Rust language</a>, with some practical exercises designed to teach the basics of the language. In Adam's words:
</p>
<p>
Rust is a systems programming language developed by Mozilla. It is designed to be a "safe, concurrent, programming language", and aims to support multiple platforms, including Linux, Windows, and embedded systems. Rust's idea of safety is an extremely central aspect of the language, and influences all aspects of building systems with Rust. This is accomplished via a very powerful type and memory management system, which guarantees at compile time that your code is memory safe, and has no data races, null pointers, or use-after-free errors.
</p>
<p>
The group learned some of the basics of Rust, including data handling, concurrency, and data safety, by following a set of increasingly involved exercises put together by Adam. Most people got on fairly well, although I wouldn't say Rust is a particularly beginner-friendly language because there are quite a few concepts you need to understand to get going.
</p>
<p>
You can see the photos on <a href="https://www.meetup.com/Leeds-Code-Dojo/events/242375967/">the Meetup page</a>, and the exercises are up on <a href="https://github.com/LeedsCodeDojo/TryALanguage-Rust">github</a>.
</p>
<!-- archive event -->
<img src="images/event/34-whiteboard.jpg" class="event-image" />
<p class="date-heading">Regex Rumble - Wednesday 2nd August 2017</p>
<p>
After the very specific (and somewhat scorned) method of the previous session, in August we went the other way with a very loosely-specified 'write the solution to an interesting problem' type coding exercise involving creating our own Regular Expression matchers.
</p>
<p>
After a brief introduction to Regular Expressions, the coders were left to their own devices to write their own regEx engines as they saw fit. Some hacked it, some added some tests, quite a few did TDD - I don't think anyone TDD'd As If They Meant It though..
</p>
<p>
A lot of different languages were used, and different approaches taken - some pairs went for the full state machine model, while others did a little at a time in a very iterative manner. As you might imagine nobody got near writing a complete engine, but a couple of people got surprisingly far in the time available. But most importantly, everyone had a good time writing some code!
</p>
<p>
You might be able to find some photos on <a href="https://www.meetup.com/Leeds-Code-Dojo/events/241020813/">the Meetup page</a>, while some solutions and details are up on <a href="https://github.com/LeedsCodeDojo/RegexRumble">github</a>.
</p>
<!-- archive event -->
<img src="images/event/33-chat.jpg" class="event-image" />
<p class="date-heading">TDD As If You Meant It! - Wednesday 7th June 2017</p>
<p>
Despite having proven back in April that Test Driven Development is inferior to plain old hacking, we went back to look at another TDD-based technique in this June's session. Maybe we just weren't using the right *kind* of TDD!
</p>
<p>
This time we tryed out 'TDD as if you meant it', a more advanced TDD process where you start with your code in the test and only migrate it out into methods and classes as needed. We tried this on writing TicTacToe scorers, which took a board of unspecified specification and decided who had won. But did this lead to a cleaner design, or just more frustration?
</p>
<p>
Well, let's just say I don't think many people will adopting TDD As If You Mean It as their usual development process. It didn't help that we didn't have any TDDAIYMI experts around, but it wasn't always clear how to apply them to our situations, and when we did it didn't seem to help much. The initial phase was quite different, although questionable about whether it was better, and at some point the code had migrated out of the tests and then it's basically normal TDD.
</p>
<p>
Check out some of the photos on <a href="https://www.meetup.com/Leeds-Code-Dojo/events/239689314/">meetup</a>, and you can find some solutions on <a href="https://github.com/LeedsCodeDojo/TDDAsIfYouMeantIt">the github repo</a>.
</p>
<!-- archive event -->
<img src="images/event/32-results.jpg" class="event-image" />
<p class="date-heading">Coding Deathmatch: Functional vs OO - Tuesday 25th April 2017</p>
<p>
Ever since we moved on from machine code, programmers have been looking for the next best abstraction to represent our systems. For a long time, objects seemed to fit the bill - conceptually simple, easy to work with, a good way to split up code. But with the move to increasingly server-based systems and the need for easy parallelisation, the functional style previously used only by beardy academics has stepped into the limelight.
</p>
<p>
So which is the better? Object Orientated or Functional? In this session, we found out!
</p>
<p>
Split into Functional Fans and Object-Oriented Aficionados, developers worked in pairs to create scoring programs for a game of 10-pin bowling, using some relatively harsh constraints for their <a href="https://github.com/LeedsCodeDojo/FPvsOOP/blob/master/Functional%20Rules.md">functional</a> or <a href="https://github.com/LeedsCodeDojo/FPvsOOP/blob/master/Object%20Oriented%20Rules.md">object oriented</a> code. At the end we applied a sophisticated scoring algorithm, based on the test cases implemented and rules broken.
</p>
<p>
It was a relatively close battle, with several casualties (one team lost their solution due to misuse of an online IDE, another ran out of batteries shortly before the scoring), but in the end the functional programmers won it with a score of 3.0 to OO's 1.5! (It should be noted that this was out of 10, so from that point of view they both lost.. ;-)
</p>
<p>Check out some of the photos on <a href="https://www.meetup.com/Leeds-Code-Dojo/events/239128577/">meetup</a>, and you can find the problems and solutions on <a href="https://github.com/LeedsCodeDojo/FPvsOOP">github</a>.</p>
<!-- archive event -->
<img src="images/event/31-laptop-pres.jpg" class="event-image" />
<p class="date-heading">Coding Deathmatch: TDD vs Hacking - Wednesday 5th April 2017</p>
<p>
Some people claim <a href="https://en.wikipedia.org/wiki/Test-driven_development">Test Driven Development</a> is the best thing since Lisp, others think it's about as useful as <a href="https://youtu.be/oHg5SJYRHA0">Microsoft Silverlight</a> - but who's right? In this fight to the blue screen of death, we found out once and for all!
</p>
<p>
Atendees were split you into roughly even groups of TDD proponents and TDD haters, and codes solutions to <a href="http://osherove.com/tdd-kata-1/">Roy Osherove's String Calculator</a> using their preferred process (and language). The opposing factions split into pairs and coded away for about an hour and a half, based on strict rules for TDDers and Hackers - some penalty points were given, but by and large they were followed. Some of the hackers got bonus points for finishing early, and most of them chose the gamble of not running their programs at all until the big reveal at the end!
</p>
<p>
The gamble paid off for the hacking teams, whose solutions all worked first time, with only minor defects. After this points boost, the only hope for the TDDers was to get more points for the maintainability of their code, but in the end the hackers won by quite a margin.
</p>
<p>
So, it has been decided - no more TDD!
</p>
<p><a href="https://github.com/LeedsCodeDojo/TDDvsHacking">Solutions in github</a>.</p>
<!-- archive event -->
<img src="images/event/30-group-small.jpg" class="event-image" />
<p class="date-heading">Gilded Rose Refactoring Challenge - Wednesday 1st March 2017</p>
<p>
in March we got into some good old-fasioned <a href="https://en.wikipedia.org/wiki/Code_refactoring">Refactoring</a>, that very important but often-neglected part of programming!
</p>
<p>
Refactoring is changing the structure of code without changing the external functionality, usually to improve the design and make it more maintainable. It's an important part of coding in general, and a critical step in practices such as <a href="https://en.wikipedia.org/wiki/Test-driven_development">TDD</a>, but sometimes fails to get the focus it deserves.
</p>
<p>
In this session we took on the <a href="https://github.com/NotMyself/GildedRose">Gilded Rose Refactoring Kata</a>, taking a rather badly-written implementation of some stock inventory code (available in many languages) and tried to make it beautiful, one small step at a time.
</p>
<p>In <a href="https://github.com/LeedsCodeDojo/GildedRose">the github repo</a> you can find the source solutions (taken from <a href="https://github.com/emilybache/GildedRose-Refactoring-Kata">Emily Bache</a>), as well as some of the solutions from the night.</p>
<!-- archive event -->
<img src="images/event/raytracing.jpeg" class="event-image" />
<p class="date-heading">Ray Tracing with Chris - Wednesday 4th January 2017</p>
<p>
This month, <a href="https://twitter.com/cmaughan/">Chris Maughan</a> of York Code Dojo helped us build a simple ray tracer to generate increasingly beautiful 3D images of spheres.
</p>
<p>
Chris started off by explaining some of the different methods for lighting 3D scenes, then went into a bit more detail about ray tracing and explained what we would be doing. We started with simple unshaded objects and moved onto diffuse lighting, point light sources, shadows, and finally reflections, which provided a good progression to suit different abilities.
<p>
A starter kit was provided in C++, C#, F#, and Python to get people going. For some reason nobody used the F# framework, so obviously a bit of an unsophistiated crowd this month.. ;-)
</p>
<p><a href="https://github.com/LeedsCodeDojo/RayTracing">The github repo</a> contains the templates, slides, examples and one or two solutions.</p>
<!-- archive event -->
<img src="images/event/28-winners.jpg" class="event-image" />
<p class="date-heading">Connect 4 - Wednesday 7th December 2016</p>
<p>
In December, <a href="http://www.meetup.com/members/152995262/">David Betteridge</a> ran a fun bot-building session which had people creating a program to play <a href="https://en.wikipedia.org/wiki/Connect_Four">Connect 4</a>.
</p>
<p>
Templates were provided in several languages to connect to the HTTP based server, although a few poeple ended up writing their own. David told us about a couple of advanced methods we could try (Minimax and Monte Carlo) - a couple of teams had a go at Monte Carlo. We played a couple of the bots off against each other which was good fun - in the end the fairly simple bot of Adam P and Geoff won out against the more advanced implementations. Although there was some suggestion that the Monte Carlo algorithm that always played in column 0 might have had some issues..
</p>
<p>The template and server code, as well as some solutions, are <a href="https://github.com/LeedsCodeDojo/Connect4">up on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/27-pres-1.jpg" class="event-image" />
<p class="date-heading">Intro to Code Club - Wednesday 5th October 2016</p>
<p>
This month, LCD regular and organizer of the <a href="http://www.meetup.com/Kotlin-Yorkshire-Meetup-Group/">Kotlin Yorkshire Meetup Group</a> <a href="http://www.meetup.com/Leeds-Code-Dojo/members/187831041/">Andy Bowes</a> ran a session based on another of his programming interests, <a href="https://www.codeclub.org.uk/">Code Club</a>.
</p>
<p>
In his words:
</p>
<p>
Code Club is a nationwide network of volunteers who provide afterschool coding clubs for children aged between 9 & 11. In this month's Code Dojo we will find out more about Code Club and get a chance to go back to school & try some of the projects that teach coding. The projects will use <a href="https://scratch.mit.edu/">Scratch</a> to create games and will also provide an opportunity to program the new <a href="https://www.microbit.co.uk">BBC micro:bit</a>, a computer that can fit into the palm of your hand.
</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/codingame.png" class="event-image" />
<p class="date-heading">Coding Problems: CodinGame - Wednesday 7th September 2016</p>
<p>
Following on from our previous Coding Problems sessions (Euler and Rosalind), with their more traditional format, this time we looked at one of the new wave of programming problem sites. Instead of coding algorithms to calculate the answers to set problems, CodingGame sees you implementing bots and AI which participate in dynamic games, in real-time, with some nice visualisations to go with them.
</p>
<p>
It was an interesting session - most people did the tutorial exercise then went onto one of the more difficult problems, and later on most of the group got involved in some multiplayer coding challenges, which were a lot of fun. CodinGame - it's the future!
</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/McCarthy.jpg" class="event-image" />
<p class="date-heading">Try a Language: Scheme - Wednesday 3rd August 2016</p>
<p>
This month we had a go at <a href="https://en.wikipedia.org/wiki/Scheme_(programming_language)">Scheme</a>, a kind of Lisp, introduced in 1975 but still popular as a teaching language and the basis of some modern languages including Clojure and Racket.
</p>
<p>
Twenty-two people turned up to listen to a brief history and introduction to Lisp and Scheme, before working through some exercises designed to teach the language from scratch. It took a while to get used to the parentheses, but by the end everyone was getting into it, cons'ing, car'ing and cdr'ing their way through recursive lists like champs!
</p>
<p>The slides and exercises, as well as some solutions, are <a href="https://github.com/LeedsCodeDojo/TryScheme">up on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/24-adam-pres.jpg" class="event-image" />
<p class="date-heading">Birthday Refuctoring - Wednesday 1st June 2016</p>
<p>
In this session, the group coded up a well-structured <a href="https://en.wikipedia.org/wiki/Leap_year#Algorithm">Leap Year Algorithm</a> before <a href="http://www.waterfall2006.com/gorman.html">refuctoring</a> the bejesus out of it in the funniest, cleverest ways they could imagine!</p>
<p>
It was a good turnout, with 20-odd coders abusing a variety of languages including Python, C#, Java and Scheme.
</p>
<p>Go and have a look at some of the <a href="https://github.com/LeedsCodeDojo/BirthdayRefuctoring">solutions on github</a> - if you dare!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/23-talk.jpg" class="event-image" />
<p class="date-heading">Dynamic Programming Kata - Wednesday 4th May 2016</p>
<p>
This month, Regular LCD'er, Bioinformatics problem-solver and Google Code competitor Andy Bowes gave us the low-down on the Dymanic Programming technique which he has put to good use in some of his problem solving.
</p>
<p>
After a brief introduction by Andy featuring some nice examples, we worked in pairs to put the tequnique to work solving problems including the Coin Change problem and the Optimum Path problem.
</p>
<p>
Despite the fairly advanced nature of the tequnique, with Andy's help pretty much everyone got a working solution to the first problem, with one pair almost finishing three. Languages used included Kotlin, F#, JavaScript, Scheme, Haskell and C++.
</p>
<p>You can find the <a href="https://github.com/LeedsCodeDojo/DynamicProgramming">slides, problems and solutions on github.</a></p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/22-pizza.jpg" class="event-image" />
<p class="date-heading">Return of the TDD Kata - Wednesday 6th April 2016</p>
<p>
For April's session we returned to our roots with a good old TDD Kata, whereby we worked on a problem using Test Driven Development and Pair Programming. The problem we used was based on <a href="http://codingdojo.org/cgi-bin/index.pl?KataNumbersInWords"> Numbers in Words</a>, which involves converting an integer to it's written English equivalent. (Or French equivalent, as one particularly fearless pair attempted!)
</p>
<p>
Despite bad weather there was a fair turnout, and a few new people turned up which is always good. Languages used were Kotlin, C#, Ruby, JavaScript, Scheme and Haskell.
</p>
<p><a href="https://github.com/LeedsCodeDojo/NumbersAsWords">The solutions from the night</a> can be found on github.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/21-group.jpg" class="event-image" />
<p class="date-heading">Try a Language: APL - Wednesday 2nd March 2016</p>
<p>
This month we moved away from your fancy modern languages, and took a trip back to a simpler time when the only data type was the multidimensional array and you had to enter programs using a special keyboard. Did I say simpler time? Let's just say a different time..
</p>
<p>
Although <a href="https://en.wikipedia.org/wiki/APL_(programming_language)"> APL</a> is quite different to what most of us code in nowadays, many languages have similar roots, although the main reason for giving it a try is to open your mind to the possibilities that different kinds of programming present. Also, when you can write a program to find prime numbers in 17 characters, it's killer for code golf! (In case you're wondering, '(~R∊R∘.×R)/R←1↓ιR').
</p>
<p>
Regular LCD'er <a href="http://www.meetup.com/Leeds-Code-Dojo/members/188719765/">Darren Drapkin</a> explained the language history and basics to us, then we went through some 'getting started' exercises before trying to tackle a couple of the Project Euler exercises. While these are fairly suitable for APL, being optimised for maths-based algorithms, getting into the APL midset was quite challenging in the time we had. Even so, most of the group managed to get through at least one of the problems, which I'm counting as a success!
</p>
<p>The <a href="https://github.com/LeedsCodeDojo/TryAPL">documentation and exercises</a> are on github.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/20-pres.jpg" class="event-image" />
<p class="date-heading">Google Jammin' - Wednesday 3rd February 2016</p>
<p>
With the 2016 edition of Google's popular coding contest <a hre="https://code.google.com/codejam">Google Code Jam</a> opening in March, we had a look at the setup of the contest and had a go at a couple of problems from previous years.
</p>
<p>
Despite the last-minute announcement, there was a fair turnout, with solutions in the usual languages - C#, F#, Elixir, Python, and C++.
</p>
<p>Some of the solutions are up <a href="https://github.com/LeedsCodeDojo/GoogleJammin">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/19-group-1.jpg" class="event-image" />
<p class="date-heading">Coding Problems: Rosalind - Wednesday 6th January 2016</p>
<p>
To kick off 2016, we had a look at another set of online coding problems, this time in the form of <a href="http://rosalind.info/problems/list-view/">Rosalind</a>. This site, named after <a href="https://en.wikipedia.org/wiki/Rosalind_Franklin">Rosalind Franklin</a>, is dedicated to bioinformatics-based problems. Similar to Project Euler, the problems start off easy and get progressivly harder, and with the badges and achievements can prove similarly addictive!
</p>
<p> Most people got a few problems solved, and there was a good mix of languages including F#, Java, Haskell, Python, C#, JavasScript, C, C++ and Ruby! There was even some functional Java, which apparently is no longer an oxymoron.</p>
<p>Some of the solutions are up <a href="https://github.com/LeedsCodeDojo/Rosalind">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/18-group-1.jpg" class="event-image" />
<p class="date-heading">Try a Language: Elixir - Wednesday 2nd December 2015</p>
<p>In the second of our 'try a language' series, <a href="http://www.meetup.com/members/141188872/">Phil Helliwell</a> showed us around another functional language, this time in the form of <a href="http://elixir-lang.org/">Elixir</a>.</p>
<p>According to the website, "Elixir is a dynamic, functional language designed for building scalable and maintainable applications. Elixir leverages the Erlang VM, known for running low-latency, distributed and fault-tolerant systems."</p>
<p>Phil gave us a brief overview, after which we worked through a set of exercises he designed, culminating in the creation of a text-based Multi User Dungeon. It was a very well put-together dojo, helping beginners with a gentle introduction while having the scope for more advanced coders to get really stuck in, while showing off the good bits of the language.</p>
<p>I'm not sure if it was Phil, Elixir or just a general growing interest, but we had another record turnout with 25-odd coders, which is great to see. Hopefully the trend will continue next year!</p>
<p>Phil's slides and exercises, and some of the solutions, are up <a href="https://github.com/LeedsCodeDojo/elixir_dojo">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/17-dave-talk.jpg" class="event-image" />
<p class="date-heading">The Paxos Participation - Wednesday 4th November 2015</p>
<p>In this session, <a href="http://www.meetup.com/members/184775282/">David Turner</a> put together the challenge of a team-based implementation of the <a href="https://en.wikipedia.org/wiki/Paxos_(computer_science)">Paxos algorithm</a>, a protocol for solving consensus in a network of unreliable processors.</p>
<p>There were three types of actor to implement - proposers, acceptors and learners - with coders working in pairs to implement each. Dave had created a server which worked using basic HTTP requests, as well as skeletons in a variety of languages - we had solutions in Ruby, F#, C#, Haskell and Python.</p>
<p>Some of the solutions, as well as Dave's examples, skeletons and server code can be found <a href="https://github.com/LeedsCodeDojo/paxos-dojo">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/16-pres-1.jpg" class="event-image" />
<p class="date-heading">ASCII Fractals - Wednesday 7th October 2015</p>
<p>This month, <a href="http://www.meetup.com/members/152995262/">David Betteridge</a> guided us through the process of creating fractal images based on the <a href="https://en.wikipedia.org/wiki/Mandelbrot_set">Mandelbrot Set</a>, displaying them using that format so close to the programmer - ASCII characters.</p>
<p>It was a great turnout, and there were solutions created in Scheme, Haskell, C#, Ruby and Python. Everyone managed to get the basics up, and some even got their implemenations zooming, panning and rotating around the image!</p>
<p>The code is almost as beautiful as the fractals themselves... <a href="https://github.com/LeedsCodeDojo/ASCIIFractals">Check it out on github</a>!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/15-tournament-2.jpg" class="event-image" />
<p class="date-heading">Core Wars - Wednesday 2nd September 2015</p>
<p>We took a dive down to the lowest of levels this month, using assembly language to code up warriors to compete in a <a href="https://en.wikipedia.org/wiki/Core_War">Core War!</a></p>
<p>Another capacity turnout came to take part, with no previous knowledge of the Redcode assembly language used, yet all teams managed to get a working bot together to compete in the big tournament.</p>
<p>Strategies ranged from simple Imps all the way to an ambitious Vampire, with final victory going to Gordon and Geoff's Black Knight, a self-replicating Bomber.</p>
<p>Never has a group of people had so much fun watching a block of memory!</p>
<p>The bots, along with links and documentation, are <a href="https://github.com/LeedsCodeDojo/CoreWars">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/14-phil.jpg" class="event-image" />
<p class="date-heading">Make it Run, Make it Right - Wednesday 5th August 2015</p>
<p>This time we went back to TDD, specifically the different strategies available in the 'make it run, make it right' phase as described by Kent Beck in <a href="http://www.amazon.co.uk/Driven-Development-Addison-Wesley-Signature-Series/dp/0321146530">TDD by Example</a>. (For more details, check out <a href="https://relentlessdevelopment.wordpress.com/2014/06/18/make-it-run-make-it-right-the-three-implementation-strategies-of-tdd/">my blog post about it</a>.)</p>
<p>The problem we tacked was implementing a <a href="https://github.com/LeedsCodeDojo/MakeItRight/blob/master/Problem.md">Simple Prefix Calculator</a>, which seemed to provide a good level of challenge for everyone.</p>
<p>It was another record turnout at LCD with over 20 people participating, which was great to see! As expected a number of languages were being used including C#, Python, JavaScript, Haskell and Ruby. Astonishingly, there was no F# or Scheme in sight!</p>
<p>As usual, the solutions can be found <a href="https://github.com/LeedsCodeDojo/MakeItRight">on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/13-jonny-gordon-allie-small.jpg" class="event-image" />
<p class="date-heading">Birthday Golf - Wednesday 1st July 2015</p>
<p>To celebrate our first year of existence, we returned to one of the most fun sessions from the previous year, Code Golf, where the objective is to code a solution in the smallest possible number of characters.</p>
<p>We did two problems, namely printing out the lyrics to 'Happy Birthday Leeds Code Dojo' as a warm-up, then a slightly more involved one involving calculating the length of a <a href="https://en.wikipedia.org/wiki/Collatz_conjecture">Collatz sequence</a>.</p>
<p>There were a variety of languages including C, Haskell, R, JavaScript, Ruby, Python, C# and GolfScript (with some teams even switching languages for the second problem). There were some truly ingenious solutions, with perhaps the best (although in something of a grey area rules-wise) involving using the unary number scheme to get down to 44 bytes!</p>
<p>The solutions <a href="https://github.com/LeedsCodeDojo/BirthdayGolf">are on github</a>, with the <a href="https://prezi.com/rudinegx34qb/birthday-golf/?utm_campaign=share&utm_medium=copy">slides on Prezi</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/12-david-chris-pres.jpg" class="event-image" />
<p class="date-heading">Try a Language: F# - Wednesday 3rd June 2015</p>
<p>In a variation on our normal format, in this session we all put down our usual programming tools of choice and had a go at <a href="http://fsharp.org/">F#</a>, .Net's functional language.</p>
<p>I gave an overview of the language and <a href="https://twitter.com/chrisdobby">Chris Dobson</a> put together some interesting exercises based on creating 3D objects, which certainly helped make learning fun!</p>
<p>There was a good turnout of 20-odd people, and most seemed to enjoy the it, so we might do more 'try a language' sessions in the future. If you'd like to come and guide us through your favourite language, get in touch!</p>
<p>The slides and exercises, as well as some people's solutions, <a href="https://github.com/LeedsCodeDojo/TryFSharp">are on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/11-dave-chris.jpg" class="event-image" />
<p class="date-heading">Take it to the Bank - Wednesday 6th May 2015</p>
<p>This month, we had a go at the <a href="https://github.com/LeedsCodeDojo/BankOCR/blob/master/Problem.md">Bank OCR Kata</a>, closely based on the <a href="http://codingdojo.org/cgi-bin/index.pl?KataBankOCR">oringinal problem from codingdojo.org</a>.</p>
<p>It was a fairly difficult problem with four distinct sections, but many pairs managed to get the first three finished. It was also a challange to tackle with TDD, because it was often difficult to identify and take small steps - but a good learning experience. At least one coder finished off part 4 afterwards!</p>
<p>There were solutions in Elixir, F#, Java, Haskell, Python and C#. Some of them can be found on <a href="https://github.com/LeedsCodeDojo/BankOCR">github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/10-davidt-adamh-pres.jpg" class="event-image" />
<p class="date-heading">Coding Problems: Project Euler - Wednesday 1st April 2015</p>
<p>There are many ways to get better at coding, but a sure bet is to have a go at some coding problems. And as collections of coding problems go, they don't get much more classic than <a href="https://projecteuler.net/">Project Euler!</a></p>
<p>Project Euler is a website which contains several hundred maths-oriented programming problems, arranged roughly from easiest to hardest. It takes it's name from <a href="http://en.wikipedia.org/wiki/Leonhard_Euler">Leonhard Euler</a></p>
<p>In April's session, we had a go at some of the <a href="https://github.com/LeedsCodeDojo/ProjectEuler/blob/master/Problems.md">problems</a> using Java, F#, Haskell, Scheme and more. There was head scratching, there was googling, there were all sorts of ways to generate prime numbers, but most importantly there was fun!</p>
<p>Go and check out the <a href="https://github.com/LeedsCodeDojo/ProjectEuler">solutions on github</a> to see the results.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/9-pizza-1.jpg" class="event-image" />
<p class="date-heading">Recursion: See Recursion - Wednesday 4th March 2015</p>
<p>In this session, we had a crack at writing some <a href="http://en.wikipedia.org/wiki/Recursion_%28computer_science%29">recursive algorithms</a>, commonly used in functional programming but also a good fit for many typical problems.</p>
<p>There were a variety of <a href="https://github.com/LeedsCodeDojo/Recursion/blob/master/Exercises.md">exercises</a> for different levels of familiarity with recursion, from summing a list of numbers through to tail-call-optimised continuation-based mind-benders!</p>
<p>The group got on well, with everyone getting the hang of the basics of recursion and several pairs doing the more advanced exercises.</p>
<p>The <a href="https://prezi.com/opt1h-r7x-uy/recursionsee-recursion/?utm_campaign=share&utm_medium=copy">slides are on prezi</a>, and the <a href="https://github.com/LeedsCodeDojo/Recursion">solutions are up on github</a>, as usual.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/8-eleanor-david-pres.jpg" class="event-image" />
<p class="date-heading">Checkout Kata - The Redoux! - Wednesday 4th February 2015</p>
<p>For our second session of 2015, we had another go at the <a href="http://rubygem.me/2014/01/16/shopping-cart-kata/">Checkout Kata</a>. Since most of the group had done it before, this gave people a chance to try something different - an alternative approach to the problem, a new language, a different coding partner, and so on.</p>
<p>There was a great mix of languages, including a Leeds Code Dojo first appearance for <a href="http://elixir-lang.org/">Elixir</a> and <a href="https://golang.org/">Go</a>, with Scala, F#, Haskell and C# also on show.</p>
<p>Some interesting solutions got coded up, and Adam and Matt even managed to get the extended requirements working with their Scala implementation.</p>
<p>Go and check out the <a href="https://github.com/LeedsCodeDojo/CheckoutKataRedoux">solutions on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/7-group-1.jpg" class="event-image" />
<p class="date-heading">Checkout Kata - Wednesday 7th January 2015</p>
<p>To kick 2015 off, we had a go at the <a href="http://rubygem.me/2014/01/16/shopping-cart-kata/">Checkout Kata</a>, a classic TDD problem with a variety of possible implementations.</p>
<p>It was our best turnout so far with 20 people, and as usual we had a good variety of languages present - JavaScript, F#, Haskell, Lisp, Java, and C# - and quite a few people tried something new.</p>
<p>There were a good variety of solutions implemented, with the discounts being calculated using pure maths, arrays of functions, pattern matching, objects, and more. Variety, as they say, is the spice of life!</p>
<p>The <a href="https://github.com/LeedsCodeDojo/CheckoutKata">github repo from the night</a> has a few of the solutions, why not take a look!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/laptop-group.jpg" class="event-image" />
<p class="date-heading">Refuctoring - Wednesday 3rd December 2014</p>
<p>In this session, the group enjoyed coding up a nice, clean solution to <a href="http://en.wikipedia.org/wiki/Fizz_buzz">FizzBuzz</a> before mercilessly <a href="http://www.waterfall2006.com/gorman.html">refuctoring</a> it into an unrecognisable pile of tangled ASCII! (Or in some cases, Unicode..)</p>
<p>The solutions started out in Java, C#, F# and Haskell, but by the end could barely have been recognised as such by the language designers themselves. There were many devious crimes against programming such as code which would only work one day of the month, source written in a variety of Unicode symbols, y-combinator abominations and plain old bad naming.</p>
<p>We learned a few things about programming, and more importantly, had a lot of fun.</p>
<p>Go and have a look at some of the <a href="https://github.com/LeedsCodeDojo/Refuctoring">solutions on github</a> - if you dare!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/PipePackerTests.png" class="event-image" />
<p class="date-heading">The Pipe Packing Challenge - Thursday 6th November 2014</p>
<p>In a coding session that took inspiration from the last <a href="http://www.meetup.com/Leeds-Sharp/events/199532112/">leeds sharp session</a>, five pairs of us wrote algorithms to try and solve a simplified version of the <a href="http://en.wikipedia.org/wiki/Bin_packing_problem">bin packing problem.</a></p>
<p>There were once again many languages in effect - Erlang, F#, C# and Haskell - and all of the pairs had a working solution by the end. Most ended up with a 'First Fit' algorithm, which does a pretty good job of finding a solution to this NP-Hard problem without taking the age of the universe to run..</p>
<p>Most of the <a href="https://github.com/LeedsCodeDojo/PipePacking">solutions are up on github</a> - go check them out!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/skynet2.jpg" class="event-image" />
<p class="date-heading">Build you a Skynet - Wednesday 1st October 2014</p>
<p>We worked in twos and threes to write Machine Learning algorithms based on the k-nearest neighbours algorithm. The group did well, with almost everyone getting a working solution, and some teams getting to over 90% accuracy with their digit classification!</p>
<p>There were several languages in use - F#, Objective C, Scala, C#, and Python, and again a few people got involved with a new language, well done to them.</p>
<p>Have a look at some of the <a href="https://github.com/LeedsCodeDojo/DigitRecogniser">solutions on github</a>.</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/presentation.jpg" class="event-image" />
<p class="date-heading">Word Wrap Kata - Wednesday 3rd September 2014</p>
<p>We paired up to tackle another problem using TDD and Pair Programming, this time looking at implementing a Word Wrap algorithm. This takes a line of text and wraps it to a certain length - similar to how Notepad and other text editors work.</p>
<p>As usual, there were several languages in use - C#, Python, and PHP, with a couple of folk trying out something new. We also tried out the 'test list' technique, where you maintain a list of tests throughout the session, crossing them off and adding more as you go.</p>
<p>The problem proved fairly interesting, with a few different techniques emerging - recursion seemed to work well and produce fairly simple solutions, and some people chose to return collections of strings with others going for a block of text. The initial choice of test (and therefore implementation path) seemed to have quite a bit impact on how easy it was to get to a working solution.</p>
<p>Go and see the <a href="https://github.com/LeedsCodeDojo/WordWrap">solutions on github</a></p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/scores.jpg" class="event-image" />
<p class="date-heading">Fore! A nice round of Code Golf: Tuesday 5th August 2014</p>
<p>We had a great round of code golf, with several languages represented - C#, Ruby, Python and Haskell. We coded up solutions to <a href="http://golf.shinh.org/p.rb?99+shinichiroes+of+hamaji">output the '99 bottles' song</a>, then made them as small as possible!</p>
<p>As you might predict, the Ruby and Python solutions were initially much smaller at 400-odd characters, but it was quite a struggle to get them down to the ultimate winner at 257 characters. The C# and Haskell solutions on the other hand started out much larger at 1000-plus chars, but ended up only 50 or so characters behind the scripting languages. It was an exciting race to the finish line!</p>
<p>A couple of the <a href="https://github.com/LeedsCodeDojo/CodeGolf_99Bottles">solutions are up on github</a> - go and be impressed!</p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
<!-- archive event -->
<img src="images/event/event1.jpg" class="event-image" />
<p class="date-heading">The Dojo Opens: Wednesday 9th July 2014</p>
<p>The first Leeds Code Dojo went really well – 17 people joined in, from a variety of different backgrounds and of various skill levels, so a great response. The Callcredit boardroom was pretty much at capacity, we might need to get a bigger room for the next one!</p>
<p>We worked in pairs on the ‘Kata Potter’ programming problem, practising the skills of TDD and Pair Programming. It was great to see a number of languages being used, including C#, F#, Ruby, Python, and PHP, with a few people trying out a new language for the first time.</p>
<p>Several of the solutions are up on github - <a href="https://github.com/LeedsCodeDojo/KataPotter">go check them out!</a></p>
<span class="dotted-line-break c-both"></span>
<!-- /archive event -->
</div>
</div>
</section>
</body>
</html>