Go to lines down. Okay, agenda. Go to the agenda.
And you just take a quick look at some of the topics that come up.
There's some just really good technical topics in this thing.
They talk about 3D data, how to use that to make make maps, how to use maps to create 3D images.
There's metaverse reality. There's stuff in here about AI.
There's a but networking, you see.
Some of the speakers there's a lieutenant, General.
The device. Admiral, coming up here soon. The Director of National Intelligence.
So a lot of a big name speakers, and a lot of very technical topics and amazing.
That somehow they don't have any of these classified.
Sometimes it's like what this isn't classified.
Okay, are you quantum safe? Obviously a lot of the what quantum computers are doing these days?
They're saying that our current cryptography, passwords, coding.
It's when you get quantum really working. Well, is there gonna be absolutely useless.
Our current cryptography. So. But anyway, so yeah, you might wanna look into going to that.
And say it's not free, but could be some good good.
Entrees into some employment opportunities. So other thing on a calendar basically.
Just a interesting old Octo anniversaries. It's the fiftieth anniversary of Ethernet coming up next week.
If you're remember, about 15 years ago, Caldera Merge with, and that's it.
Started this legal battle over who owned the actual code that had written for Unix, and who own licensing for Unix, and that drug on in the court for years, and made everybody wonder is open source actually viable but that started 15 years ago 20 years ago.
Word oh, wordpress started. That, of course, is still used by a lot of people doing their websites, and 65 years ago the Phantom F.
4 took its first flight, and at the manufacturer right here in St.
Louis, Yup, manufacturers here in St.
Louis, and really kick Mcdonald's aircraft into high gear, spawned Mac Auto, and a lot of us in the computer industry either work at Mac Auto or new people in St.
Louis who are working there. So that was kind of a beginning.
More anybody else want to point out anything on the calendar or any other announcements that we should know about.
For one thing we stay in. Is there any change in the slack meeting or a new Linux user meetings, or?
Nope, not that I'm aware of. I would point out.
I posted something up on discuss about the.
Super zoom.
0? What do you call it? The flipper?
0 about the Leo port on Twit TV bought one, and as it turns out, I was just in the last couple of minutes found out that he's going to do a demo of it.
One he called it. Maybe that's the same thing.
Maybe not. But it's it's looks the same, and he's gonna do a demo on their check guy.
Show us 10'clock. Saint Louis, time.
Yeah. And it's across the 22, a live broadcast and add it.
I imagine it probably won't be as extensive as what we had.
Rob Dodson do for us last week. But okay, maybe some more.
And it kind of seems it's amazing.
Sometimes some of the things that we get here on our presentations are kind of leading edge.
You know, Scott Granaman did the thing in December on the Chat Gpt and the rest of the world didn't really talk about it till back the middle of January, and.
They were the bleeding edge on that.
Yeah, yeah, whatever. That's all I got to say.
Okay.
Bless you!
Hang on, Jeez! I can't even get down.
Let's see.
Oh, I'd like to point out for anybody new here.
That's never been here before. We record these sessions, so they will be up on our presentation.
Archive link up on our.org web page.
Yes, that's what I would be going to point out.
So yeah, the talk is talking about from last week by Bob Dodson.
That's already the slide decks out there.
The videos out there. Steve Lembark's SQL.
RAM that's out there. So!
Hi even took the zoom bomb out of it.
Hey? Yes, we had a visitor last week, for wasn't there for the technical content. So?
But that was the best part, but.
Well, I still have the original. If you want to copy.
But you know it's, you know, as far as grading it. This, I'm not a connoisseur, but if you are, just, let me know.
Alright! Let's see, unless somebody's got some other announcements that brings us up to General.
So you can ask a question about anything, doesn't have to be about our topic of the evening.
But you can either ask this questions now, or they'll also be an opportunity at the end of the evening to just carry on and discuss things.
But anybody wanna get in any quick early questions.
Something you've been working on, something you should be working on, something that's not working.
Besides your brother-in-law.
Okay. Quiet group. Tonight. Alright. Yes.
Question we have a Daniel in the room, Daniel.
What's your last name or initial of your last name?
Please.
So we don't get you mixed up with 2 or 3 other Daniels that we have.
Oh, I'm sorry, Selders. S. So!
Thank you. We just kinda track the full names for attendance.
Anybody that attends 2 of our meetings during a calendar year.
They can vote in the our elections that we have in the following February.
Thank you.
I have a question.
Go ahead. Jeff!
Yeah, I have a thing that comes on the screen when I'm booting up my laptop, my Linux laptop.
And it says it has a problem with the Virtual Box kernel, or something like that.
And I didn't really find too much about it.
Online that that would work for me. Yeah.
Does it actually save it? Is it actually say, virtual box?
Exactly.
Yeah, it actually says, virtualbox. Yeah.
Did you have virtual box installed on that machine?
I believe I did. Yeah.
Okay. Well, you might wanna boot it up and reinstall it.
Okay.
Could you into the Bios configuration?
Could that have effect on it?
I think it's the stuff where you have to compile in those special things for virtualbox to work.
You know, if you update your kernel.
Yeah.
Oh, the the the additional, or whatever they call them.
It has to recompile the kernel. I think.
Yeah, there's a virtualbox kernel module you have to install.
So if you upgraded the kernel, then the virtual box additions or virtual box Mods can't work until you reinstall virtualbox and add those in the new kernel.
Okay.
Sometimes I've seen those show up the following day after kernel Update.
Now that you talk about those.
Yeah. Yeah. If you see him just means you gotta reinstall Virtual box.
Okay.
Okay, I will do that. Thank you very much.
Sure!
I'll throw out of good type of question, but for those of you who either this is your first time coming to our group, or you haven't been here in a long time.
We're always curious. You're definitely welcome, but we're just curious how he found out about us and what motivated you to come tonight.
Hey! Green, sir!
So you can either just tell us real quick on by voice, or, if you prefer to just send a text message to either Stan regards up there or to me.
Look!
Pretty good yourself.
Hey, Phil!
Okay, I was thinking about you earlier today.
I muted Phil.
Okay.
Build, apparently on the phone.
Anyway, we're just curious is due to you know, what motivates to come tonight.
So let us know if you don't mind, and we appreciate it.
Other than that. I'm gonna ask a couple of questions or speak to tonight.
Robert. I'm presuming it's okay for people to just interrupt you with questions as you start.
Hey!
Hey, Gary, how are you? Good to see you? Yeah, absolutely.
That's well, either that or please, post them in the chat.
And then Gary, or Stan, or Lee, or somebody else.
Go ahead and interrupt me. Yeah, I have absolutely no problem with being interrupted at any time.
No right, and let's see slide deck. They slide deck for tonight, be available afterwards.
It will put in the Archive.
Absolutely. It's not only available in the archive, it will also be on Github.
So I figured, you know, doing a talk on Github code Spaces.
It would be appropriate to put it on Github, so people can fork it and play with it and do other things with it.
So, yeah, absolutely.
Fantastic by way of quick introduction, Robert Citek had lived here in St.
Louis for 6 7 years Robert!
Closer to 10, in fact, almost 11.
Yeah. Now, is that what it seemed like, or is that what I'll never mind.
No, no, no, it's 2,002 to what?
20 end of 2010. So yeah, all of 2,000. Yeah.
Hmm!
So almost 11 years!
Wow! Oh, wow! So Robert's former local, at least for 10 years, 11 years, and now now he's living in.
Where are you right now, Robert?
I'm incognito in an undisclosed location.
No! No! Down in Albuquerque, New Mexico.
Albuquerque. Alright so! And and can you tell us who you are working for these days?
I can. In fact, I got a slide on that as well.
I work for the Central New Mexico Community College. I am their lead data science instructor.
So I get to play with computers and data and then torture students with that.
Yeah. When Robert was here in St. Louis he was also an officer of this organization.
What a number of logs and meetings, and so, and we always always appreciate it when he comes back.
And does a presentation for us. So with that, I'm gonna turn it over to Robert.
Gary, thank you very much. And yeah, now that you mention it, you know, I should have put it in my slides.
Used to used to volunteer at bite works. I don't know if there's still around.
Maybe someone can chime in and push something in the chat.
If they're if they start, do what they do at the time, they would basically take refurbished.
Take donated machines, refurbish them, and then we would use them to teach.
How would you say? Underserved individuals in the community?
Those that completed the course actually got a got a chance to take a a computer home with them.
So with that, let me see if I can share my screen.
Well, it looks like I can one on 1 s. Alright!
Oh, Robert, if you think that this is, I'll say that.
Yes, I recently did check their website. We do try and put.
Put their stuff on the calendar, but they haven't been listing any events.
Their website is still up, but they're not saying what's going on, what day or hours, or anything like that?
So I've been wondering how things are going over there, but I don't know.
Well, I hope they're still doing well, and last I had heard, or at least before I was leaving.
They were obviously originally started off at as bicycle works, and and then it became how would you say?
Branched out and started doing the same kind of thing with computers, and as I was leaving they were also starting up.
I think another one called Brain Works, or book works, or something like that, which is basically homework help and things like that.
So I don't know if any like, I said.
Don't know if anybody is still involved with them, but at the time it was a you know, I had a good time, and it was a great organization with some wonderful people.
Alright, with that I'm gonna talk a little bit about github code spaces and my apologies.
I turned on my camera, but the camera isn't quite working, so I'm you don't need to see my face, anyway.
You'll see a picture of me in a little bit so, and and anything I anything I do live is gonna be nothing but distracting.
Anyway. So this is a queue.
It's okay, Robert. We all have pictures you on the wall, anyway.
Yeah, I know, with darts, and probably you know, out there in Missouri it's probably like AR fifteens and all kinds of fun stuff right?
Anyhow. Hey? Good to see it, or I hear from you, Scott.
Anyhow, we're gonna talk about code spaces that QR code will get you to the link directly to this oops. Let me do this.
So who am I? I? Am currently at the Central New Mexico Community College.
I teach, in fact, part of the ingenuity division, ingenuity is rather interesting in that it is in essence.
It's the workforce training part, right? So the ideas is that we get students who are already working or are in transition.
They usually have a number of years under their belt, and they're either trying to upskill.
Or would you say, change careers?
And so we provide intensive programs for them to get up to speed on the latest technologies and then teach that the data science program, for example, that I'm currently teaching.
Actually one of them just ended, which was a full-time one.
It is a twelve-week immersive course.
Literally 8 h a day, 4 days a week, with a final capstone, which they did last week.
There's also a part time program, which is on Fridays.
It's a 20 four-week program. Same content is spread out over longer.
So yeah, that's what I do. So basically, I'm teaching Monday through Friday, 8 h a day, and then, of course, in the evenings I get to do things like grade and come up with new ideas and investigate new technologies.
One of which is code spaces. Because currently, our major platform that we're teaching with is co- and looking at code spaces to provide.
How would you say an additional environment for them within the webinar?
I would like to start with the slide or variations of it.
The preamble. Please ask lots of questions. That number one.
Number 2. Don't believe everything I say. Code spaces is a fast-moving target.
Like most of the technologies that we talk about here.
What is true now will likely change. Chances are what I was doing when I was putting this together has changed since since I'm actually gonna talk.
Chances are it'll change by the time you are actually beginning to play with it.
That number one number 2 is I will misspeak. Yes, I'm incredibly nervous right now, especially with Scott, Granaman on the in the audience, you makes me incredibly nervous because he always has these really hard questions.
And heckles me all the time. So see, just like that.
So bring it on, Scott. So if I say left versus right or up versus down, please be forgiving.
And lastly, my environment is likely different from yours.
Browser versions may matter, the OS may matter the systems all of that stuff may or may not matter, so if you try things out while we're doing things, and it doesn't quite work the same way, keep that in mind all right, that said if something doesn't sound right, calling me out on it
right, like I said. Ask lots of questions if I misspeak, what have you?
Just let me know. So going back to bike works, and also the the stuff that I'm doing now at Cnn ingenuity, I am really interested in one-click environments, right?
And these are some people call them byods. The ideas is you bring your own device right, instead of having to go to a course or go to someplace and they have everything already set up.
You actually can bring your computer. And you are up and ready to go.
Usually what that means is that you have to have at least 3 items a browser, an Internet connection, and some kind of an account that could be Github or Google, or something right?
But some kind of an account in this case. It's going to be Github.
But in addition to bring your own device, I'm also interested in one click environments in the sense that they could be low power.
This kind of goes back to a couple things that Scott said during his presentation a few months ago about the Vs code.
Right so visual studio code. He made a comment. Something along the lines of you know, people will try to code Javascript on their ipads, and he said, Don't do it.
And I'm on the other camp, I'm saying you should be able to do anything anywhere, on any device, right?
Including raspberry, Pi's Chromebooks, and even your not your device. Right?
So libraries, cafes shared computers. What have you previously, when I was working up in Oregon, was working in a healthc system in a lab or a clinical lab, the folks that were in the lab could not bring their own computers into the lab that makes complete sense you wouldn't want
them to, and they should be doing that. But there are times when they needed to work on stuff.
On computers. So they they would go back, and they tended not to have their own desk, because their primary focus, their primary time, was spending a lab.
So they had a shared environment right? And in that sharing environment they had computers where they would share things right?
And some of them would be taking classes at the same time that they were working in the lab, so they would take their break.
They would log on, and they would do things. That's the kind of environment that I'm thinking of as well.
There were a number of people that I was working with, you know they were interested in Python I was working in python I'd love to sit down, you know, when I had a chance.
It would sit down within them and show them things at work on the shared computers which made it challenging, especially when you wanted to do things like, Hey, let's run some code.
Oh, you're doing. C, let's compile A C program.
Those kinds of things made a challenging. So currently, the landscape of the what I'll call these one click environments exists of this.
There's Nb. Viewer, binder, cagle, Collab, 80 bus Cloud 9, and Gcp data lab, now known as AI notebooks, and Mentor B is actually now known as Vertex AI workbench and I'll walk you through some of these right now let me just
bring these up!
Oops! Let me go back and I'll give you an example.
Using Linkedin learning. So one.
Robert, are you saying these are competitors to codespaces?
I. They are kind of competitors to codespaces, some of them.
Yes, some of them clearly not, but they provide similar kinds of functionality and and I'll show with that what I mean by that in with these next few, how we say screens.
Right, so what I'm showing right now on the screen is, this is Github right?
This is the Dvc data science lab. I've got this one page or, correct more correctly, a Jupiter notebook, and we'll get into that in a little bit.
One of them titled Linkedin learning what that looks like. Is it?
Looks like this. If you click on it, it's shows up like this.
Github is nice enough to actually render this right.
And what? I what do I mean by render this? Well, if I were to look at the raw source code, what it actually looks like behind the scenes is not regular readable text.
It is Json, right? You can see the curly braces.
You can see the keys, you can see the arrays and so forth.
It's nice that Github renders this the downside is that if you try to edit this within github and you can.
The traditional editor, right you go click on the little pencil here on the right you will end up editing it.
You will be end. Excuse me, you will end up editing the Json, and you don't want that right, and I'll show you how to get around that in a in a second.
What you can also do is, you know, I talked about Nb.
Viewer. This is Nb. Viewer. This also renders the page.
Now the nice thing about this is it doesn't give you all the other stuff that Github has all around it.
But it does give you a few other things, gives you the fact, and you can actually look at the code if you want to, you can go back to the Github page.
You can also download it, and you can also open it up in what is known as my binder, or binder, and I'm kind of confused on the names it says Binder.
But when you actually click on it, it'll take you to the website.
My binder.org my binder.org is the next step.
Not only does it render the page, but it actually provides Zoom a Jupiter notebook interface right.
If you wanna, these are different code cells, or excuse me, Markdown cells.
But if you want, you can add code cells, you can if you put code in here, you can run it.
You can do all that stuff with is nice, but it has some limitations.
One limitation is. It's just a notebook. This is the only thing you can do.
If you wanna run, and it runs python by default.
If you wanna run something else. Very difficult to do, if not impossible, right?
If you wanna have more than one notebook open at the same time, you't do it right.
You just get this one environment and the really big downside is it's ephemeral meaning that if you lose your network connection to this, your work is gone.
Nothing stays permanent as long as your network connection works.
You can write stuff, you can then download it. That's what these download buttons are.
You can also upload to it, which is not. Nice. You can actually connect it to Github and push and pull, and all the you know.
Nice get stuff that you can do but it is a prim role.
So, if something goes wrong, you're out of luck and sorry about that.
Another environment is Kaggle. Again, it allows you to run notebooks pretty much.
Only notebooks. It's a little different interface.
It has stuff on the left and on the right. If you open more than one notebook, you get 2 different environments.
So here's here's one example. I've got example I didn't number it.
But this is example number one it's running ubuntu. 2002004.
So it's a little bit out of date. If you wanna go and grab some stuff.
For example, I try to grab some information from the website.
There's no networking available. You can't pull things down, or because of some libraries aren't available.
But even if I could, this's no way to get networking right.
So, for example, I can't do an app. Get update.
I can't do an app, getit install. I can't do any of that.
I get what I get, and that is all right, and if I open up Example 2, it is completely in from example one, so I can't have more than one notebook.
Open at the same time, and have them sharing, for example, right?
So that's stepping up is aws!
Cloud. 9. Now this is a really, this is we're now getting into true development environments.
So this would I would consider the closest competitor to Github code spaces.
If you have an Amazon account or an aws account, I should say you can simply do a search for Cloud 9.
Click on your environments. This is mine example. I have this running.
If we were to open this, it would look like this looks very similar to code spaces, as you'll see in a minute.
You've got this left pain, for, you know, file explorer for source control and a few other things.
You've got an editing pane up at the top, and you have a terminal at the bottom right?
And you can run Docker commands. So, for example, I can run docker list, and I actually have a container ring right now.
I've got Engine X running. It's in the background listening on Port H.
And I would like to look at it. I would like to try it out.
I know it works, because if I do a curl on local host it comes back with HTML.
Great, fantastic, I'd like to open this up in my browser.
I have not found an easy way to do that, and I suspect part of the problem is that what it's doing behind the scenes?
It actually starts up an Ec 2. Instance, it sets up your networking and your security.
It's got its own security group. And of course, if we look at Security and our security group, everything's being blocked, there's nothing allowed in right by default.
Nothing's gonna work. So I'd have to go through and figure out in aws, how do I get this to work?
Okay, I gotta open up my ports. What's my IP address?
Blah blah blah not simple, that's said.
It is a nice environment to work in. If you want to start from scratch and build your own.
And the last one I'm gonna talk about here is is Google Clouds vertex AI, really powerful stuff.
Wonderful environment to work in, if you can get it to work.
If you click on new notebook, you can click on.
For example, python. 3. Again, it's kind of this notebook kind of interface gives you the cost about a hundred $10 a month, or 15 cents.
An hour, which is great, you fired up. Do what you need to do, and then shut it down right.
It's got 4 cpus, 15 gigs of RAM and 100 GB of storage space.
If I could create oh, God, I can't create an OP because blah blah blah, I can't do something.
So I now have to figure out in Google, okay, great. I got a service account.
I gotta enable the service account. Then I gotta do this.
Then I gotta do this. Yeah, not easy. Right? Can be done, but not easy.
So let me step back just a little bit. Let's go back to Github right.
This is the traditional Github kind of concept, right?
You've got your page. You've got your notebook in this case, and it's rendering it.
I mentioned, if you read, if if you click on a little pencil, it brings up the Json to edit it.
But, as Scott Granaman pointed out, if you click on this other little error on the site, you can also open up in this thing called Github Dev.
If you click on that or hit the dot starts up.
An editor, and the editor starts up is a variation, a Vs code.
And what that means is it actually allows you to enter it or excuse me, edit the file as a notebook.
Right. It actually provides this. What you say, the the to browse and edit the cells eventually.
Give it a sec. To fire up.
Is yours always that slow, Robert. Mine's not that slow.
Mine's this slow that said, remember, I like to test things on extreme hardware.
So I'm running this on a fairly excuse me, low end chromebook.
Okay.
And to answer, your also to elaborate on that.
I'm also sharing my desktop via zoom I don't know what Zoom is doing, but zoom just brings this chromebook to its knees.
If I turn off zoom, everything goes back to, you know, a reasonable, reasonable pace.
So it's just slow instead of painfully slow.
There you go!
That's right. And it's not. It's literally if I didn't have zoom on, it would be up and running by now.
Okay, yeah. I just wanna reassure everybody. It's I mean, I have a pretty new, Mac, but it's normally a lot speedier than this.
I'm going to move on, because this is not quite what I had in mind.
Let's move on to the next part. So that was an example of the landscape actually, let me just go back real quick.
One of the cool things I did want to show you is let's click on the Jupiter notebook here, Linkedin, learning is actually a really nice tool for learning.
Lots of new technologies, and or getting up to speed on things that you are, are not as familiar with.
I've put some links to libraries that are partner subscribers, whatever you want to call it.
And you know here's someone Oregon, New Mexico.
St. Louis, both the city and the county have subscriptions.
I guess, to say. And then I have some links to data science in various fields. If you're interested in looking at any of these so literally, you you click on your library, you log in with your library card and your PIN number. And then you can click on any of these videos to learn learn about these things.
Alright! That's taking forever to to start up so that's kind of the landscape.
How do you get started? Well, I'm I'm gonna go quickly through some slides and screenshots that I took that show.
This at least I hope so.
I see it on my screen, but I don't see it on my phone.
There we go! Alright. So how do you get started with this?
Well, here's an example. This is a obviously you need a Github account.
You can go to any repo that you want.
I happen to be on my repo. The little green button here, where it says code.
All we need to do is click on that. Once you click on it in the past, it would drop down with a menu that, you know shows you how you can clone the repo.
Good Lord! I was flying through the slides earlier, anyway. Here we go!
Boom!
There's now 2 tabs. One of them says local.
One of them says, code spaces local is the original one.
Right. You can click on https or Ssh, or any of these, and you can click on the little copy thing right here, and if you click on that, you now get the code or the link that allows you to download and run or excuse me not run but download the entire repository but if
you click on that code spaces tab instead.
It'll pop up a little of a different tab with a little green button that says launching codespaces.
Wow! Zoom is killing me.
Alright, I'm seeing it. There we go, and if you click on that green button, the create code spaces on main, it then pops up and starts codespaces.
Now code spaces, what it's doing behind the scenes.
Is it firing up a Vm. It's firing up inside that.
Vm. A docker service, if you will, and then launching a doctor image.
So that's what it looks like when it first starts up.
And inside that doctor image it gives you the Vs code interface. Right?
So this is what Scott was showing us a few months ago, and the left hand side.
We've got our pain for explorer and a bunch of other tools on the top.
We have our editing, and on the bottom we have our terminal.
If we let it go a little bit more, it actually will open up the read me file, or whatever whatever the file is that you the default one is, and here's what you get right.
So this case. This is opening up my, read me in the top, and I've got a full terminal on the bottom right.
Notice what it's doing. It is rendering my mark down on the top.
I've got a full terminal on the bottom, and I've got Git or the explorer on the left hand side paint.
This is very much like Aws's Cloud 9. Right?
So what can we do in this environment? Well, obviously, you can do editing right?
It's Vs code. It's very common.
Common editor, popular editor. Whatever you want to phrase it.
But you can edit things right. So what can you edit?
You can edit Markdown files. HTML Files.
Plain text files and include Jupiter notebooks here the example that I'm showing here is a plain markdown file, and I have split the screen.
So on the left hand side I'm typing the market Markdown, and on the right hand side it is rendering it at the same time that is, that I'm editing it again more detail about Vs code and that kind of stuff go ahead and have a look at
Scott's talk a few months ago.
He goes into much greater detail. The Vs code that you see here.
My understanding is that a strip down version? But it's got everything that I need. Scott.
No, I have not.
Have you tried this one for for doing any of your Javascript Javascript stuff, or or?
I mean, I'm might have played with it for a minute or 2 to take screenshots, but that's about it, you know.
Okay.
Yeah, like, you know, like for my use case, I just need Jupiter and Python, and a shell.
And I'm good to go, and it lets me do that.
So I'm very happy with that right? So oh, shoot what I wanted to show you!
Sorry about that is, on the left hand side. You know any changes that I make in the editor if you look on the left hand side, here we have the little Github Icon, and it tells me that I have a commit right.
I've got this little Blue Badge here with a number one that's saying you've got one.
Commit. That's out of date. Right? Well, I can type in some text here.
Hit, commit, and hit, push, and it'll automatically go and push it out to Github right as as in my code repository, right?
So now when I go, and yeah.
Hey, Robert Robert, I'm just correcting one little thing for everybody.
That's not the Github button, that's the get button.
Hmm!
It certainly wants to connect to Github, but it will connect to other repos another places as well.
Thank you. Yes, what Scott said. What's nice is that it is?
I would just say, within the within the Github environment by default it is up and ready to go alright.
Notice in Aws. Cloud 9. You had to configure it.
But in this case it is ready to go. In other words, by default.
It does, in my opinion, the right thing. To begin with, you're up and running ready to rock, so if we now look at the page, we see now that our changes are down here right so it can do Markdown Preview in real time.
Right? So that was a change that identity, the terminal, the lower right pane.
Right. So it is a Linux terminal if you want to do things in Linux at the command line, you can do things at the command line.
In fact, Scott's book, Linux phrase book I obviously I didn't do everything again, but I tried many of the samples that were in his book.
Try them mountain here, and they work just fine, including installing and removing software right?
In this particular example, I'm just showing, you know, Kat Etsy, release.
I've got a bunch to. It's I think that's 200.
4 kind of blurry on my end, as well, but it's up and running everything that's or everything that I've tried in Scott's book.
I can do it. I've also tried several other commands, you know, from other different book, because I wanna share things with my students.
I can try things out to to see if they work, and they have all worked.
The only thing I haven't tried yet so far are like low-level things like, for example, using Dd.
To create a sparse file system as a file, and then mounting it, be the loop back.
That's one of the things I wanna try to see if that works.
Alright! If anybody else has tried it, and it's worked or not worked. Let me know.
I'm I'm very curious.
By default, ready to go. The environment that it has has.
Gcc, it has rust, it has go. It has Javascript, a node to run Javascript.
It has, ruby, it has pearl, and it has docker.
So you can actually run a doctor container inside this environment.
Now, whether they're doing doctor and doctor or doctor outside of doctor, I don't know.
I haven't. I haven't dug that deep yet, but basically, what it allows you to do is run doctor containers within this environment.
So I figured. Well, let's try it right. Let's run engine X.
Alright! Can I run engine X within a Github code? Space?
Right. So now I if if it works, I've got a complete development environment and testing environment with a real browser.
I know Scott was talking about that Vs code itself has Scott what did you call it?
Mini browser or mini server. I forgot the term.
I said. It's a miniature web server.
Yeah.
Yeah, with live preview. Well, that's with the live preview extension made by Microsoft.
In my opinion it should be included with it, but as of now, it's an extension you have to install.
Fair enough!
But I basically with every minute of every class.
And with with code spaces. What it allows you to do is since it's docker you can actually use doctor, compose, and have more than one docker container running, which, instead of having a Mini Web server, you can run a full web server, an actual web server, right?
You can run an actual database right? You can run Postgres or Mysql, or whatever you like in this environment.
You can run Postgres or Mysql, or whatever you like in this environment. So and you know you can wrap that.
Excuse me, a docker compose right?
So you can have the pieces tighten together.
So here's an example. I'm running docker Container.
Run, you know. Throw it up at on port, whatever it is.
80, something running engine X, and when you know it'll download the image, run it, and it would.
It is then available, and what I mean available, I mean, it is already what you say.
It's running, and and if you've noticed in the lower right hand corner, it's saying it's a available.
If you click on this little blue button. It already handles the tunneling for you right!
You don't have to go and mess with Firewall rules.
You don't have to mess with, you know. What's what's my IP address all that stuff that I was talking about with aws!
It is up and running ready to go. You just need to click on that little blue button, and you will then see the engine X actually showing.
As soon as it renders. Here we go. So notice what it did.
It opened up a new browser tab in my local browser and is automatically forwarding the connection to the brow to the web server that's running in the docker container within code spaces.
Hmm!
And if you're more sophisticated, I would just say, if if you're more interested or more sophisticated doctor user, you could, of course, mount the local drive.
You can set up an extra volume. You can. You know all kinds of fun stuff.
So that you can actually edit and and save the files.
And right away view them within Engine X, or a patche, or whatever you know, the web server you're running or interested in right of course you don't have to run it as a document container.
You can install it in code spaces itself. I personally prefer, doctor, just because it's a nice, tidy way of doing it.
If you if you wanna see exactly what's being shared up on the different ports, you know, before we were in terminal, if you just click to the right, there's a little ports thing click on that, it shows you what's being automatically forwarded if you were to
click, where it says local address. If you click on it or mouse over it, it comes up and says, You know, open link in Browser.
You can simply click on it that way and it'll show up as well.
In other words, if you've, if that little blue button in the lower right hand corner is only there for maybe I don't know 1520 s, and then goes away.
This is another way to open up the that service.
Alright! So that's running it in the terminal running docker.
All that fun stuff sharing, and when I say sharing, what I mean is collaborating right?
You can actually have more than one person, adding a to editing and working in your environment.
At the same time. Now I know Scott talked about Vs code.
More than one person can be editing at the same time, but with code spaces more than one person can actually be in this environment.
At the same time. That means editing. That means working the terminal.
Anything that you see here. They can be doing at the same time, and the way you do it.
Yes, you do need to install the extension called live share, and on the left hand side, excuse me, this guy here.
That is the extension click on that enable live install.
Live sharing. You'll get this little icon click on that.
It'll ask you to create it.
I've sent out an invitation to a colleague of mine.
His name is Michael. Obviously I did this a while ago, so I could take screenshots.
I then accepted it as read, write, and when I do that you know I've got my little script there that says, you know, echo a Hello, world.
What have you? He can now come in, and he can edit that same file at the same time.
As soon as it renders.
Here we go. Oops, maybe not quite yet. There we go, the little purple cursor that's Michael.
He can now type in whatever he wants right there. I've allowed him to do that by sharing.
So he goes in and he can type stuff yeah, he's a Javascript guy.
So you know, who knows what he's going to type?
He changes it from Hello! World to Hello, Robert, right?
If we save it.
Get now knows, hey? There's a change. A little blue icon!
Will show up.
Now my apologies for how slow this is rendering!
There he goes! Oh, whoops! He decided to make another change.
He decided to edit that code.
Of course. Being a Javascript guy, he also decided to write some Javascript notice on the left hand side.
We now have that little button that shows 2 things.
The way code spaces works, though, is when you wanna have other people share.
How would you say the editing is actually separate from the terminal?
So you actually have to send another request or another. Not a request.
Another invitation, and so I sent another invitation for Michael, so that he can actually type stuff in the in the, in the terminal as well.
I made a readwrite for everybody's. He now writes some Javascript.
He fires up Node, and he can now run his javascript within the terminal, so he can do his testing doing Javascript stuff at the same time that I'm watching.
So this is really nice. I don't know, Javascript, that well, he does.
This is very nice environment for him to show me how to do stuff using Javascript and it's also a nice environment for me to show him stuff how to do stuff using python or shell or anything else, right?
So here we go, top corners or top pain.
He's typed console dot log. He saved it on the bottom.
He's typed Node. Hello, world, dot Jas, it prints out, Hello, world!
That is not me typing. That is all him right where was he when I did this?
I don't know. He was not in my house. He was not at work.
He was. Well, he wasn't at work where I was right, he could have been at home.
He could have been a coffee shop, he could have been anywhere in the world, for all I know.
Nice way for us to collaborate remotely anywhere in the world, literally right.
This is just a given an example of what you do.
You can just click on on the top and have others invite others.
I can take the link, and I can post it and give it to anybody.
Any questions on sharing or collaboration.
I have a question about. So I fired up a code space, and it's not syncing my extensions that I normally have in Vscode.
Have you found a way to do that, or is it? It'll some limitation.
I I don't know about syncing.
What I do know is codespaces, has a.
It slips my mind@themomenta.code spaces dev or dev code space.
It has its own dot files. You can take the ones that you have put it in there, and it should then automatically do what it needs to do.
I have not played with that myself. Has anybody else tried any of that?
Those go in the dot vs code folder are those separate?
I don't know. I haven't like I said.
I haven't played with that yet.
Cause. I know Vs code. If you do code stuff for a workspace, it puts it into a dot Vs code folder in the project.
Yes.
So I would presume it put stuff in there. But maybe it doesn't for codes, spaces.
So codespaces. I do know that coachpaces has.
It doesn't. Well, I don't wanna say doesn't use.
It has its own dot. Json file configuration file, and it's called.
Yeah.
Dot codespaces, dev or dev code. Space is something along those lines.
It's not dot vs code. Now, if you created dot vs code, in addition to that, will it work?
Does one take precedent over the other? I don't know.
That's there.
Well, if you click up there on the if you go to file preferences, settings, what are you doing?
Uhhuh.
Where is there one?
There is, and I'll show that in a second.
Okay.
So!
So talking about going back to collaboration real quick when you're done.
Collaborating. Right? You you wanna basically I wanna kick mine out.
Kick Mike out. I can click at the top, click on, stop collaboration sessions, and everything is everything is gone right.
So Michael gets kicked out and I'm back to doing things solo when you're done.
You gotta shut down. Well, you don't have to shut down, but it's probably a good idea, and the reason why is because you do get charged for using this right?
There's these are resources that are that that Github is allocating, and they provide a free tier.
If you will, or how would you say a certain amount of free credits?
Beyond that they do start charging you right so to shut it down.
You click on code spaces right here at the top, click on codespaces, lists all the code spaces you have.
I have this one running if I were to click on it.
What it does. Is it then brings up the this little I menu on the bottom.
I can change them. Machine type. I can change. I can stop it.
And I can delete it right. So I'm I, for example, if I click on changing the machine type by default, at least in my environment, so far by default, I seem to get 2 cores.
You can also get 4 cores, 8 cores, and 16 cores.
You get a hundred 20 core hours a month for free.
So if you have 2 cores that translates into 60 h, if you get, if you have 4 cores, it's, you know, a fourth of that, and so on. Right?
Fire! Away!
Oh, yeah.
Robert got a question you had started to talk about how to disconnect Michael, and the sound on my system seemed like it.
I don't know whether you were paused, or whether the system Zoom was pausing.
Can you kind of quickly say again how you kicked Michael out of the system?
Ask, step.
Do you have absolutely have to just shut down, or what?
Oh, you! You don't have to shut down!
What you can do is you can go to the. There's a menu at the top.
You just click on that look for stop, collaboration sessions click on that.
And that gets rid of Michael, and you are now the running solo again.
You are. It's just your environment.
And then you said something about it's a good idea to shut down, is it?
Oh! If when you're completely finished, in other words, you're done editing you're done doing everything that you want, you want to go. I don't know if you want to go.
I don't know the least for vacation, or something like that.
Right, you wanna you want to shut everything down. And the reason why is because you do get charged right.
Right, right.
So going back to this?
Thank you. That made it all much clear to me.
No worries, so you can change the machine type. You get a certain amount for free.
If. Yeah, you do get charged for both CPU and for storage.
In this case I don't wanna get charged for any of that.
Everything I've done I've pushed to Github, or everything that I've want to get pushed to Github.
I have I now delete it now, the important thing to note about this is, once you delete it, it's gone right, and it'll pop up this menu at the or this pop up at the top, saying, are you sure you want to do this because once it's gone, it's
Can you pull it from Github?
gone. Right absolutely. If you pushed it to Github it's in Github right but anything that's in that environment, in in the code, spaces, environment.
If you delete that vm anything that you have not pushed to Github, it's gone.
Very clear. Thank you.
Yeah.
So that's how you remove it. Let's talk a little bit about the docs, costs, etc.
Stuff, so.
Docs.github.com and English codespaces lots of great reading material here.
This stuff changes all the time. They're always adding new material.
They're always modifying things. That's why I say, don't believe everything I say, because this is the source.
This is where you go to find what's going on free for all kinds of stuff. Right?
Here's what you have. If you click on the getting started.
Yeah.
This is where you get it starts, you know, hey? Gets to for free.
This is the pricing.
Not wonderful screen.
Bye, you get up to 60 h free each month. And basically what that means.
A hundred 20 CPU hours, basically by 2 is 60 h free.
If you have 4, you get 38, and so on, and so forth.
Right. You can get more if that's what you want.
Contact them contact sales. I'm sure they'll be happy to take your money right if you that they start charging.
I have not hit it yet, right? Because basically, my Mo is, I fired up.
I do what I need to do, and when I'm done I shut it down, and I'm done right.
But if you wanna have this as a long term thing, you can.
Hi customizations. This is actually something I'm gonna do.
I'm gonna do a after this. I'm gonna do a quick demo of some things.
But I I don't wanna go too long.
Looks like I'm already hitting an hour. Some of the shortcomings, key bindings.
Maybe so. For example, I'm an emacs kind of a key binding person, right?
So I'm in in the terminal.
I go control and control P. Alvin, I've got a new window, and God knows what control P. Does right?
I go control. K. It doesn't do anything. There's a bunch of keys that I'm used to that don't work.
That's said. Every now and then. I fat finger something, and all of a sudden it works.
So you know, I click on something, and there is a way to make those buttons do what I want to do in a terminal.
There's got to be a way to to customize that I just haven't figured that out.
That number one, number 2.
You search for? Have you searched for key commands or keyboard?
I have, I have, and I've tried to find a good explanation, and I have not yet.
Huh!
So if there's there's gotta be a way to do it.
I just haven't found it yet right?
Yeah.
Yup!
I know there is for Vs code, and they publish Pds for windows. Linux and Mac.
But there's nothing none of those do what you needed to do.
Well. So, for example, if I go control F, the browser intercepts it for oh, what do you want to find in the page right?
It's a, it's browser based right?
Got it? Yes.
So there's there's gotta be a way to say when I'm in the terminal paying, let it pass through.
There's gotta be a well there doesn't have to be.
Right.
But I wanna believe this right. And I also believe in unicorns and rainbows.
And one day I'll find it. I'd like to believe it exists.
It's just. It's just a matter of, you know, finding.
Well, we know it has to, because obviously, if you're like editing and Google Docs, and you hit control C, are one of those other commands.
It intercepts that right?
Exactly. That's that's why I wanna believe it exists.
I just haven't found it yet. And what, in a way it kind of surprises me that.
Given so many other things that just work seamlessly out of the box, I mean the example of, you know, clicking on on the on that get icon.
It automatically pushes it to Github. Right it automatically asks you for the code.
Commit and then boom! It'll just work right if I use a Jupiter notebook.
It knows. Oh, hey! You want to use it. You put a notebook, it it just works I'm surprised that those key bindings don't do that.
But maybe it's just, you know. Hey, this is is relatively new in the sense of I believe it was about 6 or 8 months ago.
This didn't even exist for individuals. This was only available to people who had, you know, an organizational account or an enterprise account, or whatever they call it, right.
Individuals' could not use this right? So this is, I think I still think they're trying to individuals could not use this right? So this is, I think I still think they're trying to.
I would say they've rolled it out, and they're, you know, continuously improving it.
At least, I wanna believe.
Have you look now, I know this is probably not what you want, but in Vs code, of course, you can change key bindings to whatever you want.
So you could go in and change the key bindings.
But I know you really don't want to do that, because you're used to the emacs key bindings.
But you can do that.
And I would imagine that someone has already done it, and said, Hey, download this Json file, or whatever plop it in here and boom!
Yeah.
You can do it yourself. That's my point. You could do it.
You got it right like I said, haven't found it yet, but if anybody finds it oh, yeah, no, yeah, no, yes, I could not.
At this time. So yeah, I'd like to believe at some point Microsoft or Github, or somebody's going to come up with this, and it's gonna be available kind of the second shortcoming that I've run into I wouldn't
call it really a shortcoming, but something to keep in mind.
It is a single vm, right? So if you want to do something where you want to do multiple vms, you want to really create a you know, a full blown out network where you know, load balanced and blah blah blah blah, this is not be enough.
For you. Right go at once. You've done your development and all your other fun stuff on codes, spaces.
Then go to. You know your favorite Cloud Provider, or in a house cloud Provider, or whatever to actually do.
You know all, the all the fun stuff, for you know, creating a full infrastructure or what do you call it?
Orchestrated environment with multiple. You know, machines and load balancing.
And blah blah blah right that's not what this is for.
This this is great for doing the things that I mentioned right firing up something from Github working on it with somebody else.
And trying things in docker containers. So, yeah.
Yeah.
Uhhuh.
Yeah. One thing, Robert, I would also add to that shortcomings is a lot of extensions won't work so if there's extensions that you like using in Vs code on your desktop or laptops, there's I would say most of them don't
work in the browser.
Okay.
Hmm, correct.
Oh, just be aware of that cause. There's some I rely on, and I'm like, you know, I can't use them in the browser's pain, so.
And and maybe that's just a matter of time, right?
Yeah, although I think somewhere that has do with the bindings for the desktop app that are gonna be there are.
Gonna be difficult to reproduce in the web app. But we'll see.
Sure, and who knows? And thanks for the suggestion. Let's not all, hey?
Okay.
Well, it's a most extensions, don't work, but in my experience.
Maybe that's why they didn't sync whenever I tried to sync.
Whenever I synced by settings and sync my extensions.
Maybe that's why maybe they don't work.
The only one. Okay.
Yes, it does not. It does not sync the ones that don't work so like I might have 30 on my desktop.
I have like 4 in the browser.
Ouch! Sounds good.
But again your extensions might work, whereas mine don't.
It just depends on the extensions. You know what I mean.
Yup. Yup, yeah. And what are your needs? Right?
What are your use? Cases? Right? So thanks for that, just to let you know.
Of course I put the presentation of course I have this in Github.
I'm using something called Jekyll, and Slides.
It basically takes markdown and renders it as a presentation.
As soon as how would you say then uses Github actions to go through and rebuild this?
So I put that in there, and it'll be in the in the slide deck short.
Yeah.
So in summary, literally, all you need is a browser in Internet, in a Github account, it's running Vs code.
And specifically, I think it is actually running what is known as Vs code server.
With it you get a terminal. You get, doctor, you get root. You can install stuff.
You can remove stuff. You can do all kinds of fun stuff.
And of course, what I forgot to mention which, if it wasn't apparent, of course you get an Internet connection.
Remember, back in some of the other tools that we were trying.
Excuse me with my binder.
I couldn't get out to the Internet to download some stuff.
Obviously I can do it here because I did a docker run and it boom it pulled down the Dr.
Image, to run, to run, engine X. It can do an update update and so forth.
Right? So that is the end of the presentation port. Oh, yeah, I mentioned Vs code server.
I don't care.
It was we. We we can click on that basically Vs code server.
Here's the Github page. If you're interested you can download this, not.
And the reason I include this here is because not everybody, or I want to phrase that not every organization is absolutely thrilled, that you are going and running code on Github.
They wanted internally here, navigable. Currently, we have a number of national labs.
Sandia, Los Angeles, Air Force, Research, and so forth. They're not on the Internet, right?
They don't even exist. And so they want to have everything in the house get embedded and so forth, right?
But here's an option for them to run code server inside their how would you say their secure area or whatever you want to call it?
And again you can do the same kind of functionality as you can with code spaces. Probably not.
Everything but the at the at least a lot of that right.
So I'm gonna if we got time I'd like to go through a little demo. Everybody.
Okay with that? Or should we call it a day?
No, go ahead with the demo. Go with the demo.
Alright!
That's it.
That'd be cool of Robert I paste it into the chat that it does. The dev contains that Jason File can be either located route or in the dot Dev container folder.
That's it. That's the one I was referring to. Thank you.
Yeah.
So let's see. Alright!
Hey, Robert!
Yo!
Hey, Robert, maybe before you start the demo, maybe just take a look into the chat.
There were a couple of questions in there. Not be a good time just to address them a little bit.
James Conroy asked, ever ever mess with Gitpod I/O.
Yeah.
Have not something to try out. Thanks for it. Has anybody else tried it?
Hmm!
Okay.
So I have I worked in one of those their sandbox, the environments that don't exist so I can't really use it day to day.
But it seems really similar. You install a browser extension and it gets you that green popup to open up and get PA with your Vs code. And it's just oh, yeah, whatever language you want to try, we'll give you an environment for it.
Nice it says Pod, does it have anything to do with Pod?
Man, and which is kind of like a how would you say a user space docker, or just nothing to do with it? Okay?
No, yeah, just you're developing in a docker pod or something. I think.
Gotcha!
Cool.
Alright. Let me see if I can run through a quick demo here, so I've got anybody else have any questions before I move on.
Alright! So one of the things we do at Cnmi is we have a bunch of different deep dive programs.
Obviously, I teach in the data science one. But we also have another one that deals with Internet of things.
IoT, these are basically devices that are out in the field.
Their sensors. They collect data and they send it off over Wi-fi, or cell, or some other kind of wireless transport mechanism, and to some place, and that data gets stored though usually at at the receiving end, if you will is a message
broker, and the most common one to use with IoT is something called Mqtt.
So I wanted to play with it. I'm not that familiar with Mpttt. I'm not that familiar with IoT.
So I just thought I'd create, hey? Well, let's set up a test environment, you know, a little sandbox environment to try it out.
So that's what this is. So a little bit about.
What a metric message broker does!
Is, it is the middleman in between the producers and the consumers, producers on the left.
Hold on a sec. There we go. It is that middle piece, that middle box that sits between the producers on the left or in the consumers on the right.
This is also none as pub sub so publishers and subscribers, so producers are also known as publishers.
They're send messages to the broker, the broker takes those messages and passes them on to the subscriber, in this, in this diagram the consumers, the message broker usually has 2 parts.
It has what is known as the externange, and then the message queue.
So when a producer or a publisher sends a message in addition to the message they they'll have the IP address or name of the broker, or the exchange as well as the name of the message queue that they want to send to right so there's 3 parts the
message the exchange, the queue, and the message itself right, the consumer can subscribe to those queues, and it will receive those messages.
So that's how message broken it works. I wanted to see if I could set one up right.
So I created this little Markdown file here IoT moi if you want to follow along, you absolutely can.
This is actually using a public broker.
Oh!
And since I know I'm gonna need a github code space, I'm gonna set that up 1 s.
So I'm gonna go back to my repo. I'm gonna click on code.
I'm gonna click on.
Hello!
Out of curiosity. Is anybody else tried to go to this, to this repo and open up a code space.
Yeah.
Try.
I'm just wondering if it's just on my end.
I got my Mac open at the same time, so let me.
Let me see if it's a issue with the.
Scripting, I mean hit a dot. Go there and hit Dot.
No. What I mean is click on code.
Click on code, click, on code, on the code spaces. Tab, what?
Got it?
What should be showing up here is open code spaces.
In name, yeah.
Create code, space on name. Let me try it.
Yup!
Now, if you do it, what's gonna happen is you're gonna get your own code space environment right? Your own.
Vm, and it's gonna pull in the code. From this Github repo.
Is exactly what's happening.
Right. And so if I start one, it will not, or I'll get a completely different environment right?
Yeah, it's done. It's set up.
Yeah.
Really alright!
Oops!
And I'm gonna.
I'm gonna try resetting my page. Maybe it's just spinning because it can.
While we're killing some time I've been really, really impressed with Vs codes like key buying customizability.
It definitely rivals like Bim and emacs, as far as how much you can customize your key bindings.
I've been very impressed with it. The only shortfall that I've really found is it's difficult to bind a single key press to execute.
Multiple editor commands, I think that's like the one shortfall that I found so far.
But you can set key binds that only applied like certain file types just like you can in advance.
But you can also set key binds that only are only active when certain elements in the editor have focused such as, like the terminal or the editor, or the the project window.
So it's very, very slick.
Which is exactly what I would want. Right? I would wanna have control. P.
To work differently in the editing pain components.
Y yeah. And then you can even even like, so if you have like a list open, and you want to like, go down to the next list.
Item, you can put control P to act like a down arrow when you're in like a list item like that so it's even got context for that.
So it's really.
I have to agree. And what's really really cool is so in my my case as an instructor, I don't.
I used to take time having the students install a bunch of extensions which took forever well Vs code allows you to create extension packs where it looks like an extension, but in the background installs a bunch of extensions so that saved a bunch of and then I
found out that the key bindings we're talking about.
You can put those into an extension as well, and snippets, and so I'm I've created an extension that installs a bunch of keyboard snippets and I'm still working on the one with key bindings.
So that'll be automatable through an extension.
So that's really, really cool.
I have!
Indeed! And oh, sorry! Go ahead!
Oh, I was. Gonna say, I haven't written my own extension yet, but I've looked at some code for some other extensions and I'm amazed at what some of these other extensions do with like very very few lines of code.
So they must give you some pretty high level things to use to be able to do such big functionality with like such small amounts of code, that I'm seeing in some of these extensions.
Hey? What? I'm gonna pull! I'll send you a I'll put a URL in there.
It's easy, shot, I mean, for a person like me that is not a Javascript developer.
It's super duper easy. Sorry to set one for my settings and shortcuts.
For instance.
And that's the Github repo. So you could see every single thing I did.
Nice, alright! I don't know if it's gonna matter.
Steady. I'm gonna stop sharing on my chromebook, and I'm gonna start sharing on my Mac.
Go ahead!
Seems to be easier said than done.
Yeah.
Is, that.
Oh, vice said today, if I said today, I hate Zoom.
Yeah. And I don't like, you know, I don't know if it's.
Tell us how you really feel. Stan.
I really really hate zoom.
So each.
At least it's not Microsoft teams.
Now!
The only thing only thing I hate more is meetup.com.
Oh, wow!
I thought. You understand.
I love their calendar well, not their account. I love the Google Calendar. I love that.
I thought you had a complaint about that.
They stop screwing with it. It's stable!
Yeah.
Oh, that's always a good recommendation. They stop screwing with it.
Now now meet up they screw with that every 2 weeks.
Yeah.
Yeah, I do have key bindings in there. So if anybody wants to see if you go to the my repository and click on package case on about halfway down you'll start seeing the key bindings where I'm setting key bindings. Like I said, it's very easy.
Oh, so Mac has this feature.
You have to restart. Yeah, share. Yup.
I have to. Yeah. Yup, hold on a second.
I'd like to believe that it's gonna come back.
1 s.
I don't need that.
I'm assuming I just lost my zoom connection on my Mac as well.
Oh, yeah.
Correct. All right. Give me a can. Hear me a second.
We always learn from troubleshooting.
Especially when somebody else does it.
Yeah, I just I like to learn when it's not in front of a bunch of people.
And Mac sounds like it's about to take off.
Oh, this thing is what from 2012?
Oh, wow, yeah.
I don't think I yeah, I've never heard that anything on M. One.
There we go!
They have computers in 2012.
Indeed!
Oh, boy!
Yeah. But notice how, even on a Mac from 2012, it's loading a hell of a lot faster than it was with that chromebook.
Oh, yeah. Okay. And what's funny is, I'm looking at my chromebook, and it's displaying just fine.
So I don't know if it was it's a networking issue in the Chrome book, or what it is.
So!
Could it be a zoom issue?
It's it. I wouldn't be surprised if it's a combination of zoom as well as as well as well as well as well as well as you know.
Who knows?
Yeah.
On, the on the Mac. Are you running the zoom app?
Are you running zoom in the browser?
Zoom in the browser.
Okay.
Wow!
And I tried to get the Mac the zoom version installed.
It will not install. And yeah, that's my guess.
This is too old. Yeah.
I? The honest answer is, I don't know, but that's that's my guess.
Well, plus it's probably a 32 bit, Mac.
They might not make 32 bit versions of zoom anymore for Max.
Oh, no, it's it's 64 bits.
Oh, okay.
Yeah, it's definitely 64, that.
Do they make a flat pack or app image for a max?
I don't know how that would run.
No idea.
No, I'm just a back version.
No, I don't believe so. I'm not in my knowledge.
Okay.
It's browser, or the app.
Alright, so everyone can see my screen on the left hand side.
This is, this is Github right? This, this is the actual markdown right?
I called it most in one. I've also got.
I got another version. The original IoT is an all-in-one.
It runs everything in one I'm doing the most in one, because if anyone wants to follow along, I actually have the code in here.
Excuse me. 1 s. The code is in here of where where is it?
Here you go! Here's the subscriber if you want to follow along, you can follow along.
Run these commands, and obviously don't don't run the publisher, but you can run the subscriber, and you will get my messages that I will be sending out.
So let's fire this away. So first thing I'm gonna do is I'm gonna pull these docker containers right?
So I can simply cut and paste. Come over here, Oops, let me kill this.
Let me kill this, bring up my code space. Come on, and there's a keyboard command for bringing up a terminal.
Control, back, to.
I just don't remember what it is. Control back, tick!
There we go. So I'm gonna paste this in.
And then when I paste, it's gonna complain, I have to save, allow.
Are you sure? Yes, don't ask me again.
Yes, paste and boom, it is in there. Notice, here's here's the thing that I probably clicked on last time to configure my terminals settings so that the key bindings work appropriately.
I'm not going to do that now. I'm just gonna go with it.
But in essence, what this is doing is this is, gonna pull down the docer image that are created. It's going to tag it with the appropriate Mqtt.
Read, and it does this, of course, in code spaces. So notice how blazingly fast this is.
If I were to do this on my local machine, it would not be nearly this fast right?
So I'm gonna remove. I'm gonna skip this part because I don't have any containers.
I know it. I'm gonna create the docker environment, right?
So what I'm gonna do in this case is rather than running it as a service.
Excuse me, I'm gonna run this as a service.
There we go, and we can see it.
There's the Id, and there's the container itself, right it now pops up and says, open and browser, right.
The reason why is because it's actually running node red, which is a a Javascript browser, and it automatically.
All I need to do is click on it, and it complains to me, probably because it hasn't completely started up within the within the browser yet.
Let's let's give that a second to startup.
Robert you said. It's running a Javascript browser.
Did you mean super?
Okay.
Excuse me, I do mean server. Thank you. Thank you for calling me out on that.
I wasn't calling you. I was just confused.
That is exactly what I need. Yeah. And for some reason, oh, here we go.
Mouse over, follow link!
Oh, it's still not finding it! What am I doing wrong?
Don't you hate it when you practice this and everything works?
And then you actually do the live thing and it dies. That's why I hate live Demos.
Could be a file. It's trying to look for.
There's nothing there, in other words, everything that it needs is self-contained.
So let me kill it. Docker. Stop!
I mean, was it looking for like an index file or default file per chance?
That was there.
It could be. But everything is in that container, so it should in other words, if it's not in the container, it's that would be awesome.
Okay.
So what? I've worried. Yeah, I don't.
I don't know a good answer. Let's start it up again. So.
There's a container. It is running.
We got the forwarded ports. Let's well, let's give it a minute or 2.
Let it let it fire up a bit, so it's running in the background.
Maybe this is what I did. Maybe now it should be running.
Let me try this. So this, this is just some.
Now, you say, phone stuff to install some extra packages that I want it's gonna install that stuff.
Maybe right. Maybe it wasn't running yet although that's all that.
Let me run this boom!
Also notice that if it has a if it displays a link, a URL in the browser, and you mouse over it, you can then follow the link. It'll bring that up.
Damn it!
There we go. That's what I'm expecting to see for those of you who haven't played with node red. Yeah, it's it's a Javascript or, excuse me, it's it's a browser written in
Javascript. Specifically, it does really good stuff with IoT stuff it's click and drag.
You mean server? You said Bradford. Yeah.
You put. Thank you, man, it's get late the day my brain's frying.
Yes.
Must 2 h earlier out there.
So one of the things that I want.
Nowadays.
Is, I want this file. This is the Json file that describes a particular setup.
I'm gonna actually download. This I probably could have if I mounted it, and all that stuff I could put put it into the image or excuse me into the.
What have you? The Thingama jigs? Let's put it in here. Not really.
I'm gonna give it a Z dot actually easy dot.
Now we're gonna find it right away. Here we go.
Red. Now that it's downloaded, let me import it.
Downloads. There it is. Bring it up imported, click on it, and this is what it looks like.
It's basically on the left hand side. These are things that you can do.
And on the right hand. These are things that it displays.
So, for example, one of the things I can do is I can click on this timestamp thing, whoops.
I gotta deploy the changes. There we go. If I click on this timestamp thing, it shows up on the left hand side.
My favorite number, anybody want to guess what it is? Of course this goes to 11, and so forth, right?
This is my actual feeds test. Right? So the other thing I can do is I've also got whoops.
I click on this guy. I also have a dashboard.
Where's my dashboard?
Well, it's not showing my dashboard.
Oh! Here we go!
There's my dashboard of things that I've sent right.
I've hit 11 and so forth, right? So all of this is running in code spaces.
But it's actually displaying locally if I go back to my script I can now run.
Let me go back to this guy, my IoT, and I come down here I've got all this running.
I can run a subscriber. So I'm this is basically, you know that right hand side let's go ahead and paste that in here.
This is a.
Right? So it's now just listening. And what's cool is, I can run another shell.
I can split this right so now I've got 2 shells running, and now, if I come down here and run a publisher alright, this is the one that's sending the messages.
Watch the left hand side of the screen.
Ready! 1, 2, 3, boom! I send a message to the publisher saying, Hello, world!
It pops up here saying, Hello, world! If I look at my note red, I see.
Hello! World and if I look at my dashboard I see a low world right?
So I have a full working version of a publisher and a subscriber, and a dashboard entirely running in code spaces.
And literally, I can get this set up in a matter of seconds and play with it and try things out right.
So if I wanna try new things in node red, you know, add more bells and whistles. And what have you?
I can do that when I'm done I can push it off to Github.
Shut this whole thing down, and we're done right. So that's the end of the demo.
Any questions on any of this.
None awesome.
I think it's really cool.
Just for comparison in the IoT class. They were trying to get this set up on, you know, again, going back to my one-click concept, the IoT class in my class as well, you know, people bring in windows, machines, Macs, right chromebooks. I'm not the only one who
runs a chromebook of all different versions and flavors, and sizes and customization, right?
I kid you not to run what I just did. Granted.
It took me a little bit longer than I anticipated, because we had to switch machines, but getting this up and running on every single machine in the lab takes at least an hour between everybody.
Oh, I don't have this. Oh, you need to install this first.
Oh, oh, you need to do this first. Oh, you don't have this!
Oh, you don't have this! Oh, you gotta do this work around right? Oh, you're that kind of crud right?
We bypass all of that, open up a browser.
Click on this open up a code space run, this run, this run, this, and you're done.
You're up and running so.
Why don't you? Why don't you require that?
What?
Oh, I don't need to do it. Oh, for the IoT I don't! That's not my class.
They do stuff low level, anyway. So they gotta they gotta get their machines working.
To begin with, but for me, for me, learning the stuff just to play with it.
And try this stuff. So just a little history.
One of the you know IoT traditionally has been get a sensor so classic example is a thermostat. Right? Measure the room.
Temperature? Is it too hot? Turn on the air conditioning? Is it too cold?
Turn on the heater, and that's it. Right. That's it's that's the end of the data. Right?
It may go off to a dashboard, where they keep it for 24 h.
If that but then it's gone right so one of the things that in working with the it folks is, it's like, would you?
Was, why don't we store that to a database right?
And so now they're storing it off to a node.
Jsuse me not an oja, a mongodb database right.
Which is the next thing that I want to implement on this, so that literally within a doctor environment using.
And I'll probably set it up using of Doctor.
Compose is, I'll have a database, node.
Read Mqtt. All in one docker container.
All running on encodes, spaces right? And it just boom literally.
A few seconds, and instead of having to do all these commands one by one, I could literally just type doctor, compose up and boom!
It's just deployed and we're done right.
So, yeah, but.
So I missed that. Are you requiring that in your class?
Now, are you going to?
No, no! Requiring code spaces, you mean.
Yeah.
Not yet it I probably will. There's a couple of things that I need to do to right now.
I'm doing everything in Google co-lab, which is a nice environment to do a lot of things.
Hmm!
But there's extra things that I wanted to do where co-lab just doesn't.
It just doesn't cut it right. And I don't actually, now that you mentioned that I don't think I give a demonstration of co-lab, although I've demonstrated that in the past in essence in co-lab you just get a Jupiter notebook and that's all
you get right, you don't have you don't get a terminal.
You don't get a lot of other things there's a couple of things there's some workarounds, but they're there they're kluge right?
Codespaces. I could do everything right and now it's a matter of just saying, Okay, great.
How do we transition from co-lab over to over to code spaces?
Got it?
There's a few things that I'm doing right now in code spaces.
So, for example, one of the things we do is what is known as initial data analysis. Right?
And this is just some basic things of you know how big is the file.
What kind of file is it? You know how many columns you know? Wc. On it?
A file, a type, and so forth. Right? Those kinds of things.
And I teach that using codespaces.
Eventually. I like to do more things. This Mqtt.
Cool.
This lecture is gonna come up, hmm! Probably in a few weeks I will be using codespaces for that, and it's as far as requiring.
I mean, what's the required? Here go! Here's the URL click on it.
Open it. Run it! You're done right. It's literally that simple right?
Yeah, for me, I personally prefer typing on a local machine just because speed.
And if it's more responsive, you know what I mean.
Oh, yeah.
But I know a lot of people like this for the convenience and all the factors you pointed out, and that's totally legit, and certainly as an instructor.
Believe me, I've been there where you spend an hour and a half getting things set up.
Yeah.
Setup, and then you find out a week later somebody didn't actually do what they were supposed to do and now you have to stop class and fix that and blah blah blah!
So I can see total. I mean, like I did with the extensions for Vs code.
I can totally see why, as an instructor, this makes all the sense in the world.
And what's also nice is it doesn't have to be either or right.
Yeah.
You can do things in code spaces. Push it out to Github right, and then pull it down to your local machine and do whatever you need to do right.
Yup!
I can literally take this entire thing and run it on my chromebook.
Yeah.
I can pull it down and run it on my Mac. I can pull it down and run it on my raspberry pi right.
I can do all those things. So it's nice to have that flexibility of being able to move between different environments.
Yup!
If I wanted to, I could take this entire thing and push it out to to you know the cloud or a devotion, or aws, or any of those right, and it will.
It will work right? That's that's what's nice about this kind of in this kind of environment.
Huh!
It's building on that. I had a student last semester that we installed Vs code, but he had a chromebook, and so I was like, well, the you and I are gonna learn how to set up code spaces and Sync.
It with Github. You're gonna get to learn that.
And it was a little more work for him, but after that it worked fine.
Yeah.
It was great and plus. He was like he was a freshman.
He was like, I've heard a get. This is great.
And Github. Now I know I know the basics.
So it turned out fine for him, but you know it still took a while to get a setup.
What is it? This?
But hey! It worked. That was the cool thing, and he had a desktop at home.
Yeah.
So he was able to work on it at home, and Vs code.
Yeah.
It installed on his desktop, and then, when he went to class, he used it.
Yup!
Yeah, group.
But isn't that great like Leveler, though? Because all you did with this demo is really run.
Docker commands right? So anywhere that you could actually get Docker installed.
I mean, I'm I'm I'm sure there's tons of ways to mess up this demo running these commands right?
But but from like a having your machine set up point of view, I think just having Docer installed would have gotten you like 99 or 100% of the way there to being able to perform this demo, are we?
Or do you think your audience couldn't even successfully install Docker?
The, the, the purpose that I wanna do here is you don't have to install anything if you want to install something, knock yourself out right if you want to install Doctor Great, if you want to install Mqtt.
You know. Knock yourself out right.
But if you don't, or you can't. So, for example, I've got a work laptop right?
I can't install anything on it. Right? I can't install Docker.
I can't install python. I can't install anything right.
This is a great solution for that.
Right. But you're absolutely right. If someone can install Docker.
Yeah, you're 99%. There, right? You're done.
Right, if not a hundred percent there, at least for this demo.
What's nice about this is that with codespaces, is it's someplace, else it's not on your machine right?
For example, not too long ago my wife went on a trip down to Bolivia right she did not want to take her work laptop with her understandably right.
Something happens to it, it gets stolen, you know, when she comes back Tsa decides to, you know. I don't know.
Do something with it right? So she ended up buying a chromebook I don't know for some like 200 bucks or something like that went South did what she needed to do, came back.
Oh!
Nothing happened but what's nice is that if something did happen, it was like, Well, well, it's only a $200 chromebook that gets smashed up, and there's nothing on it right.
What was also cool is that we weren't working with codespaces, but we were doing some other stuff.
She was able to use her browser to connect to something we were able to share and work on some things, so she is halfway around the world while I'm here.
And we were able to to collaborate on some stuff.
So, if?
What a modern couple!
What's that?
So what a modern couple!
Indeed, so cool, so that's all. I have for codespaces.
Obviously, there's a lot of stuff, you know. The key bindings trying things out, you know.
At the low level that I haven't done yet, that I'd like to do.
Thanks, Scott and others who have posted up in the chat.
Stan question for you. Does that stuff get saved in the recordings or somewhere?
The chat.
I would copy it right now if I were you, because it will go on, Daddy.
Yeah, the chat? Or do I need to go? And yeah.
Gone!
Alright. I'm gonna stop sharing, and I'm gonna it's gone.
Yeah.
Daddy gone because I'm on my Mac.
Yeah, okay.
Hey? What? I'll copy and send it to you.
The answer is, if it's addressed to everyone, it does get saved in the archive recording the stuff that's only addressed to an individual does not.
Huh!
Unless the individual happens to be the person doing their reporting.
And I'm not totally sure on that.
Do you think in a classroom setting like dev containers might be useful because I was watching a presentation on those?
And basically the way that it seems to work is like per refo, you can basically set up an environment.
And then what it does is it runs Vs code server in a container, and then your Bs code like that.
You have installed, connects into that server where you have, you know.
Java install their python, or whatever, and you have a specific version.
So I think it's a lot. It requires a lot more than what codespaces does, but I don't know.
I was thinking it might be a nice like middle ground. If you have someone who is capable enough to install Docker.
But you don't want to have to worry about. Oh, you have Java 8 install that we need 11, you know. It's like a middle ground where it's halfway towards codespaces, but at the same time you don't have to worry about a student forgetting to turn it.
Off, and then, you know, racking up some big bill.
So yeah, just to go back a little bit about the talking about the pricing.
What are the nice things about code spaces is that it actually does turn off after certain idle time.
Now obviously the storage space is still, you know.
How would you say that meter is still running?
But the CPU meter has stopped so, and the CPU.
Or, excuse me, the storage meter is much, much, much less than the CPU meter.
That said, Yeah, if you know, you leave it on, for you know.
Let's say you're running. I don't know 8 CPU's, you know.
You're gonna blow through that in a day right?
So, yeah, it's nice to if you can run it local, or you know, set up your own cloud environment and run it there.
The beauty about coachpaces is that I don't have to do that.
I can literally just say, Here you go! Here's a URL click on it.
Run right. I wish I could do that with other environments.
Like I said. Cloud 9 is not quite there. I mean, you can do all this is in Cloud 9 aws.
Cloud 9. It's how would you say the the ability to do it is, it just takes a bit more same thing with Google.
I haven't tried I don't know what. If Azure has anything like it?
Obviously Github itself is running azure underneath. But I don't know if azure itself provides any kind of services like this, but I don't know if anybody else that provides something as easy and quick to use as github code spaces and what i'll call you know fairly feature. Complete.
That's cool. They shut it off, and it's an active that's very generous in a way, you know, cause I bet they could make a lot of money if they didn't do that right.
Yeah, ask Amazon or Google how much money they can make when people don't do that.
Yeah, yeah.
I think they I think they've always been pretty good about developer goodwill, though better than other companies.
So I think it makes sense.
Oh, we got somebody complimenting Microsoft on here.
Well, I don't know about complimenting.
Oh!
I don't know if the call, you know. Github used to be A's own thing, and then Microsoft bottom out right same thing with the Linkedin right?
There was somebody else, and then Microsoft Bottom. I don't know what the new culture is like at Microsoft in the sense of when they acquire someone do.
They say, Yeah, we now own you, but you can keep your own culture and do your own thing, or do they come in and say, great welcome to the Borg, and we're gonna take over everything.
I don't know. I.
Well in my experience I've been very impressed with how Microsoft's handled Github.
Yeah.
They they haven't screwed it up, and they've improved it by leaps and bounds.
Yup!
So I've actually had no complaints.
Agreed by.
Now, that's scary.
What's scary?
Microsoft is doing a good job with Github.
Good.
Phenomenal Right.
Hi! It's aomless.
Yeah, it's, I mean, yeah.
Alright. We're part 2 of them, I guess.
Well, they have access to all the data on it.
Now right? Because they own it.
Yet more metadata.
I mean again. Remember believe me, I'm not a fan of Microsoft, but they've always been good with developers.
Cause. That's they've they've recognized better than other companies that that's their bread and butter.
So I'm not shocked that they wouldn't screw up.
Good.
Because they themselves use it. They moved all their stuff to Github.
Yeah, that is true.
In fact, they've been contributing to get a huge amount.
So, you know, in this instance I can't. I can't fold them.
Yeah, that I don't doubt your word, Scott, but that just sounds wrong.
Oh, hello! I'm I hear you have every right to be suspicious.
It just sounds wrong.
Hello! Everyone.
And just just to go back real quick about, you know, shutting systems off right?
So I'm back in aws on Cloud 9. That instance is still running, you know.
I haven't touched it since, you know. When I demonstrated it to you initially it's but it's still going, so it would be nice if and may.
Again. I haven't played with Cloud 9 in a long time, but it would be nice if it had some similar kind of feature.
Maybe it does, and I'm not aware of it, but at least not by default.
Right. It is still running. It's still chugging away.
The Meter's still going.
So when do we end this session?
There's no more questions. I'm happy to end it now.
Hey? Gary, you want to do the billboards, and we'll shut down the afterwards.
Shut down the recording.
No! Already this has been the what is today's date May the eighteenth, 2023, Thursday.
It's the St. Louis log, part of, and our speaker tonight's been Robert, and his topic has been the Github's code.
Space been a really good presentation. Most of us really learn something.
A big, thanks to Robert, and let's see.
Oh, one final thing as far as announcements, I should put this in earlier.
The on the calendar. We just added yesterday.
There's a raspberry pi Jam.
At the Danforth Plant Science Center this Saturday.
From noon till 4. So what I want to mention that since we just added to the calendar it's kind of an annual thing they do.
Seems to go over very well with that end of the recording.
Thank you.
Thank you. Everybody. Appreciate your questions, and if you got any more questions, feel free to send them to the send it to my Github account.
Send me directly. Thanks, everyone.
Good job, Robert. Thank you.
Shutting down the recording, but the session can still continue.
Good meeting.