1 00:00:00,330 --> 00:00:12,920 [Music] 2 00:00:11,559 --> 00:00:15,960 it's loud this 3 00:00:12,920 --> 00:00:19,039 time okay it's lightning talks time hi 4 00:00:15,960 --> 00:00:21,000 everyone um this is my favorite part of 5 00:00:19,039 --> 00:00:25,000 Pyon Au and hopefully it will be yours 6 00:00:21,000 --> 00:00:28,080 as well um today we have 14 people who 7 00:00:25,000 --> 00:00:30,119 are giving talks of 5 minutes or less on 8 00:00:28,080 --> 00:00:31,800 uh whatever subject they've decided they 9 00:00:30,119 --> 00:00:34,640 wanted to speak about but we're going to 10 00:00:31,800 --> 00:00:36,719 keep this really strict as usual uh Nick 11 00:00:34,640 --> 00:00:38,760 here in the front row death trap seats 12 00:00:36,719 --> 00:00:40,440 is keeping time for us and when we get 13 00:00:38,760 --> 00:00:43,719 towards the end of five minutes Nick 14 00:00:40,440 --> 00:00:45,760 will be uh doing the light Applause 15 00:00:43,719 --> 00:00:48,120 which you can practice 16 00:00:45,760 --> 00:00:50,440 now and then when we get to 5 minutes we 17 00:00:48,120 --> 00:00:53,039 will applaud loudly so that the person 18 00:00:50,440 --> 00:00:54,760 gets the hell off 19 00:00:53,039 --> 00:00:59,600 stage 20 00:00:54,760 --> 00:00:59,600 St he please welcome Toby 21 00:01:00,199 --> 00:01:06,600 uh hello uh I'm Toby I work at Cipher 22 00:01:04,400 --> 00:01:08,880 stash I've got to talk faster I learned 23 00:01:06,600 --> 00:01:12,479 too much about the postgress protocol 24 00:01:08,880 --> 00:01:13,960 and you can too so this is how the thing 25 00:01:12,479 --> 00:01:16,400 works under the covers when you're 26 00:01:13,960 --> 00:01:20,439 talking the first thing we do is send a 27 00:01:16,400 --> 00:01:23,280 startup message uh it's got a length and 28 00:01:20,439 --> 00:01:26,000 it's one of these values uh clearly they 29 00:01:23,280 --> 00:01:30,680 all make lots of sense protocol version 30 00:01:26,000 --> 00:01:32,720 fun fact it's a 32 bit uh number there's 31 00:01:30,680 --> 00:01:35,680 only one protocol version that only has 32 00:01:32,720 --> 00:01:37,680 been one so they've got lots of room to 33 00:01:35,680 --> 00:01:41,759 spare they could have who knows used 34 00:01:37,680 --> 00:01:44,680 something else uh all of this is really 35 00:01:41,759 --> 00:01:47,040 great uh you send a cancel the first 36 00:01:44,680 --> 00:01:48,600 thing that does is disconnect anyway 37 00:01:47,040 --> 00:01:51,320 once you you've sent all of this now 38 00:01:48,600 --> 00:01:53,920 you're ready to send an actual message 39 00:01:51,320 --> 00:01:56,000 the thing you will do is you actually 40 00:01:53,920 --> 00:01:58,960 the simplest thing you can do is send a 41 00:01:56,000 --> 00:02:02,039 query uh it starts with a Q which is 42 00:01:58,960 --> 00:02:04,920 good um uh what is actually happening 43 00:02:02,039 --> 00:02:07,240 under the covers here is what they call 44 00:02:04,920 --> 00:02:10,239 the simple protocol so you send the 45 00:02:07,240 --> 00:02:11,920 query and you get back a row description 46 00:02:10,239 --> 00:02:13,680 some data rows which is another type of 47 00:02:11,920 --> 00:02:16,560 message and anyway that gets boring 48 00:02:13,680 --> 00:02:20,319 pretty fast but what you actually want 49 00:02:16,560 --> 00:02:26,519 to do of course is send a parameterized 50 00:02:20,319 --> 00:02:28,640 query so that gets uh much simpler uh so 51 00:02:26,519 --> 00:02:31,000 this is what they call the extended 52 00:02:28,640 --> 00:02:33,840 protocol uh 53 00:02:31,000 --> 00:02:36,840 it's incredibly chatty so literally 54 00:02:33,840 --> 00:02:40,200 every time you send a query some of 55 00:02:36,840 --> 00:02:43,360 these steps are happening everyone is is 56 00:02:40,200 --> 00:02:45,519 a different uh Network message so you 57 00:02:43,360 --> 00:02:49,599 first you send a PA which is just 58 00:02:45,519 --> 00:02:52,560 basically the query uh then uh you can 59 00:02:49,599 --> 00:02:55,920 skip describe but that's hard to find in 60 00:02:52,560 --> 00:02:57,640 the docs uh coming to bind that's where 61 00:02:55,920 --> 00:03:00,840 you will send them send the actual 62 00:02:57,640 --> 00:03:03,959 parameters that go with your paramed 63 00:03:00,840 --> 00:03:07,319 query uh and then eventually you will 64 00:03:03,959 --> 00:03:09,400 execute and that's where you get some a 65 00:03:07,319 --> 00:03:12,760 row descriptions and data rows so every 66 00:03:09,400 --> 00:03:15,360 one of those steps happens uh this is 67 00:03:12,760 --> 00:03:17,599 for both parameterized queries and 68 00:03:15,360 --> 00:03:21,280 actual prepared statements the steps are 69 00:03:17,599 --> 00:03:23,959 basically the same 70 00:03:21,280 --> 00:03:28,640 internally it starts off pretty pretty 71 00:03:23,959 --> 00:03:30,319 pretty fine and easy uh a PA message has 72 00:03:28,640 --> 00:03:32,519 a 73 00:03:30,319 --> 00:03:34,319 a string basically that is the name of 74 00:03:32,519 --> 00:03:36,720 the message if case it's the prepared 75 00:03:34,319 --> 00:03:39,519 parameter a prepared statement that's 76 00:03:36,720 --> 00:03:43,439 how you refer to it again uh then you've 77 00:03:39,519 --> 00:03:46,680 got a number of types uh that you send 78 00:03:43,439 --> 00:03:50,040 these are the how do you what what what 79 00:03:46,680 --> 00:03:52,200 are they they are the you can override 80 00:03:50,040 --> 00:03:54,680 the types that are the actual column 81 00:03:52,200 --> 00:03:57,920 types of the database at this point you 82 00:03:54,680 --> 00:04:00,640 can say yeah I know it's an you know an 83 00:03:57,920 --> 00:04:01,319 8 length int but I'm only going to send 84 00:04:00,640 --> 00:04:05,599 you 85 00:04:01,319 --> 00:04:07,360 two um so that's cool but also leads to 86 00:04:05,599 --> 00:04:10,480 some unpredictable Behavior because none 87 00:04:07,360 --> 00:04:14,959 of this is very very clear sometimes 88 00:04:10,480 --> 00:04:18,759 binding ah binding oh my God so binding 89 00:04:14,959 --> 00:04:22,320 is a great great time that you can have 90 00:04:18,759 --> 00:04:24,720 uh if you gave it a name you can give it 91 00:04:22,320 --> 00:04:28,240 the name here cuz now you're saying this 92 00:04:24,720 --> 00:04:31,759 is my prepared statement uh you've 93 00:04:28,240 --> 00:04:34,080 got well then there's another name which 94 00:04:31,759 --> 00:04:36,160 is any it's a slightly different type of 95 00:04:34,080 --> 00:04:38,199 name but don't it's for a different 96 00:04:36,160 --> 00:04:39,000 almost the same thing but different 97 00:04:38,199 --> 00:04:42,280 you've 98 00:04:39,000 --> 00:04:44,639 got uh formats that come out uh your 99 00:04:42,280 --> 00:04:46,240 parameter account this format this is 100 00:04:44,639 --> 00:04:48,199 not the type of the database what 101 00:04:46,240 --> 00:04:50,800 they've done is there's two different 102 00:04:48,199 --> 00:04:54,320 ways you can send the parameters you can 103 00:04:50,800 --> 00:04:56,680 send the default format which is text 104 00:04:54,320 --> 00:05:00,280 you can have a format that applies to 105 00:04:56,680 --> 00:05:03,240 all which would be one because the 106 00:05:00,280 --> 00:05:06,400 defaults already uh text there's only 107 00:05:03,240 --> 00:05:08,000 two one text and binary uh and then a 108 00:05:06,400 --> 00:05:10,840 number of parameters that will say I'm 109 00:05:08,000 --> 00:05:12,240 going to specify a different encoding 110 00:05:10,840 --> 00:05:14,759 for each one of the things in my 111 00:05:12,240 --> 00:05:18,160 prepared statement binary or text now 112 00:05:14,759 --> 00:05:22,639 the fun thing about text when you send 113 00:05:18,160 --> 00:05:24,160 it as binary it's the same so that's 114 00:05:22,639 --> 00:05:27,240 important to remember your text is 115 00:05:24,160 --> 00:05:30,160 binary but you can send a number as 116 00:05:27,240 --> 00:05:33,560 text uh in which case you sending the 117 00:05:30,160 --> 00:05:36,360 asky number not the binary 118 00:05:33,560 --> 00:05:38,240 representation so you can mix all of 119 00:05:36,360 --> 00:05:40,360 this together as well you can have mixed 120 00:05:38,240 --> 00:05:43,199 parameters where the system has to 121 00:05:40,360 --> 00:05:45,680 decode and work out what is going on uh 122 00:05:43,199 --> 00:05:49,720 eventually probably we need some results 123 00:05:45,680 --> 00:05:51,880 so Road description now will give you 124 00:05:49,720 --> 00:05:55,400 the type which is either the database 125 00:05:51,880 --> 00:05:57,600 type or the type that you overrode and 126 00:05:55,400 --> 00:06:01,639 I've Got 5 seconds left the whole 127 00:05:57,600 --> 00:06:01,639 thing's terrible never look at it 128 00:06:01,680 --> 00:06:06,599 thank 129 00:06:03,280 --> 00:06:08,039 everyone well I guess the lesson to this 130 00:06:06,599 --> 00:06:10,240 is that we just shouldn't be using 131 00:06:08,039 --> 00:06:12,680 databases at all because you can't 132 00:06:10,240 --> 00:06:14,960 understand the protocol Elena has told 133 00:06:12,680 --> 00:06:17,080 me that I need to tell all of you that 134 00:06:14,960 --> 00:06:19,039 if you have no plans for dinner and you 135 00:06:17,080 --> 00:06:21,080 want to have plans for dinner you should 136 00:06:19,039 --> 00:06:22,680 see the food and drink channel in the 137 00:06:21,080 --> 00:06:24,240 conference Discord so you can make 138 00:06:22,680 --> 00:06:28,080 dinner 139 00:06:24,240 --> 00:06:30,599 plans uh on Deck uh is Andrew Dennison 140 00:06:28,080 --> 00:06:32,160 and if you can walk I think around 141 00:06:30,599 --> 00:06:34,680 the stands as a post in front of the 142 00:06:32,160 --> 00:06:38,080 stage that would be great but first uh 143 00:06:34,680 --> 00:06:39,639 Rene Noble hi there's my hi I'm Rene 144 00:06:38,080 --> 00:06:41,720 Noble I do a bunch of things one of the 145 00:06:39,639 --> 00:06:43,319 things I do is I'm the CEO of the girls 146 00:06:41,720 --> 00:06:44,479 Programming Network and the structure 147 00:06:43,319 --> 00:06:45,599 it's under called Tech inclusion I'm 148 00:06:44,479 --> 00:06:47,479 going to tell you some things you don't 149 00:06:45,599 --> 00:06:49,240 know about gpn today possibly maybe you 150 00:06:47,479 --> 00:06:52,639 know lots of things about gpn today but 151 00:06:49,240 --> 00:06:53,840 firstly who who gpn uh and there's 152 00:06:52,639 --> 00:06:55,280 probably possibly a lot of people who 153 00:06:53,840 --> 00:06:56,479 are gpn I'm going to tell you exactly 154 00:06:55,280 --> 00:06:58,599 who but first I kind of want to know who 155 00:06:56,479 --> 00:07:01,240 in the room has ever been to gpn as a 156 00:06:58,599 --> 00:07:04,599 student or as a give me a 157 00:07:01,240 --> 00:07:06,240 woo yes there's a secret secret societ 158 00:07:04,599 --> 00:07:07,599 soety that lives amongst us you maybe 159 00:07:06,240 --> 00:07:09,360 didn't even realize it's actually 160 00:07:07,599 --> 00:07:11,160 everywhere you're already going uh 161 00:07:09,360 --> 00:07:13,199 especially amongst Pon cuz Pon is really 162 00:07:11,160 --> 00:07:15,840 cool and gpn's really cool too uh but 163 00:07:13,199 --> 00:07:18,479 gpn is for women and gender diverse 164 00:07:15,840 --> 00:07:20,160 people to come and volunteer and teach 165 00:07:18,479 --> 00:07:21,919 girls and gender diverse kids would you 166 00:07:20,160 --> 00:07:24,240 have just girls in the name which is 167 00:07:21,919 --> 00:07:26,240 like not including women and the broad 168 00:07:24,240 --> 00:07:27,800 gender diversity that we do include as 169 00:07:26,240 --> 00:07:29,160 well the names are not great but we do 170 00:07:27,800 --> 00:07:31,199 have Tech inclusion which is our 171 00:07:29,160 --> 00:07:33,120 umbrella program which kind of hopefully 172 00:07:31,199 --> 00:07:34,879 addresses the name issue uh if you do 173 00:07:33,120 --> 00:07:35,800 have an issue to a solution to our name 174 00:07:34,879 --> 00:07:37,759 problem please let me know we've been 175 00:07:35,800 --> 00:07:42,039 working on for like 6 years uh come and 176 00:07:37,759 --> 00:07:43,960 tell us um so thing two y gpn uh 177 00:07:42,039 --> 00:07:45,599 obviously this question kind of 178 00:07:43,960 --> 00:07:47,680 sometimes answer itself teach girls to 179 00:07:45,599 --> 00:07:49,720 code equals good probably but it's 180 00:07:47,680 --> 00:07:52,680 actually not the real reason that gpn 181 00:07:49,720 --> 00:07:54,039 exists adults actually need help too A 182 00:07:52,680 --> 00:07:55,440 lot of the time if you end up at 183 00:07:54,039 --> 00:07:57,479 University and you're a woman in Tech 184 00:07:55,440 --> 00:07:59,520 you'll be like hello no other women in 185 00:07:57,479 --> 00:08:01,479 my tutorial so and you also probably 186 00:07:59,520 --> 00:08:03,639 feeling not very confident so gpn was 187 00:08:01,479 --> 00:08:04,960 invented as a way to create an 188 00:08:03,639 --> 00:08:07,159 opportunity for women to build 189 00:08:04,960 --> 00:08:09,360 confidence and skills in leadership and 190 00:08:07,159 --> 00:08:11,639 connections with other women and that 191 00:08:09,360 --> 00:08:13,280 happened nearly more than 16 years ago 192 00:08:11,639 --> 00:08:15,280 with our lovely Nikki ringland up there 193 00:08:13,280 --> 00:08:17,240 with the tiny child next to her who is 194 00:08:15,280 --> 00:08:18,720 one of our Founders which is fantastic 195 00:08:17,240 --> 00:08:21,199 and we're still going strong and going 196 00:08:18,720 --> 00:08:22,479 better than ever so it helps adults as 197 00:08:21,199 --> 00:08:24,120 well creates those spaces where you 198 00:08:22,479 --> 00:08:26,159 don't have to be the only person of a 199 00:08:24,120 --> 00:08:28,240 minority gender in the room and you can 200 00:08:26,159 --> 00:08:29,879 try new things in a low pressure super 201 00:08:28,240 --> 00:08:32,000 friendly highly supportive environment 202 00:08:29,879 --> 00:08:34,440 it's got Good Vibes it's got silly hats 203 00:08:32,000 --> 00:08:35,760 it's got pizza it's got friendship um so 204 00:08:34,440 --> 00:08:37,479 yeah doing and we're doing more 205 00:08:35,760 --> 00:08:39,760 volunteer events whenever we can to 206 00:08:37,479 --> 00:08:42,399 support our adults throughout the 207 00:08:39,760 --> 00:08:44,720 pipeline as well we're also going down 208 00:08:42,399 --> 00:08:46,720 the uh down the age groups as well we 209 00:08:44,720 --> 00:08:48,560 now have Jan junor which we just tried 210 00:08:46,720 --> 00:08:51,279 in Sydney where we're teaching the tiny 211 00:08:48,560 --> 00:08:53,000 children in year 3 to six to do coding 212 00:08:51,279 --> 00:08:55,320 which is super cute and it also means 213 00:08:53,000 --> 00:08:56,760 that our high school kids who come to 214 00:08:55,320 --> 00:08:58,600 our high school workshops get to come 215 00:08:56,760 --> 00:09:00,519 and volunteer as well so you got to get 216 00:08:58,600 --> 00:09:02,320 them into that pipel L everyone stays in 217 00:09:00,519 --> 00:09:04,240 the pipeline has Good Vibes has a good 218 00:09:02,320 --> 00:09:06,040 time and they look so cute with the 219 00:09:04,240 --> 00:09:08,360 young people teaching the even younger 220 00:09:06,040 --> 00:09:10,399 people it's a great time so we're making 221 00:09:08,360 --> 00:09:12,720 the pipeline longer and more sturdy all 222 00:09:10,399 --> 00:09:14,560 the time and yeah so that's good but 223 00:09:12,720 --> 00:09:16,160 what is gpn so we're doing these free 224 00:09:14,560 --> 00:09:18,040 workshops by women and gender diverse 225 00:09:16,160 --> 00:09:19,519 people for kids and gender girls and 226 00:09:18,040 --> 00:09:22,000 gender diverse kids that's awesome what 227 00:09:19,519 --> 00:09:23,120 do we do obviously gpn girls Programming 228 00:09:22,000 --> 00:09:25,079 Network we're doing some programming 229 00:09:23,120 --> 00:09:26,800 we're doing python cuz it's awesome we 230 00:09:25,079 --> 00:09:29,600 have a great way to include people who 231 00:09:26,800 --> 00:09:30,880 have all diversity of experience you 232 00:09:29,600 --> 00:09:32,680 could be your first time programming or 233 00:09:30,880 --> 00:09:34,279 you could be coming to gpn for 10 years 234 00:09:32,680 --> 00:09:35,680 like Izzy who's been sitting here and 235 00:09:34,279 --> 00:09:38,399 helping out through the event she's so 236 00:09:35,680 --> 00:09:39,200 awesome and we love her yes you appuse 237 00:09:38,399 --> 00:09:42,160 for 238 00:09:39,200 --> 00:09:43,760 Izzy and now she's helping us make gpn 239 00:09:42,160 --> 00:09:45,079 bigger and better around Australia so 240 00:09:43,760 --> 00:09:46,800 you can be part of the pipeline for that 241 00:09:45,079 --> 00:09:48,480 long doing really cool stuff and we've 242 00:09:46,800 --> 00:09:50,279 got this cool progy that helps kids 243 00:09:48,480 --> 00:09:51,959 learn wherever they are we have like 244 00:09:50,279 --> 00:09:53,760 three versions of every workbook so no 245 00:09:51,959 --> 00:09:55,200 matter what you're coming in as be like 246 00:09:53,760 --> 00:09:56,600 you're going to make Tic Tac Toe today 247 00:09:55,200 --> 00:09:58,399 and you will make it whether you use 248 00:09:56,600 --> 00:10:00,160 nine variables to store it or you use 249 00:09:58,399 --> 00:10:01,079 like recursion to make it Sol for it 250 00:10:00,160 --> 00:10:02,200 you're going to do something in there 251 00:10:01,079 --> 00:10:04,079 and you're going to have a cool 252 00:10:02,200 --> 00:10:05,959 accessible Challenge and a fun time it's 253 00:10:04,079 --> 00:10:08,360 going to be fun because culture I like 254 00:10:05,959 --> 00:10:10,720 at Pon is really important in gpn so we 255 00:10:08,360 --> 00:10:12,279 have our values here uh to make sure 256 00:10:10,720 --> 00:10:14,240 everyone's having a fun time I honestly 257 00:10:12,279 --> 00:10:16,000 don't care if people learn to code like 258 00:10:14,240 --> 00:10:17,240 Linda was saying in the keynote today I 259 00:10:16,000 --> 00:10:18,760 don't care if you learn to code I care 260 00:10:17,240 --> 00:10:20,680 that you learn that you can learn to 261 00:10:18,760 --> 00:10:22,160 code and then you go and solve cool 262 00:10:20,680 --> 00:10:23,839 problems later but hopefully come back 263 00:10:22,160 --> 00:10:25,839 to gpn and stay in our Cool Front 264 00:10:23,839 --> 00:10:28,279 network of supportive 265 00:10:25,839 --> 00:10:30,000 people uh so at the workshops we did the 266 00:10:28,279 --> 00:10:32,000 coding we also do unplug activi so we 267 00:10:30,000 --> 00:10:33,839 can see how these things work in the 268 00:10:32,000 --> 00:10:35,639 real life context CU as we know that's 269 00:10:33,839 --> 00:10:37,079 super important and makes it feel really 270 00:10:35,639 --> 00:10:39,200 relevant we also have these mentoring 271 00:10:37,079 --> 00:10:40,680 opportunities so like our senior 272 00:10:39,200 --> 00:10:42,279 students can be like how do I do stuff 273 00:10:40,680 --> 00:10:44,079 in the real world but also those 274 00:10:42,279 --> 00:10:45,800 informal opportunities to learn and 275 00:10:44,079 --> 00:10:47,440 connect with other people and go hey 276 00:10:45,800 --> 00:10:48,920 Sally's really cool she's only a couple 277 00:10:47,440 --> 00:10:51,839 years older than me maybe I can be like 278 00:10:48,920 --> 00:10:53,320 Sally or Tina or Kai or anybody and you 279 00:10:51,839 --> 00:10:55,160 see all those people at those different 280 00:10:53,320 --> 00:10:57,279 stages of their learning Journeys and 281 00:10:55,160 --> 00:11:00,200 Tech careers whether they're in year 10 282 00:10:57,279 --> 00:11:02,600 or they their 10 years into their career 283 00:11:00,200 --> 00:11:04,519 so where gpn it's no good if it's just 284 00:11:02,600 --> 00:11:06,720 like Justin Sydney or something but 285 00:11:04,519 --> 00:11:07,880 actually it's in lots of places so we've 286 00:11:06,720 --> 00:11:09,639 got it all around the country these 287 00:11:07,880 --> 00:11:10,880 orange ones are coming next year please 288 00:11:09,639 --> 00:11:13,800 help us out at those to get those 289 00:11:10,880 --> 00:11:15,079 started up uh also we've got our purple 290 00:11:13,800 --> 00:11:17,200 ones which have been established but we 291 00:11:15,079 --> 00:11:18,920 always need more help there as well and 292 00:11:17,200 --> 00:11:20,639 we want to go to new places so if you 293 00:11:18,920 --> 00:11:22,839 can connect us to any new places please 294 00:11:20,639 --> 00:11:24,720 let us know we love to get things 295 00:11:22,839 --> 00:11:26,839 happening but how do we do that we do 296 00:11:24,720 --> 00:11:28,600 that with volunteers who come and do the 297 00:11:26,839 --> 00:11:30,200 things at the workshops our sponsors 298 00:11:28,600 --> 00:11:32,120 help us get those and our University 299 00:11:30,200 --> 00:11:35,920 Partners so you can help no matter what 300 00:11:32,120 --> 00:11:39,120 your gender thank you very much come 301 00:11:35,920 --> 00:11:39,120 along thanks 302 00:11:42,079 --> 00:11:46,360 Rene how I I don't understand how a 303 00:11:44,800 --> 00:11:48,720 thing starts in Bernie before anyone 304 00:11:46,360 --> 00:11:50,040 else anywhere else in tazzy but uh I'm 305 00:11:48,720 --> 00:11:55,200 glad they're doing 306 00:11:50,040 --> 00:11:57,760 it um Izzy you are up on Deck but first 307 00:11:55,200 --> 00:12:00,760 Andrew is going to be talking about 308 00:11:57,760 --> 00:12:00,760 Hardware 309 00:12:02,000 --> 00:12:08,959 maybe it looks like it we'll see how we 310 00:12:05,519 --> 00:12:11,519 go um I 311 00:12:08,959 --> 00:12:14,279 thought probably about two years ago I 312 00:12:11,519 --> 00:12:16,480 wouldn't have even been considering 313 00:12:14,279 --> 00:12:19,839 being at a python conference because I 314 00:12:16,480 --> 00:12:22,360 didn't even use Python so and my journey 315 00:12:19,839 --> 00:12:24,680 to python after being involved in 316 00:12:22,360 --> 00:12:28,399 electronic design and software for a 317 00:12:24,680 --> 00:12:31,519 long time was completely accidental I'd 318 00:12:28,399 --> 00:12:34,240 avoided it to be blunt but we were 319 00:12:31,519 --> 00:12:38,079 looking for a way to put 320 00:12:34,240 --> 00:12:41,839 together um softwar defined Hardware so 321 00:12:38,079 --> 00:12:43,519 using a device called an fpga which is a 322 00:12:41,839 --> 00:12:45,079 simple way of saying it is it's a piece 323 00:12:43,519 --> 00:12:48,440 of electronics that you can program to 324 00:12:45,079 --> 00:12:50,959 do something like BS CPU or be something 325 00:12:48,440 --> 00:12:53,040 like a peripheral to control something 326 00:12:50,959 --> 00:12:55,519 and I wanted to a nice way of putting 327 00:12:53,040 --> 00:12:58,000 things like that together I started 328 00:12:55,519 --> 00:12:59,399 looking at Classic fpga Frameworks which 329 00:12:58,000 --> 00:13:02,079 are a bit like writing in a simp 330 00:12:59,399 --> 00:13:05,399 language and I didn't want to do that 331 00:13:02,079 --> 00:13:07,639 then I tripped over a reference to a 332 00:13:05,399 --> 00:13:10,800 little open source project about I think 333 00:13:07,639 --> 00:13:13,600 it was nv2 which was talking about how 334 00:13:10,800 --> 00:13:15,639 they transitioned from a classic 335 00:13:13,600 --> 00:13:19,920 framework to using something called 336 00:13:15,639 --> 00:13:22,000 litex to put their design together and 337 00:13:19,920 --> 00:13:24,600 that intrigued me I read about it and it 338 00:13:22,000 --> 00:13:27,120 was using python to 339 00:13:24,600 --> 00:13:29,320 represent um to effectively generate the 340 00:13:27,120 --> 00:13:32,440 hardware design and I thought that can't 341 00:13:29,320 --> 00:13:35,079 possibly make any sense that can't work 342 00:13:32,440 --> 00:13:36,839 and I didn't want I had no intention of 343 00:13:35,079 --> 00:13:40,880 using python anyway but I started 344 00:13:36,839 --> 00:13:42,959 looking at litex from there I found that 345 00:13:40,880 --> 00:13:45,160 it actually solved the problem better 346 00:13:42,959 --> 00:13:47,000 than I thought it could have so I 347 00:13:45,160 --> 00:13:49,800 begrudgingly started using 348 00:13:47,000 --> 00:13:51,519 python from there I then started to 349 00:13:49,800 --> 00:13:53,399 realize that I actually quite liked 350 00:13:51,519 --> 00:13:57,000 python despite my best interests and 351 00:13:53,399 --> 00:13:59,560 avoiding it previously so it's been a a 352 00:13:57,000 --> 00:14:02,920 very interesting Journey from 353 00:13:59,560 --> 00:14:04,639 Hardware through to trying to solve a 354 00:14:02,920 --> 00:14:07,480 hardware problem which led into another 355 00:14:04,639 --> 00:14:10,360 sort of software solution which made me 356 00:14:07,480 --> 00:14:12,480 Learn Python which has then resulted in 357 00:14:10,360 --> 00:14:16,040 Python being integrated in more of the 358 00:14:12,480 --> 00:14:17,720 things that we do at work so it's 359 00:14:16,040 --> 00:14:22,000 interesting the angles that you can take 360 00:14:17,720 --> 00:14:25,320 to get into tools like python or into 361 00:14:22,000 --> 00:14:29,440 technology in general so it's um it s of 362 00:14:25,320 --> 00:14:34,560 be interesting to talk about that as an 363 00:14:29,440 --> 00:14:36,839 angle um it certainly is a nice way of 364 00:14:34,560 --> 00:14:40,759 expressing both the Deep technical 365 00:14:36,839 --> 00:14:42,759 details of an electronic design but also 366 00:14:40,759 --> 00:14:44,519 the much broader Integrations that 367 00:14:42,759 --> 00:14:47,720 actually give you 368 00:14:44,519 --> 00:14:49,360 a a far better introspection so from the 369 00:14:47,720 --> 00:14:51,560 actual electronic design you can 370 00:14:49,360 --> 00:14:54,320 represent the interface to the 371 00:14:51,560 --> 00:14:56,720 electronics and generate Library layers 372 00:14:54,320 --> 00:14:58,399 and other bindings and tests and things 373 00:14:56,720 --> 00:15:01,000 like that so those sort of Integrations 374 00:14:58,399 --> 00:15:03,600 and automation have been where we start 375 00:15:01,000 --> 00:15:06,880 to see the real strengths of python and 376 00:15:03,600 --> 00:15:09,839 its Integrations so 377 00:15:06,880 --> 00:15:12,360 that's a very Meandering introduction 378 00:15:09,839 --> 00:15:14,800 but it's led me into being quite 379 00:15:12,360 --> 00:15:18,360 interested in Python now made me to 380 00:15:14,800 --> 00:15:20,519 start to tr sort of take micropython 381 00:15:18,360 --> 00:15:23,519 more seriously which i' also hadn't done 382 00:15:20,519 --> 00:15:25,160 much with but that's now going to be 383 00:15:23,519 --> 00:15:29,759 come something that becomes another 384 00:15:25,160 --> 00:15:33,639 piece of what we do so it's um yeah 385 00:15:29,759 --> 00:15:38,480 python all the way down so anyway I 386 00:15:33,639 --> 00:15:40,670 shall uh at that point I might uh leave 387 00:15:38,480 --> 00:15:47,639 it to the next person thank 388 00:15:40,670 --> 00:15:50,519 [Applause] 389 00:15:47,639 --> 00:15:53,240 you thanks for that uh there'll be a 390 00:15:50,519 --> 00:15:56,160 moment of interpretive dance from Beno 391 00:15:53,240 --> 00:15:59,079 at this point while we wait for 392 00:15:56,160 --> 00:16:01,880 the while we wait for the laptop to get 393 00:15:59,079 --> 00:16:06,310 sorted out over this side uh casara 394 00:16:01,880 --> 00:16:12,370 you're on deck over this side thanks 395 00:16:06,310 --> 00:16:12,370 [Applause] 396 00:16:12,710 --> 00:16:16,480 [Music] 397 00:16:13,420 --> 00:16:19,199 [Applause] 398 00:16:16,480 --> 00:16:21,199 Beno see I just don't have the uh I 399 00:16:19,199 --> 00:16:23,639 don't have the will within me to Vamp 400 00:16:21,199 --> 00:16:26,639 for the 30 seconds it takes to do a last 401 00:16:23,639 --> 00:16:29,399 minute laptop change but 402 00:16:26,639 --> 00:16:31,560 hopefully hopefully this is going oh 403 00:16:29,399 --> 00:16:35,040 we've got a screen here this is very 404 00:16:31,560 --> 00:16:35,040 exciting we've got a 405 00:16:37,399 --> 00:16:42,279 screen oh it went 406 00:16:42,839 --> 00:16:47,319 away a great thing that our av team have 407 00:16:45,519 --> 00:16:50,720 done this year is provide a fully 408 00:16:47,319 --> 00:16:54,040 self-contained AV testing station which 409 00:16:50,720 --> 00:16:55,600 uh future presenters can find uh towards 410 00:16:54,040 --> 00:16:58,079 the uh the loom 411 00:16:55,600 --> 00:17:01,680 building and if you use that you don't 412 00:16:58,079 --> 00:17:01,680 end up having to do AV testing on 413 00:17:03,240 --> 00:17:06,240 stage 414 00:17:06,640 --> 00:17:10,199 great hey start the 415 00:17:11,679 --> 00:17:15,600 clock okay I'm just going to start by 416 00:17:13,720 --> 00:17:18,600 apologizing for all of that cuz that was 417 00:17:15,600 --> 00:17:21,280 entirely my fault anyway um so thoughts 418 00:17:18,600 --> 00:17:24,360 on teaching Lego robotics in schools by 419 00:17:21,280 --> 00:17:28,039 me Isabella Hogan the best 420 00:17:24,360 --> 00:17:29,400 honestly my qualifications so let's be 421 00:17:28,039 --> 00:17:31,360 clear I don't have very many 422 00:17:29,400 --> 00:17:32,559 qualifications I am in first year uni I 423 00:17:31,360 --> 00:17:34,600 don't have a teaching degree I don't 424 00:17:32,559 --> 00:17:37,080 have any of that but I have spent the 425 00:17:34,600 --> 00:17:40,760 past year teaching year five and six 426 00:17:37,080 --> 00:17:43,640 Lego robotics in a classroom once a week 427 00:17:40,760 --> 00:17:46,880 yeah here's pretty much what I've 428 00:17:43,640 --> 00:17:49,160 learned okay how I taught it so I taught 429 00:17:46,880 --> 00:17:51,559 it by challenge-based learning mostly 430 00:17:49,160 --> 00:17:53,120 because I don't have any real power over 431 00:17:51,559 --> 00:17:55,559 them like I can't yell at them I can't 432 00:17:53,120 --> 00:17:58,159 do any of that so if I give them 433 00:17:55,559 --> 00:17:59,440 challenges and points I can take away 434 00:17:58,159 --> 00:18:02,280 the points 435 00:17:59,440 --> 00:18:03,640 and that's basically what I can do um 436 00:18:02,280 --> 00:18:05,760 and I found that this was actually 437 00:18:03,640 --> 00:18:07,280 really really helpful cuz they get super 438 00:18:05,760 --> 00:18:09,320 excited when you give them points super 439 00:18:07,280 --> 00:18:11,640 excited when you give them challenges 440 00:18:09,320 --> 00:18:13,240 and it's a really good way of making 441 00:18:11,640 --> 00:18:16,240 sure that they are actually learning the 442 00:18:13,240 --> 00:18:18,840 things you're teaching so what I would 443 00:18:16,240 --> 00:18:20,520 do the way I would set up my lesson is I 444 00:18:18,840 --> 00:18:22,600 would sit out the front I would teach 445 00:18:20,520 --> 00:18:24,880 them something and then I would say okay 446 00:18:22,600 --> 00:18:27,480 here is one challenge here's an 447 00:18:24,880 --> 00:18:29,679 extension challenge if you finish it too 448 00:18:27,480 --> 00:18:30,919 fast go 449 00:18:29,679 --> 00:18:35,039 do the things that I just taught you how 450 00:18:30,919 --> 00:18:36,919 to do um and I to be fair because I'm 451 00:18:35,039 --> 00:18:39,760 not a teacher I used a lesson plan that 452 00:18:36,919 --> 00:18:42,240 I found on the internet for half of the 453 00:18:39,760 --> 00:18:43,720 year the first semester to do 454 00:18:42,240 --> 00:18:46,240 programming that was things like 455 00:18:43,720 --> 00:18:47,679 movement variables functions all of that 456 00:18:46,240 --> 00:18:49,480 starting from the basics going to the 457 00:18:47,679 --> 00:18:51,840 heart of things 458 00:18:49,480 --> 00:18:53,240 um but I made up all of my own 459 00:18:51,840 --> 00:18:54,960 challenges because their challenges 460 00:18:53,240 --> 00:18:58,200 honestly 461 00:18:54,960 --> 00:18:59,919 sucked um but the best bit I think was 462 00:18:58,200 --> 00:19:02,200 that I spent half the year teaching them 463 00:18:59,919 --> 00:19:03,400 engineering Concepts because they're 464 00:19:02,200 --> 00:19:04,840 year five and six they don't know very 465 00:19:03,400 --> 00:19:06,400 much they know what a gear is they don't 466 00:19:04,840 --> 00:19:09,919 know why they don't know what they do 467 00:19:06,400 --> 00:19:13,280 with it they don't know how to use it so 468 00:19:09,919 --> 00:19:15,120 what I did is I did the same thing I sat 469 00:19:13,280 --> 00:19:17,679 up the front I told them what a gear was 470 00:19:15,120 --> 00:19:19,240 I told them what a gear ratio was I 471 00:19:17,679 --> 00:19:21,760 showed them some examples of why you 472 00:19:19,240 --> 00:19:23,760 would use a gear then I gave them an 473 00:19:21,760 --> 00:19:25,520 engineering challenge using the gears 474 00:19:23,760 --> 00:19:28,720 and the code that they running you just 475 00:19:25,520 --> 00:19:30,000 to keep putting it all together i t 476 00:19:28,720 --> 00:19:34,640 taught them for engineering I taught 477 00:19:30,000 --> 00:19:36,159 them gears pulley uh levers I think and 478 00:19:34,640 --> 00:19:38,880 rack and pinions because those are the 479 00:19:36,159 --> 00:19:42,640 main things you can actually do in 480 00:19:38,880 --> 00:19:44,440 Lego this is my favorite success this 481 00:19:42,640 --> 00:19:46,720 was one of the challenges I gave them to 482 00:19:44,440 --> 00:19:50,679 show them how to use gears how to use 483 00:19:46,720 --> 00:19:53,240 gear trains and how to use pulley so I 484 00:19:50,679 --> 00:19:54,880 told them that you had to make a crane 485 00:19:53,240 --> 00:19:57,520 um I didn't give them very much 486 00:19:54,880 --> 00:20:00,080 instruction but this was one of our 487 00:19:57,520 --> 00:20:03,039 teams I am actually really proud of it 488 00:20:00,080 --> 00:20:04,480 it's so cool honestly they they went 489 00:20:03,039 --> 00:20:07,320 from nothing to this and it was really 490 00:20:04,480 --> 00:20:09,600 awesome um but the way that they got 491 00:20:07,320 --> 00:20:11,000 this to work the best was they started 492 00:20:09,600 --> 00:20:14,039 with a drawing which is what I made them 493 00:20:11,000 --> 00:20:15,799 do do a drawing what do you need what 494 00:20:14,039 --> 00:20:17,720 shapes do you need where do you need the 495 00:20:15,799 --> 00:20:19,240 gears how are you going to put them so 496 00:20:17,720 --> 00:20:22,679 that the thing actually does the thing 497 00:20:19,240 --> 00:20:24,799 that you need it to do um and that was 498 00:20:22,679 --> 00:20:26,440 super useful that's one of the best 499 00:20:24,799 --> 00:20:28,280 things that I think that I worked out 500 00:20:26,440 --> 00:20:30,480 that they needed to do they need to draw 501 00:20:28,280 --> 00:20:34,000 the thing 502 00:20:30,480 --> 00:20:36,919 so what are my main takeaways from 503 00:20:34,000 --> 00:20:39,240 spending a year teaching kids finding 504 00:20:36,919 --> 00:20:42,039 them very annoying 505 00:20:39,240 --> 00:20:44,039 um and eventually getting them to a 506 00:20:42,039 --> 00:20:47,360 point where I feel like they know a lot 507 00:20:44,039 --> 00:20:49,440 more than when they came in so the first 508 00:20:47,360 --> 00:20:50,840 thing is that they need to draw what 509 00:20:49,440 --> 00:20:53,640 they are going to make because they 510 00:20:50,840 --> 00:20:55,919 can't imagine it in their head if I tell 511 00:20:53,640 --> 00:20:57,480 them you need to make a thing that can 512 00:20:55,919 --> 00:20:59,240 solve this Challenge and they know they 513 00:20:57,480 --> 00:21:01,919 need an arm they know they need to push 514 00:20:59,240 --> 00:21:05,280 down they don't know how to make a thing 515 00:21:01,919 --> 00:21:07,039 that does that um so if you get them to 516 00:21:05,280 --> 00:21:09,159 draw it they can know what the shape is 517 00:21:07,039 --> 00:21:10,720 they know where the G gears need to be 518 00:21:09,159 --> 00:21:12,679 and then they can start trying to put it 519 00:21:10,720 --> 00:21:14,320 together they don't have to keep using 520 00:21:12,679 --> 00:21:16,159 their imagination of where the Lego bits 521 00:21:14,320 --> 00:21:19,240 are they just have to know what shape it 522 00:21:16,159 --> 00:21:21,840 is next is you give them one goal they 523 00:21:19,240 --> 00:21:25,640 can't do multiple goals I've tried you 524 00:21:21,840 --> 00:21:27,880 got to go one goal at a time then they 525 00:21:25,640 --> 00:21:29,320 know what to focus on otherwise and it 526 00:21:27,880 --> 00:21:32,000 has to be a specific specific goal if 527 00:21:29,320 --> 00:21:34,080 it's too broad it's too broad they're 528 00:21:32,000 --> 00:21:35,640 not going to do it um next you need to 529 00:21:34,080 --> 00:21:37,960 teach them how to make things strong 530 00:21:35,640 --> 00:21:39,480 because my main problem in my classroom 531 00:21:37,960 --> 00:21:42,600 is that they have their gears 532 00:21:39,480 --> 00:21:44,120 slip um they disconnect they don't move 533 00:21:42,600 --> 00:21:45,480 and then they get frustrated and angry 534 00:21:44,120 --> 00:21:48,159 and they're like but I've put the gears 535 00:21:45,480 --> 00:21:50,080 next to each other um teach them how to 536 00:21:48,159 --> 00:21:52,919 make strong 537 00:21:50,080 --> 00:21:55,480 Lego lastly line following is really 538 00:21:52,919 --> 00:21:57,000 hard if you're going to do anything you 539 00:21:55,480 --> 00:21:59,159 have to spend a long time online 540 00:21:57,000 --> 00:22:01,559 following but 541 00:21:59,159 --> 00:22:05,240 anyway that's what I've learned maybe 542 00:22:01,559 --> 00:22:05,240 it'll help you thank you for 543 00:22:07,400 --> 00:22:11,840 listening thank you for that story of 544 00:22:09,720 --> 00:22:16,000 how you taught primary school kids about 545 00:22:11,840 --> 00:22:19,080 how to build a crane it was really 546 00:22:16,000 --> 00:22:20,520 uplifting uh on Deck is Javier but first 547 00:22:19,080 --> 00:22:23,039 kashara who's going to answer the 548 00:22:20,520 --> 00:22:25,200 question WTF 549 00:22:23,039 --> 00:22:29,000 ietf 550 00:22:25,200 --> 00:22:33,120 ITF hello my name is kissar my talk is 551 00:22:29,000 --> 00:22:37,559 about how to create your own RFC first 552 00:22:33,120 --> 00:22:40,919 um RFC is stands for request for 553 00:22:37,559 --> 00:22:42,080 commands um but not all rfcs are 554 00:22:40,919 --> 00:22:46,000 internet 555 00:22:42,080 --> 00:22:48,240 standards for example RFC 9,000 the 556 00:22:46,000 --> 00:22:51,360 quick protocol that's an internet 557 00:22:48,240 --> 00:22:54,720 standard you can recognize this by the 558 00:22:51,360 --> 00:23:00,080 category it says standard there standard 559 00:22:54,720 --> 00:23:03,279 stack and this faster than light speed 560 00:23:00,080 --> 00:23:06,000 protocol obviously not in standard it an 561 00:23:03,279 --> 00:23:07,919 informational RFC also it's special 562 00:23:06,000 --> 00:23:10,919 because it's released on first of April 563 00:23:07,919 --> 00:23:10,919 so it's a April first 564 00:23:11,080 --> 00:23:17,480 joke and this is another informational 565 00:23:14,720 --> 00:23:22,080 RFC but it's not a joke it's a serious 566 00:23:17,480 --> 00:23:24,120 RFC um so informational can be jokes and 567 00:23:22,080 --> 00:23:28,159 uh serious ones and there are 568 00:23:24,120 --> 00:23:30,440 experimental Ares like this one the DNS 569 00:23:28,159 --> 00:23:30,440 over 570 00:23:31,679 --> 00:23:43,320 https the rfcs are published by uh RF 571 00:23:37,000 --> 00:23:47,080 some by RFC editor and right now RFC 572 00:23:43,320 --> 00:23:51,840 editor publishes four formats first the 573 00:23:47,080 --> 00:23:58,480 HTML and the text format the PDF and the 574 00:23:51,840 --> 00:23:58,480 XML file XML is the source of the RFC 575 00:23:59,679 --> 00:24:05,480 the RFC starts its life as a internet 576 00:24:02,919 --> 00:24:08,520 graft internet graft doesn't have RFC 577 00:24:05,480 --> 00:24:11,360 number but gets into different revisions 578 00:24:08,520 --> 00:24:16,480 over the time until it gets published by 579 00:24:11,360 --> 00:24:20,919 RFC editor um and allocates RFC number 580 00:24:16,480 --> 00:24:23,559 this program called XML to RFC uh Python 581 00:24:20,919 --> 00:24:25,760 program free open source program which 582 00:24:23,559 --> 00:24:29,200 generates all these formats when you 583 00:24:25,760 --> 00:24:32,559 submit the XML file but this is 584 00:24:29,200 --> 00:24:35,559 2024 and nobody really likes to work 585 00:24:32,559 --> 00:24:39,120 with XML files especially 586 00:24:35,559 --> 00:24:39,120 humans um 587 00:24:46,960 --> 00:24:54,320 so so you can use markdown um this 588 00:24:51,279 --> 00:24:57,600 install this RM called cramon RFC which 589 00:24:54,320 --> 00:25:01,240 will generate you the XML file that you 590 00:24:57,600 --> 00:25:04,960 want to feed into to the XML 591 00:25:01,240 --> 00:25:07,880 Toc or you could use an online service 592 00:25:04,960 --> 00:25:11,200 called other tools um another free open 593 00:25:07,880 --> 00:25:14,279 source project and upload your uh 594 00:25:11,200 --> 00:25:16,360 markdown file there and generate the 595 00:25:14,279 --> 00:25:19,919 RFC um 596 00:25:16,360 --> 00:25:22,799 so I have a internet draft here it's 597 00:25:19,919 --> 00:25:27,360 standard for lightning talks I just WR 598 00:25:22,799 --> 00:25:30,000 yesterday and um yeah so it's got a 599 00:25:27,360 --> 00:25:33,120 bunch of metadata like title document 600 00:25:30,000 --> 00:25:37,200 name category as in info for 601 00:25:33,120 --> 00:25:40,200 informational and the author name some 602 00:25:37,200 --> 00:25:42,640 references and then abstract and middle 603 00:25:40,200 --> 00:25:44,399 and content like introduction and 604 00:25:42,640 --> 00:25:46,799 structure for lightning talks like 605 00:25:44,399 --> 00:25:46,799 there's no 606 00:25:47,360 --> 00:25:53,360 structure so all with other the tools I 607 00:25:50,760 --> 00:25:56,399 just have to select my markdown 608 00:25:53,360 --> 00:25:59,279 file and if I want the HTML I click on 609 00:25:56,399 --> 00:26:02,760 HTML 610 00:25:59,279 --> 00:26:08,679 and wait until it generates 611 00:26:02,760 --> 00:26:08,679 it and I have my RFC or the internet 612 00:26:08,840 --> 00:26:16,320 [Applause] 613 00:26:13,360 --> 00:26:18,399 draft so with other tools you could 614 00:26:16,320 --> 00:26:21,559 gener like click on these other buttons 615 00:26:18,399 --> 00:26:21,559 and get the different 616 00:26:25,039 --> 00:26:31,679 formats and if you want to learn more 617 00:26:28,399 --> 00:26:36,279 about uh internet uh standard process or 618 00:26:31,679 --> 00:26:39,720 the rfcs you can go to i.org or talk to 619 00:26:36,279 --> 00:26:43,279 me um I can help you with some and if 620 00:26:39,720 --> 00:26:47,559 you want to get into that uh draft that 621 00:26:43,279 --> 00:26:49,240 I just wrote uh and play with that uh 622 00:26:47,559 --> 00:26:53,200 scan that QR 623 00:26:49,240 --> 00:26:53,200 code that's all I got thank 624 00:26:53,320 --> 00:26:58,240 you thank 625 00:26:55,640 --> 00:27:01,120 you that was great you should have learn 626 00:26:58,240 --> 00:27:05,320 learned something um Julia you're on 627 00:27:01,120 --> 00:27:07,799 deck on this side but first uh Javier 628 00:27:05,320 --> 00:27:10,600 Candera thank you Chris thank you 629 00:27:07,799 --> 00:27:12,960 everyone I'm happy to be here on wunan 630 00:27:10,600 --> 00:27:16,360 today talking to you about how to find 631 00:27:12,960 --> 00:27:18,600 self enumerating pangrams with python so 632 00:27:16,360 --> 00:27:20,720 what is the oh it's a pangram a pangram 633 00:27:18,600 --> 00:27:22,679 has all the letters of the alphabet in 634 00:27:20,720 --> 00:27:25,000 your language if your language uses an 635 00:27:22,679 --> 00:27:27,120 alphabet and uh this is the one used by 636 00:27:25,000 --> 00:27:28,679 typographers but you can also make a 637 00:27:27,120 --> 00:27:30,960 pangram a self 638 00:27:28,679 --> 00:27:33,320 inating uh you can make any sentence 639 00:27:30,960 --> 00:27:37,039 self enumerating by having it say how 640 00:27:33,320 --> 00:27:40,080 many letters of each it has so in um I 641 00:27:37,039 --> 00:27:43,159 think it was in January 82 Douglas 642 00:27:40,080 --> 00:27:46,760 hofstad in Scientific American published 643 00:27:43,159 --> 00:27:48,039 this amazing sentence of Lee salow so 644 00:27:46,760 --> 00:27:50,440 the fact that it starts with only the 645 00:27:48,039 --> 00:27:52,159 fool would take trouble and last but not 646 00:27:50,440 --> 00:27:55,159 least I'm going to tell you now it's 647 00:27:52,159 --> 00:27:57,320 actually a Dodge because it allows you 648 00:27:55,159 --> 00:28:01,159 to fill the numbers by using letters 649 00:27:57,320 --> 00:28:04,720 that are not in the words 20 or five or 650 00:28:01,159 --> 00:28:06,240 one it is much more difficult to do this 651 00:28:04,720 --> 00:28:09,279 this autogram 652 00:28:06,240 --> 00:28:12,279 contains and only use and and not and 653 00:28:09,279 --> 00:28:16,000 but not least and the amazing single Zed 654 00:28:12,279 --> 00:28:19,919 which Lee alos did 655 00:28:16,000 --> 00:28:22,679 using uh Hardware well actually he did 656 00:28:19,919 --> 00:28:25,960 this with code but he was very 657 00:28:22,679 --> 00:28:28,679 frustrated that in his vax whatever he 658 00:28:25,960 --> 00:28:31,480 was in a university in in Holland he 659 00:28:28,679 --> 00:28:34,919 could only do 10 combinations per second 660 00:28:31,480 --> 00:28:38,120 and he did the numbers and um he checked 661 00:28:34,919 --> 00:28:40,200 that even with his constraints he wasn't 662 00:28:38,120 --> 00:28:42,919 using the whole Space of letters he was 663 00:28:40,200 --> 00:28:45,039 doing a smart search that didn't search 664 00:28:42,919 --> 00:28:47,960 on letters that are not part of the 665 00:28:45,039 --> 00:28:51,919 numbers it would take 31 million years 666 00:28:47,960 --> 00:28:54,720 for the record um my code that I started 667 00:28:51,919 --> 00:28:56,679 writing this Wednesday does 3,000 668 00:28:54,720 --> 00:28:58,600 combination not through my Merit Mo law 669 00:28:56,679 --> 00:29:01,760 did that so 670 00:28:58,600 --> 00:29:03,799 for my code it would only take 10,000 671 00:29:01,760 --> 00:29:08,399 years to numeral combinations that's too 672 00:29:03,799 --> 00:29:10,679 many so sorry we need to we I mean yes 673 00:29:08,399 --> 00:29:13,399 but it's on the shoulders of giant so he 674 00:29:10,679 --> 00:29:16,120 built this thing and that was what um 675 00:29:13,399 --> 00:29:18,799 amazed me in when I read in scientific 676 00:29:16,120 --> 00:29:20,880 americ he wrote actual Hardware he built 677 00:29:18,799 --> 00:29:23,919 actual Hardware to find these 678 00:29:20,880 --> 00:29:26,000 combinations so I'm now at the part 679 00:29:23,919 --> 00:29:28,919 which is the actual risky part of their 680 00:29:26,000 --> 00:29:33,039 thing because um 681 00:29:28,919 --> 00:29:36,440 I I used for my code uh for my where's 682 00:29:33,039 --> 00:29:40,640 my uh pointer my pointer is here so for 683 00:29:36,440 --> 00:29:43,159 my code I'm using Le salo's actual 684 00:29:40,640 --> 00:29:44,799 examples in my test right it makes sense 685 00:29:43,159 --> 00:29:47,320 you write a test so it you find examples 686 00:29:44,799 --> 00:29:49,960 that already exist and what I find is if 687 00:29:47,320 --> 00:29:51,640 I run it three times I find two things 688 00:29:49,960 --> 00:29:54,159 with the one that starts with this 689 00:29:51,640 --> 00:29:56,000 epilog contains find things one of them 690 00:29:54,159 --> 00:29:58,640 is that it takes me an average of 30 691 00:29:56,000 --> 00:30:01,480 seconds to find three so on average is 3 692 00:29:58,640 --> 00:30:04,159 seconds but that search is not uniform 693 00:30:01,480 --> 00:30:06,080 because you need to find randomly I'll 694 00:30:04,159 --> 00:30:07,360 tell you how it works in a minute 695 00:30:06,080 --> 00:30:09,399 sometimes they find it fast and 696 00:30:07,360 --> 00:30:12,760 sometimes they find it slow but the 697 00:30:09,399 --> 00:30:15,360 interesting thing is I find a solution 698 00:30:12,760 --> 00:30:18,240 that is different from these shallows 699 00:30:15,360 --> 00:30:19,720 let's find instead of um this epilog 700 00:30:18,240 --> 00:30:21,559 let's find what happens when you try to 701 00:30:19,720 --> 00:30:25,399 find this 702 00:30:21,559 --> 00:30:29,320 autogram okay what am I 703 00:30:25,399 --> 00:30:32,080 doing nice so finally enough this you 704 00:30:29,320 --> 00:30:34,720 can find super fast and it has zero 705 00:30:32,080 --> 00:30:39,039 Loops the last number is the number of 706 00:30:34,720 --> 00:30:39,039 Loops because the way this works 707 00:30:39,519 --> 00:30:45,559 is essentially it says if the count 708 00:30:44,000 --> 00:30:47,279 produces a sentence and the sentence 709 00:30:45,559 --> 00:30:50,480 produces the same count then we found 710 00:30:47,279 --> 00:30:54,159 the solution but if we don't we put the 711 00:30:50,480 --> 00:30:56,399 vector of counts in a in um in a set and 712 00:30:54,159 --> 00:30:58,399 then if we meet a count that we've 713 00:30:56,399 --> 00:31:00,519 already seen that means that will Loop 714 00:30:58,399 --> 00:31:03,519 and we need to uh exit the loop so we 715 00:31:00,519 --> 00:31:06,399 randomize the interesting thing is that 716 00:31:03,519 --> 00:31:09,039 the sentence this autogram blah blah 717 00:31:06,399 --> 00:31:12,039 contains blah blah blah and always does 718 00:31:09,039 --> 00:31:14,399 zero Loops it's like English is 719 00:31:12,039 --> 00:31:16,600 evolutionary evolved you know it's 720 00:31:14,399 --> 00:31:18,679 perfect fit for 721 00:31:16,600 --> 00:31:20,960 autogram that's quite interesting 722 00:31:18,679 --> 00:31:27,320 because I'm going to do something that 723 00:31:20,960 --> 00:31:27,320 is this epilog do this interesting thing 724 00:31:28,240 --> 00:31:34,760 and this this is my finish today and am 725 00:31:31,919 --> 00:31:38,639 I doing I modified the code so I don't 726 00:31:34,760 --> 00:31:41,240 have a signal Loops so so this will very 727 00:31:38,639 --> 00:31:44,919 likely not finish which is quite 728 00:31:41,240 --> 00:31:46,880 interesting right it's if I try to find 729 00:31:44,919 --> 00:31:49,000 uh one of Le salow examples I find a 730 00:31:46,880 --> 00:31:52,639 different one because I can't get my 731 00:31:49,000 --> 00:31:54,519 vectors initialized to the local area of 732 00:31:52,639 --> 00:31:57,559 the of the search space where this Sal 733 00:31:54,519 --> 00:32:00,240 found his if I try to find this autogram 734 00:31:57,559 --> 00:32:02,760 and I always land without a single Loop 735 00:32:00,240 --> 00:32:05,120 and this one magic this is the magic 736 00:32:02,760 --> 00:32:08,519 it's the first time that you I expected 737 00:32:05,120 --> 00:32:11,480 a code to fail and it actually succeeded 738 00:32:08,519 --> 00:32:14,399 thank you thank 739 00:32:11,480 --> 00:32:16,440 you Javier's quick lightning talk was 740 00:32:14,399 --> 00:32:18,519 wonderful his program's prize of 741 00:32:16,440 --> 00:32:21,519 pangrams was beyond delightfully 742 00:32:18,519 --> 00:32:21,519 fascinating 743 00:32:23,880 --> 00:32:30,399 xylophone uh on Deck we have catrix but 744 00:32:28,080 --> 00:32:33,039 first uh Julia who's going to tell us 745 00:32:30,399 --> 00:32:36,080 about another programming 746 00:32:33,039 --> 00:32:38,919 language hello I'm Julia I'm a soft 747 00:32:36,080 --> 00:32:41,720 engineer and I'm a mom of two primary 748 00:32:38,919 --> 00:32:43,440 school age daughters the older one asked 749 00:32:41,720 --> 00:32:46,480 me a couple of years ago to please teach 750 00:32:43,440 --> 00:32:49,720 a programming so big moment my big love 751 00:32:46,480 --> 00:32:51,519 to teach to my kid and I did what um a 752 00:32:49,720 --> 00:32:53,320 lot of people in my position would do we 753 00:32:51,519 --> 00:32:55,240 started with block based coding scratch 754 00:32:53,320 --> 00:32:58,440 junor and scratch and Microsoft make 755 00:32:55,240 --> 00:33:00,159 code I was cool but you know once you 756 00:32:58,440 --> 00:33:01,720 reach a certain size it becomes a bit 757 00:33:00,159 --> 00:33:04,440 unyielding you don't find your way 758 00:33:01,720 --> 00:33:06,720 around and in the words of my older 759 00:33:04,440 --> 00:33:08,600 daughter uh Mom I don't want to do the 760 00:33:06,720 --> 00:33:09,720 babyish puzzle pieces anymore I want to 761 00:33:08,600 --> 00:33:13,519 do the real 762 00:33:09,720 --> 00:33:16,200 code so what she told me is something 763 00:33:13,519 --> 00:33:18,159 that it seems um research uh found 764 00:33:16,200 --> 00:33:19,840 evidence for as well kids kind of don't 765 00:33:18,159 --> 00:33:22,880 really think it's the real deal and 766 00:33:19,840 --> 00:33:25,919 therefore it doesn't stick as 767 00:33:22,880 --> 00:33:29,519 much we went to KH Academy we tried 768 00:33:25,919 --> 00:33:32,240 JavaScript um dra a lips six parameters 769 00:33:29,519 --> 00:33:34,240 and Mom what's that squiggly line yeah 770 00:33:32,240 --> 00:33:36,880 we call it curly brace and I'm also not 771 00:33:34,240 --> 00:33:39,679 sure where it is on your iPad actually I 772 00:33:36,880 --> 00:33:41,960 was just kind of really heartbreaking to 773 00:33:39,679 --> 00:33:43,880 see my Kito was so motivated and wanted 774 00:33:41,960 --> 00:33:47,039 to learn and me so motivated to teach 775 00:33:43,880 --> 00:33:49,279 and just like this syntactic and special 776 00:33:47,039 --> 00:33:53,200 characters get in the way and kind of 777 00:33:49,279 --> 00:33:55,399 create fear and you know so I did what 778 00:33:53,200 --> 00:33:59,720 any software engineer would do at this 779 00:33:55,399 --> 00:33:59,720 stage I got an domain 780 00:33:59,919 --> 00:34:05,799 name and 781 00:34:02,600 --> 00:34:07,880 um started programming so I felt like 782 00:34:05,799 --> 00:34:09,800 there's a piece missing a a beginnner 783 00:34:07,880 --> 00:34:12,480 programming language that is absolutely 784 00:34:09,800 --> 00:34:15,200 minimal in terms of um special 785 00:34:12,480 --> 00:34:18,240 characters but you know gets the essence 786 00:34:15,200 --> 00:34:21,879 across Eevee was born uh with a landing 787 00:34:18,240 --> 00:34:26,359 page with an Easter egg of course and a 788 00:34:21,879 --> 00:34:28,440 playground um this is please be my uh 789 00:34:26,359 --> 00:34:31,119 com compilers here 790 00:34:28,440 --> 00:34:34,480 hello world in Eevee it's really hard to 791 00:34:31,119 --> 00:34:36,000 talk and program at the same time but it 792 00:34:34,480 --> 00:34:39,359 works 793 00:34:36,000 --> 00:34:41,440 um uh Eevee wants to learn from what was 794 00:34:39,359 --> 00:34:43,359 great about blocks and what is needed 795 00:34:41,440 --> 00:34:48,520 for minimal text based language so we 796 00:34:43,359 --> 00:34:50,679 make um Graphics first class citizens um 797 00:34:48,520 --> 00:34:53,520 addressed like a cartisian number plane 798 00:34:50,679 --> 00:34:57,720 with um the origin in the bottom left up 799 00:34:53,520 --> 00:35:00,040 to 100 by 100 so a little bit turtle 800 00:34:57,720 --> 00:35:04,200 Graphics here to place something in the 801 00:35:00,040 --> 00:35:08,599 center um we move use the move command 802 00:35:04,200 --> 00:35:12,240 circle with radius creates a circle um 803 00:35:08,599 --> 00:35:14,079 you can uh set the colors with um 804 00:35:12,240 --> 00:35:16,119 Australian spelling 805 00:35:14,079 --> 00:35:18,000 y or 806 00:35:16,119 --> 00:35:19,280 American you know that's the thing if 807 00:35:18,000 --> 00:35:21,359 you do your own thing you can do what 808 00:35:19,280 --> 00:35:21,359 you 809 00:35:21,480 --> 00:35:25,520 want and but also like the moving bits 810 00:35:24,240 --> 00:35:27,720 and user interaction was really 811 00:35:25,520 --> 00:35:30,520 important to have in there so if you 812 00:35:27,720 --> 00:35:33,280 want to um maybe make this circle 813 00:35:30,520 --> 00:35:34,880 disappear there is an Onan animate event 814 00:35:33,280 --> 00:35:36,320 handler that hooks into request 815 00:35:34,880 --> 00:35:39,280 animation frame and 816 00:35:36,320 --> 00:35:41,680 JavaScript um and so sorry I forgot to 817 00:35:39,280 --> 00:35:44,400 show you how to declare a variable first 818 00:35:41,680 --> 00:35:48,720 statically typed language 819 00:35:44,400 --> 00:35:51,000 um we in the on animate um event handler 820 00:35:48,720 --> 00:35:54,599 we first cleared the canvas uh we 821 00:35:51,000 --> 00:35:54,599 reduced the radius by a tiny 822 00:35:56,200 --> 00:36:02,280 fraction and draw the circle 823 00:35:59,720 --> 00:36:07,000 again and or maybe we start a little bit 824 00:36:02,280 --> 00:36:10,560 bigger here and oops okay bit the radius 825 00:36:07,000 --> 00:36:12,920 this is what error messages look like H 826 00:36:10,560 --> 00:36:16,800 why does it not work who sees it why 827 00:36:12,920 --> 00:36:16,800 does it not work 828 00:36:17,000 --> 00:36:20,000 sorry 829 00:36:20,400 --> 00:36:28,760 huh no it's not declared twice only 830 00:36:22,720 --> 00:36:32,160 declared up here not to it sorry come or 831 00:36:28,760 --> 00:36:34,680 no yeah so so yeah I'm not sure why this 832 00:36:32,160 --> 00:36:37,160 didn't work before man what could 833 00:36:34,680 --> 00:36:40,000 possibly go wrong in a lifetime I I have 834 00:36:37,160 --> 00:36:43,480 no idea right how much time oh yeah one 835 00:36:40,000 --> 00:36:45,400 minute okay shall I show you new anyway 836 00:36:43,480 --> 00:36:48,280 you know I went into schools and I did 837 00:36:45,400 --> 00:36:52,319 Labs with the kids there um there's a 838 00:36:48,280 --> 00:36:52,319 lot Happening Here oops not lab.com 839 00:36:54,800 --> 00:36:59,319 um this is what we did in the first lab 840 00:36:57,400 --> 00:37:02,640 and a double period lesson we got them 841 00:36:59,319 --> 00:37:05,240 to do that um yeah if you if you feel 842 00:37:02,640 --> 00:37:07,240 like it take it for a spin give me some 843 00:37:05,240 --> 00:37:09,400 feedback that's the thing I did the last 844 00:37:07,240 --> 00:37:09,400 two 845 00:37:10,960 --> 00:37:15,200 years now I think any programming 846 00:37:13,200 --> 00:37:17,520 language that spells color correctly is 847 00:37:15,200 --> 00:37:20,680 worth trying out so uh thank you for 848 00:37:17,520 --> 00:37:22,680 that Julia um right now we've got catrix 849 00:37:20,680 --> 00:37:25,960 our vide Tech who has refused to take 850 00:37:22,680 --> 00:37:28,040 his intercom off um so sorry to all the 851 00:37:25,960 --> 00:37:32,160 people who are listening in on that 852 00:37:28,040 --> 00:37:34,319 um on Deck we have uh uh but first uh 853 00:37:32,160 --> 00:37:35,920 Chris all right uh Crystal audio I've 854 00:37:34,319 --> 00:37:37,280 got uh audio through my laptop for this 855 00:37:35,920 --> 00:37:39,079 one camera I'll try to stay in front of 856 00:37:37,280 --> 00:37:41,960 the stage and switch probably on the 857 00:37:39,079 --> 00:37:44,599 laptop for most of it cheers all right 858 00:37:41,960 --> 00:37:46,400 hey how is everyone good to see you um 859 00:37:44,599 --> 00:37:47,440 my name is uh Chris I've done all sorts 860 00:37:46,400 --> 00:37:48,839 of silly things to the conference like 861 00:37:47,440 --> 00:37:50,040 that little intro you saw I animated 862 00:37:48,839 --> 00:37:52,280 that you've been listening to 5 hours of 863 00:37:50,040 --> 00:37:54,760 my music on loop as well but I also in 864 00:37:52,280 --> 00:37:57,280 my day job um I buil these interactive 865 00:37:54,760 --> 00:38:00,160 screen systems such as this one here and 866 00:37:57,280 --> 00:38:02,000 this interactive system here was for a 867 00:38:00,160 --> 00:38:04,880 client that was particularly interested 868 00:38:02,000 --> 00:38:07,440 in supporting low vision and blindness 869 00:38:04,880 --> 00:38:09,520 uh users who can navigate the system 870 00:38:07,440 --> 00:38:11,040 without uh you know being able to 871 00:38:09,520 --> 00:38:12,560 necessarily see could also use feel 872 00:38:11,040 --> 00:38:14,880 that's fine we could put tactile markers 873 00:38:12,560 --> 00:38:16,720 on the screen we can run the titles 874 00:38:14,880 --> 00:38:19,240 underneath so that it all matches up we 875 00:38:16,720 --> 00:38:20,640 can do audio descriptions on everything 876 00:38:19,240 --> 00:38:22,560 that wasn't the problem the screen 877 00:38:20,640 --> 00:38:23,760 system worked fine we had low vision use 878 00:38:22,560 --> 00:38:25,440 where you could grab elements and you 879 00:38:23,760 --> 00:38:28,440 could throw it full screen and do all 880 00:38:25,440 --> 00:38:30,359 sorts of things but the problem was when 881 00:38:28,440 --> 00:38:32,079 we came to control a system because if 882 00:38:30,359 --> 00:38:34,040 you look at control and automation like 883 00:38:32,079 --> 00:38:36,040 the little panels are sitting here they 884 00:38:34,040 --> 00:38:39,000 are all these little touch panels and 885 00:38:36,040 --> 00:38:41,520 that is fine until you have low vision 886 00:38:39,000 --> 00:38:43,200 or blindness in which case even with a 887 00:38:41,520 --> 00:38:47,079 little bit of low sidedness these things 888 00:38:43,200 --> 00:38:48,200 become very confusing so um we decided 889 00:38:47,079 --> 00:38:49,880 that we weren't going to use a 890 00:38:48,200 --> 00:38:51,040 commercial solution cuz the fonts were 891 00:38:49,880 --> 00:38:53,440 really small you may have seen these 892 00:38:51,040 --> 00:38:55,680 little panels and instead we would build 893 00:38:53,440 --> 00:38:57,160 our own we would use big Goofy TCT tail 894 00:38:55,680 --> 00:38:58,000 buttons we wanted a system that would 895 00:38:57,160 --> 00:38:59,160 torque 896 00:38:58,000 --> 00:39:01,440 we wanted a system that wasn't 897 00:38:59,160 --> 00:39:03,880 proprietary um and we wanted to make it 898 00:39:01,440 --> 00:39:06,800 with a rapid development language and I 899 00:39:03,880 --> 00:39:08,200 can see a little friend up here is 900 00:39:06,800 --> 00:39:11,280 coming to the 901 00:39:08,200 --> 00:39:13,440 rescue oh you know so this was a little 902 00:39:11,280 --> 00:39:15,240 panel spot we had uh we went straight 903 00:39:13,440 --> 00:39:17,200 into CAD uh starting to do some 3D 904 00:39:15,240 --> 00:39:19,160 printing for every 3D printing nerd out 905 00:39:17,200 --> 00:39:21,440 there you can print on transparency with 906 00:39:19,160 --> 00:39:23,000 it printed in reverse and it will 907 00:39:21,440 --> 00:39:24,520 actually pick up the ink off the toner 908 00:39:23,000 --> 00:39:26,640 and allow you to do controls that look 909 00:39:24,520 --> 00:39:28,560 like this uh so this was built in a 910 00:39:26,640 --> 00:39:30,400 weekend of course we got to program it 911 00:39:28,560 --> 00:39:32,680 somehow so of course we're going to put 912 00:39:30,400 --> 00:39:34,079 a Raspberry Pi in the back of it a 913 00:39:32,680 --> 00:39:35,359 little multiplexer board that just takes 914 00:39:34,079 --> 00:39:37,599 all the buttons and puts it down three 915 00:39:35,359 --> 00:39:39,280 wires to make it a bit cleaner uh and 916 00:39:37,599 --> 00:39:41,280 then we wanted to program it and we 917 00:39:39,280 --> 00:39:42,520 decided we would make it torque you hit 918 00:39:41,280 --> 00:39:44,359 the button it tells you what it's going 919 00:39:42,520 --> 00:39:47,079 to do you hold the button it does the 920 00:39:44,359 --> 00:39:48,960 thing that sort of makes sense right um 921 00:39:47,079 --> 00:39:50,760 so all of these buttons had a little bit 922 00:39:48,960 --> 00:39:53,319 of a complicated stack though cuz some 923 00:39:50,760 --> 00:39:55,200 of them were uh going through down 924 00:39:53,319 --> 00:39:56,280 firing audio cuz it was a public kind of 925 00:39:55,200 --> 00:39:57,400 setup where you just want it in the 926 00:39:56,280 --> 00:39:59,200 background and you want it to go to 927 00:39:57,400 --> 00:40:01,960 sleep after 5 minutes if no one's using 928 00:39:59,200 --> 00:40:03,839 it uh and we also wanted then modes like 929 00:40:01,960 --> 00:40:06,119 an immersive audio mode uh for teaching 930 00:40:03,839 --> 00:40:07,480 people how to cross roads with traffic 931 00:40:06,119 --> 00:40:09,599 and things cuz we have an eight channel 932 00:40:07,480 --> 00:40:11,480 surround sound system in it as well so 933 00:40:09,599 --> 00:40:13,359 that wanted to be with loud audio with a 934 00:40:11,480 --> 00:40:15,359 subwoofer we wanted to dim the lights we 935 00:40:13,359 --> 00:40:17,640 wanted to have PA mics available so it's 936 00:40:15,359 --> 00:40:19,160 controlling a whole load of stuff in the 937 00:40:17,640 --> 00:40:21,280 room including the six TVs and 938 00:40:19,160 --> 00:40:24,400 everything the problem is oh that didn't 939 00:40:21,280 --> 00:40:27,480 work um the problem is they all use 940 00:40:24,400 --> 00:40:30,200 different protocols some are using rs232 941 00:40:27,480 --> 00:40:32,480 uh there's rest apis there's pcds being 942 00:40:30,200 --> 00:40:34,599 called so we thought the easiest way to 943 00:40:32,480 --> 00:40:36,400 deal with all of this stuff was to 944 00:40:34,599 --> 00:40:37,680 actually have a service running that was 945 00:40:36,400 --> 00:40:38,920 dealing with running all of these 946 00:40:37,680 --> 00:40:41,680 different parts all the different bits 947 00:40:38,920 --> 00:40:43,839 of the system so we used uh mqtt a 948 00:40:41,680 --> 00:40:46,800 mosquito uh style service and we also 949 00:40:43,839 --> 00:40:48,599 had a button Handler service so one part 950 00:40:46,800 --> 00:40:49,839 of python was just constantly just 951 00:40:48,599 --> 00:40:51,400 looking at the buttons and having a 952 00:40:49,839 --> 00:40:53,760 little buttons my Handler and there was 953 00:40:51,400 --> 00:40:55,599 another uh service that was taking when 954 00:40:53,760 --> 00:40:57,599 the button was pushed and running 955 00:40:55,599 --> 00:40:59,599 something now these can all just be run 956 00:40:57,599 --> 00:41:02,160 is mostly command line things you know 957 00:40:59,599 --> 00:41:04,839 you've got curl SMPT set all the things 958 00:41:02,160 --> 00:41:06,280 you used to have seeing um and so we 959 00:41:04,839 --> 00:41:08,040 built little driver files for all of 960 00:41:06,280 --> 00:41:12,920 them uh had everything sitting in a 961 00:41:08,040 --> 00:41:15,240 folder so um we could have mqt calls uh 962 00:41:12,920 --> 00:41:16,800 and that way it was nice and neat and in 963 00:41:15,240 --> 00:41:18,119 fact we decided no we're not use a 964 00:41:16,800 --> 00:41:20,520 script system we'll just do it all in 965 00:41:18,119 --> 00:41:22,520 nice neat python so we had all of the 966 00:41:20,520 --> 00:41:24,560 buttons all of the sequencing English on 967 00:41:22,520 --> 00:41:26,880 the left right hand side there is you 968 00:41:24,560 --> 00:41:29,000 know the text sort of side of it very 969 00:41:26,880 --> 00:41:30,960 fun to debugs we have this giant screen 970 00:41:29,000 --> 00:41:32,880 with uh these big panels so that was 971 00:41:30,960 --> 00:41:34,960 kind of fun and I will now show you a 972 00:41:32,880 --> 00:41:37,599 video that has audio with it uh which 973 00:41:34,960 --> 00:41:41,400 shows it in action this is the panel 974 00:41:37,599 --> 00:41:43,640 that we built let's hope it works 975 00:41:41,400 --> 00:41:46,079 standard mode hold to activate 976 00:41:43,640 --> 00:41:49,119 collaboration mode hold to activate 977 00:41:46,079 --> 00:41:51,760 audio experiences hold to activate we're 978 00:41:49,119 --> 00:41:51,760 going to hold this 979 00:41:51,800 --> 00:41:58,599 one resetting to standard interactive 980 00:41:54,720 --> 00:41:58,599 mode ooh 981 00:41:58,720 --> 00:42:05,359 that should load there we go say we can 982 00:42:01,680 --> 00:42:08,760 go for instance to say audio experience 983 00:42:05,359 --> 00:42:09,839 mode switching to audio experiences so 984 00:42:08,760 --> 00:42:11,119 what's happening in the background there 985 00:42:09,839 --> 00:42:12,480 is it's actually switching all the amps 986 00:42:11,119 --> 00:42:13,920 on and off it's switching different mics 987 00:42:12,480 --> 00:42:16,480 on off it's switching modes on the 988 00:42:13,920 --> 00:42:18,079 computer it's switching uh Power as well 989 00:42:16,480 --> 00:42:20,200 it's switching it from going to sleep to 990 00:42:18,079 --> 00:42:21,839 staying awake for longer periods of time 991 00:42:20,200 --> 00:42:23,760 and we also had things like wake on land 992 00:42:21,839 --> 00:42:25,760 and stuff like that so it was all a lot 993 00:42:23,760 --> 00:42:28,160 of fun kids are using it and can just 994 00:42:25,760 --> 00:42:30,520 walk up to it hit the buttons and yeah 995 00:42:28,160 --> 00:42:33,760 that's been me Duncan M pyic help me 996 00:42:30,520 --> 00:42:36,200 thank you thanks to P the community oh 997 00:42:33,760 --> 00:42:39,680 uh bleep 998 00:42:36,200 --> 00:42:43,960 bloop uh on Deck we have uh Billy Tang 999 00:42:39,680 --> 00:42:48,280 but first it's uh amber brown 1000 00:42:43,960 --> 00:42:53,839 with a yellow box full of 1001 00:42:48,280 --> 00:42:55,800 things hello um so I'm hi yes hi um so 1002 00:42:53,839 --> 00:42:57,880 I'm here to talk about the modern how 1003 00:42:55,800 --> 00:42:59,559 the maker Revolution is actually kind of 1004 00:42:57,880 --> 00:43:01,559 mundane these days but in a super good 1005 00:42:59,559 --> 00:43:03,680 way it's told in two 1006 00:43:01,559 --> 00:43:06,800 projects so you all you all have been 1007 00:43:03,680 --> 00:43:08,000 here obviously um but there's something 1008 00:43:06,800 --> 00:43:10,839 important 1009 00:43:08,000 --> 00:43:14,880 here it's 1010 00:43:10,839 --> 00:43:18,760 him could I make a curly boy but with 1011 00:43:14,880 --> 00:43:21,559 LEDs could I make a curly boy of RGB 1012 00:43:18,760 --> 00:43:24,800 LEDs yeah 1013 00:43:21,559 --> 00:43:24,800 yeah hi 1014 00:43:25,800 --> 00:43:29,119 Kevin it's been to be a bit brighter but 1015 00:43:28,440 --> 00:43:32,319 you 1016 00:43:29,119 --> 00:43:36,200 know introducing the RGB 1017 00:43:32,319 --> 00:43:37,599 boy it's based on sk6812 Mini e LEDs 1018 00:43:36,200 --> 00:43:40,040 surface mounted so you get that nice 1019 00:43:37,599 --> 00:43:42,119 flush thing there pcbs designed in key 1020 00:43:40,040 --> 00:43:44,480 CAD open source software and you can 1021 00:43:42,119 --> 00:43:46,319 order them in batches of five or so um 1022 00:43:44,480 --> 00:43:48,000 so I've got a couple of those at home 1023 00:43:46,319 --> 00:43:50,720 the frame I designed in open scad more 1024 00:43:48,000 --> 00:43:53,040 open source software and 3D printed it 1025 00:43:50,720 --> 00:43:55,480 uh and it's controlled by an rp240 which 1026 00:43:53,040 --> 00:43:58,240 is the same uh CPU as in the Raspberry 1027 00:43:55,480 --> 00:44:01,839 Pi Pico it is also chainable because all 1028 00:43:58,240 --> 00:44:03,400 of these are individual discrete units 1029 00:44:01,839 --> 00:44:06,599 which means that you can technically 1030 00:44:03,400 --> 00:44:10,520 have a boy of infinite length if we 1031 00:44:06,599 --> 00:44:10,520 melted down the entire Earth into curly 1032 00:44:11,160 --> 00:44:18,000 boy the actual diagram of the the how it 1033 00:44:15,400 --> 00:44:22,440 looks in the circuit design is actually 1034 00:44:18,000 --> 00:44:25,359 just that um and you know you have uh 1035 00:44:22,440 --> 00:44:28,520 that turns into pcbs and then you know 1036 00:44:25,359 --> 00:44:31,280 that ends up being how it looks 1037 00:44:28,520 --> 00:44:32,839 um and uh yeah so that's that's one 1038 00:44:31,280 --> 00:44:35,319 thing so I was manag managed to order 1039 00:44:32,839 --> 00:44:39,200 that get that all built with parts from 1040 00:44:35,319 --> 00:44:41,319 you know AliExpress from uh pcbs ordered 1041 00:44:39,200 --> 00:44:44,280 and so build this at home using pretty 1042 00:44:41,319 --> 00:44:45,760 much entirely open source tools and 1043 00:44:44,280 --> 00:44:47,160 these tools are all now available and 1044 00:44:45,760 --> 00:44:49,520 you can get them yourself I highly 1045 00:44:47,160 --> 00:44:53,480 recommend key Cad and open 1046 00:44:49,520 --> 00:44:56,800 scad select trains 1047 00:44:53,480 --> 00:44:59,800 right you know these things they're cool 1048 00:44:56,800 --> 00:45:02,960 I I like them I want 1049 00:44:59,800 --> 00:45:06,480 one I want 1050 00:45:02,960 --> 00:45:06,480 several can I make 1051 00:45:12,290 --> 00:45:15,630 [Music] 1052 00:45:15,760 --> 00:45:21,280 one stop apping hang on I'm going to 1053 00:45:18,480 --> 00:45:23,599 make sure that oh yeah it probably said 1054 00:45:21,280 --> 00:45:28,839 the right thing 1055 00:45:23,599 --> 00:45:32,040 um yay so um so this here is the split 1056 00:45:28,839 --> 00:45:35,079 flab zone welcome to it it's nearly 1057 00:45:32,040 --> 00:45:36,760 entirely 3D printed uh I us to say I 1058 00:45:35,079 --> 00:45:38,920 forgot to past the thing U so three 1059 00:45:36,760 --> 00:45:40,240 print flame frame and flaps the flaps 1060 00:45:38,920 --> 00:45:42,079 are printed with multiple filament 1061 00:45:40,240 --> 00:45:45,240 colors so they are one solid flap just 1062 00:45:42,079 --> 00:45:47,839 switching in the 3D printer um based off 1063 00:45:45,240 --> 00:45:51,839 David Kingston's work uh originally and 1064 00:45:47,839 --> 00:45:55,680 then uh uh another GitHub user made a 1065 00:45:51,839 --> 00:45:59,000 open scad of um 1066 00:45:55,680 --> 00:46:00,599 flaps but there is a problem with this 1067 00:45:59,000 --> 00:46:03,880 original design they 1068 00:46:00,599 --> 00:46:05,119 used this is the back of the original uh 1069 00:46:03,880 --> 00:46:09,000 original ones and that's a lot of 1070 00:46:05,119 --> 00:46:11,520 Arduino Nanos so can I do 1071 00:46:09,000 --> 00:46:14,640 better well so I got back to designing 1072 00:46:11,520 --> 00:46:16,880 some custom circuitry and doing some 1073 00:46:14,640 --> 00:46:20,200 circuit design and I I screwed up once 1074 00:46:16,880 --> 00:46:22,680 or twice but uh I did end up with uh 1075 00:46:20,200 --> 00:46:25,559 with something the core of it rather 1076 00:46:22,680 --> 00:46:30,520 than using an Arduino Nano is using this 1077 00:46:25,559 --> 00:46:33,440 ch22 V 3 it is a 48 MHz risk 5 1078 00:46:30,520 --> 00:46:36,200 microprocessor it has 2K of SRAM and 16k 1079 00:46:33,440 --> 00:46:39,400 of flash which is surely enough for 1080 00:46:36,200 --> 00:46:42,280 anyone it it's in a s 16 format you can 1081 00:46:39,400 --> 00:46:43,400 have 14 pins B gpio it requires One 1082 00:46:42,280 --> 00:46:45,480 external component which is the 1083 00:46:43,400 --> 00:46:47,520 capacitor so no clock or anything like 1084 00:46:45,480 --> 00:46:48,920 that and you think oh how much was 1085 00:46:47,520 --> 00:46:50,880 something like that like I dreo Nano is 1086 00:46:48,920 --> 00:46:54,599 $10 or something it could do do that is 1087 00:46:50,880 --> 00:46:57,319 $10 right maybe a dollar n it's 10 cents 1088 00:46:54,599 --> 00:46:59,680 each 1089 00:46:57,319 --> 00:47:01,920 and because it's fully uh 3D printed you 1090 00:46:59,680 --> 00:47:04,960 have you know the flaps here we using uh 1091 00:47:01,920 --> 00:47:06,960 Expressway a very nice font but it but 1092 00:47:04,960 --> 00:47:09,520 it is customizable so you could have uh 1093 00:47:06,960 --> 00:47:11,960 you know symbols and if you don't feel 1094 00:47:09,520 --> 00:47:15,040 like having a very nice refined font you 1095 00:47:11,960 --> 00:47:18,480 could pick something a bit different I 1096 00:47:15,040 --> 00:47:21,960 guess I will have all the code and pcbs 1097 00:47:18,480 --> 00:47:24,280 and all of that up here soon TM thank 1098 00:47:21,960 --> 00:47:24,280 you very 1099 00:47:25,400 --> 00:47:29,960 much thanks 1100 00:47:27,599 --> 00:47:32,720 I'm uh I'm looking forward to having my 1101 00:47:29,960 --> 00:47:35,200 own uh sort of emoji mood display made 1102 00:47:32,720 --> 00:47:37,880 with a clicky board very excited for 1103 00:47:35,200 --> 00:47:39,760 that um a reminder for the people coming 1104 00:47:37,880 --> 00:47:42,440 on over on this side the easiest way to 1105 00:47:39,760 --> 00:47:43,880 get from there to there is to go around 1106 00:47:42,440 --> 00:47:45,440 rather than going in front of the camera 1107 00:47:43,880 --> 00:47:48,640 and tripping over the seats that are all 1108 00:47:45,440 --> 00:47:52,200 here um with that in mind Alysa you are 1109 00:47:48,640 --> 00:47:55,800 on Deck but first uh 1110 00:47:52,200 --> 00:47:58,359 Billy hello um so I'm I'm talking about 1111 00:47:55,800 --> 00:48:01,640 a problem that I uh that some of you 1112 00:47:58,359 --> 00:48:06,040 might come across in just over a month 1113 00:48:01,640 --> 00:48:07,480 so I think um like the 31st of December 1114 00:48:06,040 --> 00:48:09,000 that's when everyone starts to make 1115 00:48:07,480 --> 00:48:12,079 their own New Year's 1116 00:48:09,000 --> 00:48:13,800 resolutions so I had a couple drinks and 1117 00:48:12,079 --> 00:48:17,400 some friends were like yeah let's go run 1118 00:48:13,800 --> 00:48:21,400 a half marathon so I begrudgingly said 1119 00:48:17,400 --> 00:48:23,720 yes now I needed to work up to uh 1120 00:48:21,400 --> 00:48:25,880 running up running that um distance so 1121 00:48:23,720 --> 00:48:29,559 what I did was like any good data 1122 00:48:25,880 --> 00:48:33,160 scientist I opened up my 1123 00:48:29,559 --> 00:48:35,119 laptop now the obvious uh solution to do 1124 00:48:33,160 --> 00:48:39,440 to get better at uh running is to go 1125 00:48:35,119 --> 00:48:41,680 outside and start running but hey um 1126 00:48:39,440 --> 00:48:44,440 that's not the solution I wanted to do 1127 00:48:41,680 --> 00:48:48,400 so now the problem statement is I want 1128 00:48:44,440 --> 00:48:49,839 to run a 5,000 uh sorry 5,000 m route 1129 00:48:48,400 --> 00:48:52,280 that starts and finishes from my current 1130 00:48:49,839 --> 00:48:55,119 location that's a very easy problem to 1131 00:48:52,280 --> 00:48:57,280 solve you run 2 and a half th000 that's 1132 00:48:55,119 --> 00:48:59,920 2 and a half th000 Metter that way turn 1133 00:48:57,280 --> 00:49:03,680 around and you come back you can run 1134 00:48:59,920 --> 00:49:06,760 around um in a 1 M uh circumference um 1135 00:49:03,680 --> 00:49:10,799 Circle to a half 5,000 times and you 1136 00:49:06,760 --> 00:49:14,280 you're good but that's not why we're 1137 00:49:10,799 --> 00:49:17,920 here um so I decided to make a website 1138 00:49:14,280 --> 00:49:20,920 uh that will uh generate a route for you 1139 00:49:17,920 --> 00:49:22,720 um what so there's a couple of Pros um 1140 00:49:20,920 --> 00:49:24,640 that I'm quite proud of it's website 1141 00:49:22,720 --> 00:49:27,559 only so you don't need to download any 1142 00:49:24,640 --> 00:49:30,319 apps it uses open data 1143 00:49:27,559 --> 00:49:33,079 uh so open Street Mouse for spatial data 1144 00:49:30,319 --> 00:49:34,680 it's private all R like when not sending 1145 00:49:33,079 --> 00:49:37,040 your location to anywhere else apart 1146 00:49:34,680 --> 00:49:39,880 from open street maps it's free there's 1147 00:49:37,040 --> 00:49:41,480 no external servers so I don't like if 1148 00:49:39,880 --> 00:49:44,000 you decide to use this outside of your 1149 00:49:41,480 --> 00:49:48,119 house I don't know where you live so you 1150 00:49:44,000 --> 00:49:50,440 won't see me um in the future Dynamic 1151 00:49:48,119 --> 00:49:52,599 the routes are randomly generated so 1152 00:49:50,440 --> 00:49:54,640 hopefully you have a better experience 1153 00:49:52,599 --> 00:49:56,880 now there's a one caveat around the 1154 00:49:54,640 --> 00:49:58,400 routes may change with each run 1155 00:49:56,880 --> 00:49:59,720 sometimes you might may be living in an 1156 00:49:58,400 --> 00:50:02,720 area where it's really hard to find 1157 00:49:59,720 --> 00:50:04,599 routes so you might just end up running 1158 00:50:02,720 --> 00:50:08,960 2 and 1 half th000 M down one way and 1159 00:50:04,599 --> 00:50:10,000 coming back but um we're going to go and 1160 00:50:08,960 --> 00:50:13,920 do a live 1161 00:50:10,000 --> 00:50:18,119 demo what could possibly go 1162 00:50:13,920 --> 00:50:22,640 wrong hopefully this will work 1163 00:50:18,119 --> 00:50:24,960 so what I'll so you can for uh those who 1164 00:50:22,640 --> 00:50:28,119 aren't from Melbourne uh we're at this 1165 00:50:24,960 --> 00:50:30,680 is our current location I'm going to 1166 00:50:28,119 --> 00:50:32,880 turn this all the way up to 5,000 meters 1167 00:50:30,680 --> 00:50:34,160 because that's problem statement and now 1168 00:50:32,880 --> 00:50:36,520 I'm going to pray that it's going to 1169 00:50:34,160 --> 00:50:40,960 give me a nice 1170 00:50:36,520 --> 00:50:44,599 route so you can imagine you're you're 1171 00:50:40,960 --> 00:50:48,040 getting ready to go for a run 1172 00:50:44,599 --> 00:50:48,040 hey not too 1173 00:50:48,760 --> 00:50:57,019 bad and we're one M off that Target 1174 00:50:53,420 --> 00:50:57,019 [Music] 1175 00:50:58,000 --> 00:51:03,520 there's um there's a Google Maps uh link 1176 00:51:00,079 --> 00:51:05,720 as well so if you do want to uh I guess 1177 00:51:03,520 --> 00:51:07,599 use Google Maps to tell you where to run 1178 00:51:05,720 --> 00:51:10,599 you can do 1179 00:51:07,599 --> 00:51:10,599 that 1180 00:51:10,960 --> 00:51:17,359 now going back so the solution that I've 1181 00:51:14,240 --> 00:51:19,520 just shown you isn't um done in in 1182 00:51:17,359 --> 00:51:22,599 Python but instead I'm going to talk 1183 00:51:19,520 --> 00:51:24,280 about uh the process to get there so I 1184 00:51:22,599 --> 00:51:26,079 use Python a lot in the prototyping 1185 00:51:24,280 --> 00:51:28,960 stages so I'm going to highlight some of 1186 00:51:26,079 --> 00:51:32,920 the open source libraries that I've used 1187 00:51:28,960 --> 00:51:36,040 so networkx and open street maps 1188 00:51:32,920 --> 00:51:37,799 networkx are fantastic libraries for 1189 00:51:36,040 --> 00:51:40,640 downloading and manipulating spatial 1190 00:51:37,799 --> 00:51:44,280 data pyit learn I use K means clustering 1191 00:51:40,640 --> 00:51:47,599 to reduce the problem size o tools it's 1192 00:51:44,280 --> 00:51:51,680 fantastic um constraint programming um 1193 00:51:47,599 --> 00:51:53,480 Library produced by Google volume uh to 1194 00:51:51,680 --> 00:51:56,559 generate the maps and share them in an 1195 00:51:53,480 --> 00:51:58,480 easy way and lastly um at one point I 1196 00:51:56,559 --> 00:52:02,359 decided to try and Host this as a a rest 1197 00:51:58,480 --> 00:52:04,359 API so use flasking uh G 1198 00:52:02,359 --> 00:52:07,680 unicorn now there's a couple things that 1199 00:52:04,359 --> 00:52:11,240 I've learned along the way um I found 1200 00:52:07,680 --> 00:52:13,520 this process fairly enjoyable but um so 1201 00:52:11,240 --> 00:52:15,880 I was eating quote eating my own dog 1202 00:52:13,520 --> 00:52:18,359 food I'll go somewhere I'll generate a r 1203 00:52:15,880 --> 00:52:20,400 see if it makes sense if not I'll go 1204 00:52:18,359 --> 00:52:24,280 back and try and iterate and improve 1205 00:52:20,400 --> 00:52:27,200 it next latency matters um so no one 1206 00:52:24,280 --> 00:52:28,920 wants to wait around for website when 1207 00:52:27,200 --> 00:52:29,839 um when you're really eager to go and 1208 00:52:28,920 --> 00:52:32,559 start 1209 00:52:29,839 --> 00:52:34,240 running uh backtracking isn't fun so who 1210 00:52:32,559 --> 00:52:36,119 wants to go down the road turn around 1211 00:52:34,240 --> 00:52:38,040 and come back out and continue your road 1212 00:52:36,119 --> 00:52:41,119 so that was one of the optimization 1213 00:52:38,040 --> 00:52:44,920 problems I had to I guess deal with and 1214 00:52:41,119 --> 00:52:47,720 lastly um sometimes the route that you 1215 00:52:44,920 --> 00:52:49,680 go down is will send you through traffic 1216 00:52:47,720 --> 00:52:51,880 so if you do want to use this don't run 1217 00:52:49,680 --> 00:52:51,880 through 1218 00:52:54,920 --> 00:53:00,280 traffic and uh we we are in Melbourne so 1219 00:52:58,200 --> 00:53:02,880 uh for those of you not from here also 1220 00:53:00,280 --> 00:53:02,880 look out for 1221 00:53:03,040 --> 00:53:11,280 trams uh ala you are on Deck uh but 1222 00:53:07,160 --> 00:53:11,280 first we have Alysa Cogan 1223 00:53:13,599 --> 00:53:19,520 hey hey so I'm here to talk about a 1224 00:53:16,200 --> 00:53:23,160 project that uh published last month uh 1225 00:53:19,520 --> 00:53:26,119 and we'll be working on it Sprints uh 1226 00:53:23,160 --> 00:53:27,359 so anyone's distributed python machine 1227 00:53:26,119 --> 00:53:30,520 learning 1228 00:53:27,359 --> 00:53:32,400 uh AI applications python libraries for 1229 00:53:30,520 --> 00:53:35,880 machine learning and AI tend to be a 1230 00:53:32,400 --> 00:53:37,640 little bit big um but lots of python 1231 00:53:35,880 --> 00:53:40,119 packaging tools are aimed at producing 1232 00:53:37,640 --> 00:53:43,280 single file executables put everything 1233 00:53:40,119 --> 00:53:45,359 in a zip app and it's like do you really 1234 00:53:43,280 --> 00:53:48,000 want to install 10 copies of cter and 1235 00:53:45,359 --> 00:53:51,280 PIR torch on everybody's laptop it's 1236 00:53:48,000 --> 00:53:53,200 like not so much okay well Linux 1237 00:53:51,280 --> 00:53:54,720 containers are great right then all 1238 00:53:53,200 --> 00:53:56,680 layer sharing you don't have to have 1239 00:53:54,720 --> 00:53:58,520 multiple copies of everything nobody 1240 00:53:56,680 --> 00:54:01,160 ever wants to want native windows or 1241 00:53:58,520 --> 00:54:04,880 python apps or Mac OS apps to run on 1242 00:54:01,160 --> 00:54:07,480 their desktop uh laptops do they um but 1243 00:54:04,880 --> 00:54:11,280 that's right we've got cond we've got 1244 00:54:07,480 --> 00:54:13,079 wagon we've got UV we can just like make 1245 00:54:11,280 --> 00:54:14,359 virtual environments directly on 1246 00:54:13,079 --> 00:54:16,680 destination machines and then use 1247 00:54:14,359 --> 00:54:18,440 hardlinks to fix everything right so it 1248 00:54:16,680 --> 00:54:21,640 looks like there's 10 copies of CER and 1249 00:54:18,440 --> 00:54:22,799 pytorch but there's really only one well 1250 00:54:21,640 --> 00:54:25,160 that's actually a pretty good answer a 1251 00:54:22,799 --> 00:54:27,200 lot of the time but not 1252 00:54:25,160 --> 00:54:30,240 always so 1253 00:54:27,200 --> 00:54:33,160 what if we could do virtual 1254 00:54:30,240 --> 00:54:36,280 environments and but we could actually 1255 00:54:33,160 --> 00:54:38,520 reliably share dependencies across the 1256 00:54:36,280 --> 00:54:40,720 virtual environments without having to 1257 00:54:38,520 --> 00:54:43,000 resemble everything on the target system 1258 00:54:40,720 --> 00:54:45,160 and without having to dump everything 1259 00:54:43,000 --> 00:54:47,040 into one runtime layer that absolutely 1260 00:54:45,160 --> 00:54:48,640 everything shares and has pie torch in 1261 00:54:47,040 --> 00:54:51,559 it has tensor flow in it and everything 1262 00:54:48,640 --> 00:54:55,119 you could possibly imagine so what does 1263 00:54:51,559 --> 00:54:58,599 VM STX do VM STX lets instead of just 1264 00:54:55,119 --> 00:55:00,079 having runtime and virtual environment 1265 00:54:58,599 --> 00:55:01,559 you can actually have more layers than 1266 00:55:00,079 --> 00:55:03,480 that and so you can have the runtime 1267 00:55:01,559 --> 00:55:05,280 layer with portable runtime environments 1268 00:55:03,480 --> 00:55:07,119 from a project called python build 1269 00:55:05,280 --> 00:55:08,880 Standalone then you put your framework 1270 00:55:07,119 --> 00:55:10,520 layers and then you put in that 1271 00:55:08,880 --> 00:55:12,920 framework layer you put your big pieces 1272 00:55:10,520 --> 00:55:14,640 so you put things like qu torch you have 1273 00:55:12,920 --> 00:55:16,079 a framework for tensor flow you have a 1274 00:55:14,640 --> 00:55:18,160 framework for 1275 00:55:16,079 --> 00:55:19,920 fmx uh and then in your application 1276 00:55:18,160 --> 00:55:22,039 layers all you have to do is put the 1277 00:55:19,920 --> 00:55:24,440 little layer on top which is the code 1278 00:55:22,039 --> 00:55:27,000 and the dependencies for your specific 1279 00:55:24,440 --> 00:55:30,119 application uh and so so you get to 1280 00:55:27,000 --> 00:55:31,480 nicely share your big framework bits 1281 00:55:30,119 --> 00:55:33,559 while still cleanly separating the 1282 00:55:31,480 --> 00:55:37,160 individual applications from each 1283 00:55:33,559 --> 00:55:39,760 other so how does it work um python has 1284 00:55:37,160 --> 00:55:41,640 this feature called site customize. py 1285 00:55:39,760 --> 00:55:45,480 which basically lets you play games on 1286 00:55:41,640 --> 00:55:47,240 interpreter startup uh and so VM stack 1287 00:55:45,480 --> 00:55:48,559 uses that now normally one of the 1288 00:55:47,240 --> 00:55:49,880 problems with doing this kind of thing 1289 00:55:48,559 --> 00:55:51,400 is virtual environments aren't actually 1290 00:55:49,880 --> 00:55:54,119 portable machine between machines 1291 00:55:51,400 --> 00:55:55,599 they've got absolute paths in them uh 1292 00:55:54,119 --> 00:55:57,559 and so what you have to do is you have 1293 00:55:55,599 --> 00:56:00,119 one small post installation script that 1294 00:55:57,559 --> 00:56:01,359 sorts out what what the proval 1295 00:56:00,119 --> 00:56:03,440 environment should look like on the 1296 00:56:01,359 --> 00:56:05,680 destination machine and what site 1297 00:56:03,440 --> 00:56:07,880 customization should look like and then 1298 00:56:05,680 --> 00:56:10,599 you wrap all this up in a system that 1299 00:56:07,880 --> 00:56:12,280 gives you reliable layer locking uh and 1300 00:56:10,599 --> 00:56:13,799 archive creation that gives you 1301 00:56:12,280 --> 00:56:16,240 consistent builds across different 1302 00:56:13,799 --> 00:56:19,000 things now anybody who's played 1303 00:56:16,240 --> 00:56:21,240 seriously with this kind of splitting up 1304 00:56:19,000 --> 00:56:24,039 of python environments might be going 1305 00:56:21,240 --> 00:56:26,640 hang on but Dynamic linking doesn't work 1306 00:56:24,039 --> 00:56:28,640 and it's like yeah can you have pie 1307 00:56:26,640 --> 00:56:31,920 torch in a framework layer pulling in 1308 00:56:28,640 --> 00:56:34,599 Cuda from a runtime layer and on Windows 1309 00:56:31,920 --> 00:56:38,559 you actually can add D directory just 1310 00:56:34,599 --> 00:56:39,960 deals with this everywhere else well 1311 00:56:38,559 --> 00:56:42,520 there's a reason everybody statically 1312 00:56:39,960 --> 00:56:46,240 links all their Linux binaries uh making 1313 00:56:42,520 --> 00:56:47,839 everything even bigger um I actually do 1314 00:56:46,240 --> 00:56:50,520 theoretically have a solution for this I 1315 00:56:47,839 --> 00:56:52,400 haven't actually implemented yet um but 1316 00:56:50,520 --> 00:56:53,520 uh I'm pretty sure it will work uh and 1317 00:56:52,400 --> 00:56:54,680 that's going to be one of the things 1318 00:56:53,520 --> 00:56:57,280 I'll probably be looking at at this 1319 00:56:54,680 --> 00:56:59,839 point but if if anyone has problems 1320 00:56:57,280 --> 00:57:03,119 along this kind of line um you can find 1321 00:56:59,839 --> 00:57:05,440 the documentation at those URLs uh 1322 00:57:03,119 --> 00:57:07,160 source code as well and yeah I'll be 1323 00:57:05,440 --> 00:57:10,079 sprinting on this on the Sprints Monday 1324 00:57:07,160 --> 00:57:11,240 and Tuesday if anyone has problems along 1325 00:57:10,079 --> 00:57:14,599 this kind of 1326 00:57:11,240 --> 00:57:17,839 line that's it thank 1327 00:57:14,599 --> 00:57:19,839 you it's uh it's so good to see a uh a 1328 00:57:17,839 --> 00:57:22,440 toour where more virtual environments is 1329 00:57:19,839 --> 00:57:24,960 actually the right answer to the problem 1330 00:57:22,440 --> 00:57:27,839 uh Adam Harvey you're on Deck uh but 1331 00:57:24,960 --> 00:57:31,480 first uh Al the price 1332 00:57:27,839 --> 00:57:33,079 hello hello my name's Alia and when I 1333 00:57:31,480 --> 00:57:35,440 was five my grandma gave me a book 1334 00:57:33,079 --> 00:57:38,000 called one small island using it as a 1335 00:57:35,440 --> 00:57:40,039 clipboard here inside it was the story 1336 00:57:38,000 --> 00:57:42,160 of MCC Island which is being saved from 1337 00:57:40,039 --> 00:57:43,880 overrun but which was saved from being 1338 00:57:42,160 --> 00:57:46,640 overrun by introduced species this led 1339 00:57:43,880 --> 00:57:48,280 to my lifelong interest in its story MCC 1340 00:57:46,640 --> 00:57:50,920 Island lies 1341 00:57:48,280 --> 00:57:52,799 2,136 km away from us about halfway 1342 00:57:50,920 --> 00:57:54,839 between Hobart and 1343 00:57:52,799 --> 00:57:56,400 Antarctica in fact if you attempt to get 1344 00:57:54,839 --> 00:57:58,319 direct directions from the Jeff shed to 1345 00:57:56,400 --> 00:57:59,799 mccor Island Google Maps will entirely 1346 00:57:58,319 --> 00:58:02,319 give up on 1347 00:57:59,799 --> 00:58:04,559 you at least Google Maps knows what it 1348 00:58:02,319 --> 00:58:06,920 is though its reviews are interesting to 1349 00:58:04,559 --> 00:58:06,920 say the 1350 00:58:14,480 --> 00:58:20,839 least so why is this important let's 1351 00:58:17,799 --> 00:58:23,079 take it back the discovery of MCC island 1352 00:58:20,839 --> 00:58:24,960 is credited to Captain friederick Hassel 1353 00:58:23,079 --> 00:58:26,880 who spotted the island from his ship on 1354 00:58:24,960 --> 00:58:29,760 July 11th 1810 10 will on a ceiling 1355 00:58:26,880 --> 00:58:32,520 Voyage out of Sydney 2 years after 1356 00:58:29,760 --> 00:58:34,400 discovery the um ceiling started on MC 1357 00:58:32,520 --> 00:58:37,079 Island and lasted for over a century 1358 00:58:34,400 --> 00:58:39,599 during this time period about 200,000 1359 00:58:37,079 --> 00:58:40,680 ferals and 2 million Penguins were were 1360 00:58:39,599 --> 00:58:44,160 killed for their 1361 00:58:40,680 --> 00:58:45,839 oil in 1875 the eagle Shipwrecked on 1362 00:58:44,160 --> 00:58:48,440 mccor island during a storm and the 1363 00:58:45,839 --> 00:58:49,839 survivors nine men and one woman were 1364 00:58:48,440 --> 00:58:51,880 forced to spend over two years on the 1365 00:58:49,839 --> 00:58:53,319 island living in a cave from what we 1366 00:58:51,880 --> 00:58:55,559 know this could be the first woman to 1367 00:58:53,319 --> 00:58:56,960 ever set foot on mccor island the crew 1368 00:58:55,559 --> 00:58:59,559 were rescued but tragically the 1369 00:58:56,960 --> 00:59:01,520 unknowned woman the unnamed woman died 1370 00:58:59,559 --> 00:59:04,799 the day before they were saved on the 1371 00:59:01,520 --> 00:59:05,880 11th of December 1911 Sir Douglas morson 1372 00:59:04,799 --> 00:59:07,520 established the first radio 1373 00:59:05,880 --> 00:59:09,920 communications link between Australia 1374 00:59:07,520 --> 00:59:12,480 and Antarctica building a radio relay 1375 00:59:09,920 --> 00:59:15,720 station on MCC Island stealing was 1376 00:59:12,480 --> 00:59:18,039 banned on the island in 1919 this marked 1377 00:59:15,720 --> 00:59:21,160 a end to the period of horrific 1378 00:59:18,039 --> 00:59:22,640 Slaughter in 1933 MCC Island was 1379 00:59:21,160 --> 00:59:25,799 proclaimed a wildlife sanctuary by the 1380 00:59:22,640 --> 00:59:28,000 Tasmanian state government and in 1948 1381 00:59:25,799 --> 00:59:30,720 the m Island research station was built 1382 00:59:28,000 --> 00:59:34,079 and operations started in March of that 1383 00:59:30,720 --> 00:59:35,720 year in 1997 MCC Island was granted 1384 00:59:34,079 --> 00:59:39,359 world heritage status by UNESCO giving 1385 00:59:35,720 --> 00:59:39,359 it the highest level of protection on 1386 00:59:40,119 --> 00:59:44,000 Earth MCC Island cealing history had 1387 00:59:42,720 --> 00:59:46,440 left the island a number of very 1388 00:59:44,000 --> 00:59:49,160 destructive introduced species goats 1389 00:59:46,440 --> 00:59:50,799 dogs horses and wers were eradicated and 1390 00:59:49,160 --> 00:59:53,240 finally the last feral cat was shot in 1391 00:59:50,799 --> 00:59:55,440 the year 2000 with their main Predator 1392 00:59:53,240 --> 00:59:57,119 gone the r rabbit population skyrocketed 1393 00:59:55,440 --> 00:59:59,960 causing massive massive environmental 1394 00:59:57,119 --> 01:00:02,480 Devastation in 2010 a major program was 1395 00:59:59,960 --> 01:00:04,640 launched to eradicate rabbits and 1396 01:00:02,480 --> 01:00:06,319 rodents fumigation of burrows poison 1397 01:00:04,640 --> 01:00:09,319 baits introduced viruses and sniffer 1398 01:00:06,319 --> 01:00:11,160 dogs were all used in April of 2014 the 1399 01:00:09,319 --> 01:00:13,440 mcari island pest eradication program 1400 01:00:11,160 --> 01:00:15,280 was declared successful after four years 1401 01:00:13,440 --> 01:00:17,400 of incredible effort and careful 1402 01:00:15,280 --> 01:00:18,799 monitoring this eradication has allowed 1403 01:00:17,400 --> 01:00:20,960 mccor Island to return to its natural 1404 01:00:18,799 --> 01:00:23,280 state as a sanctuary for many plants and 1405 01:00:20,960 --> 01:00:26,440 animals many animals call this wellplace 1406 01:00:23,280 --> 01:00:28,640 home including Penguins seals whales and 1407 01:00:26,440 --> 01:00:30,200 many other species of birds elephant 1408 01:00:28,640 --> 01:00:31,960 seals dominate the beaches especially 1409 01:00:30,200 --> 01:00:34,200 around the research 1410 01:00:31,960 --> 01:00:36,400 station elephant seals live in harms 1411 01:00:34,200 --> 01:00:38,200 where the leader and largest male is 1412 01:00:36,400 --> 01:00:39,520 called the beach Master there are four 1413 01:00:38,200 --> 01:00:42,559 main types of penguins the breed on 1414 01:00:39,520 --> 01:00:44,200 mccor island rock copper Royal adeli and 1415 01:00:42,559 --> 01:00:45,839 King Penguins the largest penguin 1416 01:00:44,200 --> 01:00:48,319 breeding col in mcor Islands at herd 1417 01:00:45,839 --> 01:00:50,000 point with over 320,000 Penguins nesting 1418 01:00:48,319 --> 01:00:53,599 during summer if you're wondering what 1419 01:00:50,000 --> 01:00:53,599 that sounds like 1420 01:01:02,460 --> 01:01:05,630 [Applause] 1421 01:01:06,319 --> 01:01:10,000 MCC island is also home to a number of 1422 01:01:08,119 --> 01:01:11,359 endemic species that are found almost 1423 01:01:10,000 --> 01:01:13,559 nowhere else in the world including the 1424 01:01:11,359 --> 01:01:15,079 MCC Island comant the critically 1425 01:01:13,559 --> 01:01:17,520 endangered cushion plant the Royal 1426 01:01:15,079 --> 01:01:18,839 penguin and two helmet orchids it's also 1427 01:01:17,520 --> 01:01:20,720 known for its incredible Mega herbs 1428 01:01:18,839 --> 01:01:21,920 including the mcari island cabbage which 1429 01:01:20,720 --> 01:01:25,400 is not a 1430 01:01:21,920 --> 01:01:27,280 cabbage Moran enjoys a tropical climate 1431 01:01:25,400 --> 01:01:29,839 with an average daily temperature of 4.9 1432 01:01:27,280 --> 01:01:31,359 de C Additionally you can enjoy 1433 01:01:29,839 --> 01:01:36,280 beautiful weather with an annual average 1434 01:01:31,359 --> 01:01:38,880 just 862 hours of sunshine and 3177 days 1435 01:01:36,280 --> 01:01:40,799 of precipitation per year with less hely 1436 01:01:38,880 --> 01:01:43,960 Sunshine than Forks Washington mcam is 1437 01:01:40,799 --> 01:01:43,960 obviously the better place for 1438 01:01:46,240 --> 01:01:49,240 vampires 1439 01:01:49,400 --> 01:01:54,160 Beno the Aurora stles is an icebreaker 1440 01:01:51,960 --> 01:01:56,440 ship that for many decades was a central 1441 01:01:54,160 --> 01:01:57,880 Lifeline for Australia's Antarctic and 1442 01:01:56,440 --> 01:01:59,440 sub Antarctic research stations 1443 01:01:57,880 --> 01:02:01,880 including resupplying the mccor island 1444 01:01:59,440 --> 01:02:03,240 station annually it retired after more 1445 01:02:01,880 --> 01:02:05,559 than 30 years of service and has been 1446 01:02:03,240 --> 01:02:07,760 replaced by the NOA which means Southern 1447 01:02:05,559 --> 01:02:10,319 Lights in Palani the the language of 1448 01:02:07,760 --> 01:02:12,319 traditional of Aboriginal tasmanians the 1449 01:02:10,319 --> 01:02:14,240 mcor island research station is resupply 1450 01:02:12,319 --> 01:02:16,039 only once per year and is a major 1451 01:02:14,240 --> 01:02:18,640 Logistics operation requiring the 1452 01:02:16,039 --> 01:02:19,920 movement of 484 tons of cargo from the 1453 01:02:18,640 --> 01:02:21,960 ship to Island by amphibious boats 1454 01:02:19,920 --> 01:02:23,160 helicopters and hoses I've only 1455 01:02:21,960 --> 01:02:24,760 scratched the surface of why mccor 1456 01:02:23,160 --> 01:02:26,450 andone po special and important if you 1457 01:02:24,760 --> 01:02:36,520 want to know more have a look at these 1458 01:02:26,450 --> 01:02:38,599 [Applause] 1459 01:02:36,520 --> 01:02:40,319 resources it's the first time I've been 1460 01:02:38,599 --> 01:02:42,640 pleased to hear about gentu at an open 1461 01:02:40,319 --> 01:02:42,640 source 1462 01:02:42,920 --> 01:02:50,279 conference uh on Deck we have uh Vicky 1463 01:02:46,960 --> 01:02:52,520 but first uh Adam Harvey who's going to 1464 01:02:50,279 --> 01:02:53,559 do our obligatory rust talk by the looks 1465 01:02:52,520 --> 01:02:56,520 of 1466 01:02:53,559 --> 01:02:58,279 it yep um so several years ago I 1467 01:02:56,520 --> 01:03:00,480 promised myself I'd never do another 1468 01:02:58,279 --> 01:03:03,359 live coding talk anyway hi I'm Adam I'm 1469 01:03:00,480 --> 01:03:04,799 a liar um I work for the rust Foundation 1470 01:03:03,359 --> 01:03:06,319 people have different opinions of us but 1471 01:03:04,799 --> 01:03:07,520 I'm sure nobody here has any experience 1472 01:03:06,319 --> 01:03:09,000 of being involved with a software 1473 01:03:07,520 --> 01:03:13,200 Foundation that gets undeserved bad 1474 01:03:09,000 --> 01:03:14,760 press Christopher um so anyway why am I 1475 01:03:13,200 --> 01:03:17,440 talking about this so I found myself 1476 01:03:14,760 --> 01:03:18,880 having to call into uh python from rust 1477 01:03:17,440 --> 01:03:20,400 a few months ago and I was amazed how 1478 01:03:18,880 --> 01:03:22,079 easy the interrup is so I'm actually 1479 01:03:20,400 --> 01:03:24,039 going to see if we can do this in 1480 01:03:22,079 --> 01:03:27,000 slightly less than 5 minutes can we 1481 01:03:24,039 --> 01:03:28,640 interrupt and call from part into a rust 1482 01:03:27,000 --> 01:03:30,359 module uh and the reason we're going 1483 01:03:28,640 --> 01:03:33,119 that way is cu the other way is harder 1484 01:03:30,359 --> 01:03:34,279 basically so we're going to do that so 1485 01:03:33,119 --> 01:03:35,920 why would we do why would we want to 1486 01:03:34,279 --> 01:03:37,400 write a python module in Rust well 1487 01:03:35,920 --> 01:03:40,440 native code almost painless 1488 01:03:37,400 --> 01:03:42,039 multi-threading easy C interrupt Etc 1489 01:03:40,440 --> 01:03:43,520 Python and rust are not friends their 1490 01:03:42,039 --> 01:03:46,520 family that was the Fast and Furious 1491 01:03:43,520 --> 01:03:47,880 reference I promised um so how are we 1492 01:03:46,520 --> 01:03:49,760 going to demonstrate this we are going 1493 01:03:47,880 --> 01:03:51,079 to implement this actually we're not cuz 1494 01:03:49,760 --> 01:03:52,799 I already implemented and I don't have 1495 01:03:51,079 --> 01:03:55,079 time but uh I'm going to show you how to 1496 01:03:52,799 --> 01:03:57,160 call into it this is how you find uh 1497 01:03:55,079 --> 01:03:58,960 arbitrary digits of pi uh it was 1498 01:03:57,160 --> 01:04:01,440 invented in Vancouver which is where I 1499 01:03:58,960 --> 01:04:03,799 live now so I'm very pleased about that 1500 01:04:01,440 --> 01:04:06,119 uh it was of course then improved by 1501 01:04:03,799 --> 01:04:09,079 everybody's favorite French polymath 1502 01:04:06,119 --> 01:04:12,200 overachiever uh fa Bel uh a few years 1503 01:04:09,079 --> 01:04:14,799 later um he has a c implementation that 1504 01:04:12,200 --> 01:04:17,279 is too big for this slide i port it into 1505 01:04:14,799 --> 01:04:20,000 rust very line for line because I am a 1506 01:04:17,279 --> 01:04:23,599 film major and I have no idea how the if 1507 01:04:20,000 --> 01:04:25,319 it works um okay so anyway so what if we 1508 01:04:23,599 --> 01:04:26,720 want to do it gives you nine digits 1509 01:04:25,319 --> 01:04:27,960 basically at a time because that's 1510 01:04:26,720 --> 01:04:29,880 essentially how many digits you can get 1511 01:04:27,960 --> 01:04:31,520 a 32-bit integer what if we want more 1512 01:04:29,880 --> 01:04:33,200 than nine digits at a time well we can 1513 01:04:31,520 --> 01:04:34,880 multi-thread this right like this is 1514 01:04:33,200 --> 01:04:37,760 embarrassingly parallelizable there's no 1515 01:04:34,880 --> 01:04:41,559 shared State it's really easy he says 1516 01:04:37,760 --> 01:04:43,599 optimistically so um I have implemented 1517 01:04:41,559 --> 01:04:45,119 the basic thing as I said in Russ this 1518 01:04:43,599 --> 01:04:46,440 is what the function signature looks 1519 01:04:45,119 --> 01:04:48,960 like uh for those of you who don't know 1520 01:04:46,440 --> 01:04:50,799 Russ it's just integer in integer out uh 1521 01:04:48,960 --> 01:04:51,839 but if we're going to do more than nine 1522 01:04:50,799 --> 01:04:54,520 digits we're going to need to put a 1523 01:04:51,839 --> 01:04:56,839 string out so here's what we're going to 1524 01:04:54,520 --> 01:04:59,319 do we are going to use a tool called 1525 01:04:56,839 --> 01:05:01,960 Maturin and we're going to use a uh a 1526 01:04:59,319 --> 01:05:05,760 library or a crate called crate is just 1527 01:05:01,960 --> 01:05:07,720 rust for Library um called P3 which I've 1528 01:05:05,760 --> 01:05:11,039 heard people say Pi oxide and it really 1529 01:05:07,720 --> 01:05:14,640 confuses chemists anyway uh let's let's 1530 01:05:11,039 --> 01:05:17,720 go so let's create a new project we use 1531 01:05:14,640 --> 01:05:20,240 P3 uh this has given us some scaffolding 1532 01:05:17,720 --> 01:05:21,799 it has given us a cargo. toml which is a 1533 01:05:20,240 --> 01:05:24,359 cargo manifest you all know what pi 1534 01:05:21,799 --> 01:05:26,160 project. toml is hopefully um we're 1535 01:05:24,359 --> 01:05:28,119 going to need a couple of other rust 1536 01:05:26,160 --> 01:05:30,559 libraries I'm going to use cargo it 1537 01:05:28,119 --> 01:05:32,680 feels a lot like UV weirdly enough okay 1538 01:05:30,559 --> 01:05:35,960 so let's go pull in the calculation 1539 01:05:32,680 --> 01:05:37,319 Library let's also I can't quite see the 1540 01:05:35,960 --> 01:05:38,920 bottom of my screen which is a little 1541 01:05:37,319 --> 01:05:39,960 unfortunate so we're just going to do 1542 01:05:38,920 --> 01:05:41,279 this we're going to use a thing called 1543 01:05:39,960 --> 01:05:43,319 rayon to do the 1544 01:05:41,279 --> 01:05:46,119 multi-threading okay so that should be 1545 01:05:43,319 --> 01:05:48,200 all we need oh and we also need a 1546 01:05:46,119 --> 01:05:50,680 virtual environment for reasons that 1547 01:05:48,200 --> 01:05:52,559 will become clear in about 2 minutes 1548 01:05:50,680 --> 01:05:54,200 hopefully so we're going to create a 1549 01:05:52,559 --> 01:05:56,160 virtual environment I'm aware that you 1550 01:05:54,200 --> 01:05:58,599 can do that more easily now with tools 1551 01:05:56,160 --> 01:06:01,160 but I am old so I'm going to do it this 1552 01:05:58,599 --> 01:06:03,799 way okay so let's actually write some 1553 01:06:01,160 --> 01:06:05,119 Rust so it's already scaffolded in uh 1554 01:06:03,799 --> 01:06:07,920 some basic stuff there's function 1555 01:06:05,119 --> 01:06:10,559 annotations for stuff we are going to 1556 01:06:07,920 --> 01:06:13,160 write a function called uh digits cu the 1557 01:06:10,559 --> 01:06:16,039 module is called Pi uh we're just going 1558 01:06:13,160 --> 01:06:20,240 to get rid of that we're just going to 1559 01:06:16,039 --> 01:06:22,520 calculate digits of pi very good okay so 1560 01:06:20,240 --> 01:06:24,200 we're going to call it digits we need 1561 01:06:22,520 --> 01:06:27,440 the start position and we need to know 1562 01:06:24,200 --> 01:06:30,039 how many we want we are going to return 1563 01:06:27,440 --> 01:06:32,359 a string okay 1564 01:06:30,039 --> 01:06:35,839 so basically we need to calculate the 1565 01:06:32,359 --> 01:06:38,440 start positions uh start plus count we 1566 01:06:35,839 --> 01:06:40,119 need to step by nine so this is a range 1567 01:06:38,440 --> 01:06:41,240 which we will turn into an iterator 1568 01:06:40,119 --> 01:06:44,240 actually we're going to turn into a 1569 01:06:41,240 --> 01:06:49,279 vector which is an array uh oh yes we 1570 01:06:44,240 --> 01:06:50,720 also need H okay we also need I forgot 1571 01:06:49,279 --> 01:06:52,760 this data 1572 01:06:50,720 --> 01:06:54,880 tools no we don't actually really need 1573 01:06:52,760 --> 01:06:56,319 it I'm just being lazy and also I'm 1574 01:06:54,880 --> 01:06:58,920 trying to minimize the amount of typing 1575 01:06:56,319 --> 01:07:00,160 I actually have to do here okay so we're 1576 01:06:58,920 --> 01:07:04,480 going to grab 1577 01:07:00,160 --> 01:07:08,599 that we are going to hope that LSP 1578 01:07:04,480 --> 01:07:12,880 starts responding quickly okay let 1579 01:07:08,599 --> 01:07:16,440 chunks yeah yeah I got it thanks X 1580 01:07:12,880 --> 01:07:19,440 string starts into 1581 01:07:16,440 --> 01:07:21,680 par jeez this is why I to I never do 1582 01:07:19,440 --> 01:07:21,680 this 1583 01:07:21,760 --> 01:07:27,839 againa map we need to format these into 1584 01:07:25,520 --> 01:07:27,839 two 1585 01:07:28,359 --> 01:07:35,440 strings we need to call into this 1586 01:07:32,480 --> 01:07:39,400 thing is I think the right number 1587 01:07:35,440 --> 01:07:42,559 of no okay here's what we're going to do 1588 01:07:39,400 --> 01:07:42,559 here's one I prepared 1589 01:07:43,680 --> 01:07:47,359 earlier okay 1590 01:07:47,480 --> 01:07:51,480 so there we 1591 01:07:49,799 --> 01:07:56,920 go 1592 01:07:51,480 --> 01:07:56,920 okay we are going to build it 1593 01:07:57,599 --> 01:08:00,680 hey thanks 1594 01:08:03,400 --> 01:08:07,119 Adam I once there was 20 seconds left I 1595 01:08:06,079 --> 01:08:10,559 just didn't think you'd be able to 1596 01:08:07,119 --> 01:08:13,200 compile it that quickly so uh yeah yeah 1597 01:08:10,559 --> 01:08:16,359 hey uh on Deck we have Peter Hall but 1598 01:08:13,200 --> 01:08:18,560 first uh Vicky who's going to uh give 1599 01:08:16,359 --> 01:08:21,080 you some ideas for this 1600 01:08:18,560 --> 01:08:26,080 evening right homeart this talk is 1601 01:08:21,080 --> 01:08:26,080 called three RPGs that won't fix you 1602 01:08:27,920 --> 01:08:32,000 disclaimer 1603 01:08:29,880 --> 01:08:33,799 but first of all for those who are not 1604 01:08:32,000 --> 01:08:37,159 familiar what is an 1605 01:08:33,799 --> 01:08:41,000 RPG really good productive 1606 01:08:37,159 --> 01:08:42,960 networking not quite storytelling an RPG 1607 01:08:41,000 --> 01:08:44,279 is storytelling it's also kind of 1608 01:08:42,960 --> 01:08:46,440 therapy 1609 01:08:44,279 --> 01:08:48,040 almost one of the things that I love the 1610 01:08:46,440 --> 01:08:49,560 most about role playing games is their 1611 01:08:48,040 --> 01:08:50,839 ability to connect you with other people 1612 01:08:49,560 --> 01:08:52,120 this has been particularly relevant in 1613 01:08:50,839 --> 01:08:53,920 the context of this conference which 1614 01:08:52,120 --> 01:08:55,759 brings us all together so that we can 1615 01:08:53,920 --> 01:08:57,640 talk to things talk to things talk to 1616 01:08:55,759 --> 01:08:59,560 people talk about things that make us 1617 01:08:57,640 --> 01:09:01,319 human beond the screen of our 1618 01:08:59,560 --> 01:09:03,839 programming languages so here are three 1619 01:09:01,319 --> 01:09:05,719 of the most uh therapy not programming 1620 01:09:03,839 --> 01:09:08,040 game uh uh role playing games that I 1621 01:09:05,719 --> 01:09:10,480 really enjoy we'll start with W home W 1622 01:09:08,040 --> 01:09:12,199 home is a beautiful rules light diceless 1623 01:09:10,480 --> 01:09:14,239 and even DM system that you can run 1624 01:09:12,199 --> 01:09:16,040 anywhere with your friends you can all 1625 01:09:14,239 --> 01:09:18,319 play as fuzzy animals like red W but 1626 01:09:16,040 --> 01:09:20,400 with a bit more gibli and as in like the 1627 01:09:18,319 --> 01:09:23,279 gibli movie part where you start crying 1628 01:09:20,400 --> 01:09:25,040 also um the story will take you from 1629 01:09:23,279 --> 01:09:27,440 jungles to cities and show you selfish 1630 01:09:25,040 --> 01:09:29,719 rulers and mischievous Spirits it's 1631 01:09:27,440 --> 01:09:30,520 really a simple system to pick up and 1632 01:09:29,719 --> 01:09:35,759 take 1633 01:09:30,520 --> 01:09:37,880 anywhere um the the pitch is trauma 100% 1634 01:09:35,759 --> 01:09:39,640 optional as an example of the sort of 1635 01:09:37,880 --> 01:09:41,279 things you can do with this evocative 1636 01:09:39,640 --> 01:09:44,600 system it gives you examples of places 1637 01:09:41,279 --> 01:09:46,520 that you can visit uh from this list you 1638 01:09:44,600 --> 01:09:48,600 can choose two things that a place can 1639 01:09:46,520 --> 01:09:50,359 do you can choose the way to the way it 1640 01:09:48,600 --> 01:09:53,199 looks uh and you can choose the 1641 01:09:50,359 --> 01:09:54,800 qualities that you like about it so for 1642 01:09:53,199 --> 01:09:56,159 instance we have a Grieving Soul 1643 01:09:54,800 --> 01:09:58,400 responsible to keep for keeping 1644 01:09:56,159 --> 01:10:00,320 everything in working order or folklore 1645 01:09:58,400 --> 01:10:01,280 about the place and this will inform the 1646 01:10:00,320 --> 01:10:04,800 way that you 1647 01:10:01,280 --> 01:10:07,840 play second Pitch 1648 01:10:04,800 --> 01:10:10,719 fesco what is Fiasco cinematic tragedy 1649 01:10:07,840 --> 01:10:13,199 guaranteed if you like Fargo if you like 1650 01:10:10,719 --> 01:10:14,840 anything uh about characters with 1651 01:10:13,199 --> 01:10:17,400 powerful ambition and poor impost 1652 01:10:14,840 --> 01:10:19,679 control you will love Fiasco uh it 1653 01:10:17,400 --> 01:10:22,880 requires twice as many dice as you have 1654 01:10:19,679 --> 01:10:25,120 players uh d6s and the playing goes 1655 01:10:22,880 --> 01:10:27,320 thusly set up you set up your characters 1656 01:10:25,120 --> 01:10:28,760 how they interact with each other how 1657 01:10:27,320 --> 01:10:30,640 they the places and things that are 1658 01:10:28,760 --> 01:10:33,679 important to them the objects that are 1659 01:10:30,640 --> 01:10:36,760 important to them this can be a tattered 1660 01:10:33,679 --> 01:10:38,600 birth certificate it can be uh the old 1661 01:10:36,760 --> 01:10:41,280 McCreary house that burned down last 1662 01:10:38,600 --> 01:10:44,040 year it's a very evocative system for 1663 01:10:41,280 --> 01:10:46,040 quickly getting into a narrative game 1664 01:10:44,040 --> 01:10:48,520 Act One how it starts your characters 1665 01:10:46,040 --> 01:10:50,560 are set up they have a plan they have 1666 01:10:48,520 --> 01:10:53,400 powerful ambition and put in pulse 1667 01:10:50,560 --> 01:10:55,840 control Second Step the Tilt what goes 1668 01:10:53,400 --> 01:10:58,560 wrong something will beond fire 1669 01:10:55,840 --> 01:11:01,679 something precious will be on fire act 1670 01:10:58,560 --> 01:11:04,640 two how it goes badly you use your dice 1671 01:11:01,679 --> 01:11:05,960 to choose various things uh that will go 1672 01:11:04,640 --> 01:11:07,880 wrong that will go right for your 1673 01:11:05,960 --> 01:11:09,520 character and work amongst you as a 1674 01:11:07,880 --> 01:11:11,480 table to figure out who has it worst by 1675 01:11:09,520 --> 01:11:13,120 the end of the game step four is the 1676 01:11:11,480 --> 01:11:15,239 aftermath you add up all of your dice 1677 01:11:13,120 --> 01:11:18,360 totals Whoever has the most and a 1678 01:11:15,239 --> 01:11:19,480 certain number of dice does the best uh 1679 01:11:18,360 --> 01:11:22,600 the 1680 01:11:19,480 --> 01:11:25,960 options range from you get off scotf 1681 01:11:22,600 --> 01:11:27,960 free to the worst thing possible death 1682 01:11:25,960 --> 01:11:30,840 is not the worst thing 1683 01:11:27,960 --> 01:11:34,440 possible pitch three eat 1684 01:11:30,840 --> 01:11:36,480 God yeah nice eat God is also a D6 1685 01:11:34,440 --> 01:11:38,920 system it is the most rules heavy of the 1686 01:11:36,480 --> 01:11:40,440 options here it is wonderful it is if 1687 01:11:38,920 --> 01:11:43,560 you've played Honey Heist it's kind of 1688 01:11:40,440 --> 01:11:45,159 like the same chaos Vibe um it's 1689 01:11:43,560 --> 01:11:46,679 beautiful if you like chaos but you 1690 01:11:45,159 --> 01:11:48,719 can't give up the dice that's my pitch 1691 01:11:46,679 --> 01:11:51,840 for you 1692 01:11:48,719 --> 01:11:53,800 so why should you play role playing 1693 01:11:51,840 --> 01:11:57,120 games why should you play these role 1694 01:11:53,800 --> 01:11:57,120 playing games 1695 01:11:57,159 --> 01:12:04,320 narrative um this particular talk is 1696 01:12:00,080 --> 01:12:06,400 inspired by uh the keynote and bringing 1697 01:12:04,320 --> 01:12:09,560 up ter pratchet because one of the 1698 01:12:06,400 --> 01:12:12,159 things that I like the best is everyone 1699 01:12:09,560 --> 01:12:13,760 knows the quote about an atom of Mercy a 1700 01:12:12,159 --> 01:12:16,040 molecule of Justice this is the bit 1701 01:12:13,760 --> 01:12:17,760 immediately preceding it humans need 1702 01:12:16,040 --> 01:12:19,320 fantasy to be human to be the place 1703 01:12:17,760 --> 01:12:21,520 where the falling angel meets the rising 1704 01:12:19,320 --> 01:12:24,400 ape and I think Terry prer H exactly on 1705 01:12:21,520 --> 01:12:27,679 the nose there so we are always telling 1706 01:12:24,400 --> 01:12:30,040 stories that's what fixes us make them 1707 01:12:27,679 --> 01:12:32,639 good why do you need these rules in 1708 01:12:30,040 --> 01:12:35,120 particular rules are a cage this is from 1709 01:12:32,639 --> 01:12:37,600 J Dragon they do incredible role playing 1710 01:12:35,120 --> 01:12:39,280 uh narrative discussions and stories 1711 01:12:37,600 --> 01:12:41,920 they're the uh game designer one of the 1712 01:12:39,280 --> 01:12:43,199 game designers behind wome I don't need 1713 01:12:41,920 --> 01:12:44,840 anyone's permission to do anything in my 1714 01:12:43,199 --> 01:12:46,040 make believe even then having a cage 1715 01:12:44,840 --> 01:12:49,639 sitting on the floor even if we're 1716 01:12:46,040 --> 01:12:51,199 ignoring it shapes how we play so and as 1717 01:12:49,639 --> 01:12:52,320 a final pitch number four this is not a 1718 01:12:51,199 --> 01:12:53,760 narrative game but you should come to 1719 01:12:52,320 --> 01:12:55,639 the blood on the clock tower s lunch 1720 01:12:53,760 --> 01:12:56,760 tomorrow Under the Stairs 1721 01:12:55,639 --> 01:12:58,880 thank you everyone for listening let's 1722 01:12:56,760 --> 01:13:01,080 chat about systems or Jango or 1723 01:12:58,880 --> 01:13:03,920 something thanks 1724 01:13:01,080 --> 01:13:08,480 Vicki that that was the last of our 1725 01:13:03,920 --> 01:13:11,040 lightning talks for today um if you uh 1726 01:13:08,480 --> 01:13:13,080 had a sudden strike of inspiration or if 1727 01:13:11,040 --> 01:13:14,320 you want to correct somebody or if you 1728 01:13:13,080 --> 01:13:16,159 just have something that you really 1729 01:13:14,320 --> 01:13:17,960 really want to tell people you can sign 1730 01:13:16,159 --> 01:13:21,280 up to give a lightning talk tomorrow 1731 01:13:17,960 --> 01:13:23,360 submissions will be open from whenever I 1732 01:13:21,280 --> 01:13:24,880 show up in the expo hall in the morning 1733 01:13:23,360 --> 01:13:28,120 I don't know probably before the keynote 1734 01:13:24,880 --> 01:13:30,280 I get yes um let's give a round of 1735 01:13:28,120 --> 01:13:31,679 applause to our wonderful AV volunteers 1736 01:13:30,280 --> 01:13:33,960 who made sure that most of the things 1737 01:13:31,679 --> 01:13:33,960 work 1738 01:13:34,360 --> 01:13:40,280 today and a huge round of applause to 1739 01:13:37,600 --> 01:13:40,280 our 14 1740 01:13:42,040 --> 01:13:46,800 speakers and uh here's Peter to wrap us 1741 01:13:45,239 --> 01:13:48,560 up for today thank you all it's been 1742 01:13:46,800 --> 01:13:50,840 great hosting as usual thank you very 1743 01:13:48,560 --> 01:13:52,239 much Chris that was incredible and we 1744 01:13:50,840 --> 01:13:56,679 loved it can we have a huge round of 1745 01:13:52,239 --> 01:13:56,679 applause for Chris our Lightnings are 1746 01:13:58,719 --> 01:14:02,080 all 1747 01:13:59,679 --> 01:14:04,320 right thank you everyone for wearing a 1748 01:14:02,080 --> 01:14:06,120 mask keeps everyone safe there are 1749 01:14:04,320 --> 01:14:07,239 people who couldn't be here without them 1750 01:14:06,120 --> 01:14:09,760 we do it for 1751 01:14:07,239 --> 01:14:11,520 them uh thank you to our sponsors we 1752 01:14:09,760 --> 01:14:13,360 could not do this without our sponsors 1753 01:14:11,520 --> 01:14:15,639 Platinum sponsor [ __ ] DB come on let's 1754 01:14:13,360 --> 01:14:18,080 get some clapping python software 1755 01:14:15,639 --> 01:14:21,639 Foundation gold sponsors Kraken and 1756 01:14:18,080 --> 01:14:24,880 Cipher stash sponsors Google elastic 1757 01:14:21,639 --> 01:14:26,760 Acorn startups at p multitudes and iy 1758 01:14:24,880 --> 01:14:29,639 and of course Linux Australia without 1759 01:14:26,760 --> 01:14:32,480 who we could not do 1760 01:14:29,639 --> 01:14:36,840 this running one of these is hard we 1761 01:14:32,480 --> 01:14:39,840 need to give a clap to our speakers 1762 01:14:36,840 --> 01:14:39,840 yes 1763 01:14:40,120 --> 01:14:46,920 volunteers and the AV 1764 01:14:43,040 --> 01:14:46,920 team they do a 1765 01:14:47,239 --> 01:14:52,400 lot and now self-organized dinner 1766 01:14:51,000 --> 01:14:55,320 there's no conference dinner it's an 1767 01:14:52,400 --> 01:14:57,280 unconference dinner so walk out of the 1768 01:14:55,320 --> 01:14:59,280 hallway hold your stomach to show how 1769 01:14:57,280 --> 01:15:01,400 hungry you are look around for people if 1770 01:14:59,280 --> 01:15:02,679 you see anyone who looks like this go up 1771 01:15:01,400 --> 01:15:05,040 to them and say hey do you want to go 1772 01:15:02,679 --> 01:15:07,080 out for dinner let's do it use the food 1773 01:15:05,040 --> 01:15:09,159 and drink channel in Discord uh there is 1774 01:15:07,080 --> 01:15:11,440 a pinned message there with instructions 1775 01:15:09,159 --> 01:15:13,400 on how to use it and some suggestions of 1776 01:15:11,440 --> 01:15:15,159 places you might want to go for dinner 1777 01:15:13,400 --> 01:15:17,400 uh also do it in person in the 1778 01:15:15,159 --> 01:15:19,239 hallway go out for dinner with in like 1779 01:15:17,400 --> 01:15:20,840 small groups we don't want to all turn 1780 01:15:19,239 --> 01:15:22,719 up at the same place no no way can 1781 01:15:20,840 --> 01:15:26,360 handle it 1782 01:15:22,719 --> 01:15:29,280 nosing indeed do not d Restaurant 1783 01:15:26,360 --> 01:15:32,400 please all right have a delightful 1784 01:15:29,280 --> 01:15:34,400 evening and we will see you at 9:00 1785 01:15:32,400 --> 01:15:37,400 tomorrow morning thank you very much 1786 01:15:34,400 --> 01:15:37,400 everybody 1787 01:15:39,450 --> 01:15:43,319 [Applause] 1788 01:15:40,220 --> 01:15:43,319 [Music]