foreign
welcome back to education I hope you had
a nice little break there we now have
Renee Noble and Renee Noble is a many
many things she spends all of her time
doing educationally stuff and community
building stuff and also working at
Microsoft and I think she has found the
trick that finds more than 24 hours in a
day because that's the only possible way
she can do all of those things so she as
a Microsoft cloud Advocate spends her
time teaching the community Through
Global events live streams and Community
workshops and then is also the national
director of the girls Programming
Network which she's been working on and
I've been a part of for nine years we've
known each other a while now
um and that molds not only High School's
aged girls in across Australia now but
also the tutors that tutor those girls
get molded by it as well and there's a
whole network and Community thing going
on there and she's also teaching at plc
Sydney and has her own startup I mean
honestly on honestly so we are going to
learn from Renee today and she's going
to be talking about getting get yourself
a leg up for student projects
thank you
Amanda I know why my MC's uh worst
nightmare when it comes to introductions
what does this lady even do but yes I am
going to help you get yourself a leg up
with your student projects answer as a
teacher educator or just maybe yourself
maybe we'll pick something up you just
want to use in your own time I am uh
Renee novel I'm A Cloud Advocate um feel
free to reach out to me my web addresses
my website's almost these slides as well
and those just like a contact me thing
at the bottom or hit me up on the
Twitter and I just signed up for
Mastodon so it's the same handle now uh
so uh but I am Renee and I do many
things I have many jobs and they all
basically I'll do basically anything if
it's some combination of tech education
and community and that's how I've
managed to have several jobs and I you
know
it's even based I live and eat even
based offer those things that are fun to
do and I love doing them are my main
kind of job that I'm doing and what I'm
going to talk to you a lot about today
is my stuff I do at Microsoft I am a
cloud Advocate Cloud Advocates just
sounds like a made up name but that's
what I am I advocate for the cloud and
things that live on the cloud and you
putting stuff on the cloud and the cloud
making things good for you
um and I get to tell cool people how to
do cool things with Cool Tech so I'm
going to do that now that's the plan uh
but yes as Amanda said I do many other
things if you've already heard a bit
about connected code from Jack today uh
it's good I like doing it and we help
the kids then we've got gpn and our new
charity Tech inclusion to conclusion
where we are supporting uh girls women
and gendered and minorities uh to access
Tech education and go through that whole
full pipeline to becoming Tech awesome
people uh with success and support and
happy communities along the way and also
do a little bit teaching at PLC as well
so you you can see I am all about tech
education and community and yeah so
today I've got some tech to teach you
for teaching your community and
hopefully it's going to be useful uh so
today in my session I'm going to cover a
few different areas uh first we're going
to talk about get Friend or Foe and
we're going to go shopping with Git I've
got a great analogy which I love I'm
going to share so hopefully it's going
to help you in your teaching Endeavors
with Git and then I'm going to talk
about some GitHub tools for creating
better projects that I've been trying
out I'm going to cover a lot of pieces
of technology today
um which yeah they find it all just
piled in I was like oh God there's a lot
of stuff in here that looks a bit scary
but I do promise they're all going to
come together and it's going to make
sense and it's going to work so don't
don't be scared to add a long list of uh
stuff that we've got going on here
but first let's talk about git Friend or
Foe because you know git is it's an
interesting thing it's very useful but
it's also sometimes intimidating so
firstly can I get a raise of hands who
uses gear to GitHub currently yay lots
of people use it so I've got a friendly
audience maybe maybe we'll find out in
the next questions uh did you find it
tricky to start learning git at the
start yeah yeah a lot of people on that
one
uh for the people who are Educators in
the room uh do you want to teach your
students get
not a lot of people some kind of hand
waving like yes it might be useful but
I'm very concerned about how that's
going to go that goes to my next
question do you think it's going to be
hard to teach your students get yeah so
look at their hands up again yeah so we
there this is a kind of why I'm here to
talk a bit about git today I love to
keep talking about git because I'm going
to tell you my own story first and why I
really am passionate about helping other
people understand git now because when I
was getting started with coding at
University I hadn't you know learned any
coding while I was in high school and
accidentally came across some people who
decided 11 o'clock at one night living
in college that it would be really fun
to teach Renee how to code and that's
how I end up at encoding but at some
point in your coding Journey you will
need to do some sort of Version Control
like when you're doing your honest
thesis and you don't want it to die and
go into if your computer breaks which
mine did
um you don't want that to lose all of
your code which be really a problem so
luckily I had learned some gear at that
point
but on my git Learning Journey I was
kind of just working by myself and you
write some code do some commits whatnot
but sometimes it would get into a bit of
a messy State as git can do and the
problem was like I didn't have a great
week to go about learning it I had a lot
of great people around me who wanted to
help me but they didn't necessarily go
and teach me how to solve problems
myself so I'm going to talk about a
specific thing uh merge conflicts which
can seem can seem scary at the start
you know I'd be writing stuff and I'd
want to you know put something back
together merge something or I'd write
something and got out of sync with
something else I need to resolve a merge
conflict and whenever that happened I'd
have people around me like oh I'll be
like oh I don't know how to do this I've
got myself stuck in a state and they're
like oh don't worry Renee I will code
that for you I will fix it it'll all be
okay and I'm like okay cool that's good
I'm glad it's fixed now because
otherwise my work and my honest thesis
and things it's all going to fall apart
but that really taught me that I was not
capable of dealing with emerge conflict
so for years like several years I was
using git but it was like oh I can't use
it I can't do a merge conflict because
that's just a really like Ultra level
move to be able to resolve a merge
conflicts which is not true because I
was teaching at a Computing summer camp
which many of you in the audience I've
taught alongside with there and I the
students are using git at this point and
then of course when you have 14 students
working on the one project you do
encounter eight Verge Conflict at some
point and then I go oh no there's a
merge conflict it's so Ultra level
someone really important is going to
need to come along and fix this and then
I'm just like oh
Emma do you know anyone who can fix this
merge conflict and she's like oh we'll
just do that now
and I'm like what we just do it and then
she's like yeah let me teach you and
then she's like Okay cool so you just
opened this and this choose Beach part
you want and then it's done I was like
are you serious people have been
rescuing me the damsel and distress from
merge conflicts for four years because
they're so difficult so from then on I
was like you know what actually git is
not as hard as people maybe make it out
to me because when people do resolve
something is a bit tricky they do want
to see what is like a superstar but I
think we need to you know make ourselves
all feel like we do have the potential
to be a git Superstar or just a mini
star because sometimes it's actually not
such a big deal sometimes it can be a
bit more tricky but it doesn't start
with merge conflicts so uh that's fine
do a lot of work uh helping people learn
about git because it's a really
important concept that's going to be
really useful for a lot of people and I
save a lot of you know stress along
along the way so let's take it from the
top for anyone who is less familiar with
yet
I'll take it right from the top with
Version Control Version Control is a way
of managing our files and code or not
even code just data we don't want it to
look like this so has anyone ever had
this happen on their computer yeah so
yeah I did I did both uh chemical
engineering and computer science at
University and this is what the chemical
engineering group projects always look
like but by the end it's just like yeah
which which one was it was it project
final or project final or caps that
we're supposed to submit I don't even
remember now and this is when you need a
Version Control uh because yeah it's
going to stop this happening it's going
to be a way to build on top of the work
you're doing as a team and a lot of
Version Control tools I also have ways
to back things up online and neat things
like that
so that's Version Control that's the
concept that we're going to work with
then we're going to talk about git uh
which is an implementation of Version
Control there's different kinds of
Version Control uh this one's the most
common
um and it has things like branches which
are really useful if you especially have
multiple people working together and
then you can learn how to merge them
yourself and not have a panic attack
about that because it's actually fine
and there's lots of Integrations for git
where you can use it to deploy code or
things like that and lots of platforms
that support git like GitHub which we're
going to talk about in a second but this
is actually how git Works behind the
scenes uh it's basically just keeping
track of what's changed so I have a file
I've added some lines I've got rid of
some lines I've changed some lines I'm
just going to keep note of what has gone
on there and from where you start off
just by adding subtracting you know
putting the different changes in there
you can actually just rebuild what the
code looks like now so we don't have to
store the file over here and over again
like when I had project Super Final and
several other versions of that it's just
eating up room on my computer this is a
much more succinct way of storing
changes to what you have created
so we can do that with GitHub uh you
know which uses git as the
implementation and it's a it's a
platform for
putting your code up online firstly as a
nice safe way to keep it up there and
keep that history of changes that you've
made
the diffs as we call it uh and then you
know you can use those on that on
multiple computers you have lots of
people collaborating together uh sharing
files and projects
it gives you tools to work with other
like commenting on each other's code and
doing pull requests and better ways to
manage changes
and tools that look at your code for
instance making sure you haven't
committed your secret keys to the public
repo things like that that's good uh and
it also has ways of integrating with
other platforms so hey we want to deploy
this web server oh you simply just give
me your git URL and I can do that and
help you do that it's great so that's
what GitHub is for you know as a concept
for us but we do need to learn a few
Concepts to be able to use get and
GitHub and yeah this is my favorite
analogy for helping people understand
git I've used this with lots of
different people from high school
students to
my interns are working under me and my
screen has gone away
um where it's going to come back okay
cool uh so we're going to talk about
just the basics of git we're going to
add commit and push but this job
technology does extend to more you can
talk about merges you can talk about
rebasing you can talk about all kinds of
things uh you can watch my other videos
which I'll give you links to at the end
of it because I really do like to talk
about git with this analogy but let's
get started on how git is like a
shopping trip
so firstly we've got coding we're going
shopping we're putting things in our
shopping trolley then we're going to be
going to the checkout uh putting them on
the conveyor belt then we're going to
commit to the purchase and we're going
to get this neat receipt here that's
going to tell us of what's happened and
then at the end when you want everyone
to know about the really great things
that you've bought you're going to take
a photo of your brand new outfit you're
going to put it on Instagram and put it
out to the world so other people can see
so let's break that down just a little
bit
so firstly we're browsing we're in the
shops we're putting things out trolley
but we might also be like nah I don't
actually need these seven boxes of
chocolate put them back on the Shelf
maybe another day I'll come back for
that uh and yeah you have the
opportunity to just put things in and
out while you're going around the shop
and no one's you know keeping track of
all of that
so this is really your coding and saving
because you still want to save your code
as you go along but you can just undo
anything as you go along and nothing's
recorded in the git history in the git
log yet
so
once we are happy with what's in our
trolley we might head over to the
register and we can put some or all of
our items onto the register
and then we can start you know moving
towards our payment system so we might
just put a couple things on here if you
run a business or you have work expenses
in a corporate card maybe sometimes
you're buying something for yourself and
something for the business so maybe
you'll leave some stuff in your trolley
for a separate purchase just so you have
a separate receipt and you put a couple
of things on the register on the
conveyor belt now to do your first one
so let's go on with that transaction so
this part here has been all about adding
things so that's your get ad step
and yeah it's a really great way to be
like yeah Kids Go kids go shopping they
put things on the conveyor belt it's
like yeah no I am saying this is what I
want to buy
next up we are committing to the
purchase which is like our commit step
and you get this handy dandy receipt
which has a list of the changes you have
made to your life like buying these
fantastic Pink Shoes in this blue
t-shirt uh and the great thing is you
could also undo this if you like
actually pink is really not my color I
just shouldn't have bought this I want
to send them back that's like let's
let's undo these and that's kind of why
just this commit our commit history is
exactly like a receipt it shows what
we've done and what we can undo as well
so this is our committing step and yeah
it just keeps track of all of our
everything that's going on there finally
once we're like cool this is this has
gone pretty well I've got some neat
items here uh I wanna I wanna tell the
world about them uh we're going to post
a selfie on Instagram probably which is
really cool
uh but this is where it can get a little
bit more tricky if you were for instance
you know had a lot of followers and you
weren't actually really sure about the
things you were had bought yeah like
pink shoes I don't know maybe maybe not
you posted on Instagram and then
everyone's like oh this is the best
outfit already or ever I want I want to
go get one for myself maybe your best
friends are all going to go buy pink
shoes that match now and then you go oh
actually I've just returned them um
maybe I should take that post down I
don't know but it's out there in the
world and what something's out there in
the world things can go a little bit
awry if you're working with other people
and that's the same in terms of git
um because if you're working with
multiple contributors someone might
someone else might pull up down your
changes that you've made to the repo and
say oh this is a great code I'm going to
start building on top of it so that is
how we uh end up with our Instagram
worthy shopping trip um but you do want
to you know consider what you're putting
out there into the internet whether
you're online or whether you are pushing
to the main branch of uh your repo and
this is why branches then get a really
really helpful as well because you
didn't have to put it out for everyone
to see maybe it's more like a you know a
slack Channel or something whereas it's
just a niche group of friends who
understand that maybe you don't want
those pink shoes rather than putting it
out to everywhere in the world
so
we now know about git and how how to go
shopping with Git
um what we can what else can we do now
that we don't know all about this
well I do a lot of streams on git but I
also do a lot of streams that rely on
git and putting my code on GitHub so
people can have it at the end of the
streams or giving them a little template
so they can code along and one of the uh
my favorite streams I've done actually
with our lovely host Amanda which is
about creating a resume or a portfolio
website where we gave them this
portfolio and they could code along and
make it their own
so that was super great and we had all
these people forking the repo which is
really cool because a lot of people come
to my streams and they don't do
absolutely anything I think I don't know
I can just see the number of streams
going up and how many people are online
but I don't know if they've done
anything but here we had 31 people
forking this Reaper which was like 31
people actually did something that's
really cool
but uh well I'll talk a little bit more
about what this actually involved this
is yeah we gave them the repo and then
through the episode we showed them how
to like add you know write some HTML and
some CSS and then by the end of it you
know liquid ad uh you know some cool
JavaScript to make it a bit funky and
make themselves really stand out so
that's what we had in our episode
uh
and that was really loved by the people
watching the streams it was one of my
most watched streams which was really
cool I was like oh doing these template
things is really handy
um and then I happened I was teaching
year 10 last year and I had a little bit
of a cold and I you know in this
coveredy times you absolutely can't go
to school when you have a bit of a cold
so I was like what am I going to get my
students to do because they're not going
to have someone filling in who's going
to understand the lessons I had prepared
I know they could use a resume or a
portfolio I'll just give them a link to
this stream and they can do it
themselves because there's a template
and they can just follow along with that
so maybe they'll love it just as much as
the stream viewers did
um but it was met with some confusion
so look I obviously wasn't there to tell
them how git is just like going shopping
and they had never made a GitHub account
before and things like that so that was
a little bit confusing but I think there
were also just some little wins that I
could have used to make this a bit
better because as I said reduced a
GitHub what we've used a template that I
put up as a GitHub repo but I hadn't
actually used a git Hub template because
I didn't know that they existed at the
time but you know shortly after that I
found out they exist and there's a few
other tools that have been released
since that will make this even better
and just something that I'm like
actually this could be really cool to
use in the classroom
so yes as I said I just had a regular
repo if I'd only just gone in and
clicked this button git repository a
template repository I just ticked that
and now it's become a template and this
would have actually been really good for
the stream as well because I wanted to
be able to Fork my own template because
I did a morning and an afternoon stream
uh so we had other people from around
the world watching but I couldn't Fork
my own repo so I had to log in as
different people to make more templates
to show everybody uh which was really
annoying I was like oh no who did I log
in as this morning or what did I use
last time for the morning and the
afternoon but with the templates you can
actually
use your own template to create a new
repository which is really handy and
also for students it kind of gets rid of
some of the scary looking stuff for
instance when you create a repo from a
template it gets rid of that long commit
history because you don't want your
students seeing all of this stuff
because that's scary looking they just
want to be like oh yeah I have a folder
and it gave me the starting code and
that's really cool so you get rid of
that and yeah and also you won't have
things being like Oh Upstream has some
changes do you want to pull them because
your students don't want to do that
don't get your year nines to pull the
Upstream changes I don't think look
maybe but if you feel like I really
missed out on something I needed on for
that but let's try and avoid that if we
can
so you get rid of those scarier looking
parts and make it just a little bit
simpler but I think there's some
technology that we can use to make it
even better so I'm going to tell you how
we can make something using GitHub
GitHub templates code spaces copilot and
GitHub actions the code copy GitHub
Cobell it's just for us uh because why
do I want to write all the test cases
myself when I can get GitHub copilot to
do it now so let's give it a go so we're
going to be making a flask app the idea
is you know the theme is that it would
be a flash card flaska for instance so
let's speed run so I've actually got the
whole process to show you exactly what
it would be like to set this up for your
students set up their template set up
some tests for some back-end testing and
then actually have the students do it so
let's Speed Run and see exactly what
that would all look like
so let's kick it off
um this is me setting up the template
I'm going to make it public so all my
students can see I can actually just go
in here and write all of my assignment
details if I wanted it all right here in
the one place which is really handy so
I'm just going to commit those changes I
could also add any other files here on
the main page as well um but we're
actually I think I've add in just the
requirements.txt just to show you that
you can put files in here if you wanted
to upload some photos or something for
your uh markdown to write yours claim
and description but here we're going to
actually set up a code space because
code spaces are like an online Dev box
thing that you can code in and actually
run python because with all our web
development stuff you can run vs code in
the browser but it won't actually run
your code but here we go we can actually
install python in this Dev box thing
we've just used the default devbox which
makes it really easy to set up and we're
installing Python and I'm also
installing co-pilot while I'm in there
copilot is free for teachers and
Educators who are verified as well as
some open source contributors so get
some free stuff for yourself okay now
with copilot I'm just going to go and
quickly set up a flask app I don't want
to have to remember all this flasky
syntax so thanks copilot for doing that
you might also be like I don't want some
of this stuff it's not what I want to
include in a project for students
because it's a little bit above the
level but anyway we've got it all set up
or you might want to include some extra
stuff that makes it easy for your
students to run like this uh debug and
reloader and things like that
so here we go we've got a working flask
app up there but we only need some
templates as well so quickly go to set
up our index.html file thanks copilot I
don't want to have to write all of that
according myself to set up all the HTML
I'll just make some changes to make it
look vaguely like the assignment I want
the children to do and great that's
looking good we'll probably want some
CSS I always forget CSS styling as well
that's the one I forget the most so
let's get some color on there just so it
looks just so it's actually already
hooked up we'll add the link in there
something I always always have to look
up as well adding all that HTML I keep
losing my screen which is not ideal but
that is
uh yeah luckily that video is over maybe
no it's not there we go
let's take it back just a hot second
it's cool so we're now adding that link
and we've also set up some CSS I think
it's just nice to give the cssery linked
so you know that's already working so
I've made all the text green just so we
know that the CSS is alive and well or
green at least
um and from that we can go to our
server.pi file and just hit run and open
our website in the browser so we're
doing now all of this in the browser
because when I was working if I wanted
to do a stream previously uh that
involved python I couldn't just use the
vs code in the browser I had to jump
back into vs code native on my desktop
so this is much easier to follow along
with and it's got all the tools built
right in there
uh yeah so let's opt out the about page
now that we've seen that that is already
working for our index page just a little
bit of styling as well so it can look
really fun and put in some more CSS and
then any second now we'll see our
beautiful website in action ready for
students to give it a go oh yeah and
we're adding just so we could actually
show you the students a demo of how it
looks to insert data in terms of
variables into a template a template a
flask template we're just putting this
activity randomly chosen learning based
activity in here as well
so uh there we go we've now got a
working class Gap and it's ready to hand
over to our students well firstly we
might actually want to consider adding a
little bit more
because maybe we want to have some
pythony stuff as well that we could do
with some testing because with this
Beacon website it's cool and all but it
can be hard to test the outcomes that
you're looking for unless you have some
more specific outcomes that you need
them to code towards
so I'm going to get them to going to set
up a helper file function with some
function stubs that I'm going to give
them that they're going to need to fill
out they're just going to be like
randomly kind of things that maybe you
would need to help in your website but
they're kind of more just for demo so
here we go let's create our helper
functions.pi file
and then once again I don't actually use
Pi test I thought it would be uh
interesting in a second I'm setting up
my pie test here to test the functions
that I've just written which are about
getting random names and colors and the
different numbers of colors and things
like that but I thought I'd give Pi test
give pie test a go and see
what it is uh like and see how much
co-pilot can help me write some pie
tests which will be here now that the
screen's back on so thanks co-pilot for
writing that well uh well uh the screen
was off um but that's okay it just has
helped us write all that stuff and
really helped you know fill out all
those different test cases and include
some tests that maybe I wouldn't you
know think of off the top of my head or
like oh I shouldn't be doing type
checking for that so with this we can
now run the test we can actually set up
using the flasky looking icon on the
side to say yes please set up configure
the pi test options for us and then we
can actually just run it really easily
and see how it goes in the browser do
you remember to name your test cases
with starting with test so test Pi test
test helper functions or whatever I've
run the test I've failed them because I
didn't do any type checking and I'm like
actually I don't want any type checking
co-pilots get rid of that it's not
really appropriate for year eight maybe
that's who you're writing this for so so
let's write it again and be happy with
it and then we can commit it and the
next thing we're going to do is have
this be something that automatically
runs whenever your students commit their
code
uh which is really good because you can
see the progress that they've been
making as they go along uh so yes before
I commit though I am going to remove all
the answers do not give this students
the answers
because then they'll just copy those and
then they'll pass all your tests uh so
here we go it's really easy to set up
the uh GitHub actions to configure the
pi tester run you actually just hit this
button and then the Devo like thought
the demo but like the default stuff that
it gives you is the stuff that will run
the tests so that's all we need
uh cool so now we've got that in place
and we clicked that button that makes it
a template so we can have our students
go through and build on that template so
let's give that a look
so cool we're in our project and like oh
good we've got this project we better
start making new code space the code
space that we've set up already has all
the requirements and stuff that's built
into it if you do want something more
don't don't forget to make them make it
a private account as well but yeah if
you want something more technically
involved you can not you can avoid not
use the default one or build it on top
of that one to give more specifications
you can get your code contributors added
in or you as a teacher so you can
actually see what they've coded uh
that's pretty important so you'll need
to show them how to do that and here we
go quickly we're setting up code spaces
and we're going to jump in and we'll be
able to quickly go through and make some
edits to all that code adding the names
of our people in the team
foreign
as well and then yeah that's all
it's all happening now we just want to
commit it and run the tests and see how
that all goes
sorry we've seen that
let's Jump Ahead a little bit and we've
committed the code the first time but we
can see that it hasn't passed the test
yet so we're going to go and we're going
to actually write all of that code fill
in all those to do's and then we can run
the code one more time
once we've committed it and we'll see
that it will go green so that's what we
want
so it's as easy as that to get students
seeing their code and having some
testing involved in the code as well
sorry what have we learned today we've
learned that GitHub and get our friends
to you and and to your students think
about you know not losing those Major
Works accidentally or being able to see
what your students have contributed to
different projects as we were hearing
with questions to Ali like how do we
know if they've actually done any work
well you could actually see who's
committed what parts of the group
project so that would be really handy
we've also seen how good is just like a
shopping trip and Instagram you know
Instagram worthy shopping trips and we
know the children love Instagram so you
can use that analogy and we've also seen
that you can get yourself and your
students to leg up by creating a project
just saved like this uh so yeah I hope
that's given you something to take away
uh here's a link to some stuff that you
can have for free I've got a cloud
skills challenge if you want to learn
more about git and Code Pilot and code
spaces and GitHub actions and stuff so
that you can just learn lots of free
stuff on Microsoft learn so go get all
the free stuff if you're an educator or
an open source contributor to a major
repo uh go and get that free stuff too
and then yeah for your students uh get
them signed up to imagine cup where they
can like be part of a competition to win
a hundred thousand dollars US which is
even more money or imagine cup Junior
for anyone under 16 and for University
students Microsoft student ambassadors
because then they can get good stuff for
their resume so that's all I've got for
you today and I'm all out of time
thank you Renee thank you
here is your how many is that now that
you've got of python mugs I think this
is five five
congratulations thank you very much
um ladies and gents if you've got
questions pop them on to the
um the Discord Channel and we'll do our
best to answer those ones
um I should let you go for lunch really
um you haven't been naughty
um back at 1 45 150 please and we'll see
you then thank you very much
you