Video summary
The Kiwi PyCon 2025 lightning talks offered a diverse array of insights ranging from neuroscience-inspired computing concepts to practical software engineering challenges. Angus Fisk opened by describing sleep as the brain's essential garbage collection routine, explaining how neurons strengthen connections through synchronized firing while sleep renormalizes synaptic strengths to preserve learning potential without erasing acquired knowledge. This biological metaphor set the stage for technical discussions on state synchronization and data management, such as Dominic's presentation of "Gears," a bidirectional programming paradigm inspired by quantum computing that allows models and views to sync efficiently without copying data, proving useful in high-performance fields like rocket engineering. Similarly, Andy Zoo demonstrated AnyWidget, which bridges Python backends and JavaScript front-ends using traits for state synchronization, enabling seamless integration between Jupyter notebooks and modern UI frameworks like React Flow without third-party dependencies.
Beyond theoretical paradigms, the speakers shared personal journeys and humorous anecdotes that highlighted the human side of technology development. Jay recounted his transition from creating DIY jewelry during lockdowns to crafting gifts, including a snake ring mistaken for an official Python symbol at PyCon Adelaide, while Sam Wolf humorously detailed his attempt to scan GitHub using fifty dollars in Google BigQuery credits to analyze food preferences at previous events—a query that remains running after sixty-three days due to its complexity. Josh Wolf's story of becoming one of Germany's first fully remote employees involved living out of tents and distributing food globally before settling in Taranaki, illustrating the adaptability required in modern work environments. These personal narratives were complemented by Richard Wesley's historical overview of aircraft speed limits post-World War II, which explained how swept wings solved sonic boom issues to enable faster jets like the Sabre until rockets eventually surpassed them.
The session also delved into critical lessons regarding software complexity and project management strategies that often defy initial expectations. Richard emphasized "Rule Zero," noting that simple UI changes can mask deep underlying complexities, as evidenced by his experience where a two-day task expanded over a month due to overlooked database constraints; he advised using concrete examples like Gherkin for behavior-driven development and breaking problems into iterative steps to catch edge cases early. Beno Rice added levity with an analysis of art choices in olive paintings, arguing that both artistic representation and gender definitions rely on arbitrary decisions rather than inherent truths. Charlotte rounded out the technical discussions by introducing Project Slippy, a system designed to collect Super Smash Bros. Melee replays at scale using homebrew software to extract data from GameCube consoles via FTP or Wi-Fi, which has evolved from a basic HTML proof-of-concept into a robust tool supporting live streaming and spectator modes for tournament organizers in New Zealand and beyond.
Read the full video transcript
Welcome to lightning talks.
>> Yeah. Uh so us and some 13 14 presenters
are the only thing standing between you
and there being no more conference.
>> So there'd better be 13 really good
talks.
Um, these all go for fiveish minutes.
Uh, we'll strictly enforce that. So, if
you hit five minutes, we will applaud
you off the stage very, very loudly.
>> Should we do a practice?
>> Let's do a practice.
>> Okay.
>> Stop.
>> I think they can do better. The the
applause was great, but we do need you
to stop.
>> They stopped much quicker than the
Australians did the first time.
>> That's true. But we could still we could
still improve it.
>> Hey.
>> All right. Applause.
>> Thanks, Chelsea.
>> Okay. Uh, shall we get this all started?
>> Do we have a timer first?
>> That's a bit to set up.
>> Where's Tom?
>> Okay. Somebody else have a laptop that
can
>> Wait, no. Ben,
>> Simon,
>> great.
>> Okay.
>> The conference, Simon, as opposed to
doing a lightning talk. Simon, you're
the you're the timer.
>> No. Yeah. I can vote for this one and
then take
>> Oh, great. Well, that works just fine.
Okay. Uh, so Angus, uh, you're up first.
>> Thank you very much.
>> Stop.
>> Hello.
>> Uh, excellent. This is starting. Cool.
Wonderful. So, hello. My name's Angus
Fisk. I'm from the University of Sydney,
and I thought this would be an excellent
opportunity to talk to you about my
favorite topic, which is sleep, which is
what I did my PhD on. Uh, and because I
still have enough of an academic ego, I
have to tell you the institutions I was
a part of. I did my PhD at University of
Oxford and I now work at the University
of Sydney and I'm really enjoying being
here at Kiwi Pyon. So with no further
ado, sleep your brain's garbage
collection routine. Your brain is made
up of neurons and you have billions and
billions of neurons. The thing is it is
not just about the number of neurons
which you've got. So the neurons are the
individual cells which make up your
brain. Humans, as I've got here with the
what I like to call the guys, gals, and
non binary powers representation, have
about 80 billion 80 billion neurons in
their brain. It is not uh they are not
spread evenly though. This big chunky
bit at the top, which is where we do all
of our thinking, only has about 10
billion brains. And we are absolutely
not 10 billion neurons. We are
absolutely not the ring leader in terms
of the number of neurons that we've got.
Elephants here actually have 257 billion
neurons. So we do not have the most
number of neurons in our brain but we do
have the most number of interactions. We
have about 100 trillion individual
sinapses which are the things which
connect the two different brain cells.
Now neurons talk through synapses. So so
we've got a neuron on the left here, a
neuron on the right here and then this
in the middle is a diagram of what
happens at the two when they meet. that
what we've got here is we've got a uh a
a diagram of the electrical potential
the electrical signal which the brain
cell is firing along. It comes to the
signups between the two releases a whole
bunch of chemicals and then that causes
another electrical potential in the
secondary cell which then moves on and
does all of its programming and whatever
it does. But this so this is this is a
very basic idea of of what they do. But
how do different brain cells learn to
talk together? Right? So we've got 80
billion 80 billion neurons and 100 100
trillion interactions and those did not
come about by chance. Those those are
being adapted every single day as we are
learning and we are doing things with
the world around us. The mechanism
behind that is what I've illustrated
here and it's called spike timing
dependent pli plasticity which is a fun
thing to go and Google if you want to.
Essentially neurons that fire together
wire together. So if you have one neuron
that fires and then a second neuron that
fires, if the second neuron fires after
the first neuron, then they get
stronger. So that's what I've
illustrated here on the left. The neuron
one at the bottom fires, the neuron two
on at the top, then fires a little bit
afterwards, that that connection gets
stronger. The opposite is also true. If
neuron one fires, but neuron two fires
just before neuron one did, that
connection gets weaker. Now, that is the
very basic idea about long-term
potentiation and it's fascinating to
read and please ask me more about this
and how they figured all this out in
Squid, which is how they did it. But if
you have a look at the arrows I've got
here, you'll see that they are not even.
So, the arrow for strengthen is about
twice the size of the arrow for weaken
because the time window to strengthens
to strengthen the connection between two
brain cells is about twice the size of
the time window to weaken them. Now, I'm
sure you can imagine the network effects
of this. If you let this run rampant and
then you have billions and billions and
trillions and trillions of these going
on over time, they will gradually get
stronger.
And this is what sleep is here to fix.
None of you are neuroscientists. I hope
so. You cannot tell me that I'm wrong
because this is hypothesis and vague,
you know, vague, you know, people are
still figuring all this out. But on the
left here, we've got, you know, a neuron
with a bunch of sinapses on it that all
start off at 100. During the day, you go
around, you do things, you learn things,
you figure things out, and most of them
on average, they'll get stronger. You
know, some will get a little bit weaker,
but overall on the left here, we start
at 300 as a total. We've got like 360
here in the middle. What sleep is doing,
it is renormalizing the strength of all
these sinapses. So, it is not removing
any differences. It's maintaining the
differences you have learned during the
day, but it is bring them back to a
normalized baseline. So you've still got
potential to learn from there. So this
is what I've got here on the right is
they've turned them all the way back
down so they they've got the same
relative differences but they but but
they but they are back to a more normal
baseline that you can then use. This is
what is happening happening during your
sleep which I think is fascinating but
just to give you a little bit of an idea
how can you use this in your everyday
work. This is why med you can sleep
during meditation. You can do this
process whilst you're meditating. It is
not just sleep that you do this. Whilst
you are uh whilst you are meditating,
you do it as well as when you are bored.
So this is why you should take a break
and have a nap whenever you're stuck on
something. Thank you very much. That is
the end of my
Thank you so much, Angus. Uh up next, we
all love it when things have APIs that
we can pull data off.
>> Mention J.
>> Oh, thank you. Up next, Jay on this
side.
and the thing that I just said about
APIs,
but you don't need an API. Please make
Simon feel welcome.
>> Hello. And this is a power grab. Um, I
have Home Assistant at home. A lot of
you probably do. Um, assistant has an
awesome awesome electricity dashboard
and I have powershop and 20 years ago or
something, no maybe 10, 10 years ago,
uh, I was with Wshop and they had an API
which may be reopened to the public in
the future, but there are no firm plans
at this stage. Fine, I have a smart
meter. Smart meter I can plug in into
their RJ11 port.
Uh, and um, okay. Um, you won't let me.
Fine. Fine. You know what? I'll look on
your website. Hey, what's that? Okay.
The detailed consumption file. H. In
that detailed consumption file, uh, is
halfhourly data. H, what does that do? A
quick inspector shows that it just does
a simple HTTP get request.
Nice. But to get the data for myself, I
obviously need a cookie.
Cool. remember user token. Ha, I can use
that. Easy enough. Um, I grab me some
Python uh requests,
build up my request parameters and
add my cookie in the par parameters and
um that leads to uh ICSV.
Um, this is my consumption for the 23rd
of October.
Uh, half hourly. Nice.
shove that into pandas. Um, tell it to
parse the date nicely and uh,
warning.
So, um, let's see. I just loop all that
uh, CSV data and um, add it up because
Home Assistant will every will have
everything double uh, will have uh,
sorry, not double summed. Uh so if it is
an odd hour, I just add it to the uh to
the previous hour and write everything.
Um on uh what was it? Daylight savings
time. Everything broke.
So I worked my way through that and uh I
write it into a different CSV. Now why
do I write it into a different CSV?
Well,
go back to the presentation and there um
I have this nice CSV where I have for
each hour well this is just one but I
can do it for every hour a state and a
sum because that I can use in Home
Assistant.
Home Assistant handily
uh has an import statistics. Um this
import statistics tool is a bit weird.
So that's why I needed to translate all
that um all that data that I got from uh
PowerShop.
But um
>> I got my daily usage.
Um could I have sniffed uh my Android
app? Sure I did. Guess what it does? It
does the exact same thing. It pulls in
the CSV and then translates it in your
Android app.
Thank you.
>> I uh I just love seeing what people can
do with Home Assistant. Uh you've given
me some ideas for making my solar array
work a bit better. Thank you for that.
Um up next, uh we had some real
difficulty getting uh Jay's microphone
here attached uh because it got tangled
up with some of the stuff they're about
to talk about.
>> Oh yeah. Uh, Dominic, you're over here.
Um, but first, Jay.
Hello.
I'm here to tell you a bit of a story
about me.
Uh, way back in the early days of CO, I
bought a pair of pliers, some side
cutters, and a handful of bits of
aluminium and copper. This wasn't ever
really intended to be a lockdown
project, but about a week after I bought
those pliers, no one was allowed to go
anywhere.
So, while everyone else was learning how
to make sourdough starters, I watched a
lot of YouTube, set about creating my
first few bracelets, and turning a whole
bunch of my dice into wearable jewelry.
I don't actually know when I took any of
these photos because for about the first
year or so, I wasn't confident enough in
my work to take any photos. Uh, but
these were all some of the very first
things that I ever made when I set about
making some jewelry.
Uh, over time, two pairs of pliers
wasn't enough. I uh ended up buying more
pliers, some hammers, uh a jewelry saw,
a few more pliers, some files, um other
bits and pieces, and slowly expanded
what I could do into more interesting
things.
I started experimenting with silver
around I think this was 200 uh 22
uh and turning some of the things that I
made into gifts for the first time.
Uh, a whole bunch of these ended up
going away to friends. Uh, the only one
that I still own is the labradorite
pendant on the ends there. Uh, which
you'll probably see me wearing at other
conferences. I didn't bring it with me
to this one.
Um, but the rest of these ones all
turned into gifts.
And
then for uh Christmas last year, I
started playing with some gold wire. Uh,
some blue opals, some white opals, uh,
lab created sapphires.
Uh, some of those pendants haven't been
taken off since I gave them to my family
at Christmas. Uh, massively outlasted
the durability I expected them to have.
Um,
I started buying more stainless steel
for a lot of the chain stuff and getting
into much larger, more elaborate pieces.
Uh, they all took way, way longer than I
expected.
They all proved to prevent new
interesting challenges I hadn't
expected. Like, if the front is too
heavy, none of them sit properly, so you
need to balance the weight with the back
of it as well.
I've been getting into playing with
different shapes and textures as well.
Uh, the spiky one on the side there.
I've made three of those now because
every time I make one, someone wants it.
And the just the color, I don't know
what that's for or where that gets worn
to, but I'm thinking maybe I find a way
to make it part of my outfit for a
wedding I'm off to next year.
Um,
funny story about that sneaker ring. Uh
the first conference I wore it to was
Pyon in Adelaide and I wore it because I
had made a cool snake ring. Uh an
attendee at the conference looked at the
ring and said, "Ah, that's quite a
proper." And I went, "What do you mean?
It it it's a piece of jewelry that I
made." Oh, but it it's a snake at the
Python conference.
Oh, yeah. Yeah. Okay. Yeah. No, I
intended that. That was deliberate. Um
uh but these are all the pieces that
generally end up in my day-to-day wear
these days. Uh I used to think my
favorite thing to do was make jewelry
and then I worked out my actual favorite
thing to do was to see other people
wearing my jewelry and then worked out
that my favorite favorite thing to do is
um talk about my jewelry.
The easiest way to do that, wear it.
Um, so I said I was going to tell a
story, and stories usually have an
ending, and this one doesn't yet. Uh,
stories should also have a point, and
this one doesn't really, either. Um,
except make shiny things. Show your
shiny things off. Maybe come and talk to
us about your shiny things. Put more
lightning talks in.
>> Oh, yes. And chicken.
Thank you so much, Jay. Um, Jay, I I was
looking at some of Jay's jewelry last
night at dinner and it genuinely made me
want to get back into making things and
also like commission a few pieces from
them as well. Um, but for now, let's go
from chains to gears and then back and
forth and back and forth with with some
Oh, I I was so proud of myself. be like
Chris forgot as well and I'm going to
remember this time. Thanks Katie for
reminding me. Um on this side is Sam
Bishop and we'll see at the end of this
talk if Chris remembers to to do that
bit the second time. This is going so
well.
>> But up next we have Dominic with Gears
birectional programming. Please make him
feel welcome.
>> Thank you.
So I have a background in uh uh quantum
computing and I now work at a rocket
company and that makes for some spicy
combinations and this is uh the result
of me thinking about how to solve a
problem that others have had and solving
it in a maybe a different way. So if you
want to build a rocket this is not real
rocket data but just a screenshot of
Desmos but often when you have rocket
data you want to look at hey this thing
looks weird can this other engineer
please look at that uh too. So you want
to give them the minimal amount of data
to have a look at it. Say you zoom in
and say you only want to grab this
amount of data and then you want to
share it.
But when you're building your own thing,
it has to be high performance. You have
a bunch of customer requirements because
you're doing new things. Um so you have
to write your own thing to some extent
and all software is written under some
amount of time pressure. So it's okay uh
you know that there are some changes
needed. For example, uh you might need
to separate the model and the view
controller because the way this was uh
used to be done is that when you change
things here, then it actually modifies
the like specific text box over there uh
so that it goes into the model instead
of uh actually when you have access to
the graph here, you just
uh modify the graph and then it uh syncs
to that.
So one way of architecting this would be
you know you define your model you have
some bounds for your requests and your
view and in the new architecture uh with
gears you define your state as hey you
have a gear of this graph state and uh
then you derive things where hey I don't
want to have the whole state I just want
to have access to the uh x range of the
request And uh you make a gear that is
connected and this lambda function will
get uh called whenever things change.
And you also want to have things go in a
reverse so that the graph gets updated
when uh the bounds change in the text
box. And then you compo can compose
together your UI by saying hey both the
request editor and the graph display
have mutable access to this little bit
of the overall uh state of our
application. And uh we can give the
output of our request editor when the
user presses the button to the graph
display. So that's another gear as well.
Um so this thing here is the most
complicated thing, but you can use
Python magic uh to uh make things a lot
simpler. So you can use a literal
literal magic mock and pass it into this
function and see what properties they
access and then generate uh the inverse
thing so that uh you
uh can go the other way automatically.
Uh this is a new paradigm. You can view
it uh in different ways. Uh one way to
view at it is hey it's just the observer
pattern and you found a way to compose
your uh observers. Uh good job. Another
way of looking at it is, hey, this is
ReactJS, but you've left out the HTML
stuff, but you know, you can use your
own UI thing and it's not tied into like
this one framework, which I find kind of
cool. Another way of looking at it is
it's actually uh birectional programming
in the sense of you can travel back in
uh time between like cause and effect.
And this is kind of where I think I got
the inspiration
for this from. So introducing quantum
computing in 30 seconds. Quantum
computers can only do operations that
can be reversed. So you can't sort a
list because that would destroy
information because uh at the bottom of
the program you can't get the unsorted
list back. So
uh with gears and with quantum computing
what you can do is you can transform the
information such that you keep the uh
ordering information on how to get back.
And with gears that would allow you to
mutate specific items while still having
all of your state consistent.
All righty.
Sorry that was a bit quick but only had
five minutes. So thank you.
>> So to summarize, things are about to get
simple. Then you show a lambda
expression
and then you talk about quantum
computing.
Uh five five minute talks. Um
Josh Wolf is on deck.
I did it. Uh but first uh Sam is about
to tell us about what they did with $50.
>> Okay. So uh for anyone who was there for
the battle decks yesterday, there was
much fun had and uh it got stuck in my
mind that it would be fun to find out
people had a lot of interesting things
on the chicken, pickle, and snack. And
uh as the battle decks were fun,
everyone loved the snack, everyone loved
the pickle, and everyone loved the
chicken.
>> But which one was loved the most?
I actually wanted to find this out with
data
by scanning all of GitHub.
So I wrote a test query. It was 300
lines.
It was short.
>> Yep.
Yep. And uh the first query ran really
quick. It but it only actually had a one
emoji show up in the test results here.
Uh just the one buried about 300 lines
down there. But um yeah, the uh first
result only had the one emoji. Sad.
So uh while it was just a subset of the
full query, which was 500 5,63 lines,
very big.
Look at that sidebar.
Yeah. So, that got fired up and it's
been running for a while now
and I can't yet answer who wins between
these three yet because it's still going
and may if that number is uh to be
believed possibly taken a lot longer
than I thought it might. I don't use
Google Big Query very often, so I
literally don't know if it's telling me
that's a 63-day query or it's just
telling me something else. So, I'm going
to find that out later.
because yeah, I have no idea if this $50
silly idea is now a $500 silly idea or
worse. So, if anyone actually knows Big
Query, feel free to talk to me later.
And that was it.
Thank you so much, Sam.
This next talk is about
>> Amber.
>> At least Amber is paying slightly less
attention than I am. So that's nice. So
this next talk is about working remotely
from a tent. Are we actually ready?
Because the last talk ran a little
short.
>> Lovely. Okay. So, please welcome Josh
Wolf.
>> Okay. So, um how many people here have
read this book, The 4Hour Work Week? So,
I read it. It's an old school book now.
Um I read it. The first step in there is
that you make your job fully remote so
that you don't get you're not locked
into a location. I read it a long time
ago. It took me a long time to execute
on it, but I did it in 2018.
I was living in Brisbane, Australia.
Beautiful city. Um kind of reminds me of
Wellington. They have we have the river
in Brisbane and we got the you know the
sea here in Wellington. Um that's a
co-working space in Brisbane I was
working from and I got a job working for
a company in Germany and I was their
first full fully remote um employee and
they wanted to become a fully remote
company and co came along and then they
had to do it overnight but I was the
first one. Um this is in Berlin. Uh it
has the highest number of vegetarian
restaurants of any city in in uh in
Europe for some reason. I don't know
why. This is the vegetarian butcher. Um,
some signs around Berlin here up with
the around diggerory. Please make you
know around stands and I make me nothing
out good before sentences. Um, another
vegetarian restaurant. And there's heaps
of Sudin um restaurants for some reason
there. Vegetarian Sudin restaurants.
There's two of them in that in that um
little town. I bought these glasses at
the market there. Get my Berlin kind of
vibe on. Um, heaps of bikes around there
and it's a really interesting place.
It's not at all what I expected. I
didn't know what I expected when I went
to Germany. Um, man, you'll love it.
These guys are like anti-establishment
to the max. Uber, go home. They want to
pay for everything in cash. They don't
want to People don't take cards there in
Berlin. Um, that's kind of what it looks
like. It's crazy. Um, I actually
realized my expectation of Berlin came
from playing Call of Duty. And I was
like, if the furer could see this place,
he would be spinning in his bunker. Um,
heaps of bikes there. I got around on
bikes and scooters. Um, it's a great
place. So funky. Um, really bohemian.
Um, and then I went to, uh, Paris and,
um, that's me looking at the Eiffel
Tower, eating a quason with my Berlin
glasses on. And I entered into a
hackathon there. I did heaps of
hackathons. Hackathons are a really good
way to make connections and get skills.
Um, did the whole hackathon over the
weekend in French. Stayed up for the
whole weekend and then we won an award
there. That's me looking absolutely
wasted. And there's the team that I did
the hackathon with. Then I flew back to
uh Brisbane from there after that and
went into a Haskell workshop and I was
using the D'vorak keyboard and I was so
exhausted I was like I'm going back to
WER. Changed my keyboard layout back and
discovered that I could no longer touch
type inwerty.
Um this is in Thailand in the in the
airport. This is um Lord Vishnu dancing
on um the snake uh Vasuki. The the
demigods and the demons are churning the
milk ocean. Um, that was back in Berlin.
I went back there. I've been there a few
times. It's quite cool. Um, this is in
Sweden. I wasn't sure what that building
was. I think it's a Stockholm. Yeah,
it's a it's a um something. I know.
That's the city hall. Okay. Graveyard.
Um, ABBA the museum.
Um, that's word lens. You know, it's
translating live in my camera. I went to
Mojang because I programmed in Minecraft
and um uh they did a video about the
some of the work I did for type 1
diabetes in Minecraft and so I went to
visit them. That's my first wife, Pum.
Um shout outs to Dwayne. Actually, it's
the fourth anniversary of her passing
away. She passed away in 21 four years
ago today. Um so I changed from D'vorak
to Hellmac, which is a genetically
it's designed by an AI. It's the
ultimate keyboard layout. Just a shout
out for that one there. Uh this is my
son Prolad. Um this was here in in uh
parliament. So this was um during the co
lockdowns. There's that big protest
there. Side note, I'm a Hari Krishna. We
came down did the chanting thing here.
Um stayed there for 3 weeks in a tent.
That's when I first started living in a
tent and we um we put a food kitchen
together and we distributed 3,000 plates
of food free to people there every day
for three weeks. And I was working the
whole time out of the tent. um great
cross-section of New Zealand community.
I think enough time has gone past that
it's a historical event now. Um and I
got this petrol generator which is how I
because it was co-working before now
it's petrol generators and um that's me
doing my Hari Krishna thing and um some
of the artwork from around there. Then
from there I met uh my now wife uh Donna
and then we moved to Tatanaki to a
community there and then we moved onto
this land and lived with some cows and
chickens in a tent for a year. I kind of
got used to it underneath the shadow of
the mountain which is beautiful. We
don't eat eggs. We trade them with the
neighbors. We get milk and food from
them. Cows have grown up uh quite a lot
now. So I worked out of that tent for
one year and then I get the company to
pay for me to go to speak at conferences
and then I stay there for an extended
period of work. This is India. Thank
you.
>> Yeah, if if you're wondering how I know
that was City Hall, it was where uh a
certain big blue tech company started
brainwashing me by ABBA. Uh I can tell
you that story later. We
>> have questions.
>> Yeah. Yeah. Yeah. I'm getting there. Uh
Richard Wesley, you're on this side. Um,
so we've gone from one set of holiday
pics to I think Amber is also going to
present uh her holiday pick.
>> Uh,
wait, no, no, sorry. Um, sorry. This is
not about chickens. I am stealing Veno's
uh intellectual property though. So, um,
talk about to KL Marx about that.
Anyway, um, I'm using Linux, so
therefore I can't actually see my notes.
So, um, so, uh, between 1936 and 1945,
some bad things happened.
Yeah, a little. Um, so, uh, I'm not
going to talk about those, but I am
going to talk about some of the stuff
that happened afterwards. Now,
aviation in, uh, the Second World War
commonly didn't get past 0.5 mark. Now
you can define the sound barrier or mark
1 as uh 1100 km/h at sea level um or for
the Americans some uh more custom units.
So uh in 19 so if we look at the
state-of-the-art at least in America in
1932 there was the uh P26 the peashooter
which I would not want to be flying a
combat plane called the peashooter. Um
it was 380 km/h and it was very quickly
replaced. Uh in by 38 the Ara Cobra was
going 626 km/h. In 41 the P47
Thunderbolt hit about 680.
Uh by the end of the war they had
started making jet fighters which could
go much faster but they were kind of
stuck around this 800 uh 880 sort of uh
speed until uh they just added more
force which worked um or they came up
with something better which was the uh
angled wing the swept wing. So what
happened? Operation paperclipip happened
which is basically uh imagine AI
training except it's scientists and you
go to Germany and you get you go to like
von brawn and you being co-pilot are
just like hi uh would you like to come
work for me and also I have a gun um and
uh we now need to fight the true enemy
of public healthare I mean communism.
So the Germans during the Second World
War did have some information. They did
some tests and they discovered that when
you're go your wing is going really
fast. If you have point 8 mark speed uh
at parts of the wing uh it will be going
faster than the sound barrier. This
causes sonic booms, tiny sonic booms
which increases the drag and cause
things as to shake and fall apart. Now
because of the pre pressure
differentials it's closer on the lower
side than the upside. Yeah. Uh, this
also is what causes Mac tuck, which is
where if you start going at that speed,
you start to pitch down and some planes
that were not made to deal with this
would just become uncontrollable.
So, there's some math and math is for
nerds, but thankfully I'm a nerd. Um so
the line when you have the air going
across it because it's swept uh there's
some cosine sign something but
essentially the wing is thinner than you
would expect uh perpendicular to the
wind. So you ended up with the Saber
which it went quite a lot faster. Um and
it was uh able to do that much lower
drag and then and uh then 1950 happened,
the Korean War happened and uh the Mig
15 happened and uh everyone in America
went oh no. So that was much faster. So
the Americans just kept putting more
force on it. Uh and it sort of worked.
Um, they made something called the Saber
Dog, which is cool. Um, but then, uh, we
came up with something, uh, well, the
Canadians came up with something better,
but we came up with something better
after that. Um, the Commonwealth
Aircraft Corporation, they made a bunch
of, uh, trainer aircraft and that sort
of thing, and they decided, you know, we
can we can make a jet aircraft. So, they
ended up making this. Uh so it's it was
the most powerful uh saber that was made
and they basically decided, yeah, we're
just going to cut out all the front bit,
put an engine in, put some better guns
in, just put some rockets on there.
Yeah, cool. Um it never fired a shot in
anger, weirdly enough. Um it did fly
around a lot during I think the uh
Indonesian emergency. Um but no one
really cared.
Uh and that was because while we were
making our good thing at transic
aircraft and it was super good uh the
Americans then just went supersonic
and uh then they made that supersonic
launch out of a rocket. So that's cool.
Uh there's a lesson to be had here about
building technology and making the best
technology and then just being
completely made irrelevant. So,
>> thanks.
>> I just said
>> Katie's up next. I I said it before they
even turned my microphone on this time.
I was ready.
>> Yes.
Thank you so much for uh more propaganda
from Big Bird, I guess. Slash Big
Melbourne.
So, up next we have Katie.
Um, but now for something else that
flies. This is about time or birds. It
It works either way. Please, please make
Richard feel welcome.
>> Thank you all.
So, you may be wondering why I uh am
wandering around the world talking about
time and uh waterfall and the reason is
that I'm one of the developers at duck
db. Uh, I work on time and uh, this is
going to be a chopped up version of a
talk I gave about two months ago and so
hopefully I haven't chopped too much out
of it. Uh, I can't stick around
afterwards. So if you want to get a hold
of me, I'm on Discord at Hawkfish and
that's my email and stuff. So what is
DuckDv? Well, here's a whole pile of
gibberish explaining supposedly what it
does. And there's the original Duck,
Wilbur, with our CEO, Hannis.
Uh,
and I wasn't going to put these slides
in there, but someone came up to me the
other day and had seen them before and
thought they were great. So, what is
duct DB? And if you go, you've seen
these these various databases mentioned
around uh in the last couple of days.
And where ductb fits in is in that hole.
It's an analytic inprocess database.
So, why am I talking about a database at
a Python conference? It's because duct
DB was originally developed as a Python
module. It is very easy to install. Just
pip install duct db. It has no
dependencies. So you don't have to worry
about all of that. You don't have to set
up a server and it works straight out of
the box without any configuration.
And it's all about performance. We have
state-of-the-art construction. We're all
database research nerds. We use columner
storage, a vectorzed execution engine.
We do everything deeply in parallel. We
have a query optimizer just like most
databases. And one thing we can do uh
that's we continue to work on and keep
getting better at is we can work on data
that's larger than your memory. So we
will spill things to disk and come back
and get it as we need it. So that's duct
DB itself. But what about me? Well, I uh
I'm only part-time because I tried to
retire and failed.
And what I work on is time. And there's
sort of three big things. The first one
is what's called temporal joins. And if
you've ever hung around with database
people, they're always talking about
joins. But they're always talking about
joins where you have two tables and they
are matched on equal keys. So you make a
wider table. Problem is that for time
generally you don't want that. You want
something with inequalities and nobody
does any research on that. I'm trying to
work on that. So first example uh
suppose you are uh in Battlestar
Galactica and you want to work out
combat pay for all of the pilots. You
have two tables. One of which is the uh
times the pilots are out on patrol and
the other one is the time the asylons
came and tried to kill you all. And so
you make what you can do with this is
create what's called a joint state table
which is when someone was in the air and
fighting the sylons. And to do this you
need to do a join which has two
inequalities in it. We have a great
algorithm for doing this and uh I
actually have it's not as fast as I
would like it and my project for the
next release is to make this even faster
but I did a a little benchmark the other
day and did 10 million rows so against
itself and it was able to run this in
three and a half seconds on my little
laptop here. So another type of temporal
join we have implemented uh this was
brought up also with the Polish talk is
is an as of join and this is just where
you you like have a set of uh trading
data and you want to know what your
portfolio was worth at a particular
point in time or you have time of use
tariffs for electricity or something and
you just join these two time series
together so that you can figure out what
the value of your portfolio or what your
electricity bill is. And uh we have this
in fact we have three different ways of
doing it. And one of the advantages of
SQL is that you just tell us what you
want and we go and figure it out.
Uh the last one here is called a
positional join. And this came because
we are part of you know the Python
ecosystem and we work with dataf frames.
And unlike dataf frames, SQL has
unordered data. But everybody working
over in dataf frame land has ordered
data. And they were surprised that you
couldn't just slap things together. So
we created this thing called a
positional join. And this also brings up
a little point which is one of the
things about being embedded is that we
can read data frames directly without
copying them. So there's no there's no
copying involved which is great for
performance
but the big thing I work on is the
windowing system. And what is windowing?
Well, you can think of it as being like
moving averages and things like that.
And where it came from in the SQL world
was originally in the days of COD, you
had single row.
>> All right. Sorry.
>> All right. Never
mind.
Okay, we're we are going to have to do
another rehearsal. So, when the timer
starts counting down, we do this finger
applause only so that doesn't drown out
the presenter. And then we applaud.
>> Chris, I don't think we actually told
them how to do that the first time.
>> Oh,
>> I'm so sure we didn't.
>> We're going so well this afternoon,
aren't we?
Canad
>> um who do we want to be next on this
side? I think uh Andy Andy's on on this
side. Um AV people, uh please keep me
miked through this um for reasons that
will become clear later. Um
>> there was no reaction over here
whatsoever.
>> It's fine.
>> Hey. Anyway, uh here's Katie.
Hey, hey, hey.
>> Chicken dopie
chicken. VM chicken source. Chicken
chicken in saw. Chicken chicken
>> chicken. Chick chicken
>> chicken. github.com entol/chicken
chicken
chicken chicken chicken chicken imports
this as chicken chicken chicken chicken
egg chicken chicken
return chicken egg chicken chicken
oh chicken
chicken
done chicken
stole Chicken
documentation. Chicken
chicken community.
Pull request. Chicken
play request
chicken. Chicken. Chicken. Plet.
Chicken. Egg. Chicken. Chicken. French
chicken. Chicken. Chicken. Chicken. Make
file. Chicken. Chicken. Chicken.
Chicken. Chicken. Chicken. Chicken.
Plet. Chicken. Chicken. Chicken. French.
Chicken. Chicken. Get text. Chicken.
Chicken. Chicken. International.
Chicken. Chicken. Chicken. CHICKEN.
>> You know, I'm not done.
>> Now.
>> Wait. There's more. I want to apologize
for battle decks yesterday. I may have
submitted chicken,
but I didn't create chicken. This guy
created chicken. That's Nicholas Tovy.
Um he created chickenpie but contrary to
popular belief he did not invent
chicken.
This is chicken.
This is a fully correct
um formatted scientific paper where
everything is chicken.
However,
there was also a presentation of
chicken. I apologize to those people in
the room who will remember what version
of PowerPoint this comes from. Chicken
chicken
Dr. Chicken University of Chicken. Now
chicken
chicken database chicken
chicken
mat lab chicken
medium chicken
chicken database. Chicken chickens
chicken binary chicken
chicken.
>> Uh, stop.
>> Chicken. Chicken.
>> Chicken. Chicken. Chicken. Chicken.
Chicken. Chicken. Chicken. Chicken. Sum
of chicken. Chicken. Chicken.
>> Thank you.
Is it actually like for real this time?
>> Yes.
>> Chicken chicken
>> chicken.
>> On deck we have Richard Foreshaw. I
remembered this time.
>> Yay.
>> And uh before then, please welcome Andy
Zoo.
>> Is it connected?
Oh, sorry.
>> Okay. Um,
>> sorry, I realized I messed up my talk,
so I need to do a little bit of work
first. Okay.
Uh, so a little bit about me. I've spent
the past 12 years working on Python and
C++ in finance. Um about in that time I
spent about two weeks uh doing
JavaScript. So I feel very qualified to
waste the last five or so minutes of
your conference speaking about
JavaScript.
Um obviously all of us in the room here
are really good at loading cool stuff in
Python.
Uh but to present that to nontechnical
users, we'll probably have to uh the
usual medium for that is the web
browser. Um and so we'll have to drop
down into another language like
JavaScript. A common place for that u
for us to start with is Jupyter
notebooks. So Jupiter provides this
mechanism called extensions where you
can bundle uh your Python data um with a
JavaScript library and publish an
extension and it provides a cookie
cutter to build such projects and it's
curated lists of all these cool
extensions.
But if we take a closer look at this,
um, so this is a list of the best
Jupyter extensions. Um, and sadly a lot
of them are dead, have no activity. And
a big reason for that is that, uh, under
the hood, a lot of things change.
Jupiter versions migrate, um, JavaScript
dependencies migrate, and us as Python
developers, it's really hard for us to
keep up with all these changes on the
JavaScript side of things. And not only
that, once you have your widget, if you
want to make it useful in other uh
locations, like if you want to make it
available on a Python web framework, um
there's so many frameworks out there, uh
Streamlit, Nice Guy, so forth. Um and
it's just impossible for widget owners.
On the flip side, if you uh have a UI
framework, uh in order to get traction,
you need to uh provide users with all
the extensions they might want to use.
Um, and you get the idea. There's tens
of UI libraries, hundreds of widgets,
thousands of dead extensions.
So, what where any widget comes in here
is any widget says, "Look, what we as UI
frameworks care about or need to know
how to do is how do you synchronize
state between your Python uh data and
your front end."
So, a model here is just some typed data
class. Um, and the UI frameworks,
they're good at doing things like
handling communications over websockets,
how to debounce callbacks and so forth.
Uh, and so if you're writing a widget,
now all you need to do is if the user
clicks on something in JavaScript, uh,
you can then set up what callback you
want to run in Python using dot traits.
On the flip side, if you've changed some
data in Python, then you can register a
call back in JavaScript using any any
model.on on.
And so now, of course, I have a quick
little demo of that.
Uh, so the only thing I want to
highlight here is that there's no third
party dependencies here. If I want to
use uh this cool financial plotting
library called lightweight charts, um,
this is just pure Python code with a
JavaScript string embedded. Now I have
some code to generate random time series
data.
And then bam, it works in my browser.
And uh if I want to iterate it on it
like uh if I want to change the
background to green
just like you would in northern notebook
I just change that code run it again.
Now it turns green.
Or maybe I want to update the data. So I
do data
and the data changes.
uh a slightly cooler example that my uh
intern Sophia has helped work on here.
Uh so I won't run this again, but you
can see here um we manage a lot of
different types of data and we want to
look at the dependencies between that
data. So we can use a graph to visualize
that. Um and in Python, if I want to
understand um what all this data was,
it's kind of really difficult. But with
a JavaScript uh application like react
flow, it becomes easy. I can select
data. Um, and then I can use traitlets
to link it. Um, and you can see now I've
used uh link to uh get some tags here. I
can clear those and then they will
unselect and so forth.
Thanks guys. That's it.
>> Thanks. Thanks. Thanks Andy. Thanks
Andy. Okay. Um,
uh, regrettably, Beno's up on this side.
>> Yeah. Uh, and, uh, please thank Richard
for sure.
Oh, wait.
That was a shortcut. I shouldn't have
done that.
>> Good segue. I love it. Um, we're we're
all here at Pyon to learn things, I
hope. Uh but I've I've learned that uh
best way of learning things is often
from doing things wrong and I'm hoping
to share one thing that I did wrong and
some lessons so that uh you don't make
the same mistake.
Uh I work for a on demand delivery
company called Instatra. They like to
deliver all kinds of stuff whenever you
want it. And one of the things we do at
the end of a job is we uh show an
invoice for the customer. Uh we had this
um horrible old old invoice from the
original and we wanted to make it nice
and sparkly.
Um and give me a woo whoever says it's
just who whoever's heard it's just a UI
change.
It's just a UI change. Right. There is a
little bit more to it. We wanted to add
some more line items just to you know
give um customers some more clarity but
we've recently done some database
updates to uh that I thought uh it it
will support this easily. So it's just a
UI change, right? Uh we use BDD. Um
which is great. I love it. Uh but um
given the simplicity of this task and uh
my 20 years of experience, my ego
stepped in and said we don't need to do
this. We can just go from uh what we
thought to straight to coding.
What could possibly go wrong? Here's
what here's a short list of wet run. Uh
yeah, so we our our thing that we done
to support this in the database didn't
support it at all to different use
cases. Uh we wanted to show GST
outbreaks um breakdowns to the customer
and our GST storage and data was just
all over the place. We wanted to do
other rules and say this is your weekend
charge and those ends up being super
super complicated. We forgot we email
invoices to customers. I don't know how
we did this. Uh and then that was like
well now we have to support all of these
all these email clients. In short uh
something that I thought would take a
couple of days uh was in progress for
over a month.
So what did we learn? What did I learn?
And what can I share with you? Uh I'm
calling this rule zero. We live in a
complex world and we work on software
which is in itself complex. So nothing
is ever as simple as it seems. Uh I have
to remind myself of this every day and
it always turns out to be true.
Um discuss everything. discussing things
I think uh is like a little lubricant
for your brain and it really kind of
unlocks hidden problems that your
subconscious is trying to tell you. Uh
so discussion works. My tips for
discussion of have worked for me is uh
talk to other people, talk to AI. Who's
ever done uh rubber ducking? Yeah, talk
to rubber duck. Uh or you can try
talking to yourself. Uh I've done all of
all these things. I would recommend
though uh it's not usually wise to talk
to yourself when there are other people
in the room. Uh you do get some strange
looks. Uh use examples. Uh because we
use BDD, we use Girkin. Uh just like uh
discussing with with people who kind of
unlocks things in your brain. I also
think that writing things down tends to
slow your brain down and makes you think
more about what's happening. And usually
you're halfway through writing an
example and your brain goes, "Hey, you
might have forgotten this case or that
case." So using examples, uh, definitely
recommend that.
And break things down. Very simple. Just
iterate. We're all taught to iterate and
it works. You know, looking back on the
that that invoice, there are at least
four things that I could have broken
that down into and make the problem
simpler. Um, I wrote a thing about
iterating on my blog a few weeks ago and
it's not only good for your business and
your software. I think it's also good
for your mental health and your sanity.
Uh, QR code incoming if anyone wants to
check out what I wrote about iterating.
But those are my tips. Uh, I hope they
are useful and thank you very much.
>> Thank you so much, Richard.
>> And so because this is my like fourth or
fifth iteration of doing this little
interstitial bit, uh, I now know without
Katie pointing, uh, that I need to let
you all know that Charlotte is up next
on this side.
Um but like one of the great things
about these conferences in this
community is that there is a lot of uh
sort of gender expansiveness and and and
gender exploration. And it means that we
get to especially in these lightning
talks uh hear people talk about gender
uh from a bunch of different
perspectives which is what No, hang on.
This is a cisgender heterosexual man. I
can't be right.
Unfortunately, Beno Rice.
>> Um, so yeah, I'm not here to talk about
gender. I'm here to talk about art. Um,
I am, as everyone knows, a noted art
scholar. Um, I from my extensive and
deeply researched understanding of art,
I know that art is all about choices.
And uh one of the choices that my
esteemed art colleague Chris uh made uh
both of us made, we staying at the same
hotel, which is by accident. We didn't
choose to do that as a coordinated
thing, but we ended up there and we ran
into each other at breakfast and we saw
some art.
Um the hotel chose this piece. They also
chose to print it with the watermark.
Um they also chose this piece and it was
studying this piece that really led us
into a very deep and you know scholarly
discussion um about the choices in this
work. Um let's look at some. So first
talk about perspective because it took
me ages to work out those ones are
playing limbo.
Um but then we can talk about light art.
You know light and shadow are very
important things in art. From these ones
here we can tell that the light's coming
from kind of over there. But then what's
this? That's coming from over there. Uh
if if those lights are there, then what
are these shadows? Why are these
shadows? Um and and looking further,
what's this?
Is that a ring light?
But back down here. Um so the these
these two olives are wearing clothes. Um
this one is wearing heels.
This one appears to have removed part of
a bikini.
From this we can assume two things
neither of which are good. Uh the first
is that all the female coated olives are
native naked. And the second is that the
gender of an olive appears to be
determined by whether their garnish
faces up or down.
Um, so this led us into a deep rabbit
hole as to who this artist here. So
let's learn about the self-proclaimed
rock star of the art world, Michael
Godard.
Um, so in order to do deep research into
art, you clearly started their website.
Um, he's got some photos here. Let's
have a look at some of those. You can
hear this.
Um
I he you'll also be shocked to find out
he lives in Las Vegas. Um celebrity. I
don't know. I feel like I should know
who this is, but I don't. But what I do
know is he left a time stamp on it. Um
that's Oussie Osborne. Um and it's nice
to see that, you know, X the everything
app is still around somewhere. He chose
all of those photos to put on his
website. Um but back to the primary
source material. We look at his
paintings menu and what's the what's
that?
Respect the olives, I guess. Uh but
what's this undercarriage? I don't
understand it. But back to gender. Um so
we've established the rigorous analysis
that olives have gender apparently. Um
religion is also here. Um and here is
the eternal struggle between the
feminine and the masculine, I guess. But
even artists, you know, artists grow and
they discover new things about
themselves and the world. And at some
point, Michael discovered that there are
multiple ways to depict gender in art.
Apparently, girl can also be strawberry.
Um, I'm also starting to get a bit of an
idea of what his worldview is like.
Um, but here's an interesting one. This
is a tptic, uh, which I think depicts a
a search for sort of selfidentity and
self-improvement,
um, followed by a realization that
they're already awesome and who cares.
I I think that's what it means. Anyway,
um but you know, it's also important in
art to acknowledge uh influences and
other great historical works.
No, but seriously,
and sometimes you need more than one go
at it.
Uh and given that, you know, we've we've
established that olives and strawberries
are genders, this must be the 13
genders.
Um, but again, like could I own a piece
of this art? The answer is sort of. Um,
um, or maybe you could meet it. No, I
guess not. Um, but surely his worth
works are worth a bit. I mean, that's
some stuff. But then Reddit said, "Oh, I
uh found it at a thrift shop." Um, and
whoever owned this definitely wore their
hair in a greasy ponytail or they're a
Vegas or worked in a bar. I mean, this
thing
My cousin's ex had this painting. He was
a bartender and had a greasy ponytail
and apparently it went for the grand
total of $8. Um, but if all else fails,
you could buy this book of the man. Oh,
or in conclusion, both art and gender
are about choices. And I might may not
know much about either, but I think I
know more than he does.
>> Thank you. Thank you, Beno, for
summarizing uh my pain from this morning
much more eloquently than I possibly
could have. Uh time for our last
lightning talk.
>> No, it's Charlotte. It's amazing. Let's
go.
>> Oh, that is a small window. Let's see if
Mac OS will let me. Oh gosh, there is a
lot of input delay on a capture card.
Uh,
>> hey. Okay, great. I'm going to be
talking about collecting video game
replays at scale. So, in the beginning,
the universe in the beginning, the
universe was created. That was a little
boring. We'll get to 2001 where Super
Smash Brothers Melee for the Gamecube
was released. And this is way more
interesting. Let's catch up on about 17
years of Super Smash Brothers Melee.
Wow.
>> Yo. Oh no.
>> Woo. We're all experts now in Super
Smash Brothers mainly. So in 2018, Fizzy
36 came up with this project called
Project Slippy. Uh this is to collect um
and replay, you know, replays of a game
that was never supposed to have replays.
So it's actually quite a technical
achievement. So awesome. We're all
caught up now. And so, you know, we get
these replays off tournament consoles.
How do we get them off the consoles?
USBs, of course. But hang on. Melee was
released for the Gamecube and that looks
an awful lot like a Wii. But
unfortunately, Nintendo pulled a sneaky
and released the Gamecube again, but
it's a Wii now and we all fell for it.
And we run Gamecube games on the Wii
with a homebrew app called Nintendo by
uh Fix Fix94 and a whole bunch of other
people. Um, and then Slippy Project
forked by the Fizzy by Fizzy and all the
Project Slippy people. And then I forked
it again uh to add FTP functionality.
What is the FTP functionality? Well, the
Wii has a revolutionary new thing called
Wi-Fi to connect to the internet. Yeah.
Or with or Ethernet with a compatible
adapter. Um, yeah. So, this allows the
console to connect to the server. Uh,
that's a game capture down the bottom.
And we can see here it connects to the
server. You can't really see it, but
it's writing live the file live. And,
you know, it's pretty cool, right? Um,
so, you know, you can click the replays
from all the consoles at your
tournament. Um, and you can if someone
hits a set clip, they can go back and
watch it later. Um, yeah. So, the
initial version is, uh, looks kind of
like this. This is the web UI. It's very
ugly. Uh, and it just shows, you know,
it's being uploaded. And later on, I
added some fun stuff to like be like,
oh, you know, you can see, you can
filter it, you know, by the character
and stuff. You can, you know, you'll be
able to find it a little easier. But
like, why wait until the replay is
finished? Um, so, you know, we can
actually just pipe the data directly
into the slippy, uh, replay viewer. Uh
so you know we could see so now you
could watch a game remotely uh from you
know uh a million miles away if you
wanted. Uh and you know that might
actually suck to hit your server that
much. So you could uh you could use a
relay like Slippy TV which is again not
something made by me but it looks a
little bit like this. Um and you know
there's an extra about 300 mills of
delay because we know we're going back
to America but it doesn't really matter.
There's about 2 seconds of delay
inherently anyway because the Wii is not
great. Um, and then you know, all the
stuff to get it back into the replay
viewer, which is a forked version of
Dolphin, which is a Wii and Gamecube
emulator. Um, yeah. And then there's
some other stuff too that I also didn't
make, like spectator mode, which is a
fork, of Slippy L, which is a fork of
um, yeah, and, um, this allows you to
view the game in a browser, which is
pretty cool, too. There's a bit of lag
and jitter because for reasons. Uh, I
mean, the reason is that it's not play,
it's not emulating the game. It's just
showing the state of the replay because
you know it's uh the replay is more than
just the inputs. Um yeah it's yeah
there's no like interpolation and stuff
like that cuz in emulator you can just
play forward and reync when you get out
of touch. So you saw the ugly web UI
version at the start. It was a proof of
concept. It's about 500 lines including
the HTML in the file. It's just a blob
and you know I've sort of bolted on
stuff and stuff and stuff and stuff and
now it's you know it's big and it's ugly
but it's it's a proof of concept. It's
agnostic to the client, which is um you
know because it's just FTP at the end of
the day. Um yeah, so hopefully someone
wants to sees this, thinks it's really
cool, and comes along and writes a way
better server than I can and has, you
know, actual design skills, um you can
follow me on all of the places, but more
importantly, if you are a tournament
organizer watching this either now or in
the future and this seems really cool to
you, please uh contact me. Uh this is
only used in one local and one tiny city
in one tiny country. Speaking of which,
go to your locals. Uh and if you're in
Wellington, they're at Respawn Esports
Center, 9 Minute Street. Uh I'm on the
team that helped run those. Wednesday
nights and Sundays, there's CS and
Christ Church at Oakland Hamilton. If
you Google New Zealand Smash Discord,
you'll probably find it. And obviously
in Australia and all over the world,
there are scenes. Uh and special thanks
to all of these people, the Slippy
contributors. And a special shout out to
Nichollet who helped me with various
questions about C programming because
again I'm not a C programmer. Python.
All right. Thank you.