-
Notifications
You must be signed in to change notification settings - Fork 17
/
Copy pathtalks.html.jinja2
executable file
·707 lines (547 loc) · 39.4 KB
/
talks.html.jinja2
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
{% extends "base.html.jinja2" %}
{% block title %}
Talks
{% endblock title %}
{% block stylesheets %}
<style>
h3 + strong {
margin-left: 1em;
}
hr {margin-top: 2em;}
.talk-abstract p:first-child::before {
/* This isn't ideal as screen readers will (generally) ignore ::before {content} */
content: "Abstract:";
margin-right: .5em;
text-decoration: underline;
}
</style>
{% endblock stylesheets %}
{% block body %}
{% macro talk() -%}
{#
Because of Jinja's scoping rules, this needs to be defined inside `block body`
so that it has access to {{term}} from the enclosing scope.
#}
{% set obj = caller()|from_yaml %}
{#
talk()
Formats a talk event (past or future) into HTML
Use with a Jinja {% call %} block [1] and provide the following fields as YAML:
title (str, HTML): The title of the talk
speaker (str, HTML): The name(s) of the person or organisation giving the talk
date (ISO 8601 date): The date that the talk was/will be given on. Should be given *unquoted* in YYYY-MM-DD format
week (int): The week number that the talk will be given on. Eg, `week: 6` for Summer Term Week 6.
format (str): How this talk was/will be given. Should be one of "in-person" or "online".
room (str): The room in which this talk was/will be given.
youtube (str): The full URL of the YouTube video, if the talk has been uploaded.
and ONE of:
markdown (str, Markdown): The abstract of the talk, in Markdown formatting. This will be converted to HTML.
html (str, HTML): The abstract of the talk, in HTML. No processing will be applied to this. Text must be inside <p> element(s), these are not automatically applied.
See the instances below for examples.
[1]: https://jinja.palletsprojects.com/en/3.0.x/templates/#call
#}
<h3><em>{{obj.title}}</em> by {{obj.speaker}}</h3>
{#-
from_iso_date is unneeded here as YAML will automatically intepret YYYY-MM-DD
but it doesn't hurt to be safe in case it gets quoted
-#}
<strong>{{obj.date|from_iso_date|format_date(year=False)}} ({{term}} Week {{obj.week}})</strong>
{%- if obj.format -%}
<strong> - {{obj.format}}</strong>
{%- endif %}
{% if obj.room -%}
<strong>in {{obj.room}}</strong>
{%- endif %}
{%- if obj.youtube -%}
<a href="{{obj.youtube}}">watch on YouTube</a>
{%- endif -%}
{% if obj.notice %}
<p class="talk-notice">{{obj.notice}}</p>
{% endif %}
<div class="talk-abstract">
{%- if obj.markdown -%}
{% filter markdown() %} {{obj.markdown}} {% endfilter %}
{%- else -%}
{{obj.html}}
{%- endif -%}
</div>
{%- endmacro %}
<p>
HackSoc run talks from industry speakers, members and alumni throughout the academic year. We are currently running a mixture of online talks, using YouTube and our Discord server, and in-person talks on Campus East.
</p>
<p>
Talks take place between between 5:00 and 6:00 PM certain Thursdays, and are 30 minutes long, followed by 15 minutes of questions.
</p>
<p>
Attending talks is a great way to get a diverse look at what a degree in computer science can be, whether it's more focused on industry or academia.
</p>
<h2>Giving a talk</h2>
{#
When talk submissions open, fill in the following variables:
- `submissions_form` should be a Google Form link.
- `submissions_term` should be the term we're collecting submissions for, e.g. "Autumn".
- `submissions_close` should be the date (YYYY-MM-DD) when talk submissions close, e.g. "2021-09-20" for 20th September 2021.
All variables will need to be given in quotes.
When talk submissions close, change all variables to None (not in quotes).
#}
{%- set submissions_form = "https://forms.gle/u9h8U1asJUk1t3At5" %}
{%- set submissions_term = "1" %}
{%- set submissions_close = "2023-12-06" %}
<div class="noticebox">
{%- if submissions_form and submissions_term and submissions_close %}
If you'd like to give a talk in Semester {{ submissions_term }}, then please fill in <a href="{{ submissions_form }}">this Google form</a>. Submissions will close on the <strong>{{ submissions_close|from_iso_date|format_date(year=False) }}</strong>.
{%- else %}
Submissions for talks are now closed. <a href="{{ mailing_list_signup }}">Subscribe to our mailing list</a> to receive our weekly newsletter and be notified when they open again!
{%- endif %}
</div>
{#
Upcoming talks go here with <h2>Semester 2 2023/24 (Upcoming)</h2>
Once the *semester* has passed, just move it below the HR, and remove the (upcoming).
#}
<details open>
<summary><h2>Semester 1 2023/24 (Upcoming)</h2></summary>
{%- set term="Semester 1" -%}
{% call talk() %}
title: A Stack of Pushdown Automata Variations
speaker: Joseph Krystek-Walton
date: 2023-09-28
week: 1
room: CSE/082X
format: in-person
markdown: |
This talk goes over some of the variations of the Pushdown Automata: who created them, how they work, and what makes them special.
The major sections will be an introduction to the idea of automata, introduction to Pushdown Automata (PA), Deterministic & Non-Deterministic PA's, modifying how the input is read (sweeping visibly PA, stack Automaton, probably some others), Alternating PA's, multi-stack PA's, Visibly PA's (including a bit on closures), and the combination of these behaviors/where the research is now in the modern day.
{% endcall %}
</details>
<hr>
<details open>
<summary><h2>Spring Term 2021/22</h2></summary>
{%- set term="Spring" -%}
{% call talk() %}
title: The History of Calculators
speaker: Aaron Christiansen
date: 2022-02-03
week: 4
format: online
markdown: |
Ever since picking up my first scientific Casio for GCSEs, I've had a strange fascination with calculators. Even in today's smartphone-dominated world, these single-purpose devices still hold an important place, especially in education. As one of the earliest forms of a crude pocket computer, they also have a rich history - which I'll cover in this talk!
From the earliest mechanical models, to early vacuum-florescent display pocket calculators, and up to the present day, we'll explore notable models and advances made along the way to modern readily-available devices stuffed with extra features.
{% endcall %}
{% call talk() %}
title: An Introduction to Reservoir Computing, or Why I’m Doing a PhD in Magic
speaker: C Wringe
date: 2022-02-24
week: 7
format: in-person
markdown: |
Unconventional Computing is a field in Computer Science that attempts to look at new ways of performing computation, and on a larger level, what “performing computation” even means. It can be approached from two directions: unconventional models, which looks at using models other than Turing Machines and Grammars, and unconventional materials, which looks at performing computation on any material that isn’t silicon.
Reservoir computing is sort of both. It takes the dynamics of any given substance, and uses that to perform computations.
In this talk, I’ll introduce the models behind Reservoir Computing, some physical instantiations of it, and then I’ll elaborate on the different ways it gets used in the literature.
{% endcall %}
{% call talk() %}
title: Avoiding a Car Crash, an Overview of Automotive Computer Safety
speaker: Jacob Allen
date: 2022-03-10
week: 9
format: in-person
markdown: |
We've all been there, whether it's an app on our phone suddenly closing or a full on "blue screen of death". Computer systems crash. Crashes are mostly harmless, if very annoying, but that's not always the case. What do we do when a computer system crashing might result in a physical car crash as well? Or when a more subtle error might cause a car to slowly veer off course?
In this talk I will give an overview of the kinds of safety issues which can arise with computer systems, with a particular focus on automotive systems but also in safety critical systems in general. I will then discuss how we can approach the avoidance and mitigation of such safety issues in computer systems. Finally, I will outline how the automotive industry tackles said issues, and the standards and processes involved.
Please note: this talk will not include any real life examples beyond abstract hypothetical scenarios.
{% endcall %}
</details>
<details>
<summary><h2>Autumn Term 2021/22</h2></summary>
{%- set term="Autumn" -%}
{% call talk() %}
title: An Incomplete History of High Speed Rail
speaker: Iris Scoffin
date: 2021-10-14
week: 3
format: in-person
markdown: |
An overview of the history of High Speed Rail, focusing primarily on new developments and the technological advancements that made them possible.
{% endcall %}
{% call talk() %}
title: A (Very) Brief History of the Technology of String
speaker: C Wringe
date: 2021-10-21
week: 4
format: online
markdown: |
Textiles have their history in the field of computer science. From the Jacquard Looms that every first year learns was the inspiration for programmable computers, to the fact that we call sequences of characters strings, we can't seem to escape them. (And if you think you can, just wait until that *one* student brings it up as an example in every. single. seminar. :P)
Given this, I posit that it is crucial (or, well, at least interesting) for anyone who spends a lot of time thinking about computers to have a rudimentary understanding of the processes that take fluff and turn it into string, and then cloth, as well as the tools that help make it so.
So have my half-hour nerd rant.
{% endcall %}
{% call talk() %}
title: "You can win the enterprise but lose the world: a recent history of DevOps, k8s and Cloud Foundry"
speaker: Miki Mokrysz
date: 2021-10-28
week: 5
format: in-person
markdown: |
Miki Mokrysz has spent years working on large-scale cloud platforms for the UK government, large enterprise, and small startups. In this talk they'll tell us about the DevOps side of the tech industry, how Kubernetes has gotten so big, and the huge projects like Cloud Foundry that couldn't beat Kubernetes.
{% endcall %}
{% call talk() %}
title: Talk In Which Matt Talks For 30 Minutes About Speedrunning
speaker: Matt Windsor
date: 2021-11-11
week: 7
format: in-person
markdown: |
I'm Matt, and this year I started learning how to speedrun - a way of playing video games that emphasises trying to do tasks in the game as quickly as possible. I'll try to convince you that anyone can speedrun, any game can be spedran, and possibly some other things too. A sort-of sequel to the talk in which Matt talked for 30 minutes about Sonic.
{% endcall %}
{% call talk() %}
title: RISC-V, and why it isn't as risky as you think
speaker: Daniel Allinson
date: 2021-11-18
week: 8
format: online
markdown: |
RISC-V is a new instruction set architecture created for use in many different types of CPU core. But what exactly is it? How does it work? How does it compare to the instruction set used in our modern computers?
{% endcall %}
{% call talk() %}
title: What actually is an Operating System?
speaker: Jacob Allen
date: 2021-12-02
week: 10
format: online
markdown: |
Operating Systems are everywhere. At the core of most computers, be they desktops or embedded systems, an Operating System is running. However, there are a wide gamut of different things we call an Operating System. What, then, makes an Operating System what it is? Why do we even need Operating Systems in the first place?
In this talk I will explain the origins of Operating Systems and what the roles of Operating Systems are in modern computing. I will also cover what the different forms of Operating System commonly in use are, some of why they are designed the way they are, and give my thought's on what an Operating System actually needs to be an Operating System.
{% endcall %}
</details>
<details>
<summary><h2>Summer Term 2020/21</h2></summary>
{%- set term="Summer" -%}
{% call talk() %}
title: Talk In Which Matt Talks For 30 Minutes about Sonic the Hedgehog™
speaker: Matt Windsor
date: 2021-05-13
week: 6
youtube: https://www.youtube.com/watch?v=nKmxdTJ7MRk
markdown: |
Sonic the Hedgehog™ turns 30 this year, as do I. Alas, before 2021 I had never actually properly sat down and played a Sonic game. In fact, I didn't even have a Mega Drive until the mid-10s. Shocking, I know!
In this talk, I'll deep dive into how I went from a washed-up Mario fan to a full-on second childhood with the blue blur, with a goal to become a Sonic CD speedrunner some time this millennium. I'll try to convince you that, in 2021, Classic Sonic still holds up, and you should definitely try it. If you try, you can do anything! (I won't talk about modern Sonic, don't worry.)
May or may not contain Knuckles.
{% endcall %}
{% call talk() %}
title: The Revised<sup>7</sup> Report on the Algorithmic Language Scheme
speaker: Daphne Preston-Kendal
date: 2021-05-27
week: 6
youtube: https://www.youtube.com/watch?v=y8qaitWSDW0
markdown: |
Scheme is a small but influential dialect of the Lisp programming language which has been standardized in multiple more-or-less compatible versions since its creation in the late 1970s. After decades of being used almost exclusively in teaching and research (with some exceptions), Scheme is now in the throes of a second attempt to expand the standard language to make it practical for use in production environments, R7RS. This talk will give a brief overview of the history of Scheme standardization over the last five decades, compare the initial ‘small’ version of R7RS (intended to carry on the tradition of versions of Scheme intended for use in teaching, research, and embedded environments) to previous standard versions of Scheme and assess its success so far, and review current progress on the ‘Large’ version of the standard (which is intended to be practical for developing large, real-world applications) and the difficulties of standardizing a practical but usable version of ‘the world's most unportable programming language’.
{% endcall %}
{% call talk() %}
title: Dispatches from the Computing Titanic
speaker: Jacob Allen
date: 2021-06-09
week: 9
youtube: https://www.youtube.com/watch?v=7hvLd-4hP_E
markdown: |
Contrary to many jokes, computers are (on the whole) well behaved and predictable machines that do exactly what you ask them to. This is why it is so much more noteworthy when they do not do what they were asked to, or worse, do exactly what they were asked to but not what was wanted. No better is this shown in what have come to be known as "cursed" parts of computing, such as those shown in the "Cursed computer Iceberg Meme" ([https://suricrasia.online/iceberg/](https://suricrasia.online/iceberg/)).
Join me as, taking inspiration from sources like the "Cursed computer Iceberg Meme", I talk about some of my favourite "cursed" parts of computing! Less serious than my previous talks this talk will focus on some of the more interesting and unexpected areas of "cursed" computing I've come across, and I will attempt to explain why some aren't quite as bad as you'd think, or why some are worse!
{% endcall %}
{% call talk() %}
title: How Robot Swarms Can Help Solve Hard Problems
speaker: C Wringe
date: 2021-06-24
week: 10
youtube: https://www.youtube.com/watch?v=SEUXgnwUfP4
markdown: |
Some tasks are too difficult for most robots to complete. And yet, insects perform them with apparent ease.
Enter the biologically inspired robot swarm: A group of robots, individually performing simple tasks to create a more complex whole.
In this talk, I will go over what a robot swarm is, and the sorts of problems they can solve. I will show what it means for a robot swarm to be scalable, flexible, and robust. Finally, I will go into some of the challenges faced by the field, and areas of current and future work.
{% endcall %}
</details>
<details>
<summary><h2>Spring Term 2020/21</h2></summary>
{% set term="Spring" %}
{% call talk() %}
title: Can Concurrency Testing Be Liberated From The Litmus Style?
speaker: Matt Windsor
date: 2021-02-04
week: 4
youtube: https://www.youtube.com/watch?v=LZZoxTnUwOo
markdown: |
The 'litmus test' is a de facto standard for lightweight tests of concurrent systems, packaging shared state, initial values, expected final values, and thread bodies into a concise and readable format. In this talk, I discuss litmus tests, how they are used in testing, the challenges of using them in compiler fuzz testing, and experimental attempts to overcome those challenges.
{% endcall %}
{% call talk() %}
title: How Robot Swarms Can Help Solve Hard Problems
speaker: C Wringe
date: 2021-02-25
week: 7
notice: This talk will not take place this term. We apologise for the inconvenience and are trying to reschedule it.
markdown: |
Some tasks are too difficult for most robots to complete. And yet, insects perform them with apparent ease.
Enter the biologically inspired robot swarm: A group of robots, individually performing simple tasks to create a more complex whole.
In this talk, I will go over what a robot swarm is, and the sorts of problems they can solve. I will show what it means for a robot swarm to be scalable, flexible, and robust. Finally, I will go into some of the challenges faced by the field, and areas of current and future work.
{% endcall %}
{% call talk() %}
title: An Introduction to Constraint Programming
speaker: Jacob Allen
date: 2021-03-25
week: 11
youtube: https://www.youtube.com/watch?v=1FJy-ubE7UE
markdown: |
As a programmer, computer scientist, computer engineer etc. there are many problems for which an algorithm can easily be determined or pulled from a text book, however, there is a class (or really two classes) of problems for which there are rarely such simple solutions: constraint problems. Luckily there exist powerful constraint programming tools to allow us to solve constraint problems using relatively simple concepts which often mirror how humans would solve the tasks.
In this talk I will introduce constraint programming and demonstrate how it can be used to solve complex problems efficiently, I will also show some examples of constraint solving programs and outline the simple underlying process by which they work.
{% endcall %}
</details>
<details>
<summary><h2>Autumn Term 2020/21</h2></summary>
{% set term="Autumn" %}
{% call talk() %}
title: Mapping with Robots
speaker: Jacob Allen
date: 2020-10-22
week: 4
youtube: https://www.youtube.com/watch?v=xTHYcUY-45Q
markdown: |
Navigation is one of the core challenges of any form of robotics (at least any form which requires movement). There are several problems which must be solved for navigation, two of the core problems being localisation and mapping, that is, knowing where the robot is in a landscape and knowing that landscape. While they are simple tasks for most humans, they are relatively complex and computationally expensive tasks for robots, particularly those with limited sensors or limited computational power.
In this talk I will introduce the concepts behind mapping in robotics, and by extension some of the concepts behind localisation. I will discuss the state of the art, with particular focus on novel approaches using swarm robotics and sparse data which each pose unique problems for localisation and mapping. Finally, I will show an example and talk about the practical complexities of actually implementing mapping in robotics.
{% endcall %}
{% call talk() %}
title: Lerning to rite gud!
speaker: Abi Sutherland
date: 2020-10-29
week: 5
youtube: https://www.youtube.com/watch?v=2VUPu0bI41I
markdown: |
Tech isn't just about writing code for computers to interpret - you need to write for those pesky humans too. But not everyone gets taught how to write in any structured way. It's usually just "go write something and hand it in". (Often followed by, “no, not like that!”) Which is a shame, because there are actually specific step-by-step methodologies for writing for humans!
I’m a working information architect, and I’ve been teaching my techie colleagues to write for a couple of years. It’s not about writing perfectly (there isn’t any such thing). It’s about writing better, and feeling less anxious while doing it.
My talk will break down the process of writing into three steps, each of which I’ll explain in sensible and approachable terms:
- Planning
- Writing
- Editing
This talk focuses on technical writing, which covers everything from quite long documents to code comments, but much of it is useful for any context where you need to get information from your brain into someone else’s as easily as possible.
{% endcall %}
{% call talk() %}
title: The Life And Times Of HTTPS
speaker: Marks Polakovs
date: 2020-11-05
week: 6
youtube: https://www.youtube.com/watch?v=zCdW5QiS9xU
markdown: |
Fifteen or twenty years ago you'd have been a fool for signing in to your MySpace account on any internet connection except for the one at your home. All your account details were sent unencrypted over the wire, ripe for anyone to steal. Today, however, over 80% of all connections Firefox makes are encrypted, and with every day we get closed and closer to universal encryption. How did we get here?
In this talk I'll build up the HTTPS protocol from first principles and go over the changes it has seen over its life, the neverending battle between attackers and browser vendors, as well as the seismic shifts in the certificate authority landscape that have enabled adoption to more than triple in just the last five years.
{% endcall %}
{% call talk() %}
title: 'How To Build and Betray Online Communities: A Ravelry Case Study'
speaker: C Wringe
date: 2020-11-19
week: 8
youtube: https://www.youtube.com/watch?v=-dM6tx56xEk
markdown: |
Ravelry is a (relatively) small site for knitters and crocheters to share patterns, projects, and discussions. Being the main point for a (relatively) small community, there is some tea. At times, it has performed admirably - at others, failed miserably.
This makes it a great case study for those building platforms for online communities: What to adopt, where to improve, and what to never (oh god never) do.
{% endcall %}
{% call talk() %}
title: Personal Identity and Fission Cases
speaker: Rach Arnold
date: 2020-11-26
week: 9
youtube: https://www.youtube.com/watch?v=ZH7sCRd0n_4
markdown: |
In this talk, I will be exploring an issue regarding psychological continuity and the persistence question (i.e. how do persons persist through time). I will be discussing why fission cases pose a problem for psychological continuity theories, as it presents itself as a logical contradiction. In order to reconcile this issue, I will be drawing upon the work of Derek Parfit and David Lewis to see if there is any plausible way to defend psychological continuity account of personal identity against the issues presented with fission cases.
{% endcall %}
</details>
<details>
<summary><h2>Summer Term 2019/20</h2></summary>
{% set term="Summer" %}
{% call talk() %}
title: How to move a radio station online, in five weeks or less
speaker: Marks Polakovs
date: 2020-06-04
week: 8
youtube: https://www.youtube.com/watch?v=iPWBGuG_SOo
markdown: |
For reasons that don't need any elaboration, University Radio York, the UK's oldest legal independent student radio station, couldn't continue broadcasting from its studios for Summer Term this year. The team had a bit of a conundrum - do we shut down, as many others have done, or do we try and find a way to continue broadcasting? URY Computing Team chose the latter. Over the course of five weeks we built WebStudio, an online version of our playout and broadcasting system, letting presenters continue their shows from home with nothing but a laptop. In this talk I'll go over some of the design decisions behind WebStudio, how we implemented it, some of the challenges that we faced (including but not limited to: browser compatibility, Daylight Savings Time, and how to do maintenance during a lockdown with only two people on-site), as well as where we hope to see it in the future.
{% endcall %}
{% call talk() %}
title: Ebooks are a Hard Problem
speaker: C Wringe
date: 2020-06-11
week: 9
youtube: https://www.youtube.com/watch?v=FHgIZB-HOBU
markdown: |
Ebooks are simple, right? Just digitise the book.
Wrong. Ebooks and the laws surrounding them tend to be ridiculous, due to the monopoly of publishing companies, the horror that is amazon, and practices that just don't translate very well to a digital world.
In this talk, I will go over why ebooks are cheap, why libraries have so few of them despite this, why I have an enduring grudge against Macmillan, and perhaps why the Internet Archive's National Emergency Library is misguided at best.
{% endcall %}
{% call talk() %}
title: Abstraction and Complexity Management
speaker: Jacob Allen
date: 2020-06-18
week: 10
youtube: https://www.youtube.com/watch?v=spabcmDE_Hg
markdown: |
While most software systems start out simple, software systems can rapidly become complex, whether via increasing scope, misestimation, or many other causes. A common solution to many of the problems of complexity is the introduction of abstractions, that is, providing a more abstract interface to systems, or parts of systems, to simplify interactions with them. However, the introduction of abstractions adds choices and complexities of its own, and often exposes the assumptions and biases of those creating the abstractions.
In this talk I will give a high-level overview of what is meant by abstraction and software complexity in the context of abstraction, then talk about some of the problems and possible solutions to issues of abstraction and complexity, using practical examples across different scale projects and different application areas.
{% endcall %}
{% call talk() %}
title: How alike are Computers and Minds?
speaker: Rach Arnold
date: 2020-06-25
week: 11
youtube: https://www.youtube.com/watch?v=KJETYFoGVlc
markdown: |
The purpose of this talk is to explore the notion that a mind is like a computer from both a scientist and a philosophical perceptive. I will focus on a number of comparisons between both how the mind and a computer works; however, I ultimately conclude that the mind is more complicated than we give it credit for. Despite the increase in technology and the wondrous development of the computing world, computers will never compare to the splendor that is the human mind.
{% endcall %}
{% call talk() %}
title: 'The Power of Cursed Code: A Tour of Ruby'
speaker: Aaron Christiansen
date: 2020-07-02
week: 12
youtube: https://www.youtube.com/watch?v=_IBJI0wHl2g
markdown: |
In software engineering, plenty of time is spent talking about best practices and how to write beautiful, legible code. But what if your language has the tools, methods, and syntax to actively encourage throwing all that out of the window?
Meet Ruby, a dynamic language with the syntax of Perl and the semantics of Smalltalk. With a crossover like that, chaos is bound to ensue! In this talk, I'll discuss the core principles of Ruby, how its flexible design influences the way you build software, and the ridiculous code concoctions this enables.
{% endcall %}
</details>
<details>
<summary><h2>Spring Term 2019/20</h2></summary>
{% set term="Spring" %}
{% call talk() %}
title: Building Applications at Planet Scale - Developing for the Cloud
speaker: Daniel Vaughan
date: 2020-01-23
week: 3
markdown: |
Cloud-Native Computing has drastically changed the speed and efficiency with which developers can deploy their applications. This talk will demonstrate how technologies like Docker & Kubernetes make use of abstraction, isolation & orchestration to improve the developer experience. Participants will learn about the issues of traditional application deployment, and go on a journey through containerisation, automation & scalability to learn how to build a modern application in the cloud. This presentation is interactive - get ready to stress-test a website!
{% endcall %}
{% call talk() %}
title: What's Python really doing?
speaker: Aaron Christiansen
date: 2020-01-30
week: 4
markdown: |
Python is one of the most well-known programming languages around. Its simplicity, elegant syntax, and huge range of libraries has propelled it to popularity. But what is actually happening when you run your Python code?
Underneath its minimalistic syntax, Python has a huge amount of complex heavily-optimised machinery. In this talk, I'll be taking you on a detailed tour of how Python's internals work, all the way from parsing your code through to executing it as bytecode.
{% endcall %}
{% call talk() %}
title: AUTOSAR, in my CAR?!?! It’s more likely than you think.
speaker: Jacob Allen
date: 2020-02-06
week: 5
markdown: |
Cars are everywhere, and while we may think of them as the single, complete, deadly high-speed tin-cans they appear to be, underneath lies a much more complex system. A car is not a single unit, but a massively complex distributed real-time system with hundreds of computers, all connected together. How did it get this way? And how does it even function with so much complexity?
In this talk I will touch on the past, present and future of automotive software, with particular focus on the standard which dominates the automotive software industry today: AUTOSAR.
{% endcall %}
{% call talk() %}
title: '"The program counter is always off by 2" and other strange computer design choices.'
speaker: Daniel Bailey
date: 2020-02-13
week: 6
markdown: |
When people design CPUs and software interfaces, they make decisions. Decisions that cut costs, simplify hardware, provide backwards compatibility, or shave a few cycles off a time consuming task. This talk will be a fun and \[hopefully\] insightful tour of some decisions that, in hindsight, were a little bit ... "funky".
Excitement includes:
- Why is the PC value always off by 2?
- What!? A reboot is triggered by deliberately causing three unrecoverable faults in a row?
- Setting this bit to 0 makes every instruction cause an unrecoverable fault
{% endcall %}
{% call talk() %}
title: AI and Searle's Chinese Room
speaker: Rach Arnold
date: 2020-02-19
week: 7
markdown: |
Imagine there’s a sealed room where you can post questions, written in Chinese, into the room and receive the answers / responses back (also in Chinese). The natural assumption is that, the person in the sealed room who is responding to your questions, is able to understand what they are responding to (i.e. they can read and understand Chinese). However, in actual fact, inside the sealed room is a person with a basket full of Chinese symbols and a rule book; the rule book contains a series of instructions for the person inside the room. For example, if someone posts X symbol to the person, then he or she needs to post back Y symbol, even though the person in the room does not understand the symbols in question. This is Searle’s Chinese Room. This famous analogy brings into question the status of Artificial Intelligence and whether such a thing is possible. In my talk, I will be discussing the significance of Searle’s Chinese Room, how it links to AI, and possible responses to Searle’s conclusion.
{% endcall %}
{% call talk() %}
title: '"git is not an SCM", and other git trivia'
speaker: Ash Holland
date: 2020-02-27
week: 8
markdown: |
You might have heard of git, the "distributed version-control system". You might have used git yourself; you might even have come to the talk about git I gave last term. But did you know that, according to git's author, it's not a version-control system at all?
In this talk, I'll explain git's internals – how it actually works under the covers, talking about heads, refs, tree-ishes, @, and various other git concepts. We'll briefly cover git's origins, and the design decisions that made it stand out from other version-control systems, along with a smattering of "interesting" facts about git which you might not have known.
NB: this talk doesn't assume that you know anything about git, but I won't be explaining how to use it. You'll get more out of the talk if you already have some experience of working with git.
{% endcall %}
{% call talk() %}
title: What Happens When You Don't Leave Academia
speaker: Matt Windsor
date: 2020-03-05
week: 9
markdown: |
At my previous talk, I was asked 'what even is a PhD?' By convoluted way of answer, this talk tries to condense the last 5 or so years of my life into 30 minutes of discourse about: PhDs, why you should do one, why you shouldn't do one, life after the PhD, the good and bad sides of not self-yeeting out of academia after the undergraduate degree, and the constant never-ending quest for caffeination.
{% endcall %}
</details>
<details>
<summary><h2>Autumn Term 2019/20</h2></summary>
{% set term="Autumn" %}
{% call talk() %}
title: 'git --intro: A Primer on Version Control'
speaker: Ash Holland
date: 2019-10-03
week: 1
markdown: |
Have you ever wanted to travel through time? Maybe you've wanted to see what your code looked like half an hour ago, \*before\* you broke the tests? Or have you ever needed to collaborate with multiple people on one codebase, even without an internet connection? Version control can help with these problems and more.
This talk will cover the version-control system git, which has now been the most widely-used version control system amongst software developers for over five years. In no particular order, we'll cover why you might want to use git, how to get started, and (at least conceptually) how git actually works.
{% endcall %}
{% call talk() %}
title: Behind the scenes of GOV.UK
speaker: Michael Walker
date: 2019-10-10
week: 2
room: RCH/248+250 (The Lakehouse)
notice: At the request of the speaker, this talk will not be recorded.
markdown: |
GOV.UK is the single website for government to communicate with the public. But how do over 3000 government publishers distribute information to over 60 million users? Behind the scenes GOV.UK is a Ruby on Rails powered, microservice-using, highly-available, distributed publishing system. Come along to learn about just how big GOV.UK is, what it looks like behind the scenes, some neat public APIs you can use, and why GOV.UK developers talk about badgers, seals, and spaniels.
{% endcall %}
{% call talk() %}
title: Break a Hacker's Mind - Web Application Vulnerabilities Exposed
speaker: Morgan Stanley
date: 2019-10-17
week: 3
room: RCH/248+250 (The Lakehouse)
notice: At the request of the speaker, this talk will not be recorded.
markdown: |
Join us for a special interactive guest lecture on Cyber Security with the Security Architecture team at Morgan Stanley.
Together we will work through a web application which is riddled with the common issues through which retail banking applications are compromised.
This session will demonstrate how an attacker could exploit software vulnerabilities and explain remediation strategies.
This talk has also been delivered at industry forums, universities and even the House of Lords!
{% endcall %}
{% call talk() %}
title: The History of LEGO Video Games
speaker: David Norman
date: 2019-10-24
week: 4
youtube: https://www.youtube.com/watch?v=V-ZU8Q2L1Nk
markdown: |
In the past 22 years, LEGO Video Games have become an important and rather unique genre in themselves. In this talk, we will look at how they have changed over time, the different styles and directions that have been attempted, and their cultural impact.
{% endcall %}
{% call talk() %}
title: Can computers compile complex code correctly?
speaker: Matt Windsor
date: 2019-11-07
week: 6
markdown: |
Concurrent programs that make use of C11-style atomic actions are hard to reason about, with the formal statement of the behaviours such programs can exhibit -- the C11 memory model -- being notoriously unwieldy and permissive. Worse, CPU architectures have their own memory models, so compilers must map from C to machine code in a way that preserves the original program's C11 guarantees inside the machine model.
In this talk, I explore the above situation, then discuss and demonstrate ACT, a toolbox for investigating whether C11 compilers such as gcc and clang actually do this mapping correctly.
{% endcall %}
{% call talk() %}
title: Communicate! Pair Programming, sketchnotes and compassion
speaker: Miki Mokrysz
date: 2019-11-21
week: 8
notice: This talk will not take place this term. We apologise for the inconvenience and are trying to reschedule it
markdown: |
Communication can be a superpower for engineers, helping you collaborate and problem-solve without even trying. But ineffective communication undermines your work, and draining communication undermines your happiness.
This talk gives you ways to communicate technical topics without tiresome documents or formality. We'll look at the joys and perils of pair programming. We'll try out sketchnoting (drawing systems to explain them.) And we'll cover how to empathise with what other people need.
{% endcall %}
{% call talk() %}
title: Where it all went wrong (or why programming sucks)
speaker: Sam Hand
date: 2019-12-05
week: 10
markdown: |
The word “programmer” usually refers to a person who instructs a computer through the use of some textual formal language. To this person computation lives inside of a text file, represented purely as a list of instructions.
Contrast this to the idea of a “user”; someone who similarly instructs a computer to do their bidding. The user, though, achieves this by dynamically interacting with a varied selection of representations of the system - be they textual, visual, or even auditory.
To a user computation takes on a much more rich meaning: it can be represented in a way suitable to the task at hand. However, the power available to them is fundamentally limited. They only have access to the features the programmer of the system chose to include.
This talk will explore the reasons behind this power difference, and maybe even suggest how to fix it, without sacrificing usability.
{% endcall %}
</details>
{% endblock body%}