You ready, Gary? Yep, ready.
Hey, everyone. This is the bookend for the recording. This is Wednesday, March the 12th, 2025. This is the monthly general meeting of SLUB, the St. Louis Linux Unix Users Group.
We have two presentations tonight. The first one is adding adding domain names to cert bots that's being done by Grant Taylor.
And second one is Scott Graneman. Telling us about eight surprising things that he got done using ChatGPT.
So with that, I'm going to turn it over to Grant.
Yay.
Finished chewing.
All right, I suppose I should share. All right.
Yes, sir.
Yes, we do.
Can you see my screen? Okay. So… We've been talking about the SLUG website or websites for a while And in the discussion.
Somebody made a comment. That people were supposed to not.
Use HTTPS colon slash slash to get to some of the special interest groups.
Domains because the cert was not copacetic and they would get lovely errors and various things.
So we wanted to fix that. I'm a big portion of that week.
So what? And the lovely errors that people would get is something like this.
Don't go there. Bad. No bueno.
So… We had the multiple domain names, new Linux, the WWW, Slack, STL lug.
Various things we wanted to Sorry, was there a question?
No, I just wanted I wanted to admit to the, I was a guy that was doing it wrong.
Okay.
And I don't know that… people were doing it wrong. I think it was just… the web server installation had grown and evolved.
Some things over time and there were some other things that just needed to catch up and i
Well, actually not wrong. I was just doing it. They didn't agree with what was set up.
Let's put it that way.
Right. And me being a Unix administrator, believing the server should do what the users think.
Most of the time. I think we needed to make the web server do support what you as a user were trying to do.
Anytime users went to the https version of the site, they got nasty, scary warnings.
Can you increase the font size on that? Or Gary. Thank you.
And visitors would have to click through the warning, which is against security best practices to ultimately get a redirect to a different website that did have a functional cert.
So it was not a good situation. And I think people were annoyed by it.
I knew it could be made better. We talked about it on steer comm the decision was, let's make it better if we can.
So we did.
I'd like to point out the way STIRCOM looks at things is whoever volunteers to do the work gets to choose how they do it.
Usually.
Fair enough. So the solution was actually pretty simple.
I am leaning heavily on Lee's work from a few years ago, and I don't know who will who other than Lee was involved getting cert bot and the dynamic DNS.
That was all in place. I didn't have to touch that.
Here is the commander. We were using with cert bot.
And I only had to make some simple changes to it to add the additional domain names. So we see down through WWWSTL Linux That part is the same.
That part is the same. All i did all i did
Was add that part and rerun the exact same well the command with that modification using the same DNS authentication And all the automation that's already in place.
So, and there's a few more details The dash D is how you tell cert bot I would like this certificate to be valid for an additional domain name.
So I said, new Linux, WWEW, new Linux, Slack. Www, Slack.
Stlog.org and www.stlug.org. It did tell me I had to add that on to the end to grow the certificate.
And that was more account settings And I added it and it worked just fine.
Like the second time out of the gate Once I added that.
It just took a little bit longer, but it worked. And we had a certificate.
That listed all of these domain names. In it a single certificate valid for the slew wildcard STL Linux, new Linux, Slack.
Nstl log. And I think one of the concerns that some people had is they didn't want to manage a whole bunch of certificates because it can be tricky at times.
So we put them all in one.
Quite simple once you see the results. Yeah.
And Gary hit me up last week, said, could you do a bass presentation? It's like, yeah, I can put together something about this.
Because I had another friend that's like, I need to add domains to cert bot.
He actually i'm sorry, she figured it out And it's like, is it as simple as this?
And she said, yep. And that was before I did it. And then I confirmed. It's like, that's multiple groups that ran into the same thing.
Maybe having an example would be worth doing. And Gary asked for a base.
So with the new certificate in place. I could open up the websites without any more scary security warnings.
So now it turns into tweaking Apache when people go to the various different SIG domains having it automatically redirect people on the HTTPS.
In addition to the http which it was already doing. And we've done some of that work effort and there's some ongoing work But that's web server administration has nothing to do with the cert or cert bot And yeah, page left blank.
So that is the slide deck. And I assume there would be questions and discussions and discussions and
Yeah.
Michael? Question. Can you go back to you can go back to show us the lines of the configuration.
Yep.
Okay, so…
The very first dash d entry.
Mm-hmm.
Is there a purpose to that being all on one line rather than having a second line that's second just has slug.org without the preceding asterisk?
There is, but it's probably not anything like you were thinking.
I am new to the SLU organization and administration, and I just did not want to stomp on people's existing code.
About.
So I made minimal changes. And just added that to the end of it.
If I was to greenfield this, I would have this on its own line.
Okay.
Because if you remember. Space backslash followed by white space in most shells is functionally a lying continuation.
So when this is executed. It's all smashed.
To one line. So the execution has no idea if it's on multiple lines or not.
Does that answer your question, Gary?
Yes, it does.
Is it the answer you thought it would be?
Um… No, but that's okay.
One question limit per person. You have to have Lee ask it for you.
Now I've got a variation on the question. So… Okay.
Go for it.
I'm trying to imitate Lee's voice and I can throw it off.
I told you there's a voice filter.
The chicken salad in his mouth. All right, Rod.
All right, Gary, just ask the question. Quit trying to imitate Lee.
Okay. Let's see. So the archaic line that you started with has an asterisk the subsequent lines that you added have dubbed, dub, dub.
Any… reason not to on the new additional lines, not just make them asterisks.
Yes. First that this is called a wildcard certificate. The star.slude.org.
And that was chosen because there are many names under slug.org.
And rather than listing an additional mail.slug.org, imap.slug.org, www.sloob.org, bach.slug.org, bach2.slug.org.
The slug organization decided to do a wildcard certificate for slug.org.
And I personally chose following suit with STL Linux.
But I also chose for the other ones to only do the base domain name and the www.domain name.
Because we did not need additional names And you can get into some weird security corners if you start something else. What if somebody compromises Bach, God forbid, and creates online store.slug.org.
Under a wild card this certificate would allow it.
But online store.newlinux.org. It's not in the certificate, so it can't do that.
Being more specific In my opinion, and some other people in the circle I travel in.
That actually has some security advantages.
Yes. An excellent idea.
Is that the answer you were hoping?
Yes.
Yet you have the star.slug.org.
Yes. Incremental improvements, small things. We're trying to get things that exist today to function a little bit better tomorrow.
And then next week. We'll look at additional improvements.
But if anybody is familiar with the alpaca application layer protocol confusion attack or something like that.
Security best practices says you have a separate cert for your web from your email.
From other things from other things So it's much harder to attack things at that layer.
But that's down the road and that is the Very much so multiple certificates which that was, we really don't want those Yet.
I've…
It's a good idea to analyze what what the possibilities are of that.
By the way, I'm…
And one of the interesting things is I don't know if the web server logs will log the hosting that traffic comes in on.
But if not, it's actually possible and I have done it before to capture traffic on port 443 like the first enough to get the TLS handshake.
And the… server name indication.
Will probably hint as to what names are in use. There is a method to move forward to break out instead of needing the wild card.
Start doing each individual thing. But that's down the road.
We were looking at making it so people could go to https I'm sorry, colon slash slash newlinux.org.
And have it go to where we want to without any of the big scary security warnings.
By the way, I've done some certificate work and the first line there with a star slug and the uh Followed by the dash d slug that dashloob.org could be on a separate line.
Mm-hmm.
You just put a Backslash after the other.
Yes. Yes.
You know, right?
If you compare the unhighlighted portion with what's above, they're identical.
And like I said, I'm like i said new in the environment so i'm just trying to make minimal changes.
Yeah, they are. Yeah.
And make sure things are working.
Oh.
Any questions or comments?
This is Stan. I've got a sort of related question that a little bit more about… more in general about domains. And I'm going to throw this in the chat rooms so that people know what I'm talking about.
Okay.
Has anybody used something where they have the domain broken up more than just three things, like a red dot team, dot slug.org or a blue.team.slug.org or, you know.
Bills.lab.slub.org. Is there a reason to do that? Is that a good idea? I mean.
I've seen it here and there. I just never used anything like that.
I do that. For various things like i'll have www.
Testserver.home.tnet consulting.net. Or PHP VirtualBox.
Server.home.tnet consulting.net or similar.
Kind of backing up logically is a red dot team Completely different than a blue dot team.
Let me get to…
Is a domain name. I put red.teen.slug in org and you could have a blue dot t
Yeah, I'm trying to find the chat. There it is. While presenting, it was being a little weird.
What you're talking about, and sorry, I don't know how to make the font bigger on that.
That's okay. That's okay.
That works. Anything between… were separated by dots.
Right.
Is a domain name. It may be a subdomain. Like on the end of the org, there's actually a silent period And it's the right-hand side of the silent missing period is frequently called the null root. It is a domain name
That is zero characters long. And part of the infrastructure.
So org is a subdomain of the null root.
Slug is a subdomain of org. Team is a subdomain of Slug.
Red is a subdomain of team. And you can have… Pretty much… not unlimited.
I think there's like between a 64 and 256 character limit and I'd have to go look things up and it really depends on time
Now, just kind of a shortcut. Question. Is there a reason to use red dot team Versus red team.
Whatever your preference is.
Or… So it's a matter of personal choice and so you can track it however Okay.
I might argue So red dash team is a subdomain under slug where red.team is a subdomain under team or Another place you might see this is discuss.mailinglists.slug.org or something like that.
So you might have steer comm dot mailing lists where under if team was plural and it's teams You might have a red team.
You might have a blue team, might have a purple team.
Right.
And they're all teams So that would, in my opinion, be better to have as a subdomain Instead of red dash team blue dash team, etc.
Just like think about it. And sort of like a directory structure.
On a file system.
Right. So it's a matter of how you logically, essentially personal logical development kind of thing, I would guess.
Yes.
Okay, that makes a lot of sense. I just wanted to ask about somebody that has… from somebody that had experience in doing that and what their thoughts was why they did it, reasons they did it.
Thank you. Appreciate that.
I used to work at the City of Columbia and we used to have www.ci.columbia.mo.us.
As the website. And I wonder how many people on this meeting, remember where ci.city.state.us.
Comes from.
No. No.
No, not the CI part.
City information. And it was a recommended back from… the late 80s, early 90s.
Yeah.
When people were starting to get on the web It's like, let's do some modicum of predictable naming.
Hey, I'm going to travel to Kansas City. I wonder what they have, but I'm going to be on the Kansas side.
Let's see, CI for city information dot Kansascity.kansas.us. Oh, hey, that worked. Hypothetically, I don't know if it ever did. But it was meant to be predictable.
And it was used by some people through the early 2000s.
Most people migrated away from it. Because it became a lot to type.
Or like I was G. Taylor at ci.columbia.mo.us. For an email address and spelling all of that out all the time on the phone was annoying to say the least.
Thank you.
Lee, were you starting to ask something before Stam put his question in the chat?
I'm good. I'm just munching away here.
Okay. I did say I had to finish my bite.
Okay. Any other questions, comments, concerns?
Just a comment i have a comment Never heard.
The description that you gave of there being a And I forget the term you used, but a silent dot after the dot org that then actually has the the true root.
Interesting.
Okay. Fair enough. Have you ever edited a DNS zone file and forgot to put the dot on the end of something and it didn't work like you meant and you go round and round and go, oh crap.
Yeah. Yeah, yeah, yeah.
That heart. That harks back to the null root.
Very, very easy to forget. Yeah.
Is emphasized in the training that they do for certifications. It is emphasized.
Yeah, okay. Okay.
Training?
Yes.
I go back so far. We didn't have any training back in my day.
I bet if I look around here, I could find that.
To me training was O'Reilly Tomes. One that had a picture of a bat on the front of it and another one that I don't remember what DNS's picture was
I've got all four versions downstairs in my library. I just can't remember it right now.
But it's the bind in DNS. Book.
Cricket Lou is one of the authors on all of them.
I want to say it's two animals on it. But yeah, that was your training.
Don't drop it on your toe.
And there's what you were asking about when I first shared the slide deck, Stan.
Thank you. Other questions are still welcome. Anybody new? We've got a couple of people who came in a little late. Steve's segment came in late.
Eric Bosin. Randy Van Houston, a few other people Although Martinez Salares I think I got that right. And… You still open for questions? I take it.
Unless somebody has a more pressing question. I'll suggest we kind of go back with talked in previous months about cert bot and about doing things with it. Can you give us a brief overview for people who may be If you've not been at previous meetings or have forgotten.
The whole concept of the cert bot.
Oh. You're wanting to give Gary's some credit for his effort in a presentation he has nothing to do with.
Sure.
This is Lee imitating Gary's voice.
So cert bot is… the official client that lets encrypt released and there's a whole bunch of others completely compatible with it now that is used to interface with let's Encrypt at all using the ACME protocol to get certificates, even some commercial certificate authorities
Support ACME. It's just you have to have funds in the bank with them before you can use it.
It is a way that is a way that When you run cert bot.
It can… with an account, contact the certificate authority. Let's encrypt in this case And go, hi, I would like to request a certificate for this domain name or this list of domain names.
And there's a little bit of housekeeping of, okay, what's your account ID and a little bit of how other house checking.
And then it says, okay. See your account. I know how to associate things.
I need you to prove that you have control over the domains you're requesting certificates for.
And originally, that was done by putting what was called the Acme Challenge.
On your website. And that way you could tell Certbot the client would tell Let's encrypt. Okay, I've put it there.
Let's encrypt within go to the web server for the domain you're asking for a cert and look for that challenge token.
The idea is if they can give you a random string and say, put this in a known location.
And then we go our long way around the mountain to your website and find it there.
We consider that, yes, you have control. Yes, you're authorized to request this certificate.
Rinse, lather, repeat that process. For all of the domain names.
That was the original gangster type thing. Somewhere along the line they got the hint, hey, there are people who want certs for domain names that are internal that we can't get to like maybe get.dev.slug.org and it's segregated in the Batcave. And yes, I'm making these.
But this is the first tipper problem I've ever done.
Steve, can you mute, please? Thank you.
And then it's like, okay, we need another way to allow people to show their authorized or prove they're authorized to request for a domain name.
And that solution was take this token and put it in DNS.
And that way let's encrypt at all.
Can do a DNS query after you say, okay, it's there i've published They can go, yep, we look it up, we get the token. We consider that proof.
Things are good and we'll let you have the certificate. We'll go through the process and generate the certificate and here you go.
Um and sub after that Which I've been using DNS based authentication for my personal things for quite a while. And Lee has a good presentation and I'm going to poke at our current website maintainer, Stan, pay attention.
That it would be very good to put a link Back to Lee's presentations.
About cert bomb because Lee actually went through the effort to switch cert bot for slug from the old web page based authentication to the DNS-based authentication.
So I got to ride Lee's coattails for all that effort.
Okay, you said I should put a link Going back to that, in addition to the link to your presentation portion.
Yeah, totally.
Okay. Right, right.
I think that would be beneficial because I think there's two of them by Lee, like the original web-based. A number of years later, he set up DNS-based authentication And then I am growing on standing on his shoulders. Sorry about that, Lee.
Ouch.
And yep. And added additional domain names. And there's another example if we start with something, use it for a while, make it a little bit better, use it for a while, make it a little bit better yet.
For those that are new…
Lee, it wouldn't have been so bad if he wasn't still wearing those softball cleats that he has.
No, that was gravel stuck in the mud.
For those new here that may not be aware, we have a presentations listing that lists all of our previous meeting presentations.
And we have a lot of good videos that go back at least till through the year 2020.
And quite a few other references that are listed there. And if you go to our main page and actually all of our domain pages, they have a link to that presentation archives listing.
Okay.
And I actually… watched the found and watched the two presentations of that lee gave of setting up cert bot to acquaint myself with the history of Slug's use of cert bot.
Before approaching steer comm and going, hey. Do we want to do this?
So was good information. I'll get off your shoulders now, Lee.
Thank you. Grant, I'll draw your attention to the chat, the meeting.
That thumbs up is mine. And thank you, Phil B.
For helping us remember. And I'm going to say great memory, no Googling.
The DNS and bind book is grasshoppers. So the back book that I made reference to is send mail And that will likely utter a groan from seasoned Unix administrators.
And some newer kids on the block might utter a similar groan at the concept of bind slash name deed.
Young whippersnappers, get off my inner tubes.
There was a previous question in the chat thing. From Aldo.
Oh. So.
Did about the examples challenge the hdp HTTP or DNS and i did I wonder if your discussion had answered his question.
Well, I'll answer it directly. We use the DNS-based challenges. That is what I was saying a moment ago that Lee converted to one to three years ago.
And that's one of the reasons I got to it was as easy as it was. Lee had done the heavy lifting on the DNS.
Before Lee made that change a number of years ago, we were using the older HTTP web-based.
Thoughts.
704.
Going once, going twice, GUI center.
All right. Okay. Hey, thank you very, very much. Grant Taylor. Excellent presentation.
Good work, Grant. Thanks.
Yep. Gary, I want more lead time next time.
Let's see. Next month, our presentation from Grant for the, you know, we'll talk later.
Okay. Let's see. Is there another
Actually, if I can interject real quick. If there are any detailed questions about this, like how would I do this with my stuff?
I would encourage people to ask on discuss And even if it's, hey, I got something sensitive, can I talk to somebody directly?
Ask on, discuss. Somebody will reach out to you.
Happy to help. We want to teach.
Station here.
And uh There's an additional question in chat.
I've got a couple questions.
Asking details about where is the presentation about cert bot and DDNS.
I will search for it.
Post your solution to discuss so I can easily link it.
So hopefully I'll know we'll have a
And I'll set up the link, okay?
Yep.
Okay. We call this the gooey middle of the meeting. And this is where we do a a presentation or a short presentation set of announcements and then a Q&A, preliminary q a You can jump back one slide if you want to, Stan.
Didn't need to. Well, actually a couple of slides.
Okay, well, that's kind of what our agenda is tonight about us.
Well, flip, flip, flip. Okay, that's us. It's about us.
Okay. Yep. Okay. There we go. Okay.
There's our agenda.
Okay, we're actually a 501c3 corporation and we run about four meetings that are generally considered user type meetings. We also run our steering committee and uh our sysadmin group to run our own systems.
And people are definitely welcome to come to those meetings as well.
But most people just don't want to see the sausage being made. They just want to come to the presentations. We understand that.
So we've been around since July of 1992. Unbelievable it's been that long.
So, okay, next slide. So we started off, the system came up 6.30, we do our base tutorial session. That's what Grant did earlier this evening or the last half hour.
And then at 7 o'clock. We get to this gooey middle where we do the announcements and introductions.
And then at 7.15 or shortly thereafter. We'll be doing the main topic. The main topic tonight is uh Grant.
I'm sorry, Scott Graneman, who is going to be telling us eight things that he surprisingly found got solved by ChatGPT.
So we'll get to that in 15, 20 minutes. Next.
Okay, gooey Middle. So as I said, this is the gooey Middle.
I'm Gary Meyer. I'm the emcee tonight. I'm also the president of the organization.
Vice President Stan Reichert. You've heard Stan a number of times and seen him here during the meeting.
Besides being vice president, Stan is the guy who gets just about everything done for the organization. So thank you, Stan.
Yeah.
Treasurer is Lee Lamert. He also is the technical of omnitech.
Chief scientist. I knew there was a better name. Chief Scientist for Omnitech Corp, which is the company which is hosting our computer systems.
And also he keeps track of our money. Our secretary has been Ken Johnson. Ken has been working at that for almost a year now, I think.
So we will be replacing him this year. He's done his duty.
Stepped up when we needed them chat monitor. That's really something in reference to like tonight I've heard a couple of us point out that there was something in chat If anybody would just like to say, yeah, I'm going to be watching chat during the main presentation and uh
You can point out when somebody types something in chat instead of saying something verbally.
So any volunteer, just let me know. We will volunteering. Topic wrangler. It always helps to have more people looking for presentations.
Either by topic or by finding speakers, you'd be willing to talk So anybody want to volunteer for that job, let me know.
And certainly if anyone has a topic they would like to speak on and be the speaker.
Let me know. And even if you don't have a speaker or don't want to be the speaker yourself.
You have what you think is a good topic, let us know and we'll try and find a speaker for it.
Okay.
Announcements eight days from now, next week, Thursday, is the stl linux meeting. It's usually a more Linux oriented topic than tonight's general meeting.
I think there is a possibility that we may be having one of our Long time speakers, Robert Sittick.
We'll try and get that confirmed and get the title and stuff posted out there in the next day or so.
But I'm thinking that maybe our speaker next week. So stay tuned.
This is Stan. I'd like to point out that I have not been feeling well the last 24 hours, so there's some things on this page that have not been updated.
But keep going.
12 days from now is the new Linux meeting. The new Linux meeting is interesting. The rule there's no formal presentation is not a topic that's going to dominate the evening or known in advance.
But what it is, anybody who comes to the meeting and claims to be the most novice user of Linux the newest person using it. You get to ask But yeah, I was simply interested.
Or simply interested.
You get to ask the first question. And hopefully.
There's a number of people who aren't new users but are old gray hairs who are coming to that meeting.
And there's a good reason, because not only are you the one providing the new people with all these good answers.
But it's amazing how somebody who's been using Linux for years You go to something like this, somebody asks a simple basic starting question And wow, you're amazed that a number of the other gray areas in the group answer with a completely different way of doing it than you were going to do. And so even the
Experienced users can learn something at that meeting. It's really a good meeting.
Let's see. Ignore that line about the annual required meeting that was from last month.
I know where the balance. And, uh.
Yeah, well, we still hate meetup.com. For those of us who put our stuff out on meetup.com we got grumbles about how it works but So what we love the people who come through meetup.com. So thank you all for coming.
Okay, after the main presentation, not only will there be questions about the main presentation, but after we exhaust those, if anybody has just any general questions.
Will be open for that. And hopefully here when I finish up the announcements in a couple of minutes.
We'll have time for very quick Q&A type questions.
For those who can't stay. The other groups, as I said, this is our general meeting tonight.
It's a general monthly meeting. The St. Louis Linux user group, St. Louis Lug.
Is similar to this. There's only one topic usually. One speaker and uh but it is a set title formal presentation that night.
As I said, the new linux meeting is uh is the newer people get to ask the questions.
The beginner workshop.
And hopefully, yeah, to begin a workshop, that's a good way Slack, the St. Louis Area Computer Club.
It's an old group in St. Louis that got merged into us.
And basically, it's more hardware oriented. So you can ask questions about How does this hardware go together? How do I load Linux on this hardware? How do I load BSD on this hardware?
How do I load Microsoft on this hardware? We'll even answer that question.
But again, there's no formal presentation, just whatever the questions you're at.
Calendar. We keep a calendar.
The third line there, dub, dub salute.org slash calendar. It's a Google based calendar.
And we try and list our own events, but we also list local events here in St. Louis. And that was the thing we were doing before the age of COVID.
The age of COVID, we started realizing that, yeah, there's a lot of remote events other places in the world so So now we list both local events and also events that just look like they'd be good interesting things for
The people who come to our meetings, even if they're not located here in St. Louis.
The events. Mailing lists.
Let's see, our mailing list that we run. There's the announce mailing list.
It's very limited. We usually only send out one a week actually it's about two a month is what we send out on amounts.
And it's basically just saying, here's a meeting. Usually it's our own meetings.
That you may want to attend or some other important immediate announcement.
The Discuss mailing list. Is people, not editors, just anybody who joins to discuss lists post a question, post a comment.
Answer questions. So it's kind of just an open discussion list steering committee. If you like seeing sausage being made steering committee is where we make our sausage and you're welcome to come.
And help cook. System administration, kind of similar. Those are the volunteers who help run our bulletin board system, our mail system.
Our archive of old events. So a lot of good volunteer effort there. You learn a lot of things doing it.
So.
Now, if you're somebody new and you have a system administration type question, you can ask it on Discuss.
The sysadmin list is for the people that's actually doing the work to keep us rolling.
Right?
And that one we don't just let anybody automatically log into sysadmin because there may be a revelation of a password by accident or something like that so we kind of We'd love to have people join it. We just want to know who you are before we let you in.
Okay, privacy and security. Tonight's meeting is being recorded. The St. Louis Linux meetings are also recorded.
So don't say anything that you regret saying on on a recording. At the end of tonight's meeting, we usually say, okay, we're stopping the recording.
And if you have any comments or questions you want to ask afterwards you can sneak it in then so And also you have to remember, although I'm talking about recordings we do and then put in the archive.
Anything on Zoom, anybody else in this meeting can be recording and we have no control over that.
So just be warned. Presentation archive, as I said.
We record our meetings, we put them in the archive, and there is where you can go.
To go look up the presentations, that fourth line there.
And it's also listed shown on each of our websites. It'll get you there.
And it is that archive that is where I found presentations by Lee, which I have linked details in the meeting chat. Stan, if you can copy them from there, that would be great.
Working across multiple systems is annoying to get it into email right now.
Yeah.
Will do. Gary.
Thank you.
Okay. Before we go to the main presentation. We usually open up for questions here, as I say, at the end of the the main presentation tonight.
We'll have time to, again, just take questions from anybody about any topic But for those who feel they have to get out of here early.
Are afraid that the person who might have the answer to what they want is going to get out of here early. If anybody needs to ask a question.
Go ahead. Ask it now. Let's see what we can get.
Nobody has anything strange you're working on this week? Does everybody know if you want to ask a question, you have to unmute.
Good point.
Say again, I didn't hear that. What?
Pointed out that in order in Zoom to verbally ask a question you have to hit the unmute button.
Okay. I presume there's no questions.
Sounds like it. Yeah, that's it. Yeah.
No call for help. Everybody ran perfectly this month, right?
Oh. I've got a question. Throw it out.
I wish. Sure.
Uh-oh. Go ahead.
Few months to maybe a couple of years ago have no idea when. But we had a guy here. He was building keyboards they were… super ergonomic, but they were in two pieces, one for each hand.
Does anybody remember who that was or anything about that.
Oh, no.
I do believe that was a St. Louis Linux presentation. In either case, it was recorded, I believe, and it's up on the archives. I'll go look for it.
For you, Steve. If I find it, I'll send you an email.
Thank you. Perfect. Thank you.
I know this is, it's not a question. But rather something I ran across. I didn't know if you if it was okay to uh let it be known about something.
Go ahead.
I could put it in the chat. There is a website that I discovered actually quite a while ago and then forgot to uh forgot what it was and just ran across it the other day.
It's called a distro Distro C, S-E-A.
And there's 73 different distros that you can run without even leaving your browser. They will run in your browser You just pick the one you want to see. It takes about a minute or so to to basically to boot up on their end.
And then you access it and can run it on your browser.
And so you can see exactly what the distro does, what it looks like, what Packages are included. Basically, everything works on it. It's quite amazing.
And the name of that again. As in Sierra Echo Alpha?
Distro C. Correct.
I put it in the chat.
Thank you. Oh.
Thank you. Yeah, really. I'll add a… an announcement or a comment And this sounds like a is more oriented towards the St. Louis population There was.
A r language user group here in St. Louis.
They used to meet monthly. They did a wonderful job they had usually 40 to 60 people coming physically to their meetings every month.
For those of you who don't know, the R language is used for statistics. It's either replacing or very much augmenting the traditional statistics packages like SPSS, SAS, BMD, And as I say, this is really an active group.
When COVID hit, they didn't they didn't go to zoom or jitsi they just stopped meeting and stopped meeting They talked about trying to get going again, but the guy who was the organizer No, he doesn't have time to have time
Get it up and going again. So it will be folding unless somebody else steps in and says, yep, they want to on the meeting. So just to let you know, if anybody is a user of the aura language And you love to take over this group.
The possibility exists a couple months before the group officially shuts off.
And by the way, there is a separate group called Our Ladies.
And yes, it's a group of ladies who figured a female run group They just wanted to have a female run group.
And they have some good technical discussions. We'll see if somehow this merges together but So anyway, that's just an announcement.
Okay, it's time for the main topic, unless somebody else has something we need to do now.
So Our presenter tonight is Scott Graneman.
Scott's been a frequent presenter through the years. And I'm going to ask Scott right now while it's up there on the board.
Or on the slide. Scott, I'm presuming that you'd like people to just interject their comments.
Mostly we'll see. We'll see. I may stop doing that at one point if I'm getting too many interjections and are taking too long.
Okay.
Okay. Okay.
And we could just move it to the end. So we'll try it out. How's that?
Okay, fantastic. Scott is a principal at Web Sanity.
And uh And he's also an adjunct professor at universities here in St. Louis.
And he's been a frequent presenter here for, God, how many years, Scott?
Good.
Oh, God, 25? Literally, 25.
Yeah. Thank you.
Probably, it's been been a good long series and we always enjoy the presentations. In fact, I'm going to reference the fact that back in December of 2022, you have this wild, crazy idea you wanted to talk about something called chat gpt nobody knew what the hell that was
Nope. You know?
But you had read about it in some journals and that they were going to come out with a an open release of it.
Mm-hmm.
Three months after Scott's presentation. It became the fastest growing software in one month's time.
Yeah. Yeah.
That's right. It's because of me.
Chatgpt was known by everybody. And it's all because of Scott introducing it to everybody With that, I'm turning it over to Scott.
Thanks. So hello, everybody. Good to be here. The title of this presentation is supposedly eight things that, what was the title gary can't remember. Eight Things.
You presenting?
Anything I can do with AI or something like that?
Eight things that surprised you surprised when you got it to be done in ChatGP. Yeah, yeah.
Yeah, okay. Some of these aren't surprising. Some of these are. So basically I was sitting I read Hacker News every day.
And Ars Technica and lots of other tech sites. And I'm always struck by how many people just have this tech people have this have this visceral hatred for LLMs for large language models, which we call AI.
I mean, a lot of people, obviously 400 million people a month, I believe, use ChatGPT. There's others out there, obviously.
I'm sure many of you have used them periodically for various reasons.
Good. Does that include everybody that uses Google?
But again, I keep getting struck by people
I didn't know if you were talking about people that are using them directly or indirectly.
Well, yeah, you could say that. Right. Sure, sure. I'm a large language model specifically, but you're right. If you counted indirect It's billions of people at this point. Yeah.
Okay.
And so again, it just struck me how many people just hate AI. And the thing I read all the time over and over is it's useless.
It's garbage. It's not helpful at all. And I've always thought to myself.
What are you trying to do with AI? You know, are you asking it to find you a beautiful woman to marry? Are you asking it to rub your back? Are you asking it You know, to come up with a million dollar business and do everything for you. I don't understand.
How people could say it's useless. Now, sometimes it doesn't do what you want. Sometimes it fails utterly. And I'm going to show you some of those.
But I use it virtually every day. As many of you know, I pay for it. I pay for chat GPT and I pay for another service now that Jan's and I are going to talk about.
And I get tremendous use out of it. So what I thought was, you know, maybe I should… Talk to Gary and see if you guys would be interested in me showing you a whole bunch of examples of things problems that I have solved with AI.
And so that's what I'm going to do tonight. I've got a whole list and we're not going to get through all of them by any means, but I've categorized them.
And I'm going to show you examples where most of the time it was very helpful.
Now, some of the time it took a few steps to get there.
As somebody once said about these tools. You know, imagine that you have a brilliant uncle who's always half drunk.
That's kind of what these are like. Because you'll ask a question and it'll sometimes be like, bam, oh, perfect.
Thank you, brilliant drunk uncle. And then other times, you know, he gets in loops and he keeps repeating himself You know, and he embarrasses you at the Thanksgiving table and so on. That's what this is like sometimes.
But they're getting better. To get started I'm actually bringing in somebody many of you have also seen speak. He and I have spoken together to this group many times.
His name is Jans Carton, and he is one of my business partners in Web Sanity.
And he and I do web development with WebSanity. We develop and host websites.
And Jans does most of the coding. And we both have used Visual Studio Code now for many years.
And really enjoy it. Well, I've been reading for the last six months probably about this fork of Visual Studio Code.
Because it's an open source project called VS Codium. Just like Chrome is based on Chromium. So VS Codeum is the open source project.
And Microsoft every month takes VS Codium, puts a bunch of Microsofty stuff on it, little telemetry here and there, and ships that out as the update to VS Code.
But of course, anybody can take VS Codium and do whatever they want with it. In fact, some people, I know a lot of people that are big open source believers Don't use VS Code. They use VS Coding.
And so people have been taking VS Codium and adding on to it and trying to make forks that do something extra that are interesting enough or useful enough that people might want to not only use them, but pay for them.
And so I've been reading about one called Cursor a lot.
And then a few weeks ago, I was talking to jan And he remarked that he'd been using cursor and was really, really, really impressed by it.
And so that led to us talking more about it. And we figured we'd start. Jan's isn't going to be with us all night just for this early part.
But we wanted to start out showing you cursor because it's really amazing.
It's really, really, really incredible. And it's very useful and very practical And the thing I'm going to say several times tonight, and Jan said this earlier today to me.
We were watching Cursor do all this work. And it got stuck at one point.
And Jan said, you know what? This is the worst it'll ever be.
And he's absolutely right. What we're showing you tonight As of this date is the worst for today.
These tools will ever be because they're getting better day by day by day by day.
And so the issues I'm going to show you tonight not only in cursor, but in the stuff I've been in We very well may not experience those in a week, a month, a year, two years, who knows? So remember, these tools are getting better constantly and they're
Rapidly getting better. So with that said, Janz, why don't you share the screen?
And show them cursor. And why don't you start, if you could, talk about you were talking about how it will save us money.
If you could talk about that, because that's obviously a very practical, useful thing to do.
For any small business, if we can find a tool that will save us potentially thousands and thousands of dollars.
That's a good thing to look at. So anyway, if you would go ahead and talk about that while you share your screen, that'd be fantastic.
I assume he's here. James, you got mute on.
You're muted.
So Grant made a comment in the chat that I didn't understand. Did you want to look at that or should I mush on?
I don't know. I didn't look at the chat. Let me look at it.
How dare you?
I think generative AI. Is the source of most of the objections I see.
Other LLM AI things are usually fairly good. Well, yeah, by generative AI, are you talking about Any generative AI or images or code or what?
Images mostly.
Oh, okay. Yeah.
Right.
Okay. All of it's generated ai all the llm stuff that ends generative AI, whether it's generating you know prose text or an image or prose executable code. It's all just generating from a bunch of tokens. It's really super duper fancy autocomplete. That's one of the big problems I have with AAI and why I really prefer to use LLM.
Because AI has previously been identified of what artificial intelligence is. And this is certainly not intelligence. It gives more of the illusion of intelligence than any actual intelligence.
And… And it also sets up terrible expectations for people. The term AI or artificial intelligence it just sounds So it's a horrible expectations that aren't realistic.
So anyway. Ellen. So we're going to take a look at stuff. So Scott, you were saying how this could save us money. Well, the thing that would save us money is I oftentimes will get stuck on areas where that are not my
My expertise. I just know enough to be able to pick things apart and this will then fill in those blanks.
In many of those cases and in many of those cases are just kind of low level.
Sticking points that once I get past them, I'm fine. And I don't need an expert to take up their time for some little to hunt down some grunt work thing of dig through code and find something. This is really good for that.
So for doing a lot of things that Huh?
If I can expand on that, James. We have been subcontracting certain work to this organization in Minneapolis for years They do excellent work.
But the problem is there are 150 an hour. And so how many?
180 an hour. 180.
180 an hour. And Dan's is already reduced to a certain factor the amount of times we have to go contract with them to do some work for us and do some coding.
That's going to save us a lot of money. So anyway.
How come that's cheaper than a John Deere mechanic? About half.
Yeah. Yeah.
There's something wrong there.
Okay, so where do we go from here, Scott? You want me to just kind of fire it up and start demoing this thing?
Well, why don't you share your screen? Yeah, why not?
Okay. So I don't know how to share my screen. I don't have Zoom installed. I don't want to install Zoom, so hopefully I can do this through a browser.
Jump right in.
I don't know where the button is for a browser
I don't know where the button is for the app.
If you're in the browser, you don't see a browser. Is anybody using the browser instead of the app then?
Yes. Yeah, the share screen is down there at the bottom. It's kind of a green with an up arrow in it.
Where's her?
Yep.
That's wonderful. Maybe I don't have permission to share my screen.
That's not a problem. It's not a problem.
I don't think there is a permission for that.
When you first load it up, Zoom wants to have access to your camera. Did you say yes or no?
I said, yes.
Okay.
Did you get access to do screen sharing?
Tell you what, let me bounce it and I'll see if I screwed that up. I'll be right back.
Okay, no problem.
Well, he knows that.
At some point, it's going to also at the lower, when you do that first initial sharing, it'll pop up a screen and you'll select what you want to share and then and then down at the bottom right-hand corner, there's another button where you have to click it again.
He knows that.
Okay.
By the way, before I drop this out, I got a couple tabs open. I'm going to paste in the URL. So this is some stuff for some homework for you kids.
So that first one is a nice short article about, I think it's excellent for what to expect and how to do a good how to do well with using LLMs.
Or code.
It gives you some advice in interacting with them. And then the second one is more relevant to what I'm doing specifically. And he's the guy that coined The term you're going to hear tonight a vibe coding and it's a two hour video that pretty much says the same thing as in that article, but then goes into a lot of detail with a bunch of examples and whatnot. So that's a two hour youtube video
About using LLMs and coding and whatnot. So anyway, let me bounce this browser and I'll jump back in and we'll see if I have any better luck.
Okay. Sorry about that, guys.
So I just answered a question. Grant, I'm sorry, Aldo asked.
Does VS Codium use the same extensions that VS Code does? And the answer is many work, some do not.
So that's an issue. Some stuff like the Microsoft stuff surprise requires VS Code, not VS Coding.
So you have to have VS Code for some of those.
Others, most others do, but some don't. Now, people, I assume here have seen VS Code?
I know people have used it. I know we've, I think I've showed it to people in the meeting But you guys are a little familiar with VS Code, right?
Already, some of you? Anybody? Bueller?
Okay. I guess. Okay.
I know somebody that uses it.
So Scott, you can see me? Great. And you can hear me.
Yeah, I can see you. Yeah.
Yes. Yes.
So microphone and camera, no problem. I said yes to everything. I still don't see any kind of share screen option.
Buttons on the bottom. There should be a green one.
The browser window?
You see a toolbar down at the bottom, Chance? Okay.
Oh, yeah. I see grouped on the left is mute and stop video in the center, I got participants, chat, reactions, and more. And on the right, I have leave.
What does more show you?
More gives me captions, request the host to record to the cloud.
Settings stop incoming video and return to defaults. No share option.
With no share.
You're using Brave?
If you could share screen from a browser and a face, then any website you visit could spy on anything in your computer because the browser can steal anything on your computer than anyone can do that.
I'm sorry, Carrie, that that's that's You're assuming somebody could cause somebody could somebody could cause my computer to start recording my screen without my intervention. That's not what we're talking about.
And I've used browsers to do this sort of production sharing before so You have to request it. It's not something somebody could cause to happen without your interaction.
Or you could just stall Zoom temporarily.
There is an option that you could use the option do this using Linux you could use You could possibly use the app image. That's what I use.
The zoom attribute works.
So I think I'd have to download and install. Um Give me one second.
Scott, could you by chance bring it up and share your screen and let Jan's talk to it.
No, because he has stuff that he has… it's going to be based off of.
I think he's installing Zoom, so we'll be done in a minute. Sorry about that.
Yeah, I'm looking here.
I think I have to install it. I don't see other stuff.
Yes?
Hidden technology wonderful.
While he's doing that, I'm going to go ahead and show you guys the first the first thing I wanted to show you.
So this category is I called answers to general questions. In other words, search the web for me.
Fuck.
So I was talking to somebody about Pangea. You guys hopefully know that gazillions of years ago, all the continents were one landmass And then over time they split up.
Into Africa, South America, North America, Europe, Asia, Australia, and so on, right?
So I was trying to figure out, I was talking to somebody about Pangea and I was like, how God, how long did that last?
How long did we have Pangea where there was all the land in the world was basically in one place?
And right here, Pangea existed for about 160 million years. From roughly 335 million years ago to 175 million years ago.
And so I was like, great, that's exactly what I need them to know. When to start, when did it end? I was kind of impressed.
160 million years. And then I said, okay, what dinosaurs were on Pangea? Because of course, you know, as soon as you start talking about long ago, millions of years, I'm always like dinosaurs.
So what dinosaurs were on Pangea? And said, well, many early dinosaurs roamed the supercontinent And it said, during the Triassic period We had some ones I'm not going to attempt to pronounce.
Plato Saurus, I guess, Eoraptor. And then during the Jurassic period, as Pangea began breaking apart.
We had Allosaurus and stegosaurus and Apatosaurus, right? And that allowed migration. And then I was, of course, like, what about T-Rex and velociraptors?
Because, of course, that's what we all care about, you know, the ones that kill things.
What was in the oceans? I asked that also. And I said, great questions. It's very positive.
Let's dive in. And it said, yeah, Tyrannosaurus rex and Velociraptors are iconic. They didn't live during Pangea's time. They showed up much later.
Okay, good to know. And as for the oceans, they were teeming with marine life. Ichthyosaurs.
Plesiosaurs and so on. And I thought that was really cool.
So that's a really simple example where I just ask a couple of questions. And in this case, it's like.
I was sitting next to an archaeologist or a geologist, and I just turned and asked this simple question.
And I get this reply back that answered my questions really great.
And there you go. That's the first one. Jans, are you ready?
He might have had to leave. So with that, I'm going to show you my next one.
Until he gets back. And that… is this one.
So I was listening to a music podcast And it was talking about a French song.
And they kept talking about the name of the song and they kept talking about the main lyric.
In the song, a refrain, but they played it in French. And I'm like Well, I don't know, French, what the heck is the what's the lyric? And so I found the lyric online.
The French lyric, right? But I'm like, I don't know what that is. Now, I could have gone to Google Translate, but I try not to use Google.
I could have got a big translator. I try not to use Microsoft.
And so instead, I just copied the lyrics, pasted it in and said, translate this.
And instantly it came back. And gave me the lyrics.
Right? And gave me actually the whole darn thing in English there. And so I was able to read the lyrics and go, oh, now I get it. Because the main thing was like usual.
That's the whole thing throughout the song. It's about two lovers that have gotten tired of each other and they do the same thing every day and they're going to be breaking up. And so like usual, right, we woke up like usual.
I pull the sheet over you like usual and so on. So I thought that was really, really handy that really quickly I could just ask it to give me a translation.
And it did. Danz, are you ready now? Okay, go ahead. Let me stop sharing.
I'm ready.
We see your screen now, Chance.
Yep.
Be good if you can bump the font a couple times.
Alrighty then.
Yeah, I will see what I can do about that.
Now, if you could start out by telling them what you told me today.
Yeah, you click on the three buttons on the right and choose hide.
Are you seeing an overlay here, Scott?
About the fifth option down.
Yep. Yep.
Hide floating meeting controls. Thank you. Okay, so let's talk about IDs and VS Code a little bit first.
Anybody talking on what an IDE is compared to a text editor?
Anybody? Everybody knows what an IDE is?
Development thing that gives you the error messages when you're typing code and compiling it.
Part of it.
Yeah. It incorporates multiple aspects of your development. Yes, it does error checking. In this case, it has a terminal built into it.
And… command line and other things. So it's pulling together multiple tools and multiple systems into one thing for doing what you want to do.
So let's do that. So I'm going to just create a create a little project here. So I'm going to go to my web dev thing and I'm going to create a little uh project. I'm going to create a folder
It's called slug okay for a demo and uh So for this, I'm going to do I'm going to do what that guy is talking about is vibe coding. We're coding.
We're really not doing any coding. We're letting letting the… the AI do a bunch of stuff for you. And so I'm going to kind of show you some of the interactions and and show you how this works from that angle.
The one I'm using, of course, is Cursor. There are other AI assist IDEs out. There's windsurf Which is another vs.
Or a codium whatever fork The one that's built into VS Code, and you can do GitHub Copilot, right? Isn't that built in Scott?
Copilot is Microsoft's brand name for their AI. Sort of feel.
Right. But it doesn't have the interactions. There's a bunch of differences in these things. Anyway, I'm going to create this thing and let's give it some data to start with. So I'm going to grab some…
I'm just going to grab a markdown document. So this is for a board game.
Okay, so this is just some, you know, what I'm going to use for a
Let's create a docs directory.
And I've got this in here. Okay, so let's open up my folder here. So I'm going to say let's open this thing up We have dev slug. Great. So here's our little our little test thing. Now, I don't know how to jump the font size on this, Scott. You know?
Command plus won't do it? Or do you mean on the whole system?
Go to the view menu and see if that'll do it.
Does that do it?
Okay. That did it. That did it.
Well, I'm pretty sure that did it. Is that looking better for you guys? So here's that slug thing. Here's docs and here's that rule book markdown in here.
So if I take a look at it, it's just a markdown document. Are you guys all familiar with Markdown?
Oh, they've heard talks about it by me and many others.
Yes.
So it's just text. You know, it's just a text document that outlines this document. In this case, it's the rules for a board game.
If I pull up the outline here, I can show you what's in here as far as an outline and heading of there.
It's got a title. The name of the game is Waste of Parts, and it gives you an overview of what's going on in the game and how to set it up and what the turn sequence is like.
And then details about the game.
Question. This is just a narrative of the progression. It's not actual coding, correct?
No, this is just rules for a game.
Okay. Yeah. Narrative.
It's just text. What you see is what you get. I mean, this is just text paragraphs and… And stuff like that.
So there's the only code in here would be what you might consider code read markdown.
Right, right, right.
But Markdown is so minimal is that, you know, this is indicating this is a heading level two And that's why it's indented underneath the title of the document that has a hash.
Yeah, you could call that code, but it's pretty basic code. It just adds some structure to the text so that it's more understandable.
But that's it. It just kind of goes through and tells us. But this is what I'm going to base my little project on, okay?
So…
So cursor. Calls this chat over here.
A composer. It's calling its agent, its AI agent, a composer and you can use it or you can use it in several modes. You can use in the agent mode Where it's doing things for you.
It does a variety of things. I can choose this and switch over to the ask mode.
And they asked Motors, I'm just asking questions and it's not going to make changes to my documents.
And then the edit mode I don't remember what edit does, Scott. Do you remember?
I don't know.
I think it might just do things without doing responses, but agent is doing everything. It's giving you responses and it's editing my document.
So I'm going to start out and say, okay, based on this document, this could be a book, it could be a printed thing, right? It's just like the text out of a rule book.
You know what I mean? Based on this text of the rule book, I want to turn this into a website.
Okay, so I'm just going to tell it that.
Now, when Jan showed me this earlier today. I was like, surely you told it more than that because it was already well into doing what he wanted. And he was like, no.
I purposely made it vague to see what it would do.
So I hope you're going to read that out, right? So everybody can hear it, Jan's. But notice he's giving it the most vague instructions.
Sure.
Help me create development documentation for a website project. This website will present the rules for the tabletop board game The Waste of Parts.
Okay, so…
Rulebook.md for content.
Okay? So I'm not doing any coding here. I'm just telling you stuff. I could be talking to it. I could use voice detection and just tell it this stuff, okay?
I want to use bootstrap 5. And some sort of… offline search.
Tool.
Okay. So I haven't given it much details, right? My requirements are very little here. I want a website.
I want to use Bootstrap 5 and some sort of offline search tool.
Bootstrap on it.
Bootstrap 5 is a CSS framework that's widely, widely, widely used.
Okay. Pardon me?
To make sites responsive, very quickly develop sites that have a nice look and feel about them.
So it basically is designed to save you hours and hours and hours and hours and hours of time.
Intro.
Yeah. So essentially, it's a bunch of pre-built CSS styles And some JavaScript for some things. So if you, you know, Bootstrap um Let me go into the docs, right, Scott, that's the best thing to like. So for instance, you say, hey, I want to…
Yeah.
See an example of tables. They've styled tables to look like this.
And they have different options for striped rows and things like that.
All it is is a bunch of CSS and how to invoke it.
So you just copy that code and paste it in. Yep.
Well, actually, it's 12,000 lines of CSS. And I don't know how many thousand lines of JavaScript. So basically, instead of you having to reinvent the wheel.
And come up with making sites responsive so they look different on a phone and a tablet and a desktop.
You just link to bootstrap and then integrate that into your code and it takes care of it.
And so it has a bunch of these little design patterns. So if you want to have a card layout on a page.
It says, hey, this is what a card layout looks like, where it has some sort of image at the top.
And then it titled some text and maybe something there. And this is the HTML you would use to use bootstrap. So the only thing that comes in here in bootstrap is the little class names. So card image top is a defined class name in Bootstrap.
To make this get styled the way it gets styled. So it's just a bunch of pre-built design patterns and styling so you don't have to create everything from scratch.
Is it?
So I've given it very little in the terms of requirements. This is generally bad.
Typically, you want to be extremely explicit. With an LLM. Otherwise, it's just you don't know what it's going to do.
So for instance, I don't know what this is going to do. I don't know how it's going to choose to do what I'm telling it to do.
But anyway, I say, let's do that. So it's doing some generating here.
It said, okay, I'm going to create a README file.
And again, is this using ChatGBT?
Nope. So it has a variety of models to choose from.
Nope.
So when I click on, oh, sorry. When I click on here, I can choose between Claude's Sonnet or GPT or other things. Right now, I've got it set to default. So default, what it does is it kind of is a meta switch
That we'll see what kind of stuff I'm asking for and how well it's doing and use the the resources that it thinks is most appropriate.
And that might have to do with… what's available, like traffic level and all kinds of other stuff so
And you could add a bunch more. If you go into the settings for cursor, there's like 15 that you can choose from.
That would pop up there. And so I was when I was playing with it the other day.
Right.
I didn't know that you should leave it on default. So at first I used default and then I got in the little gotten a difficulty and I switched to another one and then I switched to another one. And then that one after 15 minutes said, hey, a lot of people are using this, so you're going to have to wait or pay.
So I switched to another one and I wish I had just stuck with default now after talking to Janz.
That said, if you know that a certain model is exactly what you need and is the best one for the task you need.
Or if you wanted to play around and test a model.
Go ahead and pick that model. But… Right.
I want to see how this model does with this thing. You can feel free.
So you can see it's creating documents. It created a build.js, search.markdown, package JSON, a readme markdown.
So let's see what it says. Oh, I'll help you create this. I created a README with project setup and technical details, create additional documentation for search functionality. Let me create the readme first. Here's an example. That's how the readme starts. We can just jump. It's opening them as we go here.
So we can look at that README. So this is what it wrote.
However, it did all that on its own.
Right. I'm going to have to make this wider. The size of the font here. But anyway, so it's writing all this stuff. This is all highlighted. So it's currently saved in memory, but I have an opportunity to reject things or interrupt and do stuff like that so
I don't need to click any accept things until it's all done.
So here's the documentation it wrote.
By the way, would you notice there the project structure? It's telling you like, okay, in order to create this website, I'm going to create these folders and these files and structure it that way.
So again, it's doing all this on its own That's quite a bit right there.
Right. So it says, hey, I'm going to use HTML, CSS, Bootstrap, the latest version.
It's going to use JavaScript, the ES6 version of it, and Lunar for offline search. Okay, Lunar.js is fine for something like that. I don't know if you guys have ever heard of that. I use another one called fuse.js, but they're similar.
Yeah. Great one.
In project structure, this is how I'm planning on building the directory structure, so we'll have a main entry point of index.html. I'll create a CSS folder for custom styles and put bootstrap in there. So it's going to take… This is going to grab this stuff from Bootstrap and stuff it in here
For the JavaScript, it's going to create some script for search functionality. It's going to include loaners library.
It's going to include bootstraps, JavaScript. That it needs to do its fancy stuff And then data.
Okay, so it's going to store all of the rules in a rules json file instead of separate HTML markup. I don't love that, but I didn't tell it not to.
Huh.
And then the image is going to go in there. So it's going to give you instructions on how to set up the project.
What it's doing.
Development guidelines. And it's giving you kind of… what it thinks is best practices for doing stuff.
Okay you know and if I was really picky about this stuff, I'd go in and say, no, I don't want that. Or I would tweak this and change it, you know, and say, no, I would like to use custom CSS for this or do that, you know, whatever.
If any of you guys have ever gone to a GitHub project and looked.
So it's just taking a stab at this stuff. How do you contribute, fork through, you know, okay, that all looks reasonable
A lot of this is what you see on those that somebody had to write, like the contributing.
You know, or whatever. And this has done it all for it.
And in fact, correct me if I'm wrong, Janz, but the cursor documentation says you should create a readme.md file to help guide what the cursor agent is going to do. But in this case, it went ahead and created it
For you because Jan's was very vague, but he could go in and be more specific.
Right. And you can do this in loops. So instead of me just saying, just do everything, I could have just said, hey, help me set up some documentation.
And then and iterated over that until I was happy with it. And I would probably say, help me set up some documentation and give it more more direction. And then as I did the documentation, I'm like, oh yeah, that's a good idea. I'll include that. No, no, I don't want that. I want this. And oh, yeah, I forgot to tell you this.
And work out the documentation. Then once I have all the requirements, then I would say, okay, now do this.
But in this case, it's just run. Okay. So it says, now let's create a package JSON to manage our dependencies. So it's made the decision that we're using node.
And it's going to be a package-based development environment. If I didn't want that, I should have told it.
I don't know if you guys know about package-based development, but that's a relatively new thing in the world that we're using package managers to include other people's code in your projects.
For web development. That's good.
Question. I see that it talks about license there. Do you run into licensing problems with some of the things that it's used?
Okay.
Right. Of course.
Well, it's saying in the README, it's asking you to put the MIT license or the gpl Or whatever. So it's saying, hey, now if he'd said, I plan to use the GPL3 license, it would have put that information in there, I'm sure.
And it would restrict everything to GPLs. Bosch. Okay.
Sure. Yeah.
And Scott, I don't know about
Would it relate to proprietary software tools? What do you know?
Let me rephrase Stan's question because I think I'm hearing a different answer than the question.
I think Stan is asking.
What licenses this is giving it access to. I think what jan is answering or scott is saying is that no you're in that license line you're putting in what's the license that applies to this website that's being developed.
Right, to this code. That's what license means. It's where you put the license.
That you want to use for this code.
Right.
I think Stan was asking about, is this only grabbing licensed content in libraries. I don't know the answer to that, Scott. When it comes to Node and package JSON and registering node modules. Do you know if there's any guidelines or requirements for when you publish a node module? Because it's only grabbing published node modules that have been published out there by developers.
For use in projects like this. I think you'd have to look at each one of these modules. Are you familiar with Node?
Right.
No, no, not familiar with.
Stan? So in here So let's take a look at this package JSON, okay? And so it has two groups of saying, go grab these libraries for including in my app. You have dependencies and dev dependencies.
Right.
Dependencies are saying my app needs to have these libraries in order to work.
And in this case, it's using Bootstrap and Lunar. And we would have to go look and find out how Bootstrap has licensed their stuff for inclusion and how Lunar has licensed their stuff for inclusion.
But it goes out there and runs into a software registry and includes those, just very much like if you're doing an install with app.
If you do an app get, do you know what the license is for every package you install via apt?
Okay.
I presume you could ask the chat Yeah.
Oh, yes, we do. We do, actually, because we can either go to the That's easily found out and remember
I didn't ask that question, Scott. I said, do you know the license for everything you install via app? No, you don't. You can go find out.
And the same here. I can go out and find out what the license is for Bootstrap and same thing with Lunar and same thing with ESLint and Jest and Prettier.
But then these dev dependencies says, hey, these apps are going to run locally on my development environment, my project out on the web isn't going to need these. But to work on this project locally, you'll need these packages. And these are a lot like, you know.
They're just like, you know, app packages, except they're being included through this system. And I don't know what this has been released under. I can go there. I can go to this jest.io and look at their licensing, but I would assume that all of these are open source.
I would be shocked if they're not.
Yeah. Does that answer your question, Stan?
Yes, and I would assume that if somebody's proprietary software leaked out on the internet, then there'd be a problem.
For both parties. Yeah.
Well…
Remember, this is using node and Node's a repository of software like apt are like Red Hat, you know, and Yum and whatever.
Okay. All right. Okay.
So they don't put stuff in that node
Right.
Right. And so what would happen if somebody put proprietary software on one of those It would be the same question. What if somebody puts proprietary stuff at app? Well, it's not very proprietary anymore because you just let everybody in the world install it.
And I bet you couldn't… I bet you couldn't charge for it.
Thank you.
Well, the answer is The answer is people at Debian The answer is that the people at Debian vet everything before it's included to make sure it meets certain requirements.
I presume no does something similar.
Yeah.
So maybe the same thing we got there. So that's what, so it said, hey, I'm going to create this package JSON and it's decided these dependencies, these packages that need to be included.
If we go on down and check it out, it says, hey, let's create a technical spec for your search. So it wrote this search markdown.
Implement Lunar, fast, offline, full text search capabilities.
What that means, by the way, guys. As you probably know, you can integrate Google with a website, right? And so You tell Google, hey, when people search on my website, they're using Google, but Google's only going to show results from my site.
Well, what if you don't want to integrate Google into there, right? For privacy or other reasons?
Or, you know, you just don't want to deal with it.
Well, Lunar allows you to create an index of your site using JavaScript. So when somebody goes to the search box on your site and types something in.
It's using JavaScript and it stays on your website. It's not going out.
To Google or Bing or someplace else. So Lunar did an index of all the content on your site.
And then when you do a search, it queries that local index. So it's actually running in the browser.
There's plenty of tools like that, but lunar is pretty widely used.
All right. So then it's going to create a build script. Oh, so it's not using a build tool, Scott. It's using its own build script.
That would be interesting to see how this goes. So it's writing a JavaScript that's going to look at my content and generate HTML documents is what I'm guessing that's going to do.
How did you determine that, Jan? I didn't see what you were reading that
It's just saying, here, let me create a build script that will process the markdown content and create the search index.
Yeah, yeah. It's saying that there. Maybe it's just the search index it's going to create. We'll see.
Over there on the right of the screen. Putting a file name up there on bill.js.
Right.
Eslint configuration to lint all of the javascript Yeah, JavaScript is really ECMA scripts. So ESLint is ECMAScript linting tool for checking things. So it's doing a configuration to tell ESLint how it should be dealing with stuff. That's this eslintrc.json.
Create a gitignore file to say, hey, let's not include the things that are going to get installed by node.
So each of those let me create items or a progression response from the chat.
Yeah, it's run through and doing all these things. So this is, hey.
Notice Jan's has not done anything except give the initial instructions. It's done everything else on.
Yeah.
So far, all I did was type this in. I haven't done anything yet. So then it says, okay, so I did the git ignore I've created the basic development documentation and configuration files for the project. Here's a summary of what's been set up.
The README package. Search markdown. We were just looking at all this stuff the get ignore It's set up to use Bootstrap 5, Lunar, Markdown.
For parsing rule, but content, ESLint for code quality
Now, notice that that last step he's got on screen. To get started with development, you would do steps one, two, three, and four.
But then notice it says, would you like me to create any additional documentation or start working on the actual website implementation? In other words.
Do you want me to do those steps that I just said you could do?
So it's actually going to run commands.
Yeah. Right. So all of this looks good. So I'm going to say accept all.
Okay, so I've accepted all of its instructions. That's fine. Um…
Go ahead.
Okay, go ahead and start with implementation.
I'd just like to point out at this time that every 1960s sci-fi movie about that giant AI computer that command of, sure, just go ahead, do it for me. That's where the movie takes a really bad turn.
Yep. Yep. So it's trying to generate the main index file. Let's see what it does.
You guys stay on the left, index HTML just appeared.
Yeah. That's fine.
Now it's creating CSS.
There's some stuff in here. The content's certainly not in here. It'll be interesting to see what it wants to do.
Because the content of my rule book isn't in here. You know, all this paragraphs and lists and headings and all that kind of stuff in index.html. So we'll see how it's planning on doing that.
It just generated the CSS.
Created some custom styles.
The other thing I'd like you guys to notice is look how many hundred lines it's creating at a time.
That's 103 lines. Earlier, Jan's was showing you something that was 175.
Print styles. It'll be interesting to see how that does.
All right. Good.
I wonder why he keeps using RGBA. You should have said HSL.
Yeah, I can. Oh, yeah.
You can tell it afterward, actually. So there's different ways to express colors.
In CSS. Hex values, right? You guys have all seen probably, you know, hashtag and then a6 3A1, right? Or you can use RGB notation or the one Jan's tends to prefer, HSL notation. Well, it's using RGB. Well, actually, there's a hex value on line six right there.
But earlier down below is using RGB. Well, Janz doesn't want that. Well, after this is done, he could say, hey.
I want all colors in this to be expressed using HSL notation and it would go through and change all of them for you.
So it would say I use this text value to express this color. I'm going to express the same color, but using HSL notation.
And for those people who would like to know more about colors.
Now let's create the search.
If you go in our archives, there's a presentation on that from Yep.
That's true. I think we gave, Dan's and I gave. Yep. Yep.
Sure.
Yes, you did. Yes, you did. Who is excellent, too.
Exactly.
So now it's creating the search JavaScript files.
Yeah, and it ran its linting errors. So I tried to create some stuff and ran the linter. The linter said, hey, you shouldn't do this. And I'm like, okay, well, let me Let me fix that.
Okay, I've created the basic implementation
Index HTML, CSS. Javascript, search.
Run the build script to process the rule book.
Now, does everybody notice there it says bash npm run build and on the right it says run
Start the development server NPM start.
I'm done.
Okay, let's do that. So I'll run the build script.
Uh-oh. I don't think it downloaded the node modules.
Yeah.
I don't see anything. I don't see a node modules directory.
That's my point. Yeah, I didn't download the node module, so no wonder it can't do it.
Whoopsie.
So he's being the most unhelpful human possible by saying, it's not working, right? You guys have all heard that from somebody.
My computer doesn't work. Well, tell me more. I don't know. My computer doesn't work.
Right.
So he's saying it's broken.
Yeah, and it said, oh, wait a minute. I see.
In other words, just another day in the office.
Right. Oops, I didn't run the end. I told it to do it, or maybe I forgot to tell it to do it. And it's like, okay, let me run it. And so it's running the NPM install.
Which it told me to do previously.
Now, do you guys see on the left, there's that folder that says node underscore modules?
Yeah.
That just downloaded all those packages it needs. To create the website and so on.
Now, Jan, because he knows what he's doing, could have said, hey, you forgot to install the node packages.
But instead, he's purposely being obtuse and saying it's broken.
Yeah, it's like you figure it out. But it's able to look at the, since it's an all on IDE, it's able to see what's inside the terminal here and in the debugged console and in the problem report.
And all this stuff, you know, it's able to look at all this stuff just like I am and figure things out.
Now, the thing about ChatGPT is If I want to debug a page of code with ChatGPT, I have to copy the code, paste it into ChatGPT, and ask it to figure it out. The problem is it doesn't know about any of the other supporting files in the project.
So it's kind of flying. It's only the only knowledge it has is of the actual page of code I paste in. So in some sense And sometimes that's okay, but often it will not understand the full picture because it does know about the other files or the structure of the project
Or what's missing or what's there and so Right. It's missing context. That's the word I was getting to.
And then see the context.
By having this all together, it's not looking at a page, it's looking at all of the files in the project.
It's looking at the terminal output. And so that's a reason this is far, far, far more capable and useful than just copying and pasting a page of code into any cloud or chat GPT or anything like that.
And that's one of the reasons it's as powerful as it is.
Now, again, notice, I think this is only the third interaction jans has had With it.
Yes. I haven't done much.
Yeah, so it says, hey, check it out. So let's see what we got.
And it says, okay, server's now running. Please try accessing.
You know?
So this is the website it created.
Overview set up. And it has done a very poor job of converting mark down to HTML.
Markdown. Yep. It didn't.
Yeah, it did. It created lists here.
Yeah, but it didn't do gold and italic Oh, no, I know. You're right.
If I inspect that, Scott, it's got list items here. It just didn't do the it just didn't do the bold.
So it's not a partial job. Pardon me?
Yeah. Well, but look at the list at the top. Well, the list at the top there, one, two.
Mm-hmm. Yeah.
Three all on one paragraph. So it didn't detect a numbered list.
That's because they're the enemies and he didn't want to make it look too ominous.
Check it out. The search is working.
I typed in a search and I got search results.
Do that again. Different word.
Okay. Well, here's this card. So I can go to the discard section for that.
The rules reference so um reference Here, do we have a section about comment? So I'm on the rules, the crew members page.
Oh my gosh, misspelled it. There we go.
Boom. And that's, by the way, another advantage of having the search localized. It's really fast.
Yeah, so just all in memory. So it did a pretty good job. Let's see what the response of behavior is okay.
Hey, look at that.
The only NAV is search. It collapsed the sidebar searching.
That's bad. Right.
And so that's not good. It did a pretty poor job with the design.
But, you know… Better than any of your students ever do.
And here's the thing. What did it take? 15 Now, jans has been coding.
Yeah.
And I have been coding websites for 30 years. And we are both pretty fast. He's faster than me.
How long would it have taken you to do all that by hand?
Several hours at least.
Oh, yeah, quite a bit of time. You know and and the thing is, this has done a bunch of stuff in a way that I wouldn't do it, the way I wouldn't want to do it, that kind of stuff. But it would still save me a ton of time if I took some time and said, okay, I want to create a set of different HTML dockets. Don't use
Don't use dynamic JavaScript loading for content. The content is going to be each separate HTML page.
Blah, blah, blah.
And in fact, right now you can go back and say, hey, this was markdown and you failed to convert Markdown, bold, italics.
Block quotes to HTML equivalents. And it would do it.
Okay, so I'm going to accept everything in here.
One of the nice things about VS Code, VS Codium. Is that problems panel. So that basically is doing linting for you and error checking.
And I tell my students to use this all the time.
Because it will tell you it does a pretty damn good job of detecting In your code, whatever language it's in, and you will click on problems there and it will tell you the file list the problems. It'll even tell you the line number. And if you click on that, it will take you to that line number in that file.
Now, that's just part of VS Code. But that's what he's got open down here.
Unexpected console statement. What is that?
Console.log.
But I hope you guys are impressed. That with literally three interactions.
It developed an entire website Right? That has… some pretty sophisticated stuff in there. It did make a few errors.
Part of that's because we weren't more specific, but we could even go back, like I said now, and have it correct those errors.
And it would do that. So this is why it's called vibe coding because He acted like a person that doesn't know how to make websites.
He acted like a person that does not know HTML, CSS, and JavaScript. He was just saying, well, make this thing for me.
And it did it without him having to, quote unquote, know the code now In my experience, the more you know, the better off you'll be because you'll be able to spot errors before they become a problem. You'll be able to help debug. You'll be more specific about what your instructions are.
So the more you already know, the better you're going to be in terms of what it does.
But this is an example where somebody that didn't know what they were doing could generate, you know, something that could generate something would be usable. It's not perfect. It's got errors, but it's a lot further than somebody would get if they didn't.
And so what was the one segment, James, what was the term you used today about vibe coding?
Question.
That before you knew the code, but somebody told you the idea, what was that again?
I said that for many years, we've told people that ideas don't really matter, implementation matters.
It's execution that makes the difference, not the, you know, I have a great idea That's fine and dandy. People have great ideas all the time.
But what's important is the execution. Well, this is starting to flip that on its head.
That it's getting easier and easier to execute on ideas and the idea is getting more more important is having a good idea You're able to execute it and pull it off without having a big team of experts involved.
You just have to know enough to know how to ask the right questions.
Yep.
Yep. That's exactly correct.
I wanted to tell me what I need to know.
Yeah.
Yeah, and that's and that's that's pretty much correct. I tell people it's like the cotton gin. It doesn't make people people obsolete, but it makes fewer people far more efficient and people that have a specific skill set be able to do a lot more work than it took
With a larger group of people with different skill set.
Oh, come now. This seems like a perfect thing to lay off that staff of programmers that you really didn't want to be paying.
Not quite.
The entire staff? And that's the thing. And I've actually gotten anecdotal stories of that happening of like, let's lay off the entire staff that we don't want to pay because we don't need this anymore. And they realize, oh shit, yeah, we don't need the whole staff, but we do need some of the staff.
And they need to have some specific skills and this and that.
But it's true. You can certainly reduce the number of people involved because you have one person that's able to do the work of multiple, you know, or what would normally take me a week to do might take me a couple days to do or even a couple hours to do.
Question I have.
Right. Now, of course. The problem comes in that let's say you do fire three-fourths of the staff and 25% are left, right?
Well, the thing is, this generated all this code Now, as everybody knows, it's a hell of a lot easier to create code than read code.
So if somebody did want to go in. And fiddle around with it.
That's going to be more difficult. Because the computer did it, right? The AI did it so It's doing things like that.
You may not understand what it did or why it did that or, oh, if I pull this string here, actually, this is going to fall off.
Now, of course, the idea is you could ask the AI, but I've had times where I've asked the AI about the code and the answer gives me back is wrong.
And I tell it, hey, that's not right. That's not going to work.
That's part of the danger. You guys have all seen sci-fi movies you know where People, you know, they land on some planet and everybody is being taken care of by these machines that people 10,000 years ago created and the machines start breaking and the people are like, we don't know how to fix this.
We don't understand how this works. We've lost that knowledge. So, you know, the more experienced people may be the ones that you're paying the most. So, hey, let's fire the people that were paying a lot of money and keep the junior devs because they're cheaper. Well, the problem is the junior devs aren't going to know as much.
So they're going to be even more reliant on the automation and not be as effective for debugging, understanding the right questions.
Okay. That's all true.
And so on. So that's also a consideration.
Has anybody seen that happen in real life?
What I'm seeing is… has… done what I would expect to be tell an intern to do.
This stuff. Our junior devs. Yeah.
Yes. I feel like… That's junior devs. And then I'll finish with, I think Stan has tried to get a question in for a while.
Yeah. Oh, can I say one thing in response to that, though? And of course.
Sure.
The problem is business owners and business owners pseudo government employees, by the way, can be very short-sighted, right? And not understand the long-term ramifications of the choices they're making.
So you're thinking long term by saying that, but the business owner is not necessarily.
And that's where the problem can come back And really bite. I'm sorry, Stan, go ahead.
A question, how useful can this be in teaching what But somebody.
I've not used this with students. I haven't even mentioned it to them.
Have you found it to be?
I'm going to. I'm actually going to give you an example of that because my 16 year old son finn that some of you know? Well, he's using my chat GPT account that I pay for.
Yes. Yes.
And I'll open ChatGPT and be like. Why is there a question in here about solve my geometry homework? And I'm like So is my son learning geometry?
His grades say no. And I have the evidence. Why?
No uh one One issue about using ChatGPT to write the code You were talking about, you know, you may not be able to understand what it was doing later on. Somebody might not be able to read it understand it. But, you know, a person writes this code and a year from now you need
To make some changes and that person is no longer working for you.
So you could be in the same predicament if a person wrote the code.
That's why you have documentation. That's why you have documentation, ideally.
I've had that guy on my staff.
And another thing I thought about is I wonder how tight and efficient this code is.
I have noticed that over the years programs have been written that are bulbous they're huge.
To do a very simple task. Because they just pieced together this these elements that uh are already made up for doing this or that or the other thing And they're not really efficient. It's not tight code, unlike you know when
Writing stuff in assembler and that kind of stuff where you could write some really, really tight efficient code.
Yeah. And that's where these LLMs come in as a really good assistant instead of a creator. And that's what I tell people all the time is you really never want to use these things to do things that you don't know how to do.
And so I'm doing that to some degree here. I'm not a Java scripter.
Yeah.
An experienced JavaScript, I know enough to get myself in trouble.
And so to do the task of you're saying of you know refining and optimizing this javascript I don't have the language or the ability to to parse this myself, but I can certainly do that with the CSS and other aspects of it and say, hey.
Use this. You know, HSL.
Yeah. That's the color notation instead of hex values or RPB.
Hsl, what's that? Oh, oh, okay.
There's a good reason to use HSL. That's why James uses it.
Okay, yeah, yeah, yeah.
Great.
And he knows enough to say. Here's the problem with hex values in RGB.
You know?
If somebody that knows the color wheel looks at that code, if I said to Janz right now, hey, Janz, what is 3B a six seven nine look like he's going to go, I have no idea.
Absolutely none. Hex values don't tell you anything you you don't they don't relate to… any sort of color structure you already know. Rgb is the same way.
You'll look at the values for RGB and you have very little idea what that actually means.
With HSL, though, the first digit is an angle on this color wheel.
So.
So if the first digit is 180, you're like, oh, that's going to be that sort of blue-green at the bottom.
If the color angle is 60.
Yeah. And that's about the only thing you had. So it's just kind of a more ergonomic human way of defining color because the only thing you have to remember in your head is the color the angle difference you know zero or 360 is red
Okay, because it's rgb A third away through that, you know, 120 is green and two thirds of the way is blue.
240. And then so opposite that is cyan, yellow, and magenta So you know that, you know, between 120 and 0, you're going to be going from red to green you know straight through yellow halfway through is yellow So that's not too hard for a person to remember. So once you start saying, hey, you know, what color is hue angle of 300? I'm like, oh, that's magenta.
That's right in the middle between 360 and 240. That's right at 300. That's straight up magenta.
Okay, so it doesn't take long for you to remember those angles and have a good idea of what kind of color you're dealing with. And then the other two factors are super simple. Saturation is either all the way saturated or gray.
So what is 50? It's halfway between gray and fully saturated. What's 30?
You know, it's 30% of the way through gray and fully saturated.
And then the L is lightness. Lightness is the difference between adding white. If you add 100% white, it's all white. And if you have 100% black, it's all black.
And you can see this thing only goes from 10% to 90% because obviously this would disappear entirely.
100%. So the lightness is like the percentage of black paint compared to colored paint.
So if you take a gray paint And then add and then swap out 100% white paint. How much what gray paint do you have? 0%. What color is it? White?
Or if you have this pastel green paint and you swap in with 50% of that, you mix it with white paint, what do you get? Well, you're going to get a very light pastel.
So HSL is really easy to pick. So I like that because I can look at a HSL value and without seeing the color, I know what color it's going to be. I have a pretty good idea of what the color is going to be.
Where if it's a mix between a percentage of red, a percent of green, and a percentage of blue.
I have no idea.
And then the text value or RGB.
Talking about state and performance. What's the computation for displaying HSL versus RGB. To me, it almost It's optimizing for the human looking at it and throw processor cycles at it.
I'm glad you asked. Yes. This is a pretty simple computation to take the rgb cube and project it into a cylinder.
So it's just taking that cube and projecting it into a cylinder through a fairly simple computation.
No, I'm talking about when you are using HSL values in your web code and the web browser is rendering that, the computations it has to
Nanoseconds.
Yeah, it's going to have… no no discernible impact on your performance.
Nope.
It's extremely simple computation to do.
Well, it may be very simple, but we were talking about assembly a moment ago.
And optimizations, is it fair to say that it will take compute power, even a minor amount to go from hsl to RGB, which is what's going to be rendered.
Yes.
Yes. Yes.
Well, everything takes computer power.
But he's right. It takes more than if you just find it directly in RGB.
Okay. Yes, but there's
It needs to be converted to RGB before because it's all everything's going to be RGB before it appears on the screen the computer is going to figure out what rgb to do And it gets more complicated than that.
This is still perceptively. Perceptually inconsistent. Then you start having to deal with LCH and human perception of colored variation and that gets far more complex.
But again, the amount of time is nanoseconds.
Yeah, so… For me, that's a wash.
I know.
Right.
So this did pretty well. Um… Did it?
Oh, yeah. It went through and fixed things. Well, were the headings correct before?
Oh, it still has problems with bold.
Yeah, and italic. And block quotes. See the block quotes there?
Yeah. Yeah. Yeah, I'm going to tell it that.
So are you guys impressed?
Yeah, yeah.
I know I am.
Hey, so.
Yeah. Are you guys staying…
Am I seeing this intern or is this educational experience for them
Well, see, that's the problem. Right. Is what I'm reading on Hacker News and others are people complaining that junior devs are all relying on this too much And they're not learning it.
Like your son relying on PBT.
Exactly. That's exactly what it is. My son is not learning geometry, I can guarantee you.
Hey.
So this is really impressive to me here. See what I said? Hey, markdown conversion is complete. For example, this is being rendered on the page. And then I just paste it in this, these three paragraphs, okay? I didn't tell it that this should be a block quote and this should be italic.
But it said… So I see the issue. Markdown block water andalics aren't being converted.
It figured out what I was trying to tell it.
Yep. And I've noticed the same thing with chat gpt I will often, it'll tell me to do And I'll run it and I'll just copy the error message and just paste it in. That's it. Or I'll copy the, I'll do something on the command line
And I'll copy the command and the results and just paste it in. That's it.
And it'll go, oh boy, you know, I see an error there. I see what the problem is and it'll come up with a fix. So you don't need to say Now, when I am in a rage because it has been going in a circle for a half hour and I start cursing at it.
I will let it know. Is wrong and how wrong it is. Now look at that.
See? See how it fixed it?
Fixed it.
Yeah.
A couple of questions, Scott. Uh this is This cursor is technically is an IDE then, right?
Well, it's VS Codium. A fork of VS Codium. So I consider VS Codium an id I think most people do. I've read some like very like how many angels are on the head of a pin debate But yeah, I'd consider it an ID.
Okay, so it's open source and how cross-platform is it?
Oh, well, it's an electron app So it runs on Linux, Windows, Mac, everything.
Okay. What about library what about library support fairly fairly uh equitable across the platforms?
What do you mean by that?
Well, in other words, if I wanted to build this on Linux how complicated would it be?
Build the cursor. Or build down.
No, it's this project.
Oh, it's using NPM modules and those are like they're just JavaScript. I mean, you know, that's not going to be a problem.
So it can reference them and find them and all that Okay.
Oh, yeah. Oh, yeah. Yeah, that's extremely cross-platform.
That's one of the reasons it's popular right it's just TypeScript and JavaScript.
And, you know, web native languages. So Jans is using a Mac.
I know this works just fine and dandy on Linux and I know it works fine and dandy on Windows.
Yeah. Now, here's the difference though.
Okay.
This blogger I really like named Matt Birchler He's a professional UX designer. He's been using Cursor for at least six months, if not longer.
And he built this really cool website that you could go to and you would put in the name of a movie And then you could, there were four ratings you could pick and you could write a little summary of what you like. I love this movie. It was great. The acting was great. You know, blah, like a little short thing, a blurb.
And then you'd hit a button and it would go out and it would grab the movie poster and put it in.
And turn it into an image that you could download And then upload to social media.
Okay, really cool. It was a web app. And he's been working on it for about a year, two or three years, actually, and making it better and better and better.
Well, about two months ago, I think, two or three months ago, he decided to turn it into an iPhone app.
But he doesn't know Swift. The language that Apple wants you to write iOS apps in.
He did it all with cursor. And it's a great iPhone app and people buy it. He sells the app on the App Store.
And it works great and he adds new features all the time.
But that was a beautiful example of vibe coding.
He just had this great idea. He was able to point it at a website and say, I want it to run like this, but as an iOS app.
Well, here's the problem for you, Lee. If you tried to do that on Linux.
Yeah.
I don't know how well that would work. You know what I mean? I don't know if it would have to get libraries that wouldn't run because their apples are iOS specific.
I just don't know.
Well, I would assume that it's going to be restricted to the environment you're building in unless you have some way to cross compile.
Which you might be able to tell it to do. I just don't know.
Right, right. But I mean, that would be a major problem to deal with.
Right. Oh, yeah. That's why when I thought of that, I was like, well, that's an example where I don't know. I don't think that would work on Windows or Linux. Now, obviously, something like a web app, no problem.
Yeah.
Yeah, obviously you're not going to build a QT app on Windows.
That should be completely cross-platform no matter what
Wayne S, just put in chat. There is an app image fill in the clinics.
Right, right.
Oh, cool.
And there also is a package for codium Cursor is a unique build. It's not Codium plus something, right?
Yep. No, it is. It's a fork of VS Codium with the AI stuff completely integrated and built in.
Yeah, no, what I'm saying is it's not a package you add to codium it's just
No, no, no, no, no, no. In fact, they cover that in the FAQ. They're like, why isn't this just an extension? And they're like, this is way bigger than an extension.
They actually changed the interface quite a bit too.
Yeah. Okay.
Right. Yeah, they've changed all kinds of stuff. So let me show you some other, so things that happen more often with what I'm doing.
It does auto complete. So far, I'm just using the agent to do a bunch of stuff for me.
What's another really common workflow is that you're working in the code yourself and it's going to guess what you're trying to do and make autocomplete suggestions. And you look at it and if you're like, oh yeah.
That's what I want to do. Then it will auto complete for that.
Okay. So for instance, I could do this. So let's say I wanted to create some CSS variables okay
Bam. Do you see that?
Okay, so I started typing in border radius Okay. And it said, okay, you probably want to set all of these other things via via uh properties also.
So it made a bunch of suggestions. For other things that I could set with CSS properties, border color, box shadow, background color, that kind of stuff.
And you know what?
Hold on. Before you hit that Do you guys see the very first suggestion it's making border color?
Hsl 210, 14%, 89%. Where's it getting that? Look at line 10.
Hsl, 210, 14%. So it's going, it's real. These are variables. Everybody in here knows what a variable is in code, right?
Right.
Well, CSS has variables. So instead of JANs, instead of repeating, that HSL value over and over and over and over and over.
You can create a variable for it and refer to the variable, which means you could go back and change that and it would update that color everywhere that variables used, right?
It's smart enough to look at the colors it already has in there to suggest the variable names and their values And it gave it a good name because it went, oh, that's a border color. Let's make the property, the variable name
Order color. And I bet if you did that, it would offer to update Everywhere that's being, or you could tell it.
Now that we have variables, would you please update that everywhere in the code?
Right. And let's say instead of using a CSS property, I'll call it something else.
Okay. So I guess another thing here, that's fine. I'm going to say… Oh, shit. Just did this thing again.
Hide floating is scrolls. Yes, well, that's wonderful. Thank you, Thing, because I don't want that.
Yeah, if you hit escape, that thing helpfully opens.
And now it should, it didn't. So what commonly will happen is instead of auto filling here, it's going to jump down and suggest where I should use this.
And replace things with a var statement, Scott. And so I would tab and jump to different spots where then I go, yes.
Okay, great.
Tab, tab, tab, tab, tab, apply that in all those places.
In real CSS, stuff that I've done where I've created a system here where I'm using a consistent value over and over again, and I'm like, oh shit, I'm using this value multiple times. I should create a variable for this. I go create the variable at the top, and then it would make suggestions down through the code that I would just have to tab to to say enter, enter, enter, enter.
Enter, skip, enter, enter, enter, skip, enter, and apply it to those places where I want it and not where I don't want it.
How is the difference?
So, and then so stuff like this, like I want, I want… nesting.
Two weeks.
So this is another thing you can do. You can highlight a specific bit of code and instead of going and giving a command over here, I could say just for this code.
Right here in line, I can tell it to do something.
I'll just say nest and see what it does.
I agree that's interesting, but I question how that's different than applying a regex globally with confirmation either across the entire file or a selected region. I don't see what's AI about that.
That is what's happening. It's just you're doing it really fast.
And you don't have to develop the regex.
That's exactly what it's doing.
Yeah. So what James did… So I want you guys to notice, if he starts typing and it says, oh, do you want me to go ahead and put all this in?
You just hit tab and it inserts it all in. Or you can highlight code and hit command K. Now, I presume on other platforms it's control K. I'd be very surprised if it was not because that's kind of become
The standard key command. But if you hit command K or control K, that's when that thing opens up and you can say, hey, that code I've highlighted.
Do this to it. So you've seen three ways that this is automating. Autocomplete, where you hit tab.
Where you select code and hit command or control K and tell it what to do.
Or using the chat over on the right.
And so I'm going to do command i where it says, hey, pull custom CSN. And I'm like
What is CNS?
Mm-hmm. Scss is a, so the just like Markdown is you use a preprocessor to turn a markdown file into an HTML file or a PDF or a Word doc.
Oh, okay.
Sas gets turned into CSS. It's an older technology about 10, 15 years old.
What happened was SAS was developed because CSS didn't have a lot of things that made it programmery like variables And so these people develop SAS and it was very popular. Well, the people that do CSS said, oh, we should steal some of their ideas and just put that directly in CSS.
And as a result of that, there's far less need to use SCSS, which is pronounced SAS for historical reasons.
Thank you.
Anymore. It's still offering to do that because that's still it's still widely used it's just there's not nearly as much need to. Everything Jan's used to do was in SAS. And I think you don't use it nearly as much, right, Janz?
Oh, there you go.
I haven't used SAS for a while now. Well, actually, I am. I'm using SAS on concrete stuff because I'm using some mix-ins.
Okay. But typically you would not. Because the features he used in SAS are now native to CSS.
No. Right. The ones that are 90% of the reason to use SAS are there if you really need that other 10%, probably just do that in JavaScript these days.
A side question, how well does this thing incorporate what they call the key tabs or whatever for vision impaired people.
Into things that have images. Do you know? Or have not tried that yet?
So…
Oh, yeah. I mean, so you just tell it the same stuff. You say, hey, make sure you have ARIA and accessibility clues in the markup.
And it's going to have all the rules for that and put it in there.
It does a pretty good job of that stuff.
Aria is the standard accessible rich internet applications, and it's a standard for adding accessibility features to web pages and websites and web technologies.
So all you'd have to do is say, hey, don't forget to implement ARIA.
And it would know exactly where to put what code and do that.
So this just gives you kind of a feel of its scope and its behavior and whatnot.
I would never do a project like this. I would never do something where I'm just like run and do all this kind of stuff. I would certainly take… much more care and walk through each step and make much more
Considered decisions and give it much tighter requirements, et cetera, et cetera, to do something that I think would be really, because this is just cranking out definite AI slop.
The six fingers.
But the slop it's cranking out is pretty remarkable in that it's able to crank out this slop at all. You know, previously it was cranking out images and in stories you know stupid, stupid, you know, fairy tales. It's doing functional stuff now that's that's pretty
Yeah.
If I were to review this quality of this site for somebody, I'd give them a pretty bad grade.
So it's…
But I would also have assumed that would have assumed at some point in time that whoever built this site spent many hours in doing so.
Yeah.
So it has the ability to go clean up its mess if you know what to tell it to clean up.
Or if you paste an error message.
Right?
Right.
How much…
Yeah, well, the thing is, I wouldn't ever use it to create the mess in the first place. I would use literally using it as an assistant as I'm building stuff and saying, okay, this is going to take me 10 minutes to run through And make this change I want to make in my code. I'm going to tell it to make it, review the changes it made. If it fucked up, tell it to do it a different way. Review that. And if it did it right, I'll be done.
Yeah, much, much, much tighter description of what it needs to do is what you need
You know and and so Yeah, yeah. But that's the thing. The skills now that is needed for this is to understand what you want it to do, how to communicate with it, how to create good prompts, good processes for doing that. The articles that I linked in the video and the article that I linked in the chat is really the things that you need to be
Be good at to use this stuff. And you'll see that there's a lot of things in there. Hey, set your expectations, write good prompts, know this part, do, you know.
Et cetera, et cetera. It's just kind of uh
Good behavior or Yeah.
Well, it's skills you need to learn to use the tool effectively.
Right.
Something I didn't show you is you can go in here and give it a bunch of guidance. So I can go in here and say, hey.
So like Jan said, you know. If…
For the rules for there. I don't have no project rules, but I would put that HSL in here. I would create a rule for coding standards and say, always do this, use HSL in this format for this, do this, make sure you use native CSS nesting.
Blah, blah, blah, blah, blah, and give it all kinds of guidance for doing things. And then it's going to do a much better job of doing the kind of stuff that I want to do.
And it's all the stuff that I would normally be doing myself.
So that it codes the way I want to code and it's going to assist me in coding the way I want to produce my code.
Because really, that's what you should be thinking of is as an assistant more than anything else is not is not a substitute for somebody that knows what they're doing.
That's what you should think. I think that is often not going to be what's done.
Yeah. That is correct. And you're going to see a lot of you're going to see the AI slop get extended into things that you wouldn't necessarily expect.
Are you guys familiar with that term, AI slop?
No. No.
The other thing I see is rapid prototyping of a concept even like this enough to spend the time to do it properly.
Yeah.
Yep. Yep. That is an excellent point.
Yeah, that's a great point.
It's a 3D printer for code.
Yeah, yeah. Yeah, it's true.
I love it. That's great. Hello.
Sure. All right, kids, I'm going to have to drop out here.
Questions about… I'm going to show you guys one or two things about my cursor in a second.
Dance?
Thanks, Chance.
I hope this was interesting and enlightening and fun to
But does anybody have any questions for Jan's? As we wrap this up.
Thank you, Jan. Thank you, Jan.
Yeah, thanks, Pat. Great overview.
Absolutely. You're welcome. I hope it's a neat thing.
Oh, we didn't mention this. I'll show them, James, the pricing page. This is not free.
I do have a question.
But it's very reasonable. But it's not free.
Resulatory.
Janz, I would be very interested in a very follow-up presentation, you know, sometime in the next six months of If you are going to do this properly with all the constraints and prompts to get something you would consider acceptable
I'd be very interested in seeing… like the product of that and what you told it As a follow-up presentation.
Right.
Sure. Sure. And I think the biggest yeah The biggest thing is I wouldn't start out with just this broad I would probably start out with something that's far more more defined and a started project and do some things more manually and have it help me in little bits than
Then do a bunch of stuff for me.
Yeah.
Yeah, that's…
Yeah, but I would. I would be developing those rules, those coding standard things and whatnot and uh
Now, by the way, one thing Danz could do, of course, is in the chat, he could be like, hey, could you explain this to me?
Yeah.
Why did you do that? What's that mean? Explain what's going on and it will do a very good job of that.
Chatgpt does the same thing. So it could be used as a learning tool.
Right.
I'd be interested. I'd be interested down the road six months from now.
How well you, Scott, have incorporated this into your training junior developers.
Yes.
Yeah, see, I'm still wrestling with that. Because like, we've been talking about, I want my students to learn how to code HTML and CSS.
Right.
From the ground up. And I don't want to use this to subvert it i I was actually talking about something like this in class. And I said, it's kind of like if you took an automotive repair class.
And they're like, okay, we're going to hook up computers to the cars and you're going to learn how to use the computers and see the error messages.
Well, okay, did you really learn automotive repair And we're going to have robots. You can tell a robot what to do and it'll do it.
As opposed to, okay, we're going to lift the hoods, we're going to get our hands dirty for the first year or six months.
And you're going to be manually doing it. And then once you understand that, we're going to learn how to automate it. That's where I would want to go.
As an instructor. I don't want to short circuit their learning by jumping straight ahead to something that's going to do all the work for them.
And they're not going to learn how to do it. Like my son in geometry.
I was just going to say, and next month our speaker will be Finn Scott's son, who will explain the other point of view.
Yeah. This is Scott standing behind him, kicking him in the ass regularly so yeah Exactly. Anyway, Dan, thank you very much.
No, it's funny, Scott, that never changes. You standing behind your son kicking him in the ass.
I know. Yeah, true. It's a maker.
That's never been any different.
I know. Yep. All right.
Do you? Okay, cool. Well, you guys have a good night and we'll talk to you next time.
Thanks, Janice.
All right, absolutely.
And I'm going to get share my screen now. And…
Oh, no, I'll take a look.
Scott, did you see Ron BC's question in the chat? Are there equivalent-ish options for europe or China.
What do you mean? Equivalent to what? I'm sorry. Equivalent to what?
We'll give Ron. I am presuming while i am presuming I'm hoping Ron is clarifying.
I am taking Ron's question to be. Are there options like cursor EM or whatever it is.
Usable other places as we're seeing as we're seeing geopolitical things break down ties and software availability.
I think… I don't even know who owns Cursor.
I don't know if that's a year. I don't know if that's european Uh… cursor.com.
So, um. Remember, one of the things that you can do is set a different LLM. Well, you could use deep seek if you want. That's in the list.
I saw that in the list of LLMs. So here's Curser's website.
Um… I have the feeling they're probably feeling American, but I don't know.
Um… Company. Here we go.
Um… San Francisco. Yep.
San Francisco.
Yep. So if there's not, there easily could be. You know?
Well, maybe not as easy as you think. There's so many of the language is to use pictographs.
Get a copy now.
Like Chinese, Japanese and whatnot. They're more analog.
English. Isn't that? Yep.
Sure. Well, there are plenty of computers that people that speak Chinese.
I actually have a student who speaks Japanese and he showed me his keyboard.
That makes sense.
And they don't use the characters they use the The pinion which is the pinion It's a representation of the symbols.
So here's the pricing I was telling you guys about. You can use it for free. You get a two-week trial with the pro features You get 2,000 completions and 50 slow premium requests. So in other words.
If there's somebody that's paying in front of you, you get put back in the line to get your code generated or analyzed or whatever.
Jan's and I are paying $20 a month.
So… This is subscription-based. I naively was thinking it be hosted locally.
Yes. No, actually, I think there is a lifetime pricing, I believe.
This website is being a pain in the butt to me.
And it's not wanting to behave. It doesn't want me to scroll up and I don't know why I'm going to try this.
Nope, go back to pricing. I thought… Right above. Yeah.
I'm trying. I'm trying. It's a site is, for some very, very, very slow.
So click on pricing.
Man.
Somebody's running too many premiums completions?
I have no idea why it's doing this.
I don't know why. Give me one sec. I'm going to look.
It looked like at the top of the pricing was monthly, yearly, maybe something else.
Awesome.
Right. I'm going to close brave as being brave being poopy and I'll open Safari and just do it with that
There we go. Let's see how that behaves.
Yeah, that is true. Okito.
Okay. So let's go to cursor.com.
I closed brave. It was being bad. Pricing, there we go. So $20 a month, which is what we're paying. We're doing monthly right now. We don't want to do a yearly commitment just yet.
Unlimited completions, 500 fast premium requests per month. Unlimited slow premium requests.
And there you go. Now, if you do yearly, you save 20%. It's down to 16 a month if you pay yearly.
Now, I believe somewhere on here somewhere you can pay lifetime, but I could be wrong.
I could be wrong on that. But here's the deal. That again goes back to what Dan's and I were talking about. 20 a month.
For what we would get from this is nothing. That is a complete drop in the bucket compared to the money it would save us and how useful it would be.
In terms of time and so on.
But like you say, over the long term Is it going to cost you more time when you have to try and fix something?
Without understanding it?
Well, yeah, I mean, that's an argument that can be made about all sorts of stuff right certainly that. Now, remember what we said earlier, though?
This is the worst it'll ever be as of today. So in six months, it may be much, much, much smarter and make fewer mistakes and be better able to fix problems and explain problems to you and find errors and do linting better and so on.
Right. As Bruce Schneier says, technology never gets worse. It only gets better.
Right. 20 a month for where we're saving thousands a month.
Right. Potentially thousands a month. Is going to be totally worth it.
But if I was like a person that basically played around with this and just coded for fun, you know, stick with the hobby plan.
But if it's your business. There are people that record music that have thousand dollar microphones. I'm not going to buy a thousand dollar microphone to record my little videos you know But if that's your business, then you're going to spend money on that
But anyway, there you go. Now I want to show you My little… problem that I was doing. Let me move Safari.
And we move safari. Let me move so far. I have too many tabs open, too many windows.
So I have a very hairy, Dan's was like, God, you're asking it to do something really complicated. I'm like, I know.
I was impressed it got as far as it can. So here's a web page.
And I'm going to open this up. Give me a second.
And here's what it looks like. Now, this was originally Hold on, I'm about to restore a gazillion tabs. This was originally on another website.
This guy developed it and it's a learning tool for people that want to learn the vocabulary terms of HTML and CSS. And actually, I'll show it I'll show you the correct version because the one I'm showing you is messed up.
And so the guy took his sight down, but it was at GitHub.
And so I downloaded the code. And using ChatGPT, this is before I was using cursor.
I completely fixed it up and changed it to make it able to run.
On my server. So I took his code because the website he had is gone.
And did a little changes and it's now running on my website. So this is a teaching tool.
At Graneman.com slash vocabs. Slash HTML.html. And here's the cool thing over here. Hey, what's an element? Well, you click on it.
And it identifies the elements. What's a tag? What's a tag name? What's an end tag?
What's an attribute name? What's an attribute value? What is a parent What's a sibling? And so on. That's really cool.
Right? That's really, really, really cool. And there's one for CSS as well, which has a lot more stuff because CSS is a lot more complicated So CSS.html and here's css Lot more terms.
This is really cool. So I, as I said, downloaded this guy's GitHub code and massaged it and tweaked it and modified it and got to the point Where I could upload it to my server and get it to work. But then I noticed a few things I wanted to change. So right here, see how it says spam?
And then this text And then kill span, that should be on one line, not three.
So I was like, oh, yeah, that's not correct. I don't know why the guy that originally did this did that because that's how I or the vast majority of people coding this would do it. It would go on one line, not three.
And I realized, oh, actually, this is kind of technical, but it says children, well, this span is not children. It's a child But it's not Children, but he has it set up where it's getting selected when you click children. Well, that's wrong.
And so I wanted to have Cursor fix those problems. Now, you might be thinking, well, Scott, you know code, you know what you're doing. You just said.
An hour ago, you've been coding web pages since 1995. Why don't you do it? Well, because this is what the code looks like.
It's one line. Now, guys, I looked at that. I tried to.
You'll notice the web page now, I converted it to be about HP Lovecraft. Well, trust me, trying to manually edit this will lead to a Lovecraftian madness, okay? It is so nested with spans inside, spans inside, spans inside, spans inside spans.
It's, you know, it's impossible to do with a human. Oh, no, God knows. Spans are incredibly useful.
I thought spans went out with Dreamweaver
They are a inline element meant for CSS classes. That's their purpose. There is no other element that solves that problem.
In other words, span and div are elements that are purely designed to hang CSS onto.
They don't do anything else. So they are actually great elements as long as they're used correctly.
Right. And they're being used correctly. It's just, this is such a complicated mass of code that it's… it's kind of getting to the point where you need an AI to edit it.
Have you found anything, I mean, like if I was presented with what you're showing there.
I would basically split
Let me finish my statements.
No, I tried that. That way lies utter complete disaster because the CSS is taking care of all the blocking line and the margins and all that. So that's the first thing I tried to do. I was like, well, I'm going to
Fix that. And that just completely blew it up. I apologize. I'm sorry.
Let me finish my statement. I feel like you answered something else.
I've taken things like this before. And basically everywhere you have html elements. So like you've got spans back to back Not exactly, but you have a closing angle bracket and an opening angle bracket.
Replace that to be a close carriage return and open So it blows it up to thousands of lines and then run that through something change your indentation So you end up with a visualization of the structure.
If you did that due to the CSS, it would not work.
Why would that work?
I'm telling you, the CSS that he has is basically completely dependent on this structure.
I'm not changing the structure. I'm adding white space to it.
Okay, so let me make sure I understand you. I'm doing active listening here to make sure I understand what you're saying.
So I went through here. And I said, okay, hey, we got to kill spam, spam.
I'm going to put that on its own line. And then I did that for all the others and tried to get it structured correctly where instead of being one line, it was 150 or whatever.
Is that what you're saying?
Maybe, but it's my understanding
In HTML, space like between your opening div on 607 and opening code on 608.
Does not matter. Doesn't matter, right?
So like, huh? Right. I think that's character debtor.
Right. Except again, the CSS he has for those spans You're correct, but the CSS he's made means you cannot do what you're thinking of doing. I tried it.
Okay.
Can't do it. It will not work. Believe me. That CSS is some hairy stuff And it's dependent on nesting. It's using combinators, it's using complex selectors with combinators based on this is a child of this is a child of this is a child of this is a descendant of this is a descendant of this.
And that's what's causing it to be on its own line with indentation in the display. But if you try to actually do that in the actual code.
It completely destroys it.
Would it be fair to say that HTML still functions, just the style applied to it is now utter garbage.
It would not look like It will no longer look like this in any way, shape or form.
So it sounds like the introduction of the character data between elements the way he has done the way he has done his CSS that breaks is CSS.
Yeah, I mean. Let me see if I can find a good example like that is freaking crazy hairy. That is a crazy ass selector for CSS.
You know, okay, any element that's the descendant of a class of tag name that contains the title attribute Where that is a child… Oh, no, has. I'm sorry.
Has an element that's the child. I mean, and then you go up to here, this is one selector.
Mm-hmm.
That is crazily hairy. And so he has that everywhere.
And so when you start and see how it's doing display inlined and it has display block, he's already coded all that in. So if you try to manually change the HTML, to be a more useful thing, it will break completely. Like when I did it, like half this page didn't even appear and the rest of the stuff was just everywhere.
So he's done something against what I would call best practice.
So, yeah.
Well, he's trying to do something very, very complicated because fans earlier today, we spent an hour trying to reproduce it with correct nesting. So see, hey, look.
We're correctly nesting it. And when we do it, see, we were messing around with the CSS. So actually it looked better than that briefly.
Right.
But we were trying to do it correctly. And already you can see we're getting spans inside spans inside spans inside spans.
And we've only done a little bit. You know, we haven't done it. We were just doing that. And Dan's was quickly like, oh, good Lord.
You know, this is going to be really, really, really complicated.
You know, it reminds me?
So I can see why. He did that, but it makes it next to impossible for a person to fix it.
So moving along, did this thing Could you fix it?
Yeah.
Which is why… Dude, I'll show you what it did.
It would get to someplace and then it would stop. And I'll show you three screenshots. So this is what it looks like correctly, right? Now, again, I would prefer span this text until span was on one line.
Okay. This is what I got.
These are different stages of oh crap Here we go.
Let me show you this. So let me move that over.
So we've been working on it for a little bit. And let me resize that.
And so, hey, I got it on the same line. I got B, kill, B around it. I got I kill I around that. Awesome. And then I'm like, hey, why don't you put a break in here and put the call of Cthulhu right after the break?
I spent 45 minutes trying to get it to do that.
Now, if you handed me normal HTML and said do that, it would literally take five seconds.
But due to the structure of that HTML I showed you.
Mm-hmm.
It's next to impossible to figure it out. So I said, I kept trying again and again, like, look, I want Call of Cthulhu right after the BR.
And it worked on it and I got that. And I'm like, no.
No, now it's even worse. Now the text, the BR and the Call of Cthulhu aren't indented inside the paragraph.
You need to go back. And eventually I got to that mess.
And that's like crazy. Like anybody that knows HTML is looking at that's like.
How did that happen? And then kill body over on the right like that That's just nuts. And notice it's just blown up completely so that was the end result of me spending hours and hours and hours and hours and hours trying to get it to work. I got it like that far.
And then… So I'm going to, since I don't give up easily, I'm going to keep screwing around with it.
And see if I can get it. You know, this chat goes on and on for four hours Basically, of me getting it like foot or two forward and then three or four steps back And then a foot forward and three steps back because this is really hard.
I gave it a really hard problem. Now, in six months, it might very well go boot and it's done.
But it's kind of like, you know, I took somebody on their first day in the army and sent them off to ranger school.
You know? That's how difficult this was. Now, two things you should know.
I found this useful. There is an extension I read about that I installed. Here we go.
I would highly recommend this extension if you're going to play with cursor.
It's called…
Spec story. And it is only for cursor. It is not for VS Code.
Spec story is a cursor-specific extension And it allows you to export the the um the chat.
So because there's stuff in it, I'm like, oh yeah, that was cool. That worked. Oh, I liked what it said there. I didn't know that.
Currently, there is no way to export a chat. And SpecStory allows you to do that And the other thing it does that's really cool is jan's mentioned This rules folder, this rules file.
One of the things that will help Cursor do its job correctly for you is if you create a folder called rules and in it you put an MDC file Markdown code file is what that means.
And you include stuff about the project. Okay, this project does this. Here's this code styling I want.
Here's the contents of the folders. Here's project specific standards. Here is workflow and release rules.
Like HIPAA or things like that?
Here are references. No, no, no, no. This would be more like… When you compile the code, do this or when, you know, that sort of thing.
Oh, okay.
Or like get you know like hey we should review before merging into Git and stuff like that. And then down here Look at this. Final do's and don'ts Okay, here's the deal, guys.
I didn't write this file. Spec Story writes the file as you use it.
So as I'm going through the chat. It's noticing things I am saying and it is adding stuff to this file based on my orders in the chat. So I don't have to remember Like, oh man, what was that thing I told it that really helped? I need to remember that and remember to put it in the file.
It learned that. Well, now I've got this. I can copy and paste this to other projects.
So I think spec story, the free extension for Cursor. Could be very, very useful, not only in saving the chat.
Hopefully eventually they'll just add support for that in. But generating this file and you can see right here, cursor rules derived by spec story from the project AI interaction history.
So that's one of the things I wanted to point out to you guys. A, I want to point out it's not perfect.
And B, it's this extension will do two nice things, allow you to export the chat.
And… allow you to create that file. And you can see what my final response was right there to it.
After it did its last thing. It just completely destroyed it.
And I manually, several times, I manually had to undo To get it back to where I wanted.
You can say, please revert. And sometimes it did it correctly And sometimes it didn't go back far enough and I had to manually do it myself.
Large, roughly.
But there you go. So I just wanted to show you this because this was kind of me being unfair to it.
But, you know. It's something you should be aware of.
All right, we're almost done. I'm going to say one thing to you. I want to show you guys.
Since I mentioned it a million times, I have a million other examples. If we had another two hours.
I've got a million other examples that don't have to do with cursor at all. I didn't think it was going to take that long.
But I'm okay with it. Let me show you. A fin classic here that you guys will appreciate.
Here we go. This is how lazy. My son is. Now he's 16.
And I was once a 16-year-old boy. And I remember I was pretty lazy too.
But, you know, I can tell he was doing English homework.
Give me a sentence with capitulate. And it made a sentence with capitulate.
I want to talk to him and say, Finn, look. If you're going to cheat.
You shouldn't cheat. But if you're going to cheat, at least learn to write a good prompt.
That is a terrible prompt. You know, give me a sentence with the word capitulate in it.
And then notice what he does. Cerebral. Efface, facade, effrontery. And that's why I'm like, well, the boy's not going to be getting a good grade On his English test coming up, I have a feeling For that. And then we also had this example
And I want you to see this.
I think I misspelled it. Yep. I misspelled it one sec.
Check this out. And this actually is a cool thing you can do with chat gpt The boy is taking photographs of the assignments and uploading them to ChatGPT. And I love this. Do this.
God.
That's hilarious.
It's like he's the bully in school going up to the smart kid going, do this homework.
That's funny. Uh-oh.
Right? Isn't that hilarious? Yeah. So he's just taking a screenshot of the homework, uploading it and saying, do this.
And it's doing it. I was like. You know, I'd love to be able to say chat GPT, don't do Finn's homework, please.
Or at least make him do stuff. So I'm going to talk to him about this. I just noticed this today as I was going through all this stuff.
That he's doing that. So yeah. He's going to…
So there's websites that professors use to see if people had been using GPT and AI.
Yeah, but the problem is they suck. They really suck.
Really?
Everything I've ever read. So turn it in. Most colleges I've ever worked at allow you to use that when people turn in papers at Canvas.
It goes through turn it in. And turn it in has scanned basically the web And any academic archive it can get in books And of course, any paper that a professor submits, Turnitin gets a copy of.
And they go through and identify if the kid's plagiarized. And I've actually, it's caught stuff.
Right. The problem is the problem is When you take a paper that AI has generated and running through it, all of these do an extremely poor job of recognizing text that's been generated by AI.
So that's the problem. And of course, the other problem is when you are giving out homework assignments, right, where their kids are just supposed to fill it in they're not going to know if they're getting chat GPT or some other tool like that.
To do that. You know?
I was, you know, here he is doing the math homework
Is Finn at least reading the results of what he's Submitting? Or is he just printing it out and turning it in?
I'm going to take the fifth on that.
Okay. Okay.
But I did like this. How many moles contain 56 grams of sodium chloride?
And I like that he wrote, can you help me solve four without giving the answer?
Hmm.
So I was like, oh, cool. That's cool. And so it said, do these steps. And so when I talked to him, I'm going to say, that's cool.
I have no problem with you saying, please explain to me the steps to figure this out.
Okay.
And go from there. I have no problem with that. It's when he… takes a photo and says, do this, that I find very problematic.
So anyway, there you go.
It could be a learning teaching tool.
It's an excellent teaching tool. And I have examples. We're just not going to have time for me to get to.
Right.
Where I've pasted regex, complicated regexes, or I'll read about uh a command line, something somebody's done, and I'll paste it in chat GPT. Can you explain this to me?
What's going on with this? But again, we don't have time. I've got other examples, maybe in a future date, I can show you those because I've got Lots of examples of different stuff. We just don't have time.
So with that. Does anybody have any questions or comments before I go around and ask you guys?
What you found interesting and useful. Anybody got any questions?
Yes, sir.
Well, observation, Scott. When you had that block of that horrible block of code on the screen.
Yeah.
You know what the first thing popped into my mind was That's what Lisp looks like if you don't editor that can operate can work on Lisp.
Sure. No, but I can imagine.
You ever seen Lisp in VI? It's gross.
Yeah. Yeah, yeah, yeah. Yeah.
Well, the name stands for lost in stupid parentheses that's back 50.
Yeah. Yep. Right.
But someday somebody will come up with an editor that can handle that crap.
Sure. I'm sure there are.
You're not the only person that that drives crazy. Yep.
Oh, sure. I mean, obfuscation of code is a long-standing fun thing to do and also a problem.
Right. Like I said, nobody wants to read other people's code.
Yeah. Oh, yeah.
You know, never want to do that, but you have to.
No, no. The obfuscated sea contest.
Right. Or Pearl is the one I always see as the obfuscated pearl contest.
Okay, it's probably the same day.
All looks obfuscated anyway, so I don't see what the point of that contest is, but…
People trying to make things look but ugly you know because it's fun i don't
It's fun. So let me go around, see real quick. You guys tell me like one thing you thought was interesting or useful out of this that you're going to take away. So I'll start with Tony. Tony C.
What did you find useful and or interesting? What's one thing you're going to take away from this?
That you liked? Tony, you there?
Your mic working? Nope. Okay, I'll come back to you. Raymond, how about you?
What did you find useful and or interesting? One thing.
This is just a second demonstration I've seen on uh an ai system.
And I just think it's fascinating. I did coding like 30 years ago.
It's like that mess that you were looking at there, it looked like of my early code that I tried to fix a couple years later why I went to to make a change and end up rewriting.
Sure. Yeah, yeah.
I find it really fascinating and I think it's absolutely amazing.
Oh, yeah. Yeah, we're living in amazing technical times, most definitely. Thank you.
Steve, how about you? What'd you find useful and or interesting?
Yeah.
The whole thing was interesting. I had this sense of deja vu. As the code gets more complicated you know we're solving the same problem again you know that we started off solving in Fortran You know, and now you got
Considerably more complex code But you still seem like you're always fighting the same problem.
You know, as a code gets more complicated, so does the busy work.
Sure.
Yep, absolutely.
When I cozy work or boilerplate or, you know.
That's interesting. Take care.
Yeah, absolutely. Cool. Thank you. Lee, how about you?
A whole damn thing's interesting. I've been using ChatGPT for a couple of years now.
And it saves me a heck of a lot of time, especially if I'm digging into some weird arcane firewall thing that I'm trying to restore backup well It helps a lot. I love it.
Yeah. Is this a tool, a cursor, a tool you might find useful on Curious?
Got it.
Unknown since I don't do that much actual coding. For me, it's easier to use chat GPT to write me a bash script to do this and copy and paste it. I don't Very seldom use a full ID.
Right. And plus, for the kinds of things you just said you're writing having a single, you don't need context.
Right. So in that case, yeah, absolutely. That makes total sense.
Right, right.
Grant, how about you?
I think it's interesting. I feel like it is an intern.
I feel like I have to stupvize it. Like I would a junior intern.
I'm also intrigued by some of the comments we had early on.
Where other people are equally displeased with the product of some generative LLMs And so I'm not alone.
In some of my opinions, that's nice. I think it has potential.
I still am very weary. Of how LLMs are being misused slash abused.
No, that's true for any tool, of course.
Absolutely. I think it is interesting.
Has some potential. I'm still going to stare at it sideways with eight hairy eyeballs.
That's fair. Fair enough. Okay, cool. Carrie, how about you?
Carrie or Gary? Silent, Carrie.
Carrie, Carrie. Carrie Shu. Oh, silent care. Okay. Wayne, how about you?
I find it all very interesting. Thank you for the presentation.
I've been using… gpt for quite a while now I find it immensely helpful. I do bash scripting and a little bit of Lua.
And it's very helpful. It rarely gives me exactly what I'm looking for.
But it points me kind of in a direction that I can then go through and get it.
Yeah.
Oh, God, yes. I agree. Oh, yeah.
Working correctly the way I want it. And uh It also helps me with things like, oh, I don't know, FFM pig uh options and that kind of stuff because I cannot remember all of that stuff.
No one.
But… One thing is interesting about it is it can give you answers that sound exactly right and they're completely wrong.
Oh, yeah. Oh, yeah.
So they do that. And that's kind of fun to play with.
Oh, yeah. That's fortunately why, you know, if you're working on a bash script or a web page, right, you immediately go, hey, this didn't do it.
Yeah. Yeah, exactly. But all in all, I think it's really uh it's really up and coming. It's going to be a very powerful tool. And I just hope it doesn't take over the world.
I doubt it. We'll see.
One quick comment, Scott. I will tell you the most fun I had with ChatGPT is writing a DOS batch file.
Oh, really? Yeah.
Yeah, because it actually worked. Bye.
Yes. Yeah. It actually worked. Okay. Just sex, religion, and politics. Keep that out of it and that'll make your life much simpler.
Excellent. Yeah, now one other thing we didn't, we kind of talked about it's really good at grunt work.
Yeah.
So if it's written a script for me, I can go, hey, could you put comments in the script to describe what's going on? And it does that. I'm like, perfect.
I want to sit there and deal with that crap. So that's good.
That's wonderful. Yeah.
David, how about you? What did you find useful or interesting?
Exactly.
David, can't hear you. No, he's not muted, but I can't hear him.
He's not muted.
This is Stan. My sound has been cutting in and out the last 20 minutes.
Okay, David, I'll come back to you. Let me go to Randy. Randy, how about you? What did you find useful and or interesting?
No.
Randy? Okay. Ron?
Still muted.
We're on BC. How about you?
No? Okay. And Raymond, how about you?
Went to the bathroom.
Ron wants you to check chat.
Oh, okay. Let me read what he wrote. Ron wrote, I'm truly impressed. I'm really impressed.
I use ChatGPT fairly frequently for SQL, Bash, React. Material node.
It writes better code than many most programmers. It's cleanly formatted. Comments are meaningful. It traps signals in Bash without asking it to.
99% of bash programmers don't do that. 99% of the time.
There you go. Cool. All good points. Gary, I don't think I got to you. How about you, Gary?
Yeah.
Ron had excellent comments there. I really enjoyed your trying to break that extremely long constant line into a nice staggered set of stanzas.
Good.
No, I never worked it. But the most useful thing was when you got to the sign up and price list. So now I see what the fee versus the $20 is and eventually maybe I'll get good enough and gung-ho enough that I'll move up to the $40. But yeah, at least right now I know what I can do and learn for free.
Awesome. That's awesome. And Stan, I think you're the last one, unless I made a mistake.
As I was saying, my sound has been cutting in and out As I go along. And I'd just like to Say that I really appreciate that.
Your mention of science fiction because science fiction has been described as how we've been think we're going to deal with technology.
Right, right.
And so I'm putting on my tinfoil hat here now. Along with everybody, a lot of people.
Yeah.
But it's been really great. As always.
Good.
You always present 150% more than I expect. You said eight things. You got to, I think, about three of them.
Thank you.
And that's pretty good because we didn't really cover them. And thank you.
I know. Yeah. I was not intending for Cursor to take up the entire time. In fact.
Hey, we need an uncle.
It wasn't until yesterday, Janz and I were talking, I'm like, you know what Why don't we put cursor at the beginning and talk about that first?
And it kind of turned into the whole thing, which is fine.
It's great. It's great.
Because we got a lot of stuff in. It's a cool tool. It's good to know about. We covered a lot of stuff, so I'm happy.
It's great. As always, 150% is what you provide us every time.
I'm very sorry.
Audio check.
Thanks. I think I got everybody, right? Nobody's left.
Audio chat.
Yeah.
Oh. Sure.
Hey, we can hear you. Scott, I have a comment for you before you get off, but go ahead and whoever got their audio working, go.
I think it was David.
It's David. So my comment isn't so much on cursors, but just AI in general.
I went on my way to see if I could stump AI over the last year.
And I was impressed on just a couple of things that got right.
Confirmed things I knew it would fail failed miserably because it should There just wasn't enough examples on the internet for it to master the topic. I was trying to trip it up with.
Yep. Yep.
That was not surprising. But a friend of mine suggested that I check out another AI called Gawk.
Rock, G-R-O-K. So I played with that. But the topic wasn't for me to write code.
Yeah.
I was shopping for a new toaster oven for the kitchen.
And it did comparison shopping for me by asking feature sets and price range.
Right.
And that was much easier for me to three competitors to what I wanted to buy and why I might buy them instead.
Right.
So I'm finding useful in AI, but it's not technical it's It's a shopping assistant.
Oh, and that's fine. And right. I mean, it's not just for technical stuff. I had a bunch of examples that weren't technical.
But absolutely. One thing you guys should just know, yes, there is an AI competitor to chat GPT and Claude and Anthropic called Grok. However, this may or may not make you want to use it more. It's owned by Elon Musk.
So… I'm not using it.
Nor am I buying a Tesla. So, you know, and you may or may not care about that, but you should at least know that.
So anyway, thanks, David. That's a really good point. It doesn't have to be technical to be useful.
I think I'm done.
Yeah.
Fantastic. Wow. You've certainly covered a lot of stuff. The wonderful thing is since, as you said.
You only use three of your eight things Which means items four or five and six will be next month's presentation.
Yeah, yeah. No, I had a lot more. I have like 50 and I was kind of going to pick and choose out of the categories I had for it.
But I had command line examples, regex examples, one called I'm feeling lazy where I'm like, I could look this up, but you just do it.
Web development, Unix. Where I was asking a question about command line stuff, tech questions
Are people using this to pick stocks and things like that in economic or In the stock market?
I mean, I don't see why not if it was tuned to help you with that.
I would certainly hope that
But, you know, I don't know how I have to feel pretty safe if you were going to base your financial movements on that.
Don't invest more than you're willing to lose.
Yeah, yeah.
Yep. Yep.
And sanity check everything that comes out of it.
Absolutely.
I suggest a bookend.
You talk to an investment professional Check them against their performance against the S&P over time.
95% will not do that well.
And from what i've read. Yeah, from what I've read to buy index funds and stick with that. And that's the best thing you can do but
Yep, that's exactly right.
All right, gentlemen, I'm going to head. Thank you very much.
Okay.
Talk to you guys soon. All right. Bye.
Thanks, everyone. Bye bye.
Thank you very, very much, Scott. All right. We'll see you next month. Do you have a couple of quick announcements here? First off.
Next week on uh thursday We expect to have Robert Sutek.
Doing the presentation on using dub To submit stuff into the Google platform.
So we'll confirm that and hopefully it'll be up tomorrow or Friday.
With an abstract, but look for D sub on the Google platform by Robert Sittick next to it.
Next week. Next month at this meeting. We may have bash variable difficulties as a basic tutorial. We may hear from Ed Howland, a longtime member Possibly. And possibly We also next month may hear… from somebody who has been a Linux user
And migrated back over. He's both in linux and BSD, but he really kind of loved bd really has been trying to use that for a number of years now.
Not so much on Linux. Of course, at work, they keep dragging them into microsoft No, he went out, bought some new hardware and he's putting Linux on it so It'll kind of be a talk maybe of Here's what I'm experiencing coming back to Linux. I forgot. Works this way. I forgot this command is needed for that. I forgot that.
So it'll kind of be an interesting way of remembering or discovering how to get back into Linux.
So those are the thoughts that we're having on what to do next month.
I know I promised a general Q&A here at the end, but we are really running long on time.
So I'm not saying don't ask any questions, but I'm asking How many people think they have a question they want to ask?
Please, write a book in and then continue.
Oh, okay. Well, I like to have the questions on the recording.
I know you would. I don't.
Shame on you. Okay. Book end. Okay. This is Wednesday.
March the 11th, 2025, this was the general fluid meeting our presentation tonight was Scott Graneman doing surprising things that he has done with chat gpt And our tutorial on the front was Grant Taylor.
Doing how to add domains into CertBot. Thank you all for coming and that's concludes our meeting tonight.