hello everyone it's lightning
talks time uh finally
uh hey everyone i'm christopher
neugebauer i am coming to you from the
unseated land of the coast miwok people
here in petaluma california uh still uh
annoyingly prevented from being on the
correct time zone for lightning talks
and so as with last year i've adjusted
the timing of lightning talks to my
convenience and not yours thank you all
for joining uh this is going to be
really exciting
today we've got a couple of people
joining me on stage uh libby hello i'm
libby i am trapped in an apartment in
the nunawal country aka the ict in
canberra it is nice to join you and for
a split second you saw my cat bobo uh
prepare for ultimate chaos he will
probably make appearances every now and
then
uh and also joining is our friend
patrick the distant bodied clock
hi patrick thank you thank you
clock the distance
okay uh so as is usually the case we
have a bunch of uh speakers giving
five-minute talks on various topics
which will hopefully be of interest to
all of you uh
we can't really do the finger applause
thing that we do uh when we're all in
person but i will use my trusty yeet
button if people go over five minutes so
uh please keep your talks to five
minutes everybody who's presenting
uh otherwise yeah we won't hear
everything you have to say
our first presenter is tyson klug who is
going to be talking about putting python
in all of the files
hi pycon um in true lightning talk
spirit my tool broke two minutes ago and
i fixed it again so
paid um or yeet all the files this is a
personal project that i started
yesterday lots of fun
um 20 years earlier well we used to use
php and we used to be able to just
insert little bits of code inside a
bigger document it's a really cool trick
because it means that you can just write
for example html or postscript or
whatever you want and then just put code
where you need it which is awesome um
python doesn't really support this i
mean maybe a good thing maybe a bad
thing but in my case i wanted to because
i just wanted to stick in a date into a
postscript file but postscript doesn't
support that
so
yeah php was an option but
i don't want to use php and i certainly
don't want to be writing lots and lots
of python if it's just inserting the
date so uh yeah like i could write lots
of code to do report labing to um inject
a date into my postscript output and a
pdf um or i could just fix this little
thing
so need more curly boy let's see what
can we do
the program um all we need to do is use
paint
uh let's see so it just takes a
file and it turns all of your
source content into compiled python
uh what sort of compiled python well
it starts in like um just like python
it creates this module where it just
prints everything out so nice and simple
um but you then you can put a curly boy
in there woohoo more curly boy uh and
here we go we've got a curly brace and
two snakes that gets us into just plain
python mode spit it out exactly as you
saw it um there's also support for echo
mode which just prints whatever you want
so we can see here that i said oh yeah
assign hello world to some text and then
i told it to use echo mode to output the
text nice and easy
well that means you can do some cool
stuff so you can just use valid python
anywhere in your file
well what is this useful for yeah i was
trying to scratch an itch as i said i
was trying to write some um postscript
yeah i know postscript
so here it was it's basically trying to
put like a watermark onto a file and i
needed to have the date on there
so
here we are i'm using uh let's see so
i'm from date time import date time
and then um that's imported
and now all i have to do is say
use echo mode and put the date in so
let's see does this do what i want it to
do
okay
i run it
hey date time is not defined
anyway uh yes it did actually run um
but broken as always uh so other cool
things let's actually dive into the code
a little bit we've only got a minute and
a half left
what have we got so it's a little state
machine it is actually an encoder uh
sorry a decoder so you can use it to
decode bytes and it decodes bytes into
python
it registers its codec
it does some cool stuff it has a
loader to do um
to
bring it into python land um
it has asynchronous io so it actually
runs in an async i o loop meaning that
in future maybe this could be an async i
o web service like thing and i should
include it into asgi
um
it has some very simple options so all
it does is
loads up um
python module we've got a minute left
great um and it runs things so
uh yeah lots of fun um
lets you do things that you otherwise
couldn't do and be more
uh immediate in the way that you do
stuff uh is there anything else in my
slide deck yes i think there is
only all the things well
in theory you can actually go and put a
new python file
and say that the encoding is um
let's see so you file
well
you know that you can do a codex at the
top like this
coding
eat which means in theory you could
actually put
python code to generate python code
within your python code
have fun with that idea hit me up in the
chat and uh i'll publish this on github
and give you all some links bye
thank you tyson for putting pythons in
our pythons in our pythons
uh up next we have daniel who is going
to be talking to us about racing network
x and tackling code complexity
hello everyone um firstly i acknowledge
the nanga wall people traditional
custodians of the land of which i'm
presenting and pay my respects to their
elders past and present i extend that
respect to aboriginal and torres strait
islander people here today
in this lightning talk i'm going to be
speeding through a journey i took trying
to optimize algorithms in network x i'm
starting here in my jupyter notebook so
that i can run
this cell here
and
we'll come back to that later and see
how it's doing
first of all um so my talk is racing
network x
um so first of all what is networkx it's
the gateway library to graph analysis in
python but it doesn't do everything time
and space limitations make it not very
useful sometimes when playing with large
data sets i still want to be able to
calculate graph metrics but network x
takes too long runs out of memory or
fails to work for other reasons as this
happens i always ask myself or whether i
can figure out how to do it
let's consider a graph metric in this
case we're going to look at something
called eccentricity
what is eccentricity the simplest
explanation is the shortest distance to
the furthest node
for example if i wanted to calculate the
eccentricity of the highlighted circled
node in this picture we need to figure
out how far away all the other nodes are
let's do that by jumping out from that
node until we've reached them all here
we've already started having jumped out
one hop
now we've jumped out two hops
and now three hops
and finally after jumping out four hops
we've reached every other node in the
network so the circled node would have
an eccentricity of four
this is useful because nodes with low
eccentricity will be positioned
centrally on the network nodes that fall
on the outskirts of the net of a network
would have a much higher eccentricity
because they needed to traverse the
entire network in order to reach
everyone
by the way this method of hopping out
being demonstrated is an example of brep
first searching which is great to use if
you don't have a specific destination in
mind
if we think about how most graph query
languages work you typically need to
start somewhere
from somewhere in the network and nodes
with low eccentricity are typically a
good place to start they're more likely
to be highly connected or have
information passing through them as
opposed to our highly eccentric mr burns
node over in the uh edge
so how does network x go with
calculating eccentricity well for one
thing network x's eccentricity algorithm
doesn't work on digraphs or directed
graphs you can convert it to an
undirected graph but it's not a true
reflection of how information is flowing
in the network
network x's eccentricity algorithm also
doesn't work on disconnected graphs you
can cycle through connected components
but as a personal pet peeve network x
moves this package around every single
time it updates
i'm even accounting for these issues if
the data set is too big network x will
just run out of memory or take too long
unfortunately i'm as stubborn as a mule
approximations weren't going to cut it
either i want to calculate uh the real
thing
the stanford network a large network
data set collection is a great place to
pull some large networks for
benchmarking so i downloaded a nice big
graph and began experimenting
i wrote some code to mimic how
information was propagating through the
network in a parallel breadth first
search style you'll notice here that i'm
working with the numeric representation
of the graph the adjacency matrix the
rows and columns of the adjacency matrix
reflect each node and typically the
values of the matrix we won if there's a
direct connection between the row node
and column node or zero if there isn't
sometimes this uh value will represent
the weight of the connection
the ipython magic function time it is
great for overall benchmarking but p run
was invaluable for finding where in the
where the in the code my the bottlenecks
were p run shows you the number of times
functions are called and the times taken
per call and overall um how long things
take which is super handy
other useful tricks include either tools
and more edit tools i found that if i'm
ever looping through anything i have a
look at those libraries and see if what
i'm trying to do is there
another useful thing i learned was a
stitch between c contiguous arrays and
fortran contiguous arrays in numpy
order c is better for row operations and
order f is better for column operations
eventually my approach was faster but
still limited by the space complexity of
the big snap graphs
so i got rid of the dense matrix numpy
stuff because that was taking far too
much memory and started working
exclusively with sci-fi sparse matrices
that helped but the biggest bottleneck
was the matrix dot product
multiplication which is always
computationally very expensive
ultimately i had to do with matrix
algebra altogether and tried replicating
it using binary set operations initially
i used python sets but they still
suffered from space limitations because
you need to store an additional hash
table for lookups the work around there
was to use bit arrows bit arrays are a
very space efficient boolean collection
that could easily represent the graph
adjacency matrix
this created some additional overhead in
the conversion but once that was done my
approach could not only run on the large
snap data set but was faster than other
optimized graph algorithm libraries as
well
go back to here is it finished running
no it hasn't it usually takes
under five minutes but
i'm doing streaming stuff as well thanks
thanks daniel
uh
up next we have jeff who is going to be
taking us
well through something slightly more
relaxing than networks
go ahead jeff thanks so much christopher
uh yeah it is something completely
different uh i want to thank everybody
very quickly for a fantastic conference
but i would also like to invite
everybody for a moment of high
contemplation and apologies for the pun
and uh really what i want to do today in
five minutes is i just want to share
something that's helping me through
these really unusual times that we've
all been sharing
and i will illustrate this through a
really really terrible watercolor and a
story uh so apologies in advance for the
terrible watercolor uh but yeah this
this little fella here we're gonna call
them uh susan the schneck
and uh susan the schneck uh circa 2019
was having a pretty happy life i was
meeting all sorts of other schnecks
potentially in person at conferences
like this uh and then things changed uh
i'm going to draw your attention to the
left to this uh well called the y axis
uh you know vibes were pretty good uh
maybe bushfire is not withstanding vibes
are okay in 2019 and uh we can
potentially argue that vibes are
pretty awful in uh uh
now so so essentially like susan got
thrown into a little box
and over time susan got so caught up
with all the things that susan couldn't
do uh that susan sort of tied herself
into a knot and you could say that this
little axis here the the yellow axis
which is like happiness you can say that
susan probably was a bit miserable at
that point
uh so the method that i'm going to show
you today is just it's a bit to sort of
be aware that you know maybe you're
tying yourself into knots like susan and
even if your external vibes your
external factors don't change uh if you
practice it fairly diligently you might
find yourself getting a lot happier
so let's go away from watercolors and
actually get into the exercise so for
the next two minutes we're going to
close our eyes and focus on our breath
we're not going to try to control our
breath we're just going to remain aware
of our breath
and that means we're going to know when
it comes in and out we might know
whether it's hard or whether it's soft
whether it's fast or whether it's slow
whether it's coming through our nose
whether it's coming through our mouth
really doesn't matter if it's any of
these things it just matters that we're
aware of it
and sometimes placing a hand on your
stomach so you can feel the rise or fall
that helps
or even just trying to focus on
the area around your nostril that can
sometimes also help as well
and even though two minutes is a short
time i guarantee 99 of us including me
will get distracted
so those are the instructions i wish you
the best of success
and yes it doesn't matter if the mind
will wonder this is natural and expected
what matters is that you bring it back
gently without self-reproach
so we're going to do these two minutes
now uh if you want to go and have a look
at the slides later
they've got references right at the end
let's give it a go right now
so two minutes starting now
one minute
[Music]
way to ruin the vibes there with the one
minute
i mean i appreciate that it was a little
bit toned down but i was i was so
relaxed i was so trying to match the
energy in the room
i promise one minute
righto okay next we have
tim who is doing some things with the
pycon au logo
all right so um this is sort of
something that started uh at last pycon
and i uh put up a sort of a
image of this um onto twitter a short
video um and a lot of people have been
asking about it which is sitting over
here in the background
um so there's a bit of elements of
hardware software and woodwork involved
in this little project um so like i said
i started this at last pycon and i
managed to get this far
um it's been sitting on my desk uh sort
of
annoying me ever since and a couple of
weeks ago i sort of looked at this and
thought it's about time i actually
got on to and actually made this into
something for real
so first step is a little bit of
prototyping
i caught my first test that the uh snit
egg uh this is sort of where i tried out
the concept um it's a
potentially drill a hole fill it with
hot glue and and put a led inside and
you get this sort of nice output here
um
this is my second sort of test where we
actually made it into a full uh what i
call a baby snack
and
it started to see you could see the
colors sort of starting to blend and it
looks kind of kind of cool
so moving on to the final build first
stage was uh drilling out or laying out
you can see my sort of marks there where
i've laid it out uh drilling in all the
positioning
and then putting this through onto a
router table to route out the rest of
the
rest of the shape uh putting in the leds
and hot glue uh this is where i ran to
my first problem uh i ran out of hot
glue which is not a useful thing uh
it's sort of a bit of a rush there to
try and get another lot of it in uh
in the middle of a lockdown but i
managed to do that but it does have some
side effects and that you get bubbles
and that starting to come through
from that we move on to wiring
more wiring
crimping
before we get to our first test
and uh we start to see it sort of how
it's going to actually look uh there's a
few sort of uh other points that start
to come out here those the green and red
is very bright um and we're gonna have
to tone those down and we'll comment
exactly how that works next so the
actual hardware the hardware um
yeah there's a lot of wiring and uh as
you expect for these kind of things
where we control every led
most of the control was all done with a
bunch of shift registers
these ones are particularly nice they
can sync 150 milliamps which is perfect
for running leds uh they work by having
three wires coming into them a data a
clock
and a latch wire
you set a value on the data polls the
clock and it will uh shift the the value
in do that repetitively and you'll get
all of your data in
and finally pulse the latch it switches
on to the outputs and you just you know
when you what you want to see comes up
on the display
uh at the moment it's running with a
raspberry pi pico which is sort of
probably my favorite controller at this
particular point in time
how we get into the actual
brightness i was using a technique
called bam
the angle modulation it's a sort of an
alternate to pwm that can be implemented
efficiently in software
in this particular
picture i have the this of the green
which is what the waveforms will look
like from bam and below that is what a
traditional pwm waveform would look like
the
ratio between the on and off states
and runs at a high enough frequency and
you can control brightness
um so micro python turned out really
really good in this particular scenario
here uh the uh
this threading model on on the micro uh
on the pico sorry it was great in that
it would actually use both
cores which mean you can run the
animations
and output on separate uh threads in
parallel
although i did run into some limits here
uh the speed of the of the of micro
python
it just isn't quite up to it so i could
only go run it minutes using 4-bit bam
um meaning you only got 16 levels of
brightness but that's more than enough
so the final result
is this and hopefully it'll
run um which is a bit of an up close uh
someone a nicer effect that came out of
this is that you can kind of see that
the colors blending as it comes out
which uh which was actually quite a nice
sort of side effect of running it
through this glue which was
causing it to diffuse nicely
um
so
what's next um i wouldn't mind porting
this to a different language just to get
a bit more speed out of it probably
laser cut we can reuse the controller
don't run out of glue would be a handy
anything to do here
um
slide some code if you want to read more
about what bam is
there i'd have to also quickly shout out
to jim massad who jumped in from
micropython to help me we'll actually
just listen to me solve my own problems
thank you
oh thank you for that tim it is cool to
see people doing such pretty things with
uh with the mascot of this year
conference
uh up next we have matt sendia
uh who is going to be talking about
what it says on your screen making
welcome
then hi everyone my name is matt um my
pronouns are they and them i'm going to
be talking to you about neurodiversity
today
um i'd like to start by acknowledging
the traditional custodians of the land
from which i'm presenting the waranjari
people of the cooler nation and pay my
respects to their elders past present
and emerging
so i have autism
and adhd
these are both two types of
neurodiversity
which refers to the variation in the
human brain regarding sociability
learning attention and mood and other
mental functions
but they're by no means the only two
types of neurodiversity
i'm recently diagnosed i'm still
learning about my brain
um
i my intent for this talk is to raise
awareness not to claim that i have all
the answers um we have a saying that if
you've met one person with autism you've
met one person with autism we're all
different and these are specifically my
experiences i found a long time ago that
i always struggled with timekeeping and
timesheets
i'd seemingly lose hours of productivity
some days and not know where they went
um
and it made it really challenging to to
build against clients uh and so i ended
up having to use this um
app that a colleague wrote which would
literally pop up every 15 minutes to
help me remember
to timesheet my work and keep track of
what i was doing um
timesheets don't really work for me and
i'm trying to find ways to have jobs
that don't don't involve them so that's
one thing to think about for people who
are neurodiverse
and so now i know why
it's because i hyper focus and sometimes
experience time blindness
i can focus on things for hours which is
like a
next level flow state um
where i can get quite upset if i get
interrupted or i have to context switch
it means i can get a lot done but it
also means that
there is nothing else outside of this um
and it means i can completely lose track
of time and forget important things like
eating
i also experience executive dysfunction
um if things are not interesting
novel or urgent
they don't get done
this talk this talk was written in the
last two hours it hit the urgent the
urgent checkbox
um
i struggle with engagement
sometimes i find that i have to watch
talks at double time occasionally just
to keep keep engaged with them if i can
unless they're written by libra necky or
russell t mcgee in which case they work
just fine
um i find that i'm occasionally
distracted by environmental factors such
as background noises like elevated dings
or fluorescent lighting or movements in
the periphery
so i often need to use noise cancelling
headphones or like work at my home
office where i can
you know
close out those distractions and
focus properly on my work
i find that different communication
styles work differently for me instant
messages
are great for
not putting people on the spot but you
can often lose tone with them um if you
don't take care video
and audio are great um
but because you've got the body language
and the tone but they can be stressful
from a like a timeliness and response
perspective if you feel like you're
getting put on the spot um audio can be
the worst of both worlds sometimes so i
try to avoid phone calls for example
um one thing that i found worked really
well are personal user manuals which are
ways that people can literally write a
document that says here is how i work
and here's how my brain works
um
and i've you know read about workplaces
that have implemented these
as a as an optional thing where you know
they're not required but it's a great
way for people to
communicate about what works best for
them and find accommodations and
compromise
um
so the main takeaways that i've got from
this talk are that
all of our brains work differently and
even people who aren't neurodiverse
require different ways of thinking
sometimes
um so i'd say
be explicit and
open and proactive about working with
people to accommodate the way they work
um as i said this helps both
neurotypical and neurodivergent folks
stay curious and have empathy for you
know the way people think
um and that's all i've got here are some
references which i will put in the um in
the venulis chat in a second thank you
very much
thank you matt that was a uh that was a
really important talk and i i thank you
for giving it
uh up next we have jens
who is going to be talking
grassland in lower saxony
yeah thank you very much um yeah why i
want to give this talk um of course i'd
like to get accutaned with geodata in
agriculture and also from those data
that are used from administrative bodies
for at least in lower saxony
then i'd like to show you a few basic
commands and geopandas you need to know
if you want to process such data
and of course you will be eventually
able to validate administrative land use
statistics so you can check if they are
doing good job or not
first of all i like to show where the
lower section is and by the way yes it
has a horse inside so it's a running gag
of the chat today
and lower sex me is located in northern
western region of germany so it's
between
bremen hamburg there are um
just the neighbors of lower saxony and
yes it's germany and yes it's 3
30 a.m so
if you present those times you should
really know your stuff so
first of all we um importantly both
needed
libraries panners and geopandas i have
marked the versions over here
and then we have to get the data of
course because we want to work with data
and first of all you have to
understand some conditions to use this
data and if you click on this link
you will be able to download it then you
can unzip it and you can import them
be sure to enter this kind of projection
because it's the known projection for
all administrative
um
data sets containing gps coordinates and
those
five uh
lines are the first five lines in the
anti-data set you can see what kind of
uh landed this this is grassland and
this is cropland this is just a shortcut
and this is the name of the year where
this polygon has been input into a data
set
um the first shape is the just a sanity
check how how this
shape will look like and let's look not
too far away from lower saxony
and now i just added the group the kind
of agriculture
indicator and you can see that there
something happens in the northern region
and what is happening in the region you
can see over here there is the grassland
the greenland over here that we are
interested in
and
now we know where the grassland is and
next question is we want to see the
distribution of land size
grouped by the management system
therefore pandas does a good job with
the description function and you can see
here that the grassland over here
average 2.6 hectares it's a very they're
also very tiny patches with less than
thousand square meter but also very big
one and this number is equivalent to
300 soccer pitches in fifa regulation so
it's a very huge one the last thing i'd
like to show of course is the sum
uh the
oh i'm sorry uh the share of uh um
each different agricultural systems the
cropland has more than two-thirds of all
of the oil
uh
imported shapes then grassland is coming
with a bit more than a quarter and the
rest is not that relevant because this
sister does only means you don't not get
any money out of the
um
field and that's for my talk today
i try to not go to sleep thank you very
much for uh your attention and happy
price and happy farming thank you
uh thank you jens for that uh for that
great talk and yeah go go get some sleep
yeah yeah
you can go on
but yeah it's it's a tour
okay um
up next uh i understand this is a python
conference yes
uh but today uh quentin is going to be
talking to us about adders
yes um i'm assuming it can be heard well
um thank you
uh chris so uh my talk today is on
uh
obfuscational logic
making binary outers where they
shouldn't be
a bit about me my name is quentin lovett
i'm a fifth year mechatronic engineering
student at the university of technology
sydney
i work for a
cardio electrophysiology company
and this is my eighth
pipe
so what are binary adders binary adders
are a way of performing
addition
with binary numbers so this is the
simplest binary adder this is a two bit
so you can do uh one plus one or one
plus zero um and so this has an
exclusive or gate um which is one or the
other but not both
and an and gate so the output of this
is a
output bit and a carry bit so one plus
one is zero plus the carry of one and
binary is one zero
so getting a little bit more complicated
than that we here have a full adder and
so this has the carry in bit
and then has the
display and the carry out
and so in python um
we can do this simply with oren and
so if likes cats or likes dogs and likes
cats or
if snake or girly boy and programs
and looking a bit deeper into this um
we have the python boolean
or binary
operators
or being the pipe ampersand the end and
more important and importantly for this
one we have xor
which is the caret
and so why do i care
why i care is uh addition is too easy in
python
so i'm going to just pull up a demo here
um
so when we're doing this edition in
python um open up the python interactive
shell get an int of 9 and into 10
a plus b and 21. perfect
or not
and so when looking at this
i just got to say
that i have been doing some funky stuff
um your python
might not be exactly the same as mine
but um now for something a little bit
different
so we're gonna go
and we're to get al
so we're going to run
a python interactive shell again
and we're going to do a basic uh half
adder so that's our one xor one
or one and one and we're going to bit
shift the carry bit um so that we now
have
uh
that in the
twos column
so um getting a bit more complicated
again um we can do a
a little bit more complicated full adder
we're going to get 9 plus 12 so that's
the binary values
we're going to reverse those so that the
zero bit is in the zero column and we're
just going to type out a little bit of
code it's not too much but i think you
could see that this might might be a
little bit too much to do um
do every time
um
if that's a bit too much for you um that
you don't want to type out all that um
every time you want to do
any form of addition
we have this my piece of resistance
the fruits of my labor
please enter a number one two three four
plus four three two one uh 13 bits of
binary gates calculated for you
thank you
thanks for that quentin
um
yeah and if you want to give a lightning
talk next year about another kind of
snake we haven't had any talks about
asps at this conference so uh you know
if you know about that please sign up to
give a lightning talk next year
right now we have waitama who is going
to be talking about finding parasites
with pythons
uh hi everyone
thanks for having me today um yeah so
i'm going to give this talk about
finding parasites with python
specifically blood parasites in turtles
um so
uh this is a from a project that i
worked on with ike signing in
our phds uh we're both now postdocs at
the doherty institute um just by
coincidence which is cool so this is
from a
um
a project called autoscope and basically
we wanted to build a robotic microscope
um so that we could modify existing
microscopes to programmatically control
the stage so how
how it moves around and the focus knob
and the camera and basically with the
goal to produce digital slides um
for production
for
downstream um machine learning
applications
so this is sort of born out of two memes
my incessant
uh goal to automate everything
um that takes longer than five minutes
and then the fact that if you stare into
a microscope for several hours you're
you basically go blind so we wanted a
way to digitalize this process
um so a little bit about these parasites
so
um
this is a freshwater turtle and they
have this blood parasite called
hemograins
this is a total blood cell this is the
nucleus here and this is the parasite
this hot dog looking thing and we think
they're transmitted by freshwater
leeches but we're not really sure and
basically you take a blood smear and
smear out the blood and then you look
under the microscope in that blood smear
for these parasites so give you a couple
of seconds to find the parasite
in this slide
um
okay i'll give you a hint
there it is
so it can be very difficult to do this
and basically you have to to get a good
level of
paracetamia like the number of parasites
in the blood cell you have to count
around
1500 cells per slide
so obviously
this needs some automation
uh so how do we go about this um
i designed some 3d printed parts to
attach to the microscope um
and then printed them out
uh the stage is controlled by a stepper
motor so these 28 byj48 uh stepper
motors and basically uh these can be
controlled with a raspberry pi and run
on the five volt power supply of the
rossi pi so you don't need to supply a
separate separate um power supply for
them and you just send a signal um to
the channels of the
stepper motor and you can make it spin
uh in a set number of steps so you can
control um the how far the motor turns
uh for the camera i used opencv the
python
interface for that uh and a raspberry pi
8 megapixel camera that sits on the top
of um
the eyepiece
uh and so we used opencv to extract a
region of interest from there that we
could then do our processing on and uh
using the focus knob you can kind of see
it uh in this slide here uh
down the bottom we're able to do some
autofocusing just by looking at the
sharpness of the image so moving through
the x plane of the z plane and looking
at how sharp the image is
for the overall architecture for the
software basically there's this
sportoscope class that has
classes for the stage the focus and the
camera and this has two functions an
auto focus function
uh that enables you to focus uh
automatically focus through the plane of
the slide and then auto scan which
basically does this snake like pattern
um to produce
uh tiled uh output
so here's an example of it running
so yeah you can see the raspberry pi the
step motor in the background there
and then this is the slide on the stage
one minute
yep and then so it's moving along and so
to view the slide we use this gdel2 um
slides and i'll just open this quickly
so here's the slide
so you can zoom in here you can see it
loads there's a parasite and another
parasite
um just zoom out so yeah you can see the
slides there
so what's next to do take that data to
some ml so we can automatically use that
system to identify the parasites and
then uh train uh
a model to automatically identify these
parasites um and so yeah this is all
open source the code is on github and
the 3d
uh components are on thingiverse
cool thank you
thank you so much i for one am very glad
that there is another parasite talk
happening at lightning talks at like
online are you um up next we have zach
he has written code in order to write
your tests
thanks everyone i'm joining you from not
all country in canberra and i'm
speedrunning a 12-minute live demo in
five minutes so let's get started
hypothesis is a tool for people who
don't like writing tests because coming
up with all your test data is boring so
hypothesis does that for you i also got
bored writing hypothesis tests so i
wrote code to write hypothesis tests so
that you don't have to write tests or
write tests
to save for a writing test anyway you
can just tell hypothesis to write tests
for a sort function and hypothesis will
tell you there is no sort function if
you tell a hypothesis to write a test
for the sort end function it does that
it tells you that there's three
arguments here's some default values for
how to generate it and then it calls it
but just calling the sort function might
not crash because the python chord downs
aren't incompetent so you might want to
check if you sort the result of sorting
something it doesn't make any further
changes you do that just by telling
hypothesis that sorting is important
which it should be
if you want to check something else you
can check the two functions are
equivalent and if you want to check that
the ast.liter level function is
equivalent to the eval built-in at least
for all source code strings which
represent python literals you can tell
hypothesis to do that with just one
convenient line of terminal code which
is great and it tells you this and you
can see that hypothesis doesn't realize
that the
node or string argument is different
from the source code argument when they
should be the same so you'd have to edit
this but it's a great start to the test
right
or if you think about property-based
testing means algebraic properties of
binary operators like haskell hypothesis
could do that too i'm not sure why you'd
want to but it can so that's pretty cool
the most useful type though are what we
call ground trip tests where you can
tell hypothesis that you want to test
for gzip compression and it will
automatically work out that if a module
has a compressed function that also has
a decompress function if you compress
something then decompressing it should
probably give you the same thing back so
that's pretty cool all you need to do
here is tell it that data is a byte
string and that's a great test for g
compression
where it gets more complicated though is
json json it turns out is terrifyingly
complicated there's so many arguments
here that i have no idea about really
and
i that's a lie i do have some idea about
them but i don't have time to go into
them now
so i wrote a shorter version of this
test just by deleting a whole bunch of
arguments and describing json data to
hypothesis the description of json is
very simple recursive data the base case
is either none true or false a number or
a string or you can have a list of json
things or you can have a dictionary json
calls this an object but that's a
reserved term in python a dictionary
where you have string keys and json
values
and we're just going to tell hypothesis
that like whether or not we allow nand
is varied whether we check for circular
things whether we want ascii or unicode
output is all variable and then like do
we want to sort the keys to the objects
also varied
so let's see what happens when we run
this test
any guesses
they're on a 30-second delay zach
it doesn't usually take this
i guess this is what i get for doing a
live demo
yeah anyway let's just uh cancel that
and
it it turns out that this fails because
uh the allowed ad argument also
disallows infinity because non-finite
numbers aren't technically allowed by
the json spec and if you have not a
number not a number is unequal to itself
so the test fails so we'll just say that
we always allow non-finite numbers we're
default argument name but there we are
and we'll just assume that's like a
special assert that tells hypothesis
it's a bad example that it's equal if we
run this one hopefully it'll be faster
one minute
thanks chris all right so this one fails
with a really confusing error message it
turns out that a list containing not a
number compares equal to itself until
you round trip it through json and
that's because there's this list of
quality performance optimization in c
python where if a list is the other list
it doesn't bother checking whether the
elements are equal and it turns out that
it also starts by comparing elements by
identity to avoid deeply nested
comparisons great performance
optimization but it totally breaks to
the presence of dead so the real fix for
this test is just to tell hypothesis
that we don't actually want to deal with
not a number because you never want to
deal with not a number it's an awful
value and if we run the final real test
then this one should pass hopefully
within the next 19 seconds
and there we have it that's hypothesis
you could use it to avoid writing tests
and still fight bugs thank you very much
i was waiting for that last one with
baited breath i'm i'm glad you finished
within the five minutes today zach good
job okay
up next uh we have a
a slight escalation because riley is
going to tell us where the stairs are
alrighty hello pycon i gave a talk last
year which coincided with the public
debut of a package called staircase and
this is a five-minute update a
where are they now and to be fair who
amongst us couldn't sum up the last year
in five minutes
firstly though let's quickly revisit
what the package is and for that i'm
going to focus on one use case which is
where we have timestamp data now you're
a python audience so when i say
timestamp data you probably think pandas
so to set the scene i'm going to perform
a monologue from the pandas website
timestamp data is the most basic time of
time series data that associates values
with points in time for pandas objects
it means using the points in time
now those points in time are implemented
in pandas by the time stamp class and
you can model a time series with a date
time index which is an index of time
stamps and a vector of values and we
commonly assign this to the x and y axis
respectively but they also have this
period class which represents a
particular span of time
like a particular error or a particular
day or a particular week and there's
also this period index and i'm sure you
can guess what that means now if you're
pairing a period index with some values
and the periods don't overlap each other
then what you have is a step function
so it's a function over a time domain in
this case which is piecewise constant
and it's made up of horizontal lines
but the periods in a period index are
all the same size and they're limited to
specific frequencies like hour or day
and so you are constrained in what you
can do but this is where staircase steps
in pun intended so it doesn't have those
limits staircase is for step functions
set functions over a time domain step
functions over the real numbers
and assigning values to intervals over
domain rather than single points opens
you up to thinking about problems and
their solutions and analysis in a
different kind of way
now there's lots of fun things that you
can do with step functions much of the
same things that you can do with
ordinary time series or functions in
general you can add them you can divide
them you can compare them to see which
one is bigger than another you can
calculate their mean or median or
analyze the distribution of values and
so on
and you can convert them to an ordinary
time series if you wish by sampling the
step function at regular points or
aggregating it over a sequence of
periods
so
what's new
there was a major release a month ago
which saw every part of the library
rewritten to use pandas and numpy under
the hood so it's a lot faster it has
become very closely aligned with pandas
stylistically and there's a lot of
features which have analogies in pandas
for example two of the biggest
enhancements in version two are slicing
and masking so with slicing you start
with a step function you cut it up into
slices
and then you perform some calculation
over the slices and combine the results
and this is analogous to
group bias in pandas
the other is masking which is analogous
in pandas to masking and
we all understand what masking is so for
step functions this means allowing
intervals
where the step function is undefined or
doesn't exist
and this is a great feature to have for
example
i may have a step function which
represents the heart rate of a patient
over time
now if their heart rate never changes
then this step function is a flat line
and let's face it it probably has a
value of zero
but if they're not flat lining then
analyzing the distribution of the values
might be an interesting thing to do and
this is very easy with staircase
but maybe i want to exclude the times
that the patient is asleep
and that could happen at
random times for arbitrary intervals
especially if they're sharing a room in
a public hospital and if i happen to
know when the patient was
sleeping
and i knew when they were awake like
some sort of creepy analytical santa
claus then it's very easy to make to
mask those intervals of time and ignore
them when performing the analysis
so it's a pretty full featured package
there is always more to be done
one of today's social events is the
staircase sprint
it's not really a sprint because it will
just go on forever you can join whenever
you like even tomorrow or the weeks to
come
i've put a backlog of tasks many of
which are beginner friendly um
in a repository so if you're wanting to
dip your toe in open source contribution
and you don't know where to start then
uh come along and um get wet thank you
thanks for that riley
okay up next uh we have evan who is
going to be telling us about uh email
apparently
hello
uh this is the story of
my
email this is my email
this is also my email
this one too
oh and this one as well
these are all different emails
and
they're all my emails
but i only have one email
and that is this email
how are they all my emails
through the power of plus addressing
you simply take your email address
you add a plus
and your tag
and it'll appear in your inbox
and you can even add dots anywhere you
want
and they'll all be ignored
and this isn't just for gmail
it also works for outlook
yahoo
protonmail
and fastmail
and many more
fastmail even supports subdomain
addressing and they're great because
they look just like regular email
addresses
but
why
well these tags let you be in control of
how you feel to your email regardless of
who it's from
and they also let you easily register
accounts for the same service without
having to make a whole new email
meaning that you can sign up for as many
freebies from that website as you want
but more importantly it means that you
can better protect your email from the
ever increasing companies that leak it
letting you know who leaked your email
and giving you the option to filter it
all to spam
you can even test if your email has been
leaked at having beenpwned.com
you can see
my email is fine but one day i got a
spam email and sure enough i confirmed
that a dodgy website leaked it
but i don't care because it's not my
main email
lastly it's also just really funny to
just give out your email now
i've heard on multiple occasions
wow you made an email just for me
uh are you sure that's correct
and
oh i didn't know you work for us
there are three things to note though
you will have to come up with some kind
of system for generating and remembering
these tags
and unfortunately this has been used in
phishing like scams like this netflix
one where attackers could sign up with
someone else's similar email address and
have the victim think that their own
account needed updating when in fact it
was the attackers
and finally just like people not all
websites know about this cool trick
which can be a bit annoying at times
so spread the word if you're a web dev
stop rolling your own email validation
just use a library instead
and if you're an email dev
implement subdomain addressing
oh
and one more thing
this
is not my email
this is my email
i don't give out my email publicly and
neither should you
that is the best way to protect your
privacy
thank you
thanks for that evan i i was just about
to ask if evan gmail was your your email
address and that would explain why
uh why i had a bounce earlier on but uh
okay uh
up next we have apollo
so let's go
hello everyone and welcome to my gender
reveal party my quantum gender reveal
party
today i'm going to explain why my gender
is a quantum mechanical object and then
we're going to measure it together using
a real quantum computer
so some people have a very strong
internal sense of their gender
knowing that they're a woman or a man or
something else
these genders behave in ways that we're
used to so i like to think of them as
the classical genders
unfortunately my gender has never been
that simple
i've been trying to find a nice label to
slap on it for a few years now and the
best i've found is gender void
but even that's not right sometimes my
gender doesn't feel like a void at all
sometimes i'm a soft guy
sometimes a screaming magpie coming for
your helmet
before i worked as a tech consultant i
studied theoretical physics and there i
discovered the wonderful world of
quantum
and my gender
so what does it mean to be quantum
quantum mechanics is just a model we use
in physics to describe really small
things like atoms
but there's no reason it couldn't apply
to bigger things too
fundamentally something is quantum
mechanical when it displays strange
behaviors like superposition and
entanglement
unfortunately i only have time to talk
about superposition for now but feel
free to ask about entanglement later
so superposition means you can be in
multiple states at once
kind of
it's
classically explained using
schrodinger's cat where his abused cat
is in a superposition of being alive and
dead until you open the box and measure
the cap
but really
a better way to think of it is that your
state is blurred across multiple values
with different likelihoods of a
particular state being measured
this blurry probability blob is called a
wave function
now that sounds just like my gender
i'm blurred across these states a
probability distribution across genders
it's important to note that when a
classical object interacts with a
quantum object the wave function
collapses to a classical value
like when someone calls me seroman
so now we're going to do something
similar i'm going to construct an actual
quantum state on a real quantum computer
and then we're going to measure that
quantum state which will collapse it
into a classical value
and to do so i'm going to be using
kisket which is an open source library
and ibm's free web ui to visually look
at what's going on in the code
so what's happening here is on the right
we have the kisket code and on the left
we have a visualization of quantum
circuit
and then a visualization of the quantum
state down the bottom
this quantum state is
one cubit which is just an atom that's
been prepared in a fancy way so that it
can only be
in two states on off
so i said earlier that my gender is like
a superposition so what i'm going to do
today is i'm going to put that qubit in
a 50 50 superposition
of on and off
although on and off aren't very good
genders are they hmm i guess we should
label them something else
i guess the traditional choice here
would be male and female but i'd like to
go with something a bit spicier
the true original binary the two genders
fundamentally opposed from each other
i'm talking of course about pineapple
and pizza
so what we're going to do next is we're
going to measure our qubit which is in a
50 50 superposition of pineapple and
pizza
and this is just a simulated outcome
down here
and then we can run it on a quantum
computer
over here
now unfortunately because this is a free
and open service there's a lot of other
people trying to use these quantum
computers which means you can wait
several hours for your measurement to be
run but i thought of this in advance and
i ran the job earlier this morning
so we have a result here that i haven't
looked at yet
so just to quickly rehash over what
we've done
uh i set up a qubit in a 50 50 super
position of pineapple and pizza
and then i just measured that qubit to
see which gender it is
and now we're going to find out
this is a very tense moment
here's our histogram down here
my gender is pineapple yay
thanks for coming everyone my name is
apollo my pronouns are they them and my
gender is pineapple
thanks apollo
uh
right just waiting for patrick to uh to
get themselves together ah there we are
okay yep you had an uncertain amount of
time for for your talk just then apollo
while uh while patrick had it had a
slight uh had a slight moment
hey up next we have david who is going
to tell us about gets a sorry git
hi
i'm davo here are n git commands you
didn't know about
diff 3 merge conflict style this adds a
section to merge conflicts with a
content with a common ancestor so you
can actually see what's changed since
you last branched here is an example
from my talon voice coding config
the default diff algorithm can produce
unreadable gif sometimes
but we have others
the patience algorithm
tries to keep sequences together much
like the card game which you might
otherwise know as solitaire
but my explanation doesn't really do it
justice so see james coughlin's blog
post which i've linked there
uh it is also sometimes slow
but there is also the histogram
algorithm which is based on the
patient's algorithm and it's been
benchmarked to be faster than the other
three diff algorithms in git
you can color move
lines that have moved in git diff
here you can see chunks of lines that
have moved in different colors in my
vincon peak
ever forget what a and b refer to when
you run git diff well you can change
those so that they give you context uh
here we have uh i for index w for
working tree but you can also have c for
commit
has your editor get integration failed
in a merge conflict try get merge tool
this opens interactive three-way diff
tools that you have installed
uh here are a few examples that i've
used and you can also
use a diff tool instead of staring at
git diff
to open these same tools
interactive rebase is great you can chop
and change your history however you want
here's an example listing you you get
when you run rebase i
however you might not need interactive
rebase
git rebase auto squash will find
formatted
commit messages generated by the fix up
and squash options to git commit
these do the same thing as the actions
of the same name in rebate i
and you also have the amend
option to to fix up as well which is
basically fix up and reword
much like git commit dash dash admit
have you ever bought a rebase don't
worry git makes it really hard to lose
commitments
git appends to a log whenever something
happens you can view this with a git ref
log or you can refer to entries in this
log using syntax uh wherever you can use
a commit hash
you can count from the most recent or
you can
specify dates as well
this defaults to head which is uh what
you've checked out as well if you don't
specify a a branch name
uh see dang it git for more oh no tips
thank you here's a link to my slides
also canva is hiring
thanks for that dave oh
uh up next we have paul who uh only
received his uh
his acceptance at the last minute i
apologize for my email configuration
being terrible
uh
let's uh let's go
uh hello yeah so hopefully you can see
that slide set um
yeah this is a link to an electric
article it says tesla is collecting
insane amounts of data from its full
self-driving test fleet for in fact it's
also collecting uh video data from its
normal fleet which numbers about a
million cars um
what happens is um
to um to explain things i um have skin
in the game i actually own a tesla model
3
so i'm following this this basically all
the time to see exactly what's going on
but what happens is that uh
the tesla cars have a certain level of
automation either called autopilot or
full-self driving
and within that
they have a
training set up
with neural networks that they're
continually training on the next version
of software
and whenever they get to a point where
they are
have some misbehavior that they're
trying to cure
they do something called querying the
fleet they actually ask the fleet to
send
video data back to
the mothership uh in order for that to
be incorporated into the next neural net
yay for neural networks and machine
learning
the problem with that is that that data
could potentially be used
either to identify people or at least
identify cars or possibly just probe
into areas which are restricted
in other words there's definitely issues
surrounding privacy
and every time i've queried this privacy
issue
basically on youtube
i'm i'm staring into the void as to what
it is that's actually being done about
it
so a number of things could happen to
alleviate it to some extent like for
example having data centers in different
countries so you don't ship video data
off to somewhere else
but i think the ultimate cure would be
to have
the neural network in each car
be able to respond to queries for video
data in such a way as it obfuscates
anything which could be used to identify
people such as people's faces
or license plate numbers or any of that
sort of thing
but so far i haven't seen
anybody refer to this as
as a problem specifically with tesla i
have seen some research
in terms of the intersection between
data privacy and video data for training
data in a neural network so if anybody
has
any leads on who is doing that sort of
research in australia or or elsewhere
even please uh please hit me up at paul
leopardy gmail.com
and uh that's it thanks very much
thanks for that paul
i
always appreciate hearing about teslas
from tesla owners
up next we have peter who is going to be
uh asking us a very very vital question
thank you very much chris uh hi everyone
i'm peter and this
is my alarm clock
now unfortunately in order to give this
uh lightning talk i had to unplug my
alarm clock and plug it in near my
computer which means it's lost the time
so my important question is
can you please help me to set the time
on my alarm clock i'm sure that between
me
and several hundred of the most uh tech
uh
knowledgeable people in the world will
be able to work this out so i'll give
you a quick rundown there's seven
buttons so that should be pretty easy to
work out what everyone does they are
labeled off slash fm slash am min slash
down a l1 slash roll minus snooze slash
sleep al2 slash vol plus
hour slash up
and time slash m plus
now i'm sure that's going to be really
easy to uh
to uh configure so uh whenever i try and
do something please just like shout out
what you think the button i should press
is and if you get it right you can feel
smart
so
let's start by setting the time so uh
i've done this before on other clocks so
i know that to set the time you press
the time button first so let's press the
time button hey it stopped uh
it stopped flashing so it's done
something let's try the hour button or
the minute button that's going out uh no
hour minute no
hour and minute didn't do anything
i'm going to try the time button again
let's see what happens time
nothing
hour nothing minute
nothing
all right if you guessed do a long press
of the time button
hey it started flashing now i'm going to
be able to do something
all right long pressure that the time
button was oh it stopped flashing all
right minute no hour no all right
long press of the time button
is it working oh long press hey there we
go started flashing press minutes
straight away how australia hey it works
all right the time is now 114 i don't
make the rules if you don't believe me
check my clock
so now that we have the time set we are
going to try and tune the radio so i
have off slash fm slash am so i'm going
to try and put us into fm let's see what
happens
fm
we have a frequency oh we have static
let's try up to tune it
oh
all right i'm doing a long press to see
if it'll automatically tune and i don't
have to try and guess what frequency i
want
let's see
do we have a station
hey we do all right let's turn it off
now uh there's an off button i'm
pressing it
and it sent me to am
well it is off slash fm am so let's try
it again to get to off
uh took me back to fm
all right if your guess was do a long
press of the off button you got it
correct congratulations
all right we have the time set we have
the radio set now we are going to set
the alarm so i'm going to press the
alarm one a little light came on i'm
going to press it again because i want a
radio alarm and i'm going to set it for
a one
minute and
i think we'll go for i can't remember
what time it said on my clock i should
have checked let's go for 11 past and
see if that looks right
oh the current time is 15 past all right
let's change that to 16 pass so that it
actually goes off while the lightning
talk is happening
there we go we have an alarm set for 16
past
so hey
good i've got a minute 30 so that will
probably go off with enough time to
spare
so i got this alarm clock a few years
back because i really wanted one that
had red colored numbers on it because
i've heard that having red lights in
your bedroom is less disruptive for your
sleep than having any other color
and i gotta say it certainly has red
lights and i really wish i'd just
actually tried out all the buttons to
see how to program it first because this
thing has been confusing
hey the alarm came off this is great it
showed me the frequency let's turn it
off now i remember how to do that it's a
long press of one
gonna hold that down and we are going to
see that the alarm has turned off
and oh it stayed off all right that's a
surprise i spent like an hour trying to
work out how to make this thing not
always work because it's extremely
unreliable
uh sometimes when you do a long press of
the off button it turns off and then
turns on again and i get really confused
but we got there in the end so
back to me
thank you very much for helping me set
my clock i hope you uh had an easy time
of uh setting the time tuning the radio
and setting the alarm the lesson here is
if you are ever uh trying to design a
user interface for something please do a
test of your user interface get your
actual users to try it out see what they
think and ask them when you have just
woken up do you want to see the
frequency of the station you've tuned to
or do you care about the time i'm not
sure ask your users
thank you very much chris and lily
thanks for that peter i
i did end up yanking my earpiece out of
my ear when that am static came on it
was
the most painful lightning talk i've
experienced at this point but uh nothing
like the pain of actually trying to set
that thing uh
yeah i'm glad that there was a very good
lesson at the end of this because
otherwise it was just going to be five
minutes of let me show you this
incredibly cursed clock which i mean is
also entertaining in and of its own
right so
anyway next up we have caitlin mcleod
who is going to teach us some lessons
about speed running
when they were working on this talk we
were chatting in the discord and they
mentioned to me wait libby
i can't swear in these lightning talks
to which i responded uh
and they said
libby this is suddenly very difficult i
did say the f word when i said that time
starts
all right time starts hello i'm kate
kate latte oh caitlin uh i use shio they
pronouns both are good today we're
having speedrun lessons hello uh if you
haven't played celeste before this is a
game about an anxious trans girl called
madeline who finds an ancient abandoned
cursed mountain and uh wins
uh so some of the lessons that i've
learned while speed running this game
for the past like five months uh are as
follows
heck okay
great start
oh no
uh the first one that i want to really
talk about is to be honest about what
drives you so um myself i'm a very
people and community focused person
uh but there are a lot of people on
speedrunning who are very competitive
and they just wanna like get better at
the game they wanna show off how cool
they are
and they want to beat their friends uh
that's not always sustainable
um there's a lot of people who burn out
because
they just can't beat the people who are
very good at the game
um but there's also a lot of people
who've stayed in there for a long time
so that's pretty nice
um the oh
i'm just gonna get past the screen there
we go
the other big one uh that i really love
about celeste is and about python as
well is how welcoming communities really
bring in fresh blood
um
you don't really think about it uh
when you you're involved in these
communities for so long but compared to
other speed running communities and
especially
um celeste is really friendly when i
started playing on twitch um
and when other people started
speedrunning on twitch uh before i did
uh speedrunners just hang out in new
speedrunners chats and tell them like
cool strats and it's really cute
um and python we've got a lot of good oh
i'm i'm quite nervous i'm messing up a
lot
we've got a lot of good uh ways to get
new people on to the community and the
best thing about that is that even
though people are burning out and like
moving out into other areas they've got
fresh people coming in and playing with
new strats and coming up with new ideas
about how to save time in the game and
that's really good
it's really healthy to have that kind of
community and i'm really glad that we've
got that
the next lesson that we have is
uh practice to practice and practice
some more oh my cat really wants to
leave the room okay
you can't
uh
and celeste like
a lot of this is muscle memory right you
really need to get it into your muscle
memory you really need to learn the
strats
and learn to get better at the game
and
if you're
i'm sorry if my camera goes out he's
just nudged the cable
oh really mickey
if you are uh
burnt out from practicing the same level
again and again and again and or you're
burnt out from only having one focus uh
at work
uh and in your uh programming things
it's good to try and practice something
else uh there are other categories
there are other tools you could give
machine learning a try for example in
python they're all options that you've
got
um so just yeah have it have an eye on
it practice is really good and it's
really good to be able to spend time on
the things that you love
but also
there we go
uh you really want to keep an eye on
your uh like
how you're feeling about the thing if
it's feeling like a drag
then you're not going to be as effective
at it
and obviously celeste is a video game
right like it's designed to be fun
uh instead of a troll or something that
you missed
heck me
thank you okay
it's something that you necessarily do
for money um
but that can be it another thing that
i've really loved about celeste is how
generous the community is
not just with their time but also with
the money there's a lot of speed running
marathons that raise a lot of cash for
important charities like trans lifeline
transliberation one minute
one minute oh that's fine we might
finish the level we might not i did mess
up a bit
oh
i'm just gonna focus for this screen oh
no
um but also collaboration has been
really important in this community
i was part of a celeste speedrunning
tournament um which had really
impressive technical capabilities for
restreaming so many different people and
recording their runs and their races
we're gonna finish
um
the most important uh speedrunning tip
that i've got for you all however is to
just fast bubble every single bubble so
you don't lose your speed thank you very
much that was a 407 within 6 seconds of
my pv that's pretty good
and i just want to get to this part of
the cutscene
and this is theater falling down from a
cliff nine
we nailed it thank you very much
okay thank you for that caitlyn
hey it's time for our last lightning
talk uh after caitlyn interrupted our
stream of peter and paul we've now got
marius who's going to be telling us
about
something extremely important with
tensorflow
yeah hi um i'm coming to you from diary
country in southwest sydney today
um yeah and i was just going to talk
people through my latest you know
weekend projects my weekend projects
never take a weekend they're always a
bit longer
but basically this was uh the idea of
generating metal band names using
machine learning
so using python and tensorflow
um yeah so i'm a data scientist at work
and a metal fan at home
um and i thought metal band names were
kind of a fun thing to play around with
with some kind of data science tools
because if you're a fan of the genre you
sort of know that there's kind of some
correlation between band names and all
these hyper-specific sub-genres that
people use like atmospheric black metal
um but it's not really easy to pin down
so it's sort of fun to play around in
that space and see if you can kind of
approximate that kind of fuzzy feeling
of how some
band names are sort of suited to some
um
certain genres so i think you know blood
incantation great death metal band name
um they love these four syllable words
but yeah some of the other things are a
little bit harder to pin down you can't
necessarily spell out rules for why
bands are called certain things you just
sort of know it when you see them
um yeah so it's kind of a complex
influence space with some kind of
structure of correlation to it
there's lots of labeled examples to it
because there's obsessive people on the
internet
cataloging all these bands and listing
all their genres
you can check that the generative model
you're using is working based on kind of
the vibe and the wrong answers are funny
yeah and obviously even if your machine
learning model goes really wrong you're
probably not going to come up with this
they are a genuinely good band but the
name is kind of intentionally
unpronounceable
um
yeah so for my weekend projects in order
to actually get them done i try to keep
them simple and just
you know use what's already out there
rather than trying to do everything from
scratch
um so in this project you know there's
scraping the encyclopedia metallic
you can use scrape by or requests or
whatever else i think what ended up
working was just doing requests
it's really not a dev friendly site it
has no particularly nice api i sort of
had to look at scripts people had
already written and modify them a bit
and it was a bit of a nightmare
um and then yeah you've got numpy pandas
jupiter lab your kind of standard data
science tr um stack for
going through the initial data and kind
of figuring out what's there
um and then what really helped out this
off the ground is
someone's written this python package
called textgen rnn
and what it has is it has pre-trained
text generation models that have already
been trained on
huge batches of text so they sort of
already know how text works
yeah and training ml models from scratch
is not always fun it's not necessarily
something you want to be doing on your
weekends
and this gives you a really good base to
start from
um
and then the other thing that helped was
i wanted to put this up on the web so
people i could actually see it
and it turns out tensorflow models are
pretty easy to transfer from python um
once you've traded them up
and import them into tensorflow.js where
they can run in the browser
um
so what i actually ended up with for a
machine learning model that generates
metal band names
um it's mostly just using
texture and rnn's model architecture so
it's a recurrent neural network
using long short term memory for the
band names
um and then in order to kind of add in
this extra wrinkle of genre information
um we're feeding that in as kind of a
vector of binary values for each band
each band can have multiple different
genres
and that required some slight
modification of the text gen model
but that's sort of really one of what i
really wanted to focus on
so it's trained on all the bands that
were available in the encyclopedia motel
and it only needed five training epochs
to get good results
it's up on the web that was relatively
easy to do although i'm not great at
javascript
and what you end up with is some
code that generates potentially
offensive names so i'm not going to run
it live
but you should try it out for yourself
and it comes up with all these fun names
like this
um
yeah so that is playing around with
generative ml models at home and
something i'd encourage people to check
out
uh and thank you oh thank you marius
okay well that is all of the lightning
talks that we have this year
uh i'm as sad as all of you are as well
oh hi bobo hi i all know what you're
here for
hey hey hey hey hey hey what's this
what's this this over here over here
over here over here oh my god
you're an adult it's right that you were
looking at it
it's everyone's favorite treat ignoring
horse
right uh so yeah that brings us to the
end of the lightning talks for this year
uh i'm sad uh i'm sure you're all sad as
well but uh you've got a whole year
hopefully not spent in lockdown to come
up with your next idea for lightning
talks which you can present at next
year's
pycon au
wherever that ends up being
either where you are right now or online
uh
as usual i would love to thank the great
av crew who make this thing work
including ryan who has been backstage
for the entire thing and won't let me
bring him on stage
jack who has been doing all the tech
checks to make sure that people actually
join stream yard without things breaking
and of course patrick the disembodied
clock
thank you disembodied clock
and of course thanks to libby berry who
has been wrangling all of the speakers
as well as bobo for today's lightning
talks
he helps
and is that what's going on right now oh
yeah
that is definitely helping okay so yeah
thank you libby and thank you to all of
our presenters uh i love these lightning
talks uh at every pike on eu and i'm
really looking forward to seeing what
you all have next year um
see you then and maybe see you in mario
kart in a bit if uh if you're playing
hey byron heck yeah
all right take care everyone stay safe
i presume how long are we waving for
are we off
i have no idea tell us
about hey bobo do you want to attack the
dead cat again that was a lot of fun do
it great thanks patrick