foreign
[Music]
welcome back everybody now this morning
we have got Andy here and he started
hacking as a teenager with micro
microprocessors were first available you
had to build your own personal computer
which was Quite a feat back then
since the start of 2016 Andy's developed
machine learning applications for
Robotics and drones today they'll be
talking about an open source distributed
embedded framework that consolidates
artificial intelligence robotics The
Internet of Things media streaming and
machine learning pipelines into a single
cohesive platform
thank you
[Applause]
hello everyone it's really fantastic to
see everyone sort of it's a bit dark
although I really wish I was sitting
with you not not up here
listening to the title author and I
thought gosh that sounds a bit arrogant
and ambitious but um well having having
a good work at it I think my slides are
probably a little bit text dense usual
engineering fault um that URL at the
bottom in yellow that's the slide so if
you have a mobile device now jump on
jump on that Tony URL and uh you might
be able to see the sides close up
so I've been working on this project
with several people for a long long time
now and one of the aspirations was to uh
be able to have it used commercially
because it's so hard to do
um you know open source development you
know just in nights and weekends and so
um well the good news is uh last Friday
the company I worked for soap on agreed
to a big open source so you know if you
do like what you're here today you'll be
able to have a bit of a play
but before I start should um welcome to
the country I begin today by
acknowledging the jury Warren people of
the cooling Nation the traditional
custodians of land on which We Gather
today I pay my respects to their Elders
past and present I extend their respect
to Aboriginal and Torres Strait Islander
pupils here today
so uh just uh taking Hughes lead
um uh Back in the Day live playing a bit
Micro Control microprocessors and still
do now so this is one of my background
projects it's a 6502
um but rather than an original
um chip that you can get these days and
get 40 megahertz chips um you know throw
a lot of ram at it up on the top left
there's a little digital oscilloscope so
I can look at the clocks and um and also
using a Arduino from from John that uh
basically can load the Ram with programs
I can move the clock from from zero up
to a few megahertz and also monitor the
address bus so just so much easier today
you know to play with this stuff
compared to where it used to be and uh
yeah and we're on C compile it's got a
little lisp interpreter it's a lot of
fun
and uh and this is how I guess many of
us in the room room started you could
really um it's very tangible you could
um you write code and also play with the
hardware and uh I think these days
there's many layers of attraction that
sort of keep us away from that
um mother Mother's or hobby is uh
playing playing the Astra and uh and
dogs sorry robot dogs
um so this is very much a work in
progress but heading heading towards
these things to bring this Confluence of
um our iot devices plus robotics plus
plus video nml so um just yeah just to
play games at home and also actually
hopefully do something valuable in the
world
okay so here's this morning to um show
off this piece of work called Ico
services this framework
um I I did cheat and use chat CPT just
just to pick a three-word title for this
slide and that was that was it
um but but I've got to keep up with the
cool kids
um
um I work I work at Silver Pond which is
fantastic place
um the business team and the engineer
Engineers are great we basically make
machine learning products and I'm a
systems engineer and I basically do the
infrastructure of support and those sort
of things and as often as I can hang out
with friends at the hackerspace and
basically play of devices and robots
there in my spare time
uh so today we'll trust this embedded
framework I'm trying to give you some
context I was thinking at first I'll
just you know just big lead up and the
big demonstration at the end I thought
no that'd be the worst why does give you
the give the demonstration the start and
if you like it you can stay
um we're gonna Crash and Burn early
um try and cover what this framework
might be good for how it differs try and
give some technical details but not no
not try to boil your death
um although I couldn't tell if you're
sleeping or not and then I also just
covered some of the aspects of uh of
trying to get a Synergy or the best
outcome of working both commercially and
and as a community developer and then
maybe discuss a little bit about what
next
Okay so
you know it goes about saying it's been
an extraordinary time over the last 60
years 30 years 10 years
um you know all the software could
possibly want just there at a touch of a
button
um you know or and for those fortunate
enough we'd say basically have you know
we're connected all the time out of our
devices in our home in our pockets and
so on
um the hardware we have now is amazing
now just looking at the numbers
um you know the transistor count so
looking back to that first slide that
microprocessors knows today's like 6502
about three and a half thousand
transistors
um a clock rate of megahertz and uh yeah
one core uh these days
um the clock the transistor count is
about six orders magnitude greater the
clock three sort of actually greater and
the the cores you know maybe a magnet
about a thousand times fold so it comes
to about 10 to the 12 increase in uh in
I guess raw horsepower it's pretty crazy
but that's that's what's enabling uh AI
with its um insatiable need for our data
and and compute and it goes about saying
that last year was um pretty amazing in
the way that just from a website pretty
much anyone who's connected Can can play
with these tools now and Achieve
extraordinary results and uh just
yesterday open AI I did a case a bit of
a preview on gpt4 which might be out for
a few months it sounds like but yeah
there's a link there for anyone who's
interested it's just um just a short
demo by this the co-founder and
basically they just lifted the game on
most mostly what it does
okay so you hear that um if uh if you
sort of can describe the problem you're
halfway to a solution
um and sometimes it feels like that but
other times just go no it still seems
like a ton of work to do but anyone
who's um Works any of these domains of
innovative things I might work with
media
um yeah you're in there more space or
robotics each of these things pretty
much you know more than a career's worth
and they will have different Frameworks
and tooling and and it's um you know it
can be quite a difficult you want to
pull your hair out and try to integrate
these Technologies and so um yeah the
hardware is different the uh you know
your concerns when doing media are
different from when you're when you're
doing machine learning and uh and and
yet if you want to build these um some
Modern applications you need to bring
all these things together coherently and
on top of that there's also just all the
other concerns you have in terms of um
failure and security
um you know how to configure how do you
persist
um you know if you've got multiple
programming languages so it's pretty
challenging to um you know to Google
systems these days whether they're
reasonably reliable robust secure and so
on
let's check to check
cool all right so yeah so I'm just going
to head off start off with the demo
um uh I was very kindly allowed to to
use this even though you know business
people know are very very concerned
about how an engineer presents stuff
because you know we don't we don't mind
things being a bit ratty and daggy and
this is really just here to show off the
The Open Source framework
uh yeah so I said I worked for a local
machine Learning Company
um and we've done the classic pivot from
Consulting over the years to to try and
productize what we do and that's uh it
can be quite challenging and and the
actual product itself is much much more
than uh the the piece of work I'm
showing you today uh but uh but this is
probably the best demonstration of what
I can do in terms of um the uh you know
using webrtc for video
um capturing data from a device either a
camera or in this case a little Ikea
train
um
and uh yeah so I have to have to show
and also when you um when you're doing
commercial work you you're confronted
with problems that um you know you may
not get when just doing your hobbyist
work uh because when you're um I know
when I'm doing my own projects I
particularly try and do the things I I
know I think it will I'll be able to get
away with you know basically tail of my
my efforts to something I think will be
doable where it's often cut clients or
give you such a situation which you go
oh man it's so hard to do something a
little bit easier
um but it is a good opportunity to
really make sure your work is Battle
tested and uh and I believe very
strongly that um there's good synergies
between commercial and community that um
you know we just have to look around you
today to know how the quality of people
uh they're out there in in our community
and around the world
um and uh and also but but you also know
we're always struggling for funds and uh
and an opportunity of people finding
work and so on so I think um they bring
these two two different um I guess
organizations you know the
the community or commercial is really
important
so what I found is uh I've been working
as a very very long time and actually
conceptually so it's been used on nearly
four projects now through my career just
as I've gone from from job to job and uh
and it's gradually got better and uh but
one one thing that sort of happened
during lockdown was um yeah we normally
try and Achieve work-life balance you
know be social and family and stay
healthy and so on and just for
enrollment at least for at least about a
year and a half is like nup
uh there's a very unfortunate situation
but I was thinking to myself well if I
can't get this project done now when I'm
not allowed to leave the house
and and that's the stuff I will I'll
never get it done so um I thought you
know this might take you know six months
to a year and here we are three and a
half years later and uh yeah it's still
a lot to do but but it's true if it
wasn't for
um being locked away in my own home for
for many months that would never
happened
okay so and then just to give some
context uh this is a little bit of
framework basically performs uh sort of
the infrastructure for um a bigger
product at work at least in terms of
some of the back end and some of the
distributed computing aspects and um and
uh what this it's been often when you're
um work in your organization have to do
that thing today yeah you don't have two
weeks to get it right you have to
basically you know do something for a
client that you know that you um have to
immediately about give me all the
thought it needs whereas um sometimes
we've um you know without open source
working here we can take you can take
the time overnight or weekend to um
to think through that design or
basically
improve some of that Tech debt and how
it really sucks but you'll never have
the priority to do on Monday
okay so this is a bit of a conceptual
view of the overall a product basically
the idea is to take uh data from the
field
um it could be uh devices and things out
you know basically maybe cameras in the
city like looking after the road system
or could be in rural basically looking
after um cows surprisingly cockroaches I
think but yeah but basically um where's
your livestock or basically Resource
Management all the oceans so one project
we've worked on is basically fish fish
counting to make sure that the state of
the fish stock and helping marine
biologists so that comes in as a series
of Rich data and streams it could be um
GPS location it could be lighter it
could be video it could be hyper
spectral and then you basically want to
um send that through data center
pipelines and one one of the advantages
of
um doing things the data center is uh is
that you get the information from all of
your devices in the field so basically
get this more um of omnisone sort of
overview and make decisions that you
can't make as an individual device on
the edge
and then that goes through we basically
integrate to our other people's
Enterprise systems they can which they
can uh make sense today themselves and
also basically use ontology or taxonomy
to
um
break down the uh I guess the
relationships between the things you're
seeing in the world so that's sort of
what it's saying to do
okay so what about shows um this is a
bit more of a complex view the
the blue bits are basically about webrtc
webrtc is pretty amazing and basically
allows you to have bi-directional audio
video and data that gets through
firewalls
and anyone's using it as a result of
covert on the earlier on Zoom meetings
so so there's a a part of this race you
have to set up the web artistic
connection all the white bits they're
all they're all services that are where
we basically sit on this framework of
sending messages to each other and the
uh because the uh the green the green
bits is just the underlying um mosquito
so what we end up with is a a web
browser is going to
um over websockets talk to the back end
to the registrar find out what sort of
services they are they're particularly
interest in the data sources like like
the cam the camera from the train an
rtsp camera in our office which I should
have checked before I'm presenting today
and also I'd like to see a camera on my
laptop uh it's the selected data source
which that allows the web browser to go
to the signaling server uh to set up the
webrtc connection uh once that's good at
the web server can then talk sorry the
web browsing and talk to the back end
webrtc manager to then set up a session
client and then once that's all good the
data stream soon ends up going to the ml
model then back to back to your laptop
um photos is worth mentioning
um oh and also interestingly enough um
the it's what the web browser workers
all in go
um on top of azim which is very very
cool so basically the same run the same
code in the browser as the back end okay
well let's see if I can bring this
together
so
I'll just just refresh this
so this is the web browser view
what you'll notice is up in the top left
is a number of services the the mock
train the live office camera and face
detection in the middle is the chart so
having found the services so I'm just a
quick look at one
so using eventual consistency of over um
effectively over mqt all the data about
that train is coming coming back to here
like it's location at speed and also it
also provides UI hints it says look go
and put the put my GPS coordinates on a
map put my speed on a chart so just off
the screen here there's some chart
information for all those devices
and just to show you on the back end
you can see that's the actual devices
they've got a little dashboard which
I'll talk more about later and if we
look at that train we can actually see
the same GPS coordinates here in that
middle View
so so one of the goals the system is to
make um complex systems be able to
inspect any part of them and see what's
going on
so let's uh let's see if this works
um right
it's my presentation here's the real
thing
okay
so this is basically taking a
pre-recorded video file because um the
Train the train is here today
[Music]
like what I can do is I can check the
check the back end see why it's
a refresh
oh here we go yeah your team
so that that's video that's being sent
uh sent through the back end to the
front end with webrtc
um on normal stances so be going through
the ml model and uh and if it checks uh
signs or buildings or or um trees that
let you know so that's sort of the first
thing now the second thing I'd do is um
and go up to here and I can send a
command through to the train from the
web browser just saying just saying stop
and so we can see that we don't have
video stop and so it's one of the trains
and if we look at the back if we look at
the back end we can see the the trains
also stopped in its actual state has
gone from from running to false
there we go and if I wanted to I could
um
just from this dashboard I can go and uh
they make that true
and hopefully hip trains going again
fantastic and soft up but the video
isn't I think I know why I forgot to
then
use a slot user in Facebook that should
that should start the video up again
the second thing I'm going to do now
I'll just have to do a refresh is to
just see if I can show the the camera's
live stream
the office camera
so this is in a building it's actually
looking over the river just up the
street from us and so you could almost
but not quite see where we are there's
the that's that bridge on the far right
is just uh just across the river from us
so that's an rtsp camera in office and
I'm hoping to do the with the ml
Engineers is
um is a trainer model that recognizes
you know boats and trains and and things
like that just just count traffic
basically to demonstrate
um I was actually running this last
night just in case I've had a failure
today
um and every hour the across the casinos
got these um little gas towers and they
um and the Senate little gas balls um
it's global warming
um but uh
um it's been doing that for decades uh
lots of fried pigeon I believe
um and uh I don't know I might take a
few seconds and say oh maybe a bit later
to show you the view because they've got
these massive gas ports over the river
which was pretty impressive in black and
white okay the last thing I'll show you
while we're on a roll
is um
so in some ways this is not that
exciting because we see video and stuff
going to browsers all day every day
these days um but it's really more the
architecture that was put in place to
make hopefully make this a little bit
more moderate and easier I guess is the
point
oh hang on so I've opened and showed the
same same thing again sorry
nice fast internet fantastic
thanks there thanks Steve
he's uh the uh all the volunteers are
awesome as always now this takes a
little bit longer because um the ml
model takes about 10 seconds to um to
load up maybe a bit longer and
there's a little problem because I have
distributed leases in the lease time was
also about 10 seconds saying if we don't
hear back
um
uh assume there's a problem or not but I
have actually extend the lease out so I
should be that should be up now here we
go no hang on
oh sorry it's I keep going back to My
Demo page oh here we go that's actually
working reasonably well uh yeah so this
is um just round trip from the camera
does everyone can see it okay
um yeah
and the nice thing about we're about to
see we should be able to get roughly um
less than a second latency so from from
this camera up to the data center and
then back and back down again so wow
the time I worked we can all go we can
all go home
Okay so
it's actually going to
that's what I want all right so um I
have to speed this up a bit so there's
been lots of influences so one is the
the actor model it's a model for doing
concurrent computation with distributed
systems you know everything is an actor
it was created back in 74 and Guy Steele
was curious about whether it could
actually be not just Theory but work in
the invented scheme specifically and
that for other reasons or to test out
the actor model and along the way
invented call by continuations and I
think he's probably like 21 or something
like that
a bit scary but also erlang is probably
the most famous use of the actor model
the erlang language uh powers or did
power a lot of the world's
telecommunication networks very very
reliably and also the links used in
WhatsApp and WeChat who knew
um so the actor models um maybe not
everyone's over it's pretty successful
another influence for me was the uh it
was a genie which was a stupid system
that um a little Breakaway group in
Sunrise which I'm super well designed by
some very very smart people for
experienced fully asynchronous service
based they can just use Java interfaces
so you didn't have to worry about any
stubs or
marching or marshalling but wow the out
of box experience was just really really
tough it was very challenging to use so
unfortunately it's the function now but
it was a great great thing to learn from
but just just briefly on actors
actors can do three things they can
basically send messages to other actors
they can create other actors and they
can also change their state which means
that there their behavior on the next
message will change and the great thing
about actors compared to other just
having a whole Myriad of services it's
just easy to to um reason about them
about your network you know just
simplifies things
but without compromising being able to
get stuff done
so some more inferences uh yeah everyone
knows I love lisp you know um and uh in
this system we've actually used list for
the for the messages I think if
everything as being a function call
which can just translate directly to a
lisp s expression and what's great is
that allows you to do mobile code you
know it could that s expression could be
data structure but also could be a
filter so you basically say to another
another notary Network or another actor
in a network here's this filter we're
going to apply so I can make very easily
move your computation around the network
um of course you know keeping security
concerns in mind
um but great thing about Bliss machines
back in the day was everything was
enlisted have they had Hardware
instructions uh the operating system GUI
applications it was just Turtles all the
way down it just showed you what could
be done the other um inspiration is
Small Talk which is
um uh Alan K say look you always
intended that uh it really should be
message oriented not object oriented um
but yeah basically about small talk is
even the language itself is where you
basically send the messages to other
parts so your if statement is actually
it's performed through sending messages
to the the true block or the the false
Block it's um and if you've seen a small
talk um or if you haven't actually
haven't seen small 2 you can download
squeak and it runs on Modern up your
operating systems and you basically see
what an amazing system this was where
you can you can click on a window and
it'll take you to the source code
browser and you can change the behavior
in the system on the fly without without
rebooting in fact The Story Goes which
is true because in CCTV jobs talking
about this on YouTube when um the small
talk team invited a number of companies
in to see what they've done because no
one had ever seen no one had really ever
seen a graphics using a face before with
a Windows and mys except a few
researchers and angle bar of course
and uh they they they showed they showed
that they showed him about six things he
said look
um I was so blown away by you know what
the first thing I saw which is the
windows which even obviously took back
to Apple he totally forgot about what
those other things were ethernet laser
printing yeah but the thing that
captures imagination was according to
the Xerox research was how they did
select was really ugly it basically just
blocked out the whole text and it was
ugly and and Steve asked him well that's
just terrible you know what can you do
about it and then the engineer said look
hang on give me a sec I found that you
found the uh the small talk method
um I said look if we subtract this
rectangle from this rectangle basically
this nice outline did that in about a
minute uh didn't stop the system and
then he basically had like almost like
moving Arts like type thing
um yeah that's what that's right Mr jobs
forgot about all the other things anyway
um moving on because that's right so
some overall design principles
um I've completely stands through
messages
um I want these things to be very
lightweight so they can run on embedded
systems and I really want to think about
in terms of things as function calls you
know
um so basically you say I'm just calling
functions between my um actors locally
or remotely and not have to worry about
marshalling on marshalling all those
things and something about just simple
human readable messages is so easy to
debug especially if using mqtt basically
just do a mosquito Pub to basically do
some injection testing to go hey let's
um just exercise that actor or device or
whatever and you can just also subscribe
and see what's going on in your system
so it's really great but of course that
does collapse a bit when you've got lots
and lots of things going on
um so in the system pretty much trying
to use a lisp and NPC everywhere but uh
the applications if you want to
um you know this often have good reasons
or pressure to basically you know use
use Json and Avro for the foundation or
protobufs or whatever that's that's fine
too
um think about uh when you have a fully
estimated system is you can't really do
blocking calls you know to like do RPC
we make a call a request and expect back
a response
um so pretty simple rule is that
functions don't return values
um which makes uh much easier to do a
consumer system but also makes it a
little bit more difficult to program in
terms of you know do you do callbacks uh
what if you're going to create something
and you want to get great get its
reference back that becomes really hard
but there are ways around that for
example using eventual consisting cases
you can basically say uh uh I'm
interested in this uh in this state uh
over the network like this reference or
it's computation or result and that just
lands an occasion we're seeing somebody
just do a local get that value so the
problem is if you're only doing if
you're fundamentally got a request
response system based around HTTP or
rest or all the graphical all these
things is you just go all the students
what is asynchronous system things will
need speed it becomes a special hard
case if you tackle it early on and say
no we'll just make or just try and make
it easy from start while those problems
go away the other thing we use is um
Dynamics proxy objects so we can have
layers of abstraction so we can abstract
out different um different third-party
things so we can have you know amputes
of Transport or Roz or um or or a hard
graphical going over HTTP so or we can
um swap in different security models
um and so on by by doing that and uh
just as an aside there's a great talk by
Kevin Greer around the phone group at
Google and uh and he just is comparing
uh the advantages that Unix had over
mortex because they did what's called
coding the perimeter they basically
looked at their cross-cutting concerns
and you basically say we've got
functionality on one axis and we've got
um uh I guess I think things must be
like persistence and configuration or
communication on the other axis instead
of basically trying to for each
individual program and figure those
things out over and over again in Unix
because we're having you know we
construct things of pipes and so on and
small composable pieces
um Dennis Ritchie and uh and Ken
Thompson were able to move much faster
because they were on the perimeter they
won't try to fill in the whole area
um so just about how that looks um very
quickly is I've got a couple of actors
here so actor zero wants to create actor
one so it's going to talk to a livestock
manager do that so the the blue bits the
blue message is around
um creating the actor so active zero
says look create an act of the livestock
manager the livestock manager will
create that
um that actor actor one that that
reference gets back to actor zero and
then back to Zurich and then say Okay
pause run delete whatever you want and
so the main thing I want to show here is
that the in the within the actors you're
just using function calls uh whether
using the dynamic proxy we can just turn
those into into best expressions and
send those across the network and ask
them for you and uh and so you'd have to
worry about all the machinery and the
other thing is the the uh the green bit
that's the case that's the caching we're
basically using eventual consistency so
just one one uh one effectively class of
uh in station for a producer just wrap
your state and the same thing on the on
the other side we just have a consumer
that says look um this is the state I
want you can filter that state so you
don't get all of the state just just a
bit you need and then what you just do
is you step in into your local cache and
uh and and get the most recent value so
hopefully that gives a bit of conceptual
View
all right so some distributed design
principles
um
uh back in the 90s um at some
Microsystems uh there was this list of
things that are basically fallacies if
you believe that um the network is
viable
um yeah your application is not going to
not going to be reliable and they had a
list of seven of these and then James
Gosling had the out of the eighth um uh
even though uh Java entered back the
network looked a bit homogeneous back in
the 90s for a while it's not true all
the devices we have these days are quite
different so these are things if you
make any of these assumptions
um in your in your architectural design
you're going to um you know come kind of
hit some potholes for sure
uh and I'm not trying to basically try
and cover all Distribution Systems uh
theory in a few minutes but sort of or
if you mentioned a few other things so
it's cap theorem which basically says
three things you can only have two which
is um
partition part tolerance is like in
handle Network failure uh consistency do
you want when you I mean we do rights
and reads does everything have the same
value and availability you know can you
see can you see the that piece of
information from a from a from another
part of the system things like databases
which do acid they really work hard to
make sure that no matter what you have
availability consistency
um but the problem with that is you've
got to do a network failure always so
that was about 20 odd years ago as the
cap theorem in the last dozen or so
years there's what's called Pac ELC
which says not only do you have to worry
about cap which is basically you choose
to have partition tolerance and then
worry about about consistency even if
even if that was it was good you still
have to choose between whether you want
to have um good latency or you want
everything to be consistent because
there's a bit of a trade-off there so um
in um uh I go Services what I've done is
I said look you have to worry about uh
Network partition and what to do when
the network fails but then after that
um basically using a form of a or
slightly stronger performance
consistency which is effectively called
sequential consistency where you still
preserve the right order and you and
basically the the data will be available
eventually
the other thing we use is something
called distributed leases
um so when if you basically uh done some
operation that requires basically causes
another part of the system to consider
to acquire some resources maybe made a
database connection you've now got a
connection there how long should This
Server hold on to that and if you
haven't agreed up front in the network
files you've got no way of um carrying
on the conversation like closing out
properly so the thing about leases you
can say look I'm going to list for five
minutes and if you don't hear from me
both sides can assume it's done and over
so even a network partition uh the two
parties can will know what the situation
is you know five minutes went past you
haven't heard from each other that's all
it's all over very powerful very simple
but very powerful technique
okay so um people who've come on to the
um
otmc have know that we've used sync
called the Arco engine which is a micro
bit of micropython code for the you know
like the swag badge and other things so
what's the difference between services
and the engine basically the engine was
really about providing a little bit of
an event based model some little
peripheral drivers for um you know
buttons and screens and networking and
so on uh just purely about the device
but the services framework I'm
discussing today so that's sort of the
difference and uh so the services
basically says here's the definition of
all the protocols provides a reference
implementation and then the engine
um uh can I do everything you need on
the device or wherever and and then says
oh and here's how we can use services to
interconnect
up now
okay just check out
okay so this this is um how archive
servers look from from a very high level
uh the um there's the main the main
Services the registrar so the registrar
allows you to um discover join and
discover all the other services so in
this case we just have two services on
the bottom one and two they both add
themselves to the registrar with an its
expression which is basically just add
and a bit of detail a few details so and
then um and then it allows to find each
other by querying the Registrar of
course and then then uh service one
confined service to and do output so
it's not nothing nothing too
revolutionary there
um right so what is the service
um well pretty much like I've asked a
definite service so a service can um Can
can join the network can be discovered
by other components uh it can uh then uh
receive receive messages through
subscription they can publish some
submissions but uh that's what I've done
it in Ico is um is also to find some
additional things the Surfers have most
importantly is topic prefix so in name
contain other messaging systems you
always choose topics and often you do
that by saying oh what's the temperature
inside the topic will be kitchen slash
temperature in this in this case our
coach Auto generates a topic which is
based on your namespace so it can
basically partition things for reasons
for security or testing whatever so you
get these different name spaces the host
that you're on the processity on the
service IDs those things give you a
unique topic path which is also useful
because I say oh what host is my service
running on or what process if you want
if you want to kill it so it's going to
be useful that way and it also means
there's no collisions and what the the
service or device can do is it can then
just append additional initial strings
saying I want an input for an apple
topic or or logging or whatever I also
can name the services the protocol
defines what what Implement what
interfaces the service Implement so it
could be okay it's always going to be a
service possibly an actor who could also
be a temperature sensor or it could be
something it's a category of group of
other things so the interfaces to say
well all those things that you um you
are which is also another way of finding
something so basically could say I find
all the um you know find all the
persistence stores you know or databases
we also have the transport which means
we can swap in other transports like
rock Ross not CBT and the tags are
really how you can find things like
likely with an email you can basically
Tag Services and say you know create new
keywords and give them values so right
now using that for eventual consistency
you can say e s equals two ten minutes
is cool I better speed this up
um to to um to basically say you support
Venture consistency UI for UI hints and
and so on
okay so the register is
um we support primary and secondary
registrars
um and that's just the messages that you
can send to a registrar so add add
remove uh hyper failure share allows you
to say look um I want to have a filter
that's all the stars are wild cards for
the various um service Fields here's the
service Fields I want you to filter on
and um
uh and that those messages those
missions come back into your case
um so you can initiate that the other
thing we do is use by the Dashboard is
um it's also get the history so the red
strike keeps the history of services
have gone away so you might have a
service that starts up dies and goes
away you want to be able to at least
know that it ran and also be able to
look at its logs
okay so I'll quickly show you the
dashboard it's a bit like so you saw
briefly before it's a bit like top
interacts the registrar shows you all
your services
um it allows you to interrogate and
check all the variables and logging and
so on so let's see if I can just quickly
show that again
all right cool this is just running uh
on my my Home Server that's uh that's so
we've got the register up there we've
got two um uh swag badges
um set csp32s but I could just look
because I can just add another
um another just another service if I uh
samples
so this is the equivalent hello world
hopefully that's going to work for me
fun of doing things ah actually ah I
know what's happened there wrong screen
this adds up my backend server
whoops
um let me just do it on the local
machine now yeah so
it's like SSH but worse
hang on
okay so let's have a little about much
faster yeah 18.
um and so we can see the various
variables like it's life cycle State
it's ready you can change your log level
we can change that log level to to debug
for example does that sound you can now
change the debug
dictionaries and so on another one I do
is have the version number and the
source code for the service they uh so
the audio just click on that will take
you the source code for that that
service and you also see the tags so
this um this service supports eventual
consistency
um and what should be able to do is um
go to a log you'll be able to see be
able to see the logs as well which um
I've probably got time to show that but
I just have a dashboard allows you to
inspect pretty much inspect everything
all right um about 20 I'm 24 so what's
the speed up bit so um
so mqt is great it's um support wildly
support it's very lightweight um but we
can swap it out for those transports
um Services versus actors so swap back
into controls between the two but
Services pretty much all you do anything
like this it can be multi-thread there's
no constraints whereas actors um because
of the actor model have got constraints
that make them um you know easier to
reason with they have an inbox of
incoming messages which they walk
through one at a time and then and that
prevents um Sr race conditions and so on
so you can um have um
basically very lightweight in scale we'd
have one service per process which can
be quite heavy weight or you can have
multiple Services per process so just to
show you that very quickly
um I'll just go back to the hello world
example if I say make 20 of these
okay we've now got 20 hello world set
they're all in the same services in the
same process so my aim is to basically
be able to scale up to a million
services on a single machine
um the other thing I might be able to
quickly show is if you've got lifecycle
manager
site in that's that's just using the
livestock manager take create 10 clients
and you can see that they're on
different processes because their their
process ID is different so yeah so we
support those sort of things and these
these features are a little bit small
components so you can you can compose
into your service so we don't have to
write these caches and uh these are
creating other actors all the time just
uh it's all being done uh so finally
we've got uh pipelines
pipelines allow us to create data flow
architectures that's what we use for the
machine machine learning and also for
our gstream media media pipelines and
the pipelines are just actors so you
just then you just link them together
through the topics and also the uh the
pythons themselves are pipeline elements
and so you basically you can have a
hierarchy of pipelines that consist of
other pipelines and so on
so it ends up looking a little bit like
this so up the top left you've got a
process manager which can use those
green lines to create all the actors and
then they all they all they all then
discover them so they ought to go and
join the registrar and the pipeline
managing and hook them all together
or four thanks very much okay so
hopefully let's give you a bit of
insight to how I hope this Tech this
framework can um uh bring all these
different domains into the site into the
site that make them consistent to use as
a application developer so devices are
Services uh pipelines are linked
basically data flow of services Samsung
for the ml models and and other
Frameworks like rise and you'll probably
have done this for the play framework it
can just be abstractions uh transport
extraction so um we've hired that away
um so I was going to talk a little bit
about uh why our buy versus build
um it's often comes up as Engineers we
want to build we want to build new stuff
but you want to make sure that um what
you're doing is um you know there isn't
already an answer out there already that
um that the existing Solutions are
definitely not good enough and also
internally have um good support from
your business engineering team and
you're able to support yourself long
term for um you know supporting the
community and so on and you're actually
doing an advantage hopefully hopefully
we'll try to compensate it internally
here the other is open source that's um
quite a challenge to convince your um
the business people to um allow you to
do this
um there are there are benefits but also
concerns around our giving away
competitive advantage and losing control
of the terminology and so on but really
I believe it's a virtuous circle that um
they actually put things that businesses
pretty much have entirely depending upon
open source and if they don't contribute
back that's obviously not a good thing
so here's a quick list of what comes up
next so um incorporating Roz actually
documentation examples um there's few
people like Thomas figaroid himself
without documentation but go Thomas yeah
I was just one night okay hang on
there's a device I don't recognize that
device on my network because I'm
Thomas's swag patch however an Adelaide
um and uh just quickly um I've been
chatting to John
um about whether we should finally
tackle our open Hardware conference so
if anyone thinks this is a not a totally
insane idea please come and come and
chat to us I'm going to be heading over
to the open Harbor Summit and see how
how they do it in the other side on the
outside of the planet
uh anyway but it'll also be bringing in
other languages and uh and also
incorporate bringing in some of our
previous origin C projects
uh support your local hacker space
um they're great places and uh we lost
the future in during covert but I'm the
ones that have survived are fantastic so
there's probably one near you or you
should perhaps start one
um and just like to thank everyone you
know people have the people in the
community uh trying to join around at
work um you know likes Australia and all
your volunteers I think give you guys
some of the followers because you put us
all back together in
um yeah and also everyone here and of
course John
um yeah that's that's kind of it rush
through it at the end but um I got there
amazing so it's back in Brisbane I hope
you have John doing his uh Jedi Mind
Tricks
the
yeah so um I think it was about only a
couple months before the connect the
Microsoft connected come out and also
the uh the parrot drone one of the very
early um consumer drones and uh I think
jonos we were just chatting one day I
said what can we do for Brisbane and
it's like hey we'll smack these two new
things together
um
which uh it was actually part of John
John's broader broader vision for um
tough another one was um this is us
doing um presentation preparation the
night before in the hotel room
um also another chat typical I like
volunteers Hall of Brisbane gets trashed
by floods and in modern days they
completely redo a conference I think
this is to prank Lana Brindley Maybe
all right
but it was very tasty
all right unfortunately we don't have
time for questions I'm sure you'll be
able to catch Angie around and about I
just want to say thank you very much
thank you
for coming and talk to us thank you
[Applause]