Hello, welcome. This is Ada Botz, the award-winning system for connecting a bot inside a
voxel world with a real integrated development environment. We use this for teaching. I use
this in my household for teaching our children, but it's also excellent for teaching adults,
anyone who wants to learn Ada. I can of course highly recommend it. So what is Ada Botz?
It is programmable bots in a voxel world. Originally it was using minecraft, but then I switched
to using mine test, which is now rebranded to Lewante because it's open source. It is programming
with Ada Botz is visual 3D problem solving. You encounter something in that world with your
children, with your students, and then you try to think about programmatic solutions to that.
Like you get stuck in somewhere down deep where you can't get out, you can get your bot to build
staircase up and walk out. If you maybe your child wants to build a house, you can do that.
Anything you can imagine, you can use as a programming challenge for your children.
It's also real software development. As in, you connect these bots to a real IDE running a debugger
with Git version control. It's not like visual dragon drop things. It's real code.
So my teaching goals here is first of all, I want to do this because I got frustrated with
there's so many systems out there for teaching children how to code that actually teach you
a very specific domain, specific language, and you then have to translate your skills into
real programming once you want to do that. What I also have found frustrating about other
systems is that they were often this world garden where you kind of had to trust someone,
someone on their word that they're not going to, you know, kind of rug pull or increase the price
on a close source project. So I wanted from the beginning to build all this up as open source
components so that the community can help and so that you can be, you can rest assured that
the system will still be working the same way five years down the line, ten years down the line.
You can free them is important to me, also inside of adabots. So inside Luanti, you have your own
private server, you can walk around and do anything you like to do. I also really wanted to make
an environment I could feel comfortable with my children interacting with. So I didn't want
something with a bit glorified violence. I didn't want the focus to immediately be on you're
going to be making a game. I wanted to have more freedom to allow the child to learn a real
program in language and then start applying it to real problems. I also, as a parent who homeschools,
I also realize it's really important to have a system that you just open it up, you just go to
the website and you don't, you don't have to do all of the setup yourself as a user. So it's a
plugin play system. Thanks to having a code editor in the works inside your browser and also a
Luanti client that works inside your browser. That's the introduction of what adabots is. I'm going
to go into a little bit of background where did I come from? How did I come to these ideas? And then
I'm going to show you a demo and then I'm going to talk more about the principles and of course
why I chose ADA as a programming language for this and finally a roadmap of things to come.
This is me when I was eight. I was coding, well, I wasn't coding here. That came later.
But I love that powerful feeling of entering a command into a dust terminal and just seeing it
instantly executed. This wouldn't have been possible if it wasn't for my father knowing what these
commands meant. Later on when we got Linux and it came on a CD was great and my mother showed
me more of that. So I was very privileged to have two parents with a lot of technical background.
Years later, fast forward to our meeting major and my brother and I were really doing
our best to waste our afternoon. We had a Minecraft server and we loaded this mod called computer
craft on it and it makes these bots inside the world and they can move around and they can place blocks
and they can mine and before long we weren't doing anything by hand anymore because you know why
go through all that arduous process and going down into the mines and mining things and placing blocks
when you could just write one program and then go to sleep, log off in an hour or the next morning
you come back and the whole structure is built. So here we have a maze built here and if you were
at fall STEM two years ago you might have seen some of these mazes because then we had a stand
and we challenged people a lot of children came through as well and we're challenged to get
their bot outside of the maze and you could win a little prize for that. But one thing I really
didn't like about computer craft and still don't like about computer craft is the interface to
programming. So this is how I was programming these bots. You have just this text,
Lua code which it does duct typing so it's not strict at all it doesn't check anything for you.
You just have to make sure that you know what you're doing and you have to scroll around
in this little window inside the game of Minecraft and I thought well how can I improve that you know
it's really difficult being a Minecraft mod where you had to edit jar files in there and
this is already very good for what it is. But a few years later I was at 80 Europe and I was able to
participate in a remote IO tutorial by my fellow months and this is a great software project that
solves a kind of similar problem at least I realized I could apply his solution to my domain.
His problem was he does does a lot of embedded programming and you have this chip that you want
to run your program on. But first of all you have to cross compile and then upload to the board
and then if you want to debug you actually have to connect two little wires to the j tag and it's
really complicated to do that. So what Philip thought of and what I'm calling fetch evaluate execute loop
kind of like a repal it's like a repal but it's two different systems. So you have on the board
you have just this super simple little program that's just asking for instruction and then executing
it and then sending back over the in this case over USB and paint line onto the computer
and then on the computer you can have your whole dev environment including a debugger and you can
you don't need to build anything for specifically debugging on the chip. So yeah check out Libs
simple IO if you want to do IO programming in ADA because it makes it a lot easier you can also
take the same program and just compile it with a different implementation back end and upload the
same program to the board itself so that so for development you have a quick cycle where you
can just edit and run but then you can use the same code to deploy. So I realized that
I could do exactly the same in the empty. I also realized I weed my dependence on Microsoft products
a little bit by moving to an open source lightweight C++ clone of Minecraft.
Um, I'm not getting any dirty looks oh maybe one there's a little anti developer in here
and they are not a Minecraft clone. They're a voxel engine but neat thing is it's so lightweight
I'm able to actually compile it for the web and so if you go to adabots.net you don't have to do any
of the setup because automatically in the background a Docker image spins up with your
mind test server in it and in your browser you can have a mind test client. Sorry for saying
mind test so much it's lo empty. It just changed its name this year so anyway so this is the
architecture we have a server running and that contains bots and those are doing this little
fetch evaluate execute loop and then you have a client that connects to that to look around in the
world and on a to about something that you can have one for each child as you like and then you
have your code edits are running on your own machine that compiles a program that runs on your own
machine which sends these instructions to the bot. Anyway what it makes for because the children don't
understand all of this architecture behind it of course but what they understand is that here's a
fun entertaining world where they can all log in and they can see what they're doing and each one
can be doing their own tasks and so here's a bot next to a tree that has just been cut down and that
that's a simple you know check if there's wood in front if so mine it and go forward and then
start a loop going up as long as you can mine a block above you then mine it and go up so that you
know take out the whole tree and yeah I'll I'll I'll show an an actual demo that's
better than just explaining it so if you sign up on a to bots.net give me some of your money
it's an open source project okay but what we do is software as service really we
set it all up for you if you sign up on a to bots.net you get in the middle here a
you can add as many students as you like and you get two buttons one to open of the
mind-test world and that opens in your browser and the other one for VS Code web which also opens
in your browser and they're connected to each other so here's an empty program shell here and we're
going to run through a non-trivial program without pressing any of the buttons which is just for
introducing the child to what the bot can do you can just press the buttons so that in that way
I can start already when there are five years old just understanding the concepts of what we're
going to do of course you need to wait until they can read and write and type before you do this
so let's build a bridge that one doesn't work but okay this is the bridge we're going to
be building first we're going to place a block we're going to go up and then forward and we're
going to do that in the loop and you can see that that will make a staircase if we put that in the loop
but we only want to do it three times because if you just to loop that'll be infinite so we put in
four i in one dot dot three then we're going to build the the flat part of the bridge like this
again a loop just two instructions in there and when we get to the end we're going to go down and
note that we'd go for one one to two because otherwise the the floor is already already made there
this entire thing we're just going to give it a name we're going to put it in a procedure
called pass that's one pass over the bridge and then what we're going to do is
we'll line up for a second pass next to it so we'll go forward we'll go down we'll turn left
we'll go forward we'll go left and now we're set up to do another pass I'll skip over that
so now we've done a second pass we're going to line up and we're going to make some barriers on
the side so that you can't fall off the side so easily and again we're going to
you okay you can kind of see it moved around it's just shifted over to the left and up one
okay and if you do another pass on top then we've got our barrier and all the time when you're doing this
you can just comment the code that you've already run and you can press and buttons with your child
as you write the things in the code to explain what you're adding but at the end of it you have a
program that does the entire yeah it does the entire bridge in one go so you can
I'll I'll quickly go through why we chose Ada it's a strict it's a very a type safe language
it's high level it's you know it's tried and tested I have vehicle from from 81 and it's still
runs that means it was built right and it's the same with Ada you know the latest standard is from 2022
but there's so much materials around and it's got so many of the basic principles right from the start
like being case insensitive it's it's a no-brainer having words for everything instead of curly
braces that helps a lot in teaching because the case insensitive every child when they first write their
program they write it not caring about the casing every time and it just works in Ada
I've already talked about this so I'm just quickly going over but I'll just say that children don't
like to be coddled they they want to to really be a software developer so we let them do that
so we made the safe environment for your children where you can learn it's plug and play
and we have a lot coming so I'm just going to open it up to questions since we only have a few minutes left
yes so you mentioned that this is a real so basically the way I understood that is that the
cold runs outside of the Microsoft server and it impacts probably like a lua of very simple
that just receives from us and can the plot into like detect on a per se if it's environment
because I've worked on like what's the front inside of the client so it's for like a cheating on
server that I know it so basically they they're able to like look at what's around them and then
react to that yeah I think that would probably be like beneficial for this project and one thing
I'm wondering about is if you think that the if they can interact or if they can perceive the environment
do you think that this sort of like remote model will be a performance enough to allow for like
context thoughts because working and I've not given just like between like C++ and lua
crossing the boundary for every block that you want let me just repeat your first question first
can the bots perceive the world yes they can they can look in the same spots there's they can
dig and they can place okay so it's very limited yeah right now it is it's actually on the road map
to right there third point is to actually see players and see a long way away and I have an idea
in mind of an expanding cone of nodes that it is able to see so it can look through air and water
but not anything else and then it just returns a list of all the objects it your program does get
very complicated very fast but of course I mean we we envision this also being used for adult students
universities in in high schools I'll also give you here a promo code if you're one of the
200 first people to sign up this one isn't on the online version of the slides but it's
fast in 25 gives you 25% off your first year and also yeah I'll just say this because the video
isn't loading but my children had a great idea after rebuild a spiral staircase and they kept
falling off in the middle of the staircase I said let's build blocks there and they had already
seen how complicated it gets when you build because you have to walk backwards as you build
above below an in front in order to not run into your own blocks right so they said how about
we just have four blocks simultaneously dropping sand below and that's perfectly possible and
that's in the video here there's four blocks next to each other so your program can address
multiple bots simultaneously using tasking in Ada any other questions and thank you
you