Let me start the recording.
This meeting is being recorded.
Ouch.
That's funny how your voice changes when you do that, man. How do you do that?
I'm good.
Better than that.
All right, folks, this is the October meeting of the St. Louis Unix Users Group, October 9th.
We're starting here.
A few seconds. Sure.
Okay, can you see my awesome screen?
Awesome screen.
Yes, you're on the screen, although it's way too small to read anything.
Oh, that's good. That's good.
Bring out your, that way you don't have to see anything.
Oh.
Save you the trouble, right?
Right.
And our first speaker tonight.
Well, it was a ice cream, vulnerability management.
Our first speaker tonight is Tony Zapparopoulos, going to be talking to us about security and artificial intelligence.
Tony, the floor is yours.
Right.
So I was, you know, I try to keep up with
the crazy things going on.
And so one of the things that I like to do is I like to ask
different AI engines
to help me in doing my jobs which is
cybersecurity for various clients.
The drone remain nameless.
So, okay. So what I did was i
ask AI to create me
a outline for a presentation.
So this is the outline it gave me.
And then I added a few things, of course.
So, okay, first thing it said was
overview of cybersecurity challenges. All right.
Well, as you know, we got every tool that
it's created.
will be used for us and against us.
So the generative AI is being used by
the hackers.
to improve their phishing attacks.
So all of your uh future
Well, not all of, but many future fishing
It's going to look much better.
than it used to look.
Okay, that's basically what I've been saying. Large language models.
So I found this interesting little uh
I don't know if you guys can see this, though. I know…
probably too small, yeah.
I don't know how bigger I can make it.
Okay.
Hey, Tony, go full screen on your uh
Yeah. Okay.
And then, you know, go full screen there and then view zoom page width
Okay, well…
It got confused. It's confused.
All right, let me try to see if I can backtrack.
Didn't like that.
Let me do it one step at a time here.
How's that? Doesn't like that.
There we go. No.
I need to have like a single page with third is
A little bit smaller.
Anyway.
So this is this
image was trying to explain
how the threat actors
create with a small investment
they're like inundating our
our email boxes.
Yeah, this is not going to work.
Maybe I can just go over it.
Maybe that's best.
Where are we here?
I'm going to try to do something
Anyways.
What?
Crazy word.
Part of the problem is it's too large and word doesn't really work too well
Yeah. Got to make it too much.
So if I make it smaller, then it's no you, it's no good.
So are we doing a ping attack now?
It's a beautiful thing.
Yes, dive, dive.
Well, that's a little bit better anyway.
Dive, dive, dive.
Okay.
So, okay, first of all.
Right, click on the…
A hacker creates a
a fake email using a
You know, every now and then I read
some kind of a
press release by the fbi or
Yeah.
the various companies uh
government agency saying
We took down, you know, 20 domains again
That's what they're doing because the hackers are constantly creating these new fake domains.
government agencies pay
Your threat actor register domain.
So, you know, you're always
receiving these great uh
Late invoice. Yeah, you must pay this invoice.
So he spends $20 and he sends out
millions of emails.
And as soon as you click on it.
Anyway, I think, did you guys understand all this or
Do I really need to go over it?
I think it would be helpful for a lot of people if they haven't seen all the vocabulary and
Okay. Let me try to find the other side of it then.
Oracle 365 is…
Oracle, that's Oracle's oracle
What's 0365 mean?
Office 365.
office. So that's like Microsoft.
Yes.
Okay.
I was trying to think of a standard like
Yeah.
Yeah, that's your first mistake.
Well, it's true, but you know.
I know what you guys are saying and i'm not saying
Well, there's the biggest problem.
on that but on that
The rest of the world is, unfortunately.
They haven't gotten the message yet.
I get it. We all here get it.
But now I know what the O365 credential means.
Yes.
So…
I don't know if I can actually because…
Maybe if you're on the image.
I don't know. I need to just make it smaller
And then to like paint or something
Yeah, that's a good point.
Oh, I have…
Better than paint. Gimp.
First, let's see if it works.
Oh, here it is.
I don't know if you guys can see that if it's large enough, I can make it larger.
I can read it, but if you just describe what each of the bubbles is doing, I think people
Let me do like one quick…
follow along.
size increase
It's not too hard.
And it shouldn't destroy it too badly.
Maybe not.
I have to do other modifications. All right, we'll just go back to this.
Anyway, all right so
So the problem here is…
the hacker not only has to
He's trying to get paid.
he's…
creating a whole bunch of things
So he creates like a fake email
He accesses your email
It copies your invoices and he manipulates them
So that manipulates an invoice so that way it looks like
an invoice that you've used in the past.
So the fake invoices and the cfo
to prove
to the wire transfer department, to his transfer.
Which is an international bank it's
So there's all kinds of red flags here, but
Because it looks similar to the previous invoice.
And, you know, the fake cfo
responded and said, yes, go ahead and pay it.
Even though…
you know, maybe the
The CFO, the email is very similar, but it's not quite right
to do the real CFO, let's say
And if you're not carefully looking at all your emails
If you're very busy.
And you just want to get done in your eight-hour workday
that that's when this stuff works.
Unfortunately.
And then, you know, and then the then you're screwed basically. And I mean, we're talking millions of dollars.
then that's like small transactions.
And a lot of times the companies that get screwed the most
The small businesses that have
overseas business.
Because it's very hard for them
to understand, you know, unless they unless they slow everything down
Which sometimes they don't want to.
you know they're like, well, we get things done quick because we're a small business.
Well, sometimes that's not a good idea.
Anyway.
That's just one example.
Well, the other thing about small businesses is even when they understand, they just don't have the resources to check everything.
Yeah, that's true.
And one thing to think about if you're in business
even if like I'm a sole proprietor, I'm a consultant
If I accept electronic payments from people.
almost anything you can do electronically can be faked or hijacked.
Yes.
And so I end up doing 200 hours of work for somebody and
use up my retainer and I say, okay, guys, you need to repay me.
and somebody hijacks the payment.
Right, right.
that money is in…
You know, out of Mongolia somewhere.
I'm not paid. One suggestion for people who run small businesses here
you can buy basically cybercrime insurance as part of your standard business policy.
you might want to go out and look at what it would cost.
Because even if you're not in the business of transferring money for other people.
you can still get zapped by this stuff.
Yes, unfortunately.
And the reason that I bring this up is because
the invoices and the
What used to happen is you could see a phishing email and say, oh, well.
hapta's email is misspelled.
Well, with the advent of AI,
there's a lot of the email is not going to be misspelled.
So it's not going to be as easy as
to tell
This is a fake company.
This is a fake email.
So you have to create better
safeguards to
make sure that you don't get hacked.
with this attack.
Okay.
So we got to do proactive things.
So, you know, besides
Going forward with this crazy…
Outline. Let me go back to my browser here.
So this is
the AI chat thing that I create, you.com i've
I signed up with you.com.
I don't really, I didn't get into the chat GPT. The reason
I do you.com is because…
they tell you exactly all the links
that it gets the information from
Plus, I'm sure you could do that with ChatGPT. I don't know what you can do with ChatGPT.
It doesn't matter to me.
If you notice, I have this
Vulnerability manager section which i created
You can create your own little
subheading instead of the smart
While each one of these
like genius
allows you to do more sophisticated
It could debug code.
Some of them like research
can create code
It just becomes more comp, you know, actually you can use the GPT-4 engine as well.
if you really if you want to.
But if interestingly.
So look at this, for example. Windows 7.
So what happens is
I created this section.
Basically, I can put anything in here.
And it wants more sophisticated, more information but
So if I put like a
a vulnerability in here, it will tell me more about it
So if you put any kind of a
like a current that's hacking here.
it looks up the vulnerability
Specifically to that, I don't have to
explain it anymore
Of course, it's going to say Windows 7.
obsolete.
Can you tell me what you're looking for, how to
I'm just being too broad with it.
That's the thing with AI.
It doesn't like broad questions.
I don't know how much you guys have played with it.
How much have you…
Well, it doesn't know what you're saying. The problem is…
Yeah.
But there was one great one um
if you ask it
If it takes two hours to dry five shirts on a line.
How long will it take to dry 10 shirts? And the answer is two hours because they're drawing on a line.
And it will tell you, it will multiply the time by the number of shirts.
Right.
It has no semantic it's not
AI. This is not generative. It's regurgitative.
All it is is a big freaking probability table of word order.
Yeah, that's…
True, but…
So take a look at this, okay?
All right. So I'm going to take it down to my level.
So I have a…
insurance company
That's a ball.
So I'm going to tell it to create a minimum outline
for a security policy.
or an insurance company and
keeping
Make sure.
the compliance for it or insurance industry.
And I, you know, I don't really know that much about insurance industries.
I mean, maybe it will ask me
Or it won't ask me.
But maybe I have to figure out and tell it.
This is the way I use it.
So it'll create an initial outline and then maybe it doesn't do it right or maybe
It gives me enough information so then
I can give it more…
questions and decide
how we're going to create the security policy for the
the insurance industry clients.
So one aspect I didn't tell it is how many people there are.
how many um
So, of course, it's going to do things like
See, it's spitting out everything and anything.
So I have to then obviously look through this and make sure that there's
This is what I want.
And sometimes what i
look for then, obviously, is a…
what regulation
What regulatory body is…
I misspelled that, but it sometimes figures it out.
You know, the thing is, is I agree with you it's it's
The way I'm using it is a fancy search engine.
But it is, if you're not careful, it will regurgitate just a bunch of words back at you. That's correct.
Well, and the thing is, what it regurgitates is based on the words that you give it.
Right.
So your words are going to be the starting point for whatever it pukes back.
But I'm…
So that's how you guide it.
is by choosing the words.
Which one of the things that makes it
much more dangerous with fishing
is that in the past, you'd get all of the
Right.
the language oddities, Slavic languages don't have articles.
Chinese people don't get plurals because there's no way to conjugate words in Chinese languages.
So you can see when somebody sends you many foots
or they leave the out of every third sentence.
Right, right.
It's obvious it's the obvious
It was garbage. ChatGPT
The grammar is obvious.
allows these, well, and the mistakes tell you where the fishing came from
But now the difficult thing is because it's starting with, it doesn't know what anything means. It starts out with a table
of words
it can generate grammatically correct phishing
from incorrect grammar in the input.
So it actually masks a lot of the mistakes they would have made.
Yeah, and they're different mistakes.
there will they're still going to be
some semantical issues but
They're not going to be the grammar type issues.
So anyway, so…
So this is how i build
So if I'm supposed to be building a security policy for an insurance company.
That is a brand new client of mine.
Now I have to start reading a bunch of compliance
you know, besides the HIPAA, I know HIPAA.
Yeah, I don't know why I picked HIPAA, but I guess if you're in the health insurance
Anyway.
So yeah, I mean, it also, of course, depends on what kind of insurance
So that might be something that I have to tell her.
I'm just trying to…
give an example here, an off-the-cuff example.
where we are here
So, of course.
you know the the some of the more obvious, you know, AI is
automated
programming
that is driven by how you tell it.
Or are you creating a
program at a program that
that needs to be
developed you know like
Palo Alto, for example, is creating AI into their systems.
So they're developing a way so that you can ask
the Palo Alto machine
Without understanding
cybersecurity terminology. You can just ask it.
What are all the…
Windows…
connections right now.
You don't have to know what port it is.
You don't have to know anything, but you can just
give it like a question like that.
They're building those kinds of things.
you do a lot of the products these days.
So that is kind of interesting. It's kind of nice, I guess.
and but that that
That's just like improving the product with
some new programming it's not
a huge upgrade of a huge upgrade
one of the upgrades the predictive
Stop is helpful.
If they work on it well enough.
where the…
The AI can actually predict better
Depending on what you've got
But that all depends on
the positive and the negative so if you're
You have to train it. It's all about the training.
Just like machine learning.
is all about the training.
You have to tell that this is a good good
network traffic
This is the bad network traffic. You're not going to get away from that.
that that interaction.
We're dealing with that with one of our clients there
we're trying to create an environment where only
the good network traffic is in the network.
So obviously we have to know what is good.
So then if they come up with a new program
that they're going to use tomorrow
Well, obviously that's bad until we tell it that that's
Good.
There's no way to get around
that massive, like…
Constant feedback.
But it is possible and it is happening.
Where now in the future, if a
malware gets installed.
And it tries to go onto the network.
to grab its stuff from
the command and control servers
It won't work.
Because that's not good traffic.
So you have to find the software out there that they're building them all if they haven't built them already.
I mean…
The other thing that I like to do is i like to
pay attention to the stock market because
If a company is doing well
It has money and it develops…
puts money into R&D.
If a company is not doing well.
It doesn't have money. And it's
going down the wrong end here.
Anyway…
So…
I mean, I don't really have…
Besides the few things…
652. How long have I been talking?
Too long?
20 minutes. 25 minutes.
Yeah, okay, that's probably enough. I mean, I don't really have…
The only other thing that I would like to say is that
the ethical considerations is obviously
really important and even
Like who decides who decides
the AI and how the AI is going to be used
You have to be able to test the AI to make sure
that it's doing what it's supposed to be doing.
And it's transparent enough.
I wouldn't it's hard. That's why i kind of picked
the AIs that I picked because they're more transparent than the other guys.
That doesn't mean that they're
you know completely transparent i doubt
If that's even possible.
I think one interesting thing
about these ai things is
these engines is that they don't really know if you if you
Watch some of the developers
And they're…
And when they discuss what's going on in their software
They don't really know what's happening.
And by that i mean
when a new…
something new happens in their software
They don't exactly know
how that works.
Because it's starting to
It's just too large for any one person.
just too much to keep track of.
That's why I think we need to be more focused on ethical
considerations then considerations
just making sure let's get
Let's get whatever we want out of AI as soon as possible.
Well, someday we'll have AI. We don't. That's probably the problem.
Yeah, that's true.
People are treating the current generation of stuff as if it were AI because it sounds like AI.
Yeah.
And that…
And it sounds like a duck, but it doesn't walk like a duck.
The funny thing, too, is that the people who called it ai was
Many, many years ago
And it's just now, for whatever reason, because of chat gpt
everybody's glommed onto that marketing term.
Yeah, and the vast majority of them
have no clue.
Yes, yes.
Anyway.
Yeah, I agree.
Well, it's interesting. The place my current client
They've said no one can use AI for anything. It's illegal to use AI, period.
And so they've disabled duck duck go
What?
enabled Google.
That's…
Really?
Because DuckDuckGo has a separate ai product
Google's got their AI built into it. So you can have Google do whatever you want to.
Yeah.
So what they've done is put everyone onto the system that
promotes the AI.
and deny people access to the system
that doesn't use the AIs.
Most people have no flipping idea
what they're looking at.
Yeah, they're not really sure what's actually happening there.
And if you told them they have no flipping idea, they'd get all upset.
Right.
you've insulted them.
Am I right?
Well, you might say it more politely.
The answer is they have no flipping idea.
Yeah.
Well, I think I overstepped my time here, even though
Anybody has any other questions or
I really just wanted to give a quick…
overview of
some of the things I've been working on but
I knew it wasn't going to take that long, really.
I just have one thing to say.
have been using AI search engines, about five of them, which I just listed in the chat.
And I've noticed that it is
kind of a good idea if you're asking questions and expecting a decent answer to maybe confirm your question with one or more
different of the AI engines just to see uh
you know how the results are.
Yes.
I just tried the shirt on the clothesline idea with them, and all five of those gave reasonable answers
They were accurate and they were accurate
And it did say that the drying time should be the same for two shirts as
one shirt so one shirt
Okay, so they've advanced.
Yeah.
Perhaps they've made some changes. I think it's learning and i think it's uh
It's kind of…
Coming along.
Yeah, that's the other thing that I would like to mention, that's a good point.
that even if you don't like
or are unhappy with AI today.
I would keep an eye on it because…
Because you don't have a choice.
Well, that's one thing, but things are changing fast.
So it does learn that there were
they're improving the algorithms.
It's almost like you have to figure out
how to best use it.
Correctly.
Not.
Which is the problem because most people have no bloody idea how to.
Well, but you got to start playing with it.
I had…
Yep.
Don't leave me jokes like that, man. Please. That's not fair.
Yeah, well…
That was my last word.
Playing with yourself. No, the…
No.
That's the…
The problem is that because there are no guardrails
And because nobody knows how to apply the guardrails yet.
A lot of people are going to cause a lot of harm before anyone
really takes the time to create the guardrails that we need.
Well, but that's like normal with
what happens with the craziness
of Microsoft back when they were doing their thing
And they were just kind of running with stuff.
This is very typical of us.
They still are.
We always take the technology and run with it and then we
It's like we're running with scissors.
I think you should, I think how fast you can get your feedback is how determines how much you should
use AI, right? I think developers
should use as much AI as possible because you get your feedback immediately from the compiler.
You know what I mean? Or from just testing it out, from just running your app.
So I think developers shouldn't use as much AI as possible because if the AI gives you a wrong answer, you'll find out immediately.
If you're like a lawyer and you get some stuff from the AI and you won't
you won't figure out whether it was right or not until you're in front of a judge. Well, then you shouldn't use AI like at all, right? Because that would be
Right.
That would be really bad. Your feedback loop is way too long.
And so I think it just depends on how fast your feedback loop is as to whether you should trust AI or not. And then I guess also the consequences of getting it wrong.
But once again, for developers, that's extremely low, right? If it's wrong, you just revert the commit and try again.
So that's my take on it. And I do agree, it's hard to trust an AI that doesn't give you its sources. That's why I like…
Gemini and Bing and uh
Yeah, they both give sources. So those are the ones that I like. I don't like using ChatGPT because it doesn't give sources, or at least it didn't last time I used it.
I think some people say that it does, but then I guess maybe you have to pay for that. Who knows? I don't know.
I think it does now. And perplexity does indeed.
Okay.
Good. I'm glad they caught up to doing that. That's awesome.
Well, I'm glad I at least learned a few other engines to try.
This is Stan. My question is.
Do your customers understand these policies that you have them create?
The written policies. Do you find they have a difficulty understanding it?
All right.
Well…
Or do you have to write it down to a fourth grade level?
Yes.
No, you…
Yeah, we…
we do we do you know what I've done is I've created two different policies
One for the users.
And one for the IT people.
So then I can go into more detail
I don't have to go into
dumb proofing things.
But I do make it simpler for the users.
So I create like two versions of it.
Yes.
Thank you.
Because the reality is that the users don't really need to know what you're doing with the network.
or the email server or whatever else.
server or whatever else.
They don't really care about any of that stuff.
Thanks for that idea.
They just wanted to work.
Thanks for that idea.
Sure. No problem.
Oh.
I think I appreciated that 7 p.m, so…
Hmm.
It's all good.
Further questions.
If not…
Thank you very much. That was Tony Zafferopoulos.
Tony's a frequent speaker for us and uh
principal at uh principal
Excuse me, can't talk.
The website is out there on the calendar entry so
You can.
Yeah, don't worry about it. Just fixvirus.com. It doesn't matter.
I'm sure, I think you've got my link someplace and
In the presentation.
Oops.
that was sent.
It's in the calendar, it's in the meetup, and I believe it's also on the webpage.
Right. Yeah, that's good. That's all everybody needs.
Right.
All right. Let's see. Tony, you're going to stay with us for a little while or are you going to be heading off?
Just a few minutes. I have to
I have to get going, but go ahead.
Okay. So yeah, if anybody thinks of anything else, they speak up.
This is the gooey middle of our meeting, our general meeting on the second Wednesday of the month.
always has this gooey middle format. We have a speaker on the front tutorial. That was Tony tonight.
And then the middle section, which has uh
Q&A.
And our announcements also does the introductions. I'm Gary Meyer. I'm our emcee for tonight and the president of this group.
Our vice president is Stan Reichert.
He's the guy making all the buttons push there and making the right screen come up.
Our treasurer is Lee Lamert, who keeps all of our money in
place and also is the host of the system that uh
runs our web servers, our mail servers
And so we really appreciate all the work he does. And he's also pushing buttons here.
Secretary is Ken Johnson.
We need a chat monitor for just about every one of these meetings, but if anybody would like to just keep an eye on the chat, there's some people who feel more comfortable
typing things in rather than saying something. So if somebody sees something in chat that doesn't get answered uh
go ahead and be our monitor, speak up on the speaker and uh
And you're on the microphone and just let us know that there's something in chat that would be
I've got the chat for now, Lee.
Great. Fantastic. Thank you.
So that was uh
Grant.
That's great. Thank you.
Okay, topic wrangler. That's somebody who's working not during the meetings necessarily, but just throughout the month, looking for future speakers.
So figuring out what topics would be good or what people would be good to speak on some topics.
So, and of course the last one is
those speakers themselves. So anybody who wants to help us fill with some of those roles, we appreciate it.
Okay, announcements eight days from now, i.e. next week on Thursday.
is the St. Louis Lug Meeting, also called scl linux.
It's similar to this meeting.
And that it's a speaker format. There's a predetermined talk, an abstract title
And, uh.
that's already out there. It's on the calendar.
And on Meetup, and I don't know if it's on the homepage for STL Linux yet but uh
If you come and join us next Thursday.
The topic is going to be
linters and other code review tools.
And our speaker will be James Confroy.
Okay, five days later, the fourth Tuesday.
is the new Linux meeting. New Linux meeting
does not have a set speaker, does not have a
predetermined topic. It's basically whoever comes in and says they are the newest person to be using Linux, least experienced person.
And if you claim that title, you get to ask the question.
And everybody else tries to answer for it.
It's a great place for people who are relatively new to Linux.
It's also a great place for people who are familiar with Linux because it's amazing. Sometimes discussions we get in
There are people who've been running Linux for years and they go, I didn't know it could do that. Oh, that's
easier way than the way I've done it except
And of course, it was
more uh more
experienced users are the ones who come up with those good answers so
So everybody should come. A reminder
The WN10 long-term support
has ended. It ended back at the end of June.
We bring that up because
our bach server.
uh clock machine
is due for an upgrade. You need to get off Debian 10 and hopefully move up to 12.
So putting, we already have some volunteers, but you join that team of volunteers
to work on doing that upgrade.
So go to that website there or that mail
there and let us know you're interested in helping out with that team.
Thank you.
Let's see. The new mirror.
SLUG website being built by Sean.
We've got a couple presentations on it.
Sean, you've got anything you want to say about it tonight?
Alrighty.
I think that's great. We'll look at that later.
Yeah, at some point, Stan asked me to just make some changes to it. And so I have those ready to show if we want to do that maybe at the end or something, but nothing else.
And later, also, when we're done with our main presentation night, of course, there'll be questions and answers for
for that presentation, but we can also go back to just kind of general Q&A as well.
So let's see. Anybody have any other announcements, things that are coming up, things that are on the calendar, things that we should all know about?
I'd like to note that we have somebody that's in the chat room showing us
Signed on as RS.
Would that be Richard Stallman or is that somebody else?
Best odds, it's not, Richard.
Okay.
It's worth driving.
I don't think he'd be a system like Jim.
Richard's always kind of secretive, though. He would just go by his initials.
Okay, so…
Okay.
Let's see if anybody
really needs to get in an early cue or question call for help because they had to leave later
now would be a good time to
ask a question. So you can think about that as a
we show our other affiliated groups there. There's the log, the new Linux group, the Slack meeting
is the St. Louis Area Computer Club.
We always consider it to be more hardware oriented. We will even talk about how to get your Microsoft stuff running on the computer.
a lot more oriented towards the
the architecture that the architecture
hardware. And I find it amazing because I was sure when the world
hit with COVID, we started doing everything
online that we were going to just have a terrible time trying to keep
keep the Slack group going because how can we talk about hardware
Not something we've got on the screen.
It's been amazing. Stan and philanth
And the other guys who were always there keeping this running
It's amazing how they can actually talk through
what the hardware is or what the possibilities are so
You're all welcome to come to that.
There's a graphical calendar, actually Google calendar that we maintain.
And we, of course, list our own stuff on it.
Many years ago, we started listing just any
techie type thing that might interest our clientele or our members
that happens in St. Louis and we started putting that on there.
And by the time that COVID hit, we were starting to
already put on remote things, things from other cities, even other countries
Because they were the type of stuff we would all be interested in, again, what would interest our members so
That's what our calendar consists of.
Please go to it if you've got any suggestions on what should be on it, send them email to editor at slew.org. If you see errors.
Send an email to editor at sloop.org and we'll try and get it straightened out.
And Slug sponsored events are highlighted in red.
So those are the ones that we are actually running.
Okay.
Okay, our members ask questions and sometimes provide answers yep
That's about the way it works.
we uh
You know, you can sign up for…
or announce lists.
That's a very limited traffic, usually comes out usually only about twice a month right now, sometimes three times.
But it basically just usually gives a brief announcement of things like this meeting
maybe some other special events coming up.
The discuss lists more for a general discussion there's no
You don't have to get your posting approved. It just shows up out there.
And other people just suggest answers to it so
Again, it's not a whole high traffic, but it's amazing. Sometimes somebody will put out a question and they'll be
eight answers in a couple hours and other times nothing happens for a couple days so
Steering committee, if you like seeing sausage made, please come to the steering committee meeting. That's where we talk about
how we decide on what topics are good, who might be a possible speaker.
So, but anybody's welcome to come
Opinions are welcome.
Boeing.
Who was that?
Okay, the sysadmin list, that's the list of the people who are keeping the web server the
list server, the bail server, all that stuff running.
And so if you're volunteering to do some of that work, it shows you where the nuts and bolts are being done. So we'd love for more people to
hope on that.
And what's next?
Okay, we do record this meeting, the monthly general meeting with the two presenters
We record the STL Linux meeting, load meeting, which has the one presentation
And we keep those recordings in the archive. And so you can go to the
homepage and it's uh they're posted out there you can click on click on it we've also started adding them to youtube
And even though those are our recordings.
There's that warning on there. When you do stuff like this, even though we may say, oh, okay, our recording is turned off or we'll edit that out. You got to remember, anything you say out here online, somebody else may be recording it as well. So we can't tell you what they're doing with their recording.
We try and post those recordings within a day or two, basically do it as soon as we have enough fingers and toes to get it done.
And as I said, it is listed on our website.
And only the general meeting and the lug meeting are currently meeting
regularly posted.
I'm going to call for help before we go on. Anybody who has a question
They can ask it now and hopefully
We'll come up with a question or we'll come up with an answer.
Anybody break something?
Anybody wonder if they broke something?
Oh, lots of things have been broken, but we're not going there.
Amen.
I'll just say I'm a Unix admin and I've spent the last week and a half dealing with a Windows problem.
Oh.
You have my sympathy.
Do you get to double your rate?
Yep.
Oh, boy.
Alrighty.
Salary.
Well, not hearing any questions, as I said, it's usually time after our main presentation to uh
continue on with some just general q a so
If you don't have anything now, maybe you'll have something at the end.
And that's
Yeah, we do try and ask the presenters for their
If they have slides or scripts, we'll try and post that in the archive.
And it'll be our presenter's choice whether to hold comments and questions to the end.
I'll ask him that in a moment.
and uh
With that, I guess we'll move on to our
presenter tonight so
We've got a separate screen for that.
Okay.
Nope, just any further questions? If none, introduce the next speaker, please.
Alrighty.
Hi, I'm Steve.
Our next speaker is Stephen Lumbark.
And Stephen's going to tell us about
control and he's going to be doing it in the bass shell.
So it's a good unix-y type topic for tonight. I like it.
So with that.
Repeat what you said. You broke up for a moment.
And he was desperate enough for a speaker that he called me last week and said, help, help.
How many, I mean.
Most of the people here
even if this is Unix, not the Linux group, do most people here use Linux?
Everyone unmute yourself. If you have questions or comments, just
Are you writing?
Give them to me. But to most people, I mean, most people, I mean, Lee, I know, but most of you use Linux, I guess.
Yeah, yeah, of course we use Linux. I've used Linux for years.
Well, not of course i i still know people that use all tricks. I know a few people that still use OpenVMS.
And then there's…
Well, my first one was HPUX, but that was
Yeah, well, that's one.
In the 90s.
So I guess most people use Linux. So bash is the shell that you've got.
By the way, Steve, I did mean to ask the question, do you want us to interrupt you with questions and comments?
Yeah, if you have questions, just ask.
Okay.
That's why I had everyone unmute themselves.
Bash is also available on MacOS.
Mac recently replaced Bash as their standard show with a thing called ZSH.
that is…
just enough different from Bash that nothing will work right.
Mm-hmm.
Steve, did you want your slides to be showing now?
Yeah, they should be. I shared the screen.
They're not.
Let me share the screen again.
Share screen. Check.
um as
as a mixed ZSH bash and KSH user
I've found moments.
How the hell? Well, at least you're not trying to use seashell too but
No, most basic things
command interaction works.
when you start piping things together, you might run into some differences and there are very much so some things
ZSH supports that Bash either doesn't or does something completely differently.
Yeah, and that's the the
The problem you get if you try and get onto ZSH is that
just enough of it is different than bash that things
The syntax is the same, but the semantics are entirely different.
still no sharing of slides.
Oh.
People, wait a minute. I did this before and it frigging worked. So…
Right now, we are seeing Steve has started sharing his screen, double click to enter full screen mode.
All I've got is a black screen.
I used to have a black screen as well.
We've got our black region.
Okay, well, let me stop sharing and I'll share it again.
Okay, so we click share the screen. We click
Select the window. We click entire screen
We click allow.
And you people should see…
a browser and a small copy of LibreOffice and my desktop manager.
black screen.
Nope.
Back screen.
Black screen.
There's a thing that says you are viewing apostrophe s screen
Lee, wasn't this working before?
It was working before, yes.
Yes.
Remember when I said, let me go first?
When it was working, that's when we
Share your screen.
Select window.
I got your picture.
Entire screen
Oh, wow.
So now it says I'm screen sharing.
There's a black screen.
And I see a little thing that shows my entire screen.
Yeah, it says you're viewing Steve's screen.
It said that and went away.
Well, what it shows me that I'm sharing is one desktop, but it shows the entire desktop.
So at this point.
If I click slideshow from the first slide.
Click. What?
What I see is
Is there an option to show your entire screen versus an
single application
That's what I did. I showed, I selected entire screen
Oh, interesting.
Okay.
I did what I did last time when Lee said, hey, I can see your entire screen.
I'm clicking screen share.
There's a dropdown. The bottom entry on it is entire
Screen. So I'm clicking that.
Well, that's not sharing anything.
If it's not.
Let me see or something.
And I click Allow.
if it's not.
Now, at that point, I get a dropdown that shows your screen sharing and it shows a picture of
A browser with a lizard and a ninja sword
We're not seeing any of that. If it's not too much trouble, it might be beneficial to just
leave the room and then come back. And sometimes that will get things working.
Hey, um.
I identified myself
I can strangle the fucking poltergeists. I mean, sometimes if enough of them die, the rest of them run off.
But I'm doing…
New share.
I wonder, I think you and i
Steve, I think you and I both have exactly the same name on the screen. I've just got Steve.
Yeah, that's what I typed.
Would one of you please rename? I'm wondering if
how do you rename?
That's causing…
You might have to read it.
Go up to the left-hand corner where your name is and click on that. It should allow you to
to rename the shell.
When it shows me I'm screen sharing.
The thing it shows me, let's see.
Do people see me sharing the screen now?
Nope.
Because it shows me that I'm sharing the screen.
Hmm.
the black screen.
Peace.
Okay, I'm going to exit this
dumbass thing and try and get back in and see if that helps. Bye.
use a different name, Shiv.
Use your last name.
Why don't you go ahead and change your name, Steve?
And if you
I don't i don't have…
When he says go in the upper left hand corner and do this, that, and the other thing.
I don't have that.
What I have found is my current screen layout
I see whoever's talking and above that little pictures or boxes with their names in it
When I hover over mine.
I get a little three dot that I can click and at the bottom of the three dot is rename.
Jam, bye.
No, I don't get that.
Ah, wait a minute.
I changed it for you.
Can somebody hear me say yes or no, please?
Yes.
Yes, no. Oh, never mind.
G.
Now, we…
It's like my test message. Please reply immediately if you do not receive this message.
I renamed.
I renamed myself.
Good. I myself, so it doesn't matter.
Share the screen.
Mm-hmm.
Select a window.
entire screen.
Oh, wow.
You sound like you're getting frustrated.
We can see something.
We see the stuff.
Here you go. All right.
Ask me why I don't use Zoom.
We know why.
Shit. Okay, so do people see a bunch of, do people see a slide now?
now you got to slide full screen.
Yes.
Yeah, absolutely.
Okay, so strangling poltergeist
I think about it now.
did the trick. You kill those little suckers and things get better. Oops.
So anyway…
If it was because you and I were using the same screen name.
I don't think so.
Meaning.
No.
It's…
Yeah, it shouldn't, but…
No, there's got…
I tried sharing the screen earlier.
And someone cut me off and Zoom didn't reinitialize whatever it was after that.
So anyway…
bash five came out a decade ago.
More.
if people are interested, one of the great things about the most recent version of Bash that's been out again for
decade is it has and people don't know this and they don't use it and it makes shell programming so much easier.
is it supports, among other things, variable interaction.
So I can store foo in a variable
and look at the variable whose name is food.
So if anyone wanted to, I could do something on
variables in
bash
part of my BSDM series.
But…
I think that would be interesting either later or a future presentation.
Yeah, it'll be a future presentation if people care about it but
One of the neat things about the board again shell
And realize Stallman wrote this, so it is a pun.
is job control. And that allows you to take jobs and have more than one of them running and actually manage them.
Now, I know we've all done the thing of foobar ampersand and hit return.
The problem is you do that enough times and keeping track of what you've got running can be a pain in the butt unless you know how to do this.
So…
a process can be managed as what Bash calls a job.
And the important thing about them
is notice I have a cat. The cat has been out of my office for the last 12 hours.
As I begin speaking, the cat walks into the office and starts making noise.
This is why we believe in Murphy.
But the cute thing about processes, you can manage them. The first thing you can do is background them.
Which takes it and it gives you back a command line while the job is running.
you can take something and say, okay, I don't want my command line anymore. I want to be back in that program that's running.
So you can take an individual
job that is running.
And you can foreground one out of 20 of them.
The other thing you can do, which is a lifesaver in some cases, you can stop them
without killing them. So if you had something that's about to run out of space and waste 10 hours, you can stop it.
extend a file system and restart it.
And not waste the last 10 hours.
So the ability to take something that might is about to puke
And fix the environment for it.
is a neat thing.
Now, you couldn't do much of this unless you could tell what jobs you've got.
So listing them and tracking whether they're successful, whether they failed.
Knowing which ones worked.
is another important thing. And it's reasonably straightforward
To…
to do this in shell code.
So you can have one thing that let's say you're doing your daily backups, it's not hard to have one thing that backgrounds eight different directories with CPIO pipe gzip.
Okay.
minus nine and the one big one gets XZ minus te or something
But then you can take each of them, check that they finished and validate the fact.
So looking at Bash, the Bash Man page
is incredibly detailed and incredibly
terse. If you're going to dive into this, be prepared to reread it 14 times to get exactly what Stallman meant.
But again, job control
is in bash's view, the ability to take something, suspend it, resume it.
And do that interactively.
The kernel part of that is process management.
Now, if you start up a single user copy of the kernel.
if you, you know, the old hack is the rescue system
is you set your init equal to bin bash.
okay, you're the running process. You're not going to have very good job control.
So there's some situations in Linux where it doesn't support
the job control.
Because it isn't up and running fully.
So you can't
you can't use some of this stuff in like single user mode.
If you write scripts that use this, be prepared and you want to be able to use them in rescue situations.
be prepared to check whether the colonel
supports what you need
when you're going to be running it.
And a process is a typo.
But a process from the colonel's point of view
is anything you can type out and hit return.
You can take a pipeline.
And the entire collection of stuff in the pipeline will be backgrounded if you background it.
A single executable, a single shell command.
a single shell script
any of those can be
background and managed.
So the example I'll use here
And this whole talk came from something I did at work.
where we don't use PSQL, we use VSQL for Vertica.
Now, as a side thought.
How many people here have used Postgres?
or even know what it is.
I know what it is.
Go ahead.
Yeah.
Okay, well, VSQL is Vertica. If you go to the PSQL site, one of the things they'll explain to you
I remember the talk on Postgres a couple of years ago that I still think about sometimes. It was a good one.
is that Vertica, Reddit, there are about four or five others
are high-end commercial databases that are based on PSQL.
Vertica replaced the Rose store in Postgres with a column store to make it an OLAP database.
But you can run the VSQL and it's a copy of PSQL. All the backslashes work the same way. It's got the same PGPLSQL
programming language.
So the example I've got here, though, was from taking a couple of tables
Now, one thing Postgres supports is the notion of external tables.
So what we do to back things up
is we put them in a standard format called Parquet that supports database operations and store them as flat files in S3.
And you can treat the collection of S3 files as if it were a table.
And use SQL on it.
So I can do something like select count one
from this who has three archive table
And it turns out that this S3 archive table is really 14 parquet files stuck on a network
Somewhere. It is not incredibly fast.
But it is a pretty wonderful way to back stuff up because I can squish the crap out of it, stuff it up as three, pay next to nothing for it. And a year from now, if I have to query it, I still can.
without having to reload it from scratch.
But in this case, somebody says, no, no, no, I want it back. I want it back. It's too slow.
So to stop the whining, we had to recover it.
So we had 1 billion rows in one of these and 2 billion rows in another. And for various reasons, I can't show you exact counts but
This gives you the idea.
doing a select on these is going to take a while.
What I'd like to do
is restore these in parallel. This is going to take a few hours. I don't want to sit here
watching grass grow for two hours and then come back and
Watch grass grow for four hours.
So…
The trick here, I need to have two copies of PSQL running at the same time.
And be able to manage what they're doing.
Does this make sense to people?
It's starting to keep going.
Glad you said that. So the first step
I want to background something.
So what I'm going to do here is I'm going to run PSQL. I'm going to do a bit of setup. I'm going to create
a temporary table to load the data into.
And now let's say that I just have a PSQL script that does an insert select.
and dumps things into the food temp table.
Now, I've started this and I watch it in top or I watch it with Prometheus
And I can see that it's done a thousand rows and I can see that my cup of coffee is half empty and I can see that at this rate, I might as well just go out and come back after dinner.
I'd rather again not wait to run
insert bar, I'd rather just get it started.
So what I'm going to do is I'm going to hit control Z.
Control-Z if you're z
from India and
We're camping.
what will happen what will happen now
is I'm going to get a number plus and a stopped.
What happened right now is that PSQL command
has been taken off the run queue.
The Unix process is still out there. It's just not running.
it was given a sig stock, TSTP, which is a transient stop.
And that doesn't
abort the process. It just takes it off the run queue.
Did that make sense to people the way I said it?
Yes?
So this PSQL process is not dead, but it's not going to be put back on a core to execute until I do something else.
Now, the things to notice
that one and that plus sign
are important.
And I'll show you those in just a minute.
So now.
I can ask, what do I have out there?
The jobs command, not surprisingly.
shows me what jobs are out there.
And it'll show me one plus, and it'll show me stopped
Which, again, tells me that
From Bash's point of view.
that PSQL is not going to accumulate any more CPU time.
I haven't zapped it. It's still run a bull
But it's not going anywhere.
Now I can type BG.
BG, without any other arguments, backgrounded the last thing
that was put into the background.
Which was the thing that had the plus sign on it when I listed the jobs.
So now Bash shows me something. It shows me that little ampersand after it.
that ampersand, which looks like what happens when you background something in the shell, says, okay, this is now running in the background.
And now notice I've also got a shell prompt. I have a process running
doing something
its terminal is redirected. If it tries to read
from standard in, it will block
Until I foreground it.
So Bash takes care of standard in, standard out, standard error.
And dealing with that. Another important thing that it's done right now
is this thing is backgrounded, it will ignore sig hubs.
So if I get disconnected, it will survive.
So now, because I'm at the command line, I can run PSQL again. I can execute my insert bar temp
And this is off and running and I control Z it. Notice here, I get two and a plus sign.
So if I run jobs, I'll see that I have job number one and job number two. Notice job number one has a dash on it and job number two has a plus on it.
Again, that tells me that job number two is the last one
that was put into the background.
Okay.
It's the last job that was stopped.
Ah.
Now, if I've got 16 of these and I foreground and background one, that plus sign might be next to job number eight.
But right now, it's next to job two. So I can tell
That is what's going to happen if I run BG and don't give it a job number or a process ID.
Aha.
So now when I type BG, it knows, ah.
You want the job that had the plus sign next to it.
I will default to twiddling that one.
And now that's running. Now, if I run jobs.
Bingo. I got two things running.
Now, I can obviously run enough of these jobs that I overrun the virtual machine that's running Postgres and they all fight for each other with memory and they start swapping and thrashing. This doesn't magically make it.
So that you've got infinite resources to run all of these parallel jobs.
I can have these two right now. And again, I can see two of them and I can see that number two is the last one that was backgrounded.
even though it's running, that was the second one that was backgrounded.
Now, if I went down and did a foreground of one and backgrounded it, the plus sign would be next to one.
Does this make sense so far?
Yeah, actually it does.
Yeah.
Yeah, it makes sense.
Hey, here's Orcus Richard installment.
And it agrees with my experience. However, a couple of caveats.
I do not believe simply backgrounding will protect a process from being killed when you log out.
Mike?
Yes, it will. If you use an ampersand, it will not. If you use control.
Bash puts a SIG hub wrapper around it.
My experience is…
That does not work. I have had to disown the thing.
My experience has been using
Using SSH and modems for 30 years with Bash.
And again, that may depend on
the system you're connecting to connecting to connecting to
there may be secondary
things in firewalls or things in job management
in Linux, where if you're, you know, the things that kick you off of SSH, if you don't type something for a certain amount of time.
Those kinds of things will zap these jobs.
But if you read the bash man page and and i've
I've had this happen to me enough times. If your modem gets disconnected.
you will get back into the system and find a running job.
Is there a no hop command?
In fact, one thing I'll show later, there are applications that will reconnect you to the running job.
by mangling the controlling process of the process ID.
Isn't there a no hub command that
You can use no hup, but Bash automatically no-hups anything you have.
on systems that have garbage collection for processes and they say anyone who is disconnected
isn't supposed to leave things running because that can be a massive security hole. If people you don't like
can get into the system, start something and exit and leave that thing running
That is a security hole.
And so a lot of systems are set up
So that they won't
just send the process a hup
if you get blocked out, they'll send it a term, wait 30 seconds and send it a kill.
or a term acquaint a kill.
So they will do a shutdown sequence on it.
But that security software that overrides the normal SIG hub handling.
in normal use bash
If you control Z something and use job control on it.
it will put a wrapper
around it.
And the wrapper is in…
bash.
And it handles the hubs.
So again, that may depend on what system you're using or
or how the kernel's compiled or something.
By…
One of the reasons I loved Bash in the 1990s when we were all using
2,400 baud modems and that was line noise.
is I can control Z something
And if the modem connection went down.
My job was still running.
So I just…
If anyone cares, my phone just told me that Milton made landfall about two hours early.
I just had to test this out. So I logged into Bach.
And I ran a sleep 60
And then I opened another shell and I did a P kill on SSH.
Yeah.
that on my local machine. So that way it killed my SSH connection from the
From my life.
Yeah, but that is that is okay.
And then…
But that's going to kill the process group.
P. Kill is going to zap a process group.
Yeah, so I asked this agent from my local machine to Bach, and then on Bach, I ran a sleep 60.
And then I killed my SSH process on my local machine, right? Because I figured that simulates kind of like a
lost connection.
But it doesn't.
Okay.
Why?
what you're doing there by doing a peak hill of your SSH,
is it's going to zap the process group
with a SIG term. And a SIG term
No.
passed off to everything will zap everything.
The SIG term is on his client system, not the box server where he ran
Oh, okay. I…
Right, right.
The boxer, I don't know what Bach is, but the box server then is configured with something
that propagates the disconnect.
Because I…
Last week, I had something running and I got disconnected and I reconnected and it was there.
I'll say it this way. Test if simple.
Yeah.
neutral Z and background works.
or if you need to do a disown before you bet the farm on it.
Yeah, that would be a good point.
Okay.
there may be secondary stuff set up
to clean up.
What do you mean by disowned?
I can show you that later in the talk.
Thank you.
Disowned detaches the process
from your it detaches the process from the original process group
And that means that if you get blasted with a SIGN,
that job won't get blasted by it because it's in its own process group now.
Disown is something you it is the moral equivalent
of what a lot of daemons will do when they wake up in the morning
by forking, closing standard in, closing standard out, or reopening them to log files, putting in signal handlers to
gracefully shut down, all that kind of stuff.
disown sort of rad
If you know what process groups are, it just stuffs your job in a new process group.
But yeah, let me keep going on this, but normally
Please.
you will…
Please.
bash will at least put a SIGHP wrapper around what's going on there. It can't do more than that.
If you're using PSQL for this.
or most programs.
PSQL, if you're at the shell, you can do a backslash O, which says send all of my output to a file.
Now I can run it, stop it, background it.
And now I can do a tail minus f on the files
And I can watch everything happening. One of the neat things about that
is that if you're using
a long-haul network.
having these in the background streaming standard out to the screen
is horribly slow.
Because the PSQL, if it's in verbose mode.
is going to be putting all kinds of garbage to the screen.
then it has to wait because it does a write.
So by putting this to a local disk file and then tailing the disk file, you can take a lot of latency out of execution, especially if the program is verbose.
Things that use hear scripts.
we are recording the output of the hear script is another good example where that can get really
really accelerated
redirecting output to a file is also very helpful when you're on a slow connection like a 9600 bar real terminal.
Yeah. And then T is the thing that blocks and it buffers the input.
So job number one finishes.
getting back to job control. So what will happen is when I'm looking at my tail, I'm going to see insert zero
you know, a billion rows.
Now, if I type jobs, I still see two of them are running.
I can do a foreground percent one
is the argument that sakes job number one and foregrounds it.
Does that make sense the way I'm showing it?
Yes.
And that'll show me PSQL.
Now, if you had PSQL and you gave it an argument like a different username, you would see a little bit more. It makes it easier to tell what's going on.
It's up to you to remember what one and two actually mean.
But right now, I'm talking to the PSQL executable
that executed that first insert.
Notice that I'll probably have to hit enter for a prompt because PSQL wrote something
It's a standard out and
foregrounding the thing you can have problems with whether or not there's a pending new line that gets buffered or anything.
So you hit return and bang, you're back at the show prompt for that PSQL.
And now I can do whatever I want. I can run something else. I can quit it. I can look at the table. I'm just back in that same PSQL. It doesn't know it was background. It has no way of finding out.
So now, so now
Let's say…
my foreground percent one and I do an exit.
So I said, you know what, I'm done with this thing. Just let it go away.
Now, if I do jobs, you'll see that job number two is still the one running.
This is really, really important, people.
Stopping, if one of these exits, the job numbers stay the same.
Let's just say you had 45 of these things for I and 1 to something, do a find and a gzip to squash a bunch of directories and store the output.
you might have jobs one, two, three, four, five through 19.
If you have 18 exits first, job 19 doesn't care. It's still number 19.
The job numbers don't
Change.
So that number two will be assigned to this for as long as that thing is running.
If I start something new right now, I'm going to get a new job number one.
But that jobs, number one, won't change even if this number two exits.
And that's really important because it means you can tell which jobs to foreground and background over the life of your session.
Does that make sense?
Yeah.
Yeah, that makes sense.
Okay, so…
Yeah.
And again.
Of course.
One of the problems you get
Oh.
If your connection gets lost if you
And the other system doesn't garbage collect you.
If you get zapped.
that PSQL is running on the other side
It has an artificial
signal handler on its read
that stops the thing
if it tries to do a read from standard in, that's just part of Bash's job management.
It has…
Buffering for standard out
It's standard error still gets redirected so you you
probably, you know, you'll see error messages
But they've got nowhere to go.
Did that make sense?
Yeah, what happens to those messages again?
Normally standard out gets buffered, standard error gets passed straight through because you want to see errors.
But yeah.
Yeah.
Normally, if you're doing this, you're going to redirect standard out and standard error in some way that you can manage them.
The important thing to notice is there's
The notion of a controlling terminal is part of Unix.
And the idea that there is a
a process that is the parent of this that owns it.
And if you get zapped.
all of these backgrounded processes may still be running
But you are no longer connected to them. If you SSH back into the system.
Then…
you'll have a problem
Because there's nothing to foreground and background. They're not your jobs anymore because you have a new
process a new copy of the bash shell.
And that new copy of the bashel has no idea what these old copy of the bashel was running.
There are two different processes. They're disconnected.
So if I go back in and I SSH back in.
And I do jobs, I don't see one or two or anything. I see nothing because I haven't run anything yet.
So…
One fix if you get disconnected.
There's Reptor.
What this will do
is it'll play games
you have to be the same user ID
that had the old things so that you can do process management on it.
But it goes in under the hood
And it basically reattaches
your current terminal as the controlling terminal
for the old bash processes and reattaches them to your process.
So at that point.
you can do a reptor on a process id
And you could be back in control of it.
If you do a lot of remote work.
Having this installed on the machines, a few background processes can be a real, real time saver.
Another thing, if you have sql
Do an exit as your last statement.
know that you're going to start it. You're going to make sure it's running and that it will exit on its own.
And then you don't have to be there to kill it.
if you're going to
If you background something.
You can put a backslash Q
And then hit control Z.
So the next time this thing tries to read from standard in, it's going to hit your backslash Q and quit.
You could also put a backslash Q at the end of your
a hear script or a PSQL script. You can do an exit
If you have a here script that you're pushing into PSQL,
You can start a PSQL double less than something and put a whole bunch of stuff into it and then the end tag, hit return, PSQL is running, but it's reading standard in from this thing.
If you do a control Z, you can background it
But then if you go out of your way to put an exit or a backslash Q at the end of your here script.
PSQL will exit gracefully when it's done.
So that's, again, if you get zapped, if you're on a system that allows the processes to continue running.
then Bash will manage the life of that process and then it'll see it exit and clean up after it.
Now, if you're on, you've logged back in
And that PSQL is there and you can see that it's just sitting there doing nothing.
I can do a P grip.
I can find the process.
And I can kill minus Termin.
PSQL, most programs that run on Unix. Bash is one of them.
Postgres is another, will exit gracefully at the first opportunity if you do a kill minus term.
Don't use a kill minus nine in this case because you have no idea how much damage you're going to do if you just abort the process in midlife.
Let the program's own term handler
deal with the situation and exit gracefully.
If you don't like running two things, you can do a peak hill minus term PSQL.
And that will take every…
process that
you have access to.
If you and I are different user IDs, PKILL will not even attempt to kill my process because you don't own it.
You have to be the same user ID or the super user to blast other people's processes.
Question.
So PK, if you haven't used it before and PGREP are really, really nice for this. What?
that dash term, is that a specific hill number?
signal or signal
Yeah, you know what? I stopped memorizing the terminal numbers. Kill minus nine is the same as kill minus kill.
do yourself a favor.
and learn the damn names.
Okay.
Term, quit, kill in that order.
A SIG term says when you're finished with the thing you're doing now, please exit gracefully.
Sig Quetz says gracefully abort whatever you're doing and get the hell out before I blast you.
Kill minus kill just takes the process ID and blows it off the run queue, buffers and all.
The sequence of term followed by quaint
Followed by kill.
is what's used during a normal system shutdown on Unix, Linux.
Starnix, Ultrix.
Solaris, that's been since the days of edps
Okay.
It does a term, it does a time.
It doesn't quit. It does a much shorter time, and it doesn't kill minus kill.
Minor.
Q minus nine is kill.
But don't do that.
minor nitpick.
re-PTR or whatever and the PGREP, P kill etc
are not always included
with default installs.
They're usually not.
you may. Yep.
So they're…
You have to have a competent sysadmin
Bitch and whine until you get both of them. PG rep is wonderful for just monitoring things because you can use a P grip
minus A, and you can give it a regular expression. I can type P.
Quote, psql dot star
And a database name, quote, and hit return. I'm going to see all the PSQLs attached to that database, even if I don't own them.
Mm-hmm.
So PGREP.
uses grep regular expressions to search, you can search the entire process string.
And you can tell everything you know about it.
Actually, that should have been p grep minus F, my mistake.
but um
PGREP by default just grips up process IDs. It saves you from PSAUX pipe grip something.
It allows you to grip whatever you would have gripped without having to run PS and pipe it.
And it's got a bunch of niceties for ignoring things that are backgrounded or foregrounded or whatever.
Peak Hill uses peak rep to find things that it then blitzes with your signal.
But again, it's nice because if I do a PS and pipe it to kill minus term, I can blast all sorts of things that I don't own.
Or I don't want to.
So because I can use a more complex regular expression instead of just PSQL, I can say blow off all the database connections to this particular database
where somebody's doing something stupid.
So yeah, these may not be installed. PGREP and PK Hill are
pretty common these days.
Reptor is you're going to have to go out of the way and supplicate for someone to install it or put it in on your own machine.
It's highly dependent.
I wrote Gen 2, I can install it in one line.
Yeah, it's highly dependent on the platform.
Yeah.
Linuxes and BSDs it's
almost trivial to install these. You start looking at Solaris or AIX or
God forbid HPUX or SCO Unix.
getting PGREP, P kill
various other
peak rep will still work. P kills a bitch.
Getting those utilities installed becomes a lot harder.
Yeah. Well, the problem is that the
The split face mallet. What in the world?
most of the stuff was written. Everything's been written on Linux for the last 10 years.
And the libraries are different. The library locations are different. The shared object libraries are different.
The interfaces are just enough different to drive you nuts.
If you're dealing with Ultricks.
or Sunos, which are
basically out of the box bsd
things will tend to work because it's BSD.
If you're going on AIX or HPUX,
that are thin interface layers between a Unix-ish front end and the vendor's old backend
AIX is an old
not mainframe, but midsize os
And in HP UX, I forgot the name of it, was HP's own original small computer.
And all they did is add interface layers.
So when you start working on those and try to do some of the stuff, the bash stuff will work. If bash will compile, it will work properly. That's one of the reasons a lot of the GNU code is so freaking big.
is it will run gracefully on pretty much anything Starnixie.
that's ever been released.
But P grep also is more likely to work on odd systems than P kill.
just because the semantics is stopping a process, not everyone supports the same definition of a process group that Linux does.
I've also found that
the basic job control, foreground background jobs
And ampersand and the like work in just about any shell
written from the 90s forward.
Yeah, because they're all based on Bash.
No, they're not. Many of them are.
Not all of them.
They were based on…
Oh.
Seashell has its own form of job control. It's just different commands.
Yeah, but I mean, a lot of the people
Bash became pretty much the standard
shell for a lot of things.
Mm-hmm.
And most hackers used it. So what you found is they tried to make whatever they did look
bash-ish.
Even if the back end is completely different, they wanted the finger feel.
Oh.
There was a comment earlier, Sean.
done a search for that raptor
command and couldn't find any reference to it.
Search for R-E-P-T-Y.
Thank you.
Well, if you look it up, REPTR is where you'll find
the project and its downloads.
Thank you.
And then, you know, whatever it's called on your system
Now, there are a couple of things you can play around with.
And I'll get done is
If you're managing jobs, if you do a
Control-Z, you can foreground
different things you can
foreground a job name oh
And I…
So let's say, I apologize, there's a typo in this page too. Instead of foreground VS, that would be Pia.
PSQL. So you could foreground percent ps
And you would foreground the last job background whose job
executable began with PS.
Or I can type PSQL sumscript
And I can do foreground. You see that percent question mark
that will search for some job i have
that has that string
in the command line.
This is really sexy if you run something that does
you know for i in slash home slash star
fine dollar eye, you know, pipe Gs at minus 9V greater than a backup file.
Because I can do a jobs and I can see 15 of these running
And I can say, wait, this idiot, he just downloaded a 14 gigabyte file. I don't want to back that up. And I can foreground percent question mark.
Joe Blow, you know, some part of the path
And I can foreground the process that has that path
in its command line.
Did that make sense?
Yeah, strangely enough, it does.
Yeah.
So the percent question mark xx
If you background a lot of stuff.
and it's left running.
And you're careful about making sure that the command line for each of them has got something unique on it.
a path that it's backing up.
a database that it's connecting to, whatever. For I and something, if you put dollar i on the command line.
then if you can do a job and you can see that string in the job output.
You can foreground based on the name and not have to keep track of the numbers.
This is really sexy.
If you're programming something.
Because you can stick what you're doing onto an array
in bash
walk down the array and check if those jobs are running because you can either foreground or background or check the job status
based on percent question mark, a path or a database or whatever you use to start it with.
If you do…
a foreground.
Yeah, if you do a foreground, if you type percent one, if you look up here
You see, I need a foreground percent DS or I did a foreground percent one. If I background this PSQL job.
I can just type percent one and hit return.
Or again, I apologize, that should have been ps
If I type percent
whatever the process is, or percent question mark some script.
The assumption is if you're typing a job specifier.
By itself, Bash can see the leading percent sign and it uses that to foreground whatever's in the background that matches whatever you asked for.
And you will get if if you'll get
You do percent, question mark something and there are 18 of them
it'll foreground. My recollection is it foregrounds the first one but
don't shoot me if I'm wrong.
I think if it'll do the first one
And then you can do that, exit it, and it'll do the next one.
So you can have a shell loop that foregrounds things and causes them to exit.
Now, again.
Percent percent is the last thing that was stopped.
Percent plus is the last backgrounded.
So if I do a control z
Whatever I control Z,
will be brought if I do a foreground percent percent
That will take whatever I control Z'd and bring it to the foreground.
If I backgrounded something.
that the last job that was backgrounded is the job that has the plus sign next to it in jobs.
So if I do an FG percent plus
I will take the last thing that BG affected
And I will bring that thing to the foreground.
What you get is really handy if you're jumping between
18 of these things, trying to manage them or watch what's going on.
You can BG with something, foreground something else, do it, control Z it, background it.
and go back to the same one you did
The last one you did will come up.
And as always, you know, there's um
for bedside reading, if you do a man on bash.
you could look for process control
And it will describe most of this, but again that
the bash man page is extraordinarily dense.
it's pretty damn thorough.
But you have to pay attention to every single word
In it.
I'm not kidding. There are…
There are little shoulds and cans and aughts and shells and you know the
you have to really think about it
Because to make the thing fit into memory in the 1990s.
Stolman condensed it
to the point where just every piece of punctuation is important and everything matters.
Learning the Bachel third edition is ancient.
But it's an excellent book and it has lots of examples.
It's available online. If you go to OReilly.com, go into the learning section.
The first 10 books are free.
20 years ago, when the old system Safari books online
They weren't getting enough people joining it. Everyone wanted the free stuff.
So they had a trick that if you paid them
the unlimited subscription this year, they would never raise the price ever.
So I have been paying 179 bucks a year for an unlimited access to that. And it's been very much worth it.
If you're into databases, they've got
every book that CJ Dade ever published. They've got lectures by CJ Dade.
If you can handle database lectures by a mathematician.
who looks like a mathematician and sounds like a mathematician.
Dates lectures are amazing.
Hug.
But the bashell is great if you
Go to DuckDuckGo, learning the bashel.
you'll get a bunch of books
bunch of everything from YouTubes to man pages to html
You know, it depends on how you like to learn things.
But I would always start with the bash man page.
Just for the reason that it's
It's what Stolman thought was correct.
So if anything in Bash does something else, it's a bug in Bash.
Anyone else can tell you what they think Bash ought to do.
But Stallman is telling you what he programmed it to do.
So when Stallman in the man page says that he's wrapping the thing in his Sig hub handler.
then they expect that to be the case.
The Linux system may override that
But…
that's where it's at.
And that's it. Any questions? Any questions?
Rotten Tomatoes.
You would bet.
Did you cover the no help thing?
No hup basically
If you do a man on no-hop, well.
Let's do a man on no-hub.
People can see my screen, right?
Yes.
Yep.
Little teeny tiny.
And by the way, if you use one of these multi-tabbed X-term thingies
Can't read that now.
They're doing the same.
Control plus a couple times.
Option…
Select by font.
Keep going.
That's better.
Now my terminal is so frigging big
that it no longer fits. Hang on.
That's here.
Well, no, it's off the screen. Let me get it back on the screen so that we can see all of it.
I should have smallified this thing before I increased the font size.
There we go. Now I can shortify it so that it's
a reasonable number of lines long.
But yeah, making the text 14 times larger increases the window size.
There we go. Click.
So now what no up does is you run no hup with a command.
That's it. And what it does
It's an executable
that has a signal handler.
And it has a signal hand. It does a sig ignore
on the hup signal
And then fork execs, whatever you wanted.
and returns with the exit status of whatever you ran.
If terminal, it'll redirect it from an unreadable file.
So SIGHUP takes care of making it so that standard in
does not return
it doesn't want to return a hup if you get disconnected
Because standard in is not a controlling terminal.
You know, try and do no hook that out in your current directory, otherwise your home directory, no hub that out
Beware of no hupping something that does
per line output, if whatever you're doing is big.
Because you can end up filling up your home directory with a no-hop.
So yeah, I would recommend you do something like no hup something
greater than a file, two greater than ampersand one.
No Hub and Bash is built in.
There are a couple of useful exit commands for it.
So you can tell
why it puked.
And it's one of the core utilities. It's been around
since the early 90s.
I mean, since GNU core utils
But again, what a hup is…
Hop goes back to the days of TTYs, like real TTYs, like teletype units going.
And you used to connect to the terminal
And a hup was sent
depending if it was a 422 or a 232 connection.
if you lost the terminal, like the wire went down
the hardware generates a hupt signal.
The same thing would happen
if you used a modem.
Huh means hang up.
And it came from the days when terminals ran on modems to connect across the street to a computer.
real quick.
So the HUP signal stands for hang up, like on hook
Today, if you're using SSH, obviously HUP is a meaningless term
But it's the same signal
It's a kill minus one
And it's basically
It's not meaningless. HUP is the great, usually a graceful way to cause some damage.
No, no, but the name Hup, the name H-U-P.
You don't hang up when you kill something on SSH. You exit.
it comes from the HUP, H-U-P name
I'm aware.
for the signal comes from the days when you actually were using modems and TTYs that were plugged into terminal ports and a wire went dead.
I'm very well aware of that. That's not what I was talking about.
Yeah, but that's what I was saying about Hub. See Hub is a wonderful way to stop things because it generally is the most graceful way to shut something down.
So, so…
not only will it, it doesn't always shut things down either
some daemons like getes
Yeah.
When you send a hub to them, they will cause connections on them usually to gracefully exit, but the daemon itself stays running and often can be told to read its configuration.
And the same is true if you use a lot of daemons because they have no controlling terminal
SIGHUP was used as
as a placeholder for restart
Starman, a lot of web servers. If you hup the server
it will drop all open connections.
kill all of its fork services and then refork the pre-fork account.
What happened to Hurricane Velen, the damages is devastating
I'm going to give you some of the numbers. And imagine if
To hell.
Somebody's had an open mic that's had a lot of noise tonight.
Sounds like pinging and various things or TV.
Oh, the ping is me, man. I can't really mute myself.
That's my wife telling me
she wants me to go out and get Chinese food.
Hang on. Let me just tell her.
win.
She's sounding kind of desperate there a couple of times.
I thought that was a sonar signal on your phone.
That's what it is. I got sick of the built-in noises everyone else has. You can't tell who's um
Yeah.
Huh.
Yeah, that was neat to have a moment.
Yeah, I mean, that's why I use the screaming monkeys for my ringtone.
If it's on your phone, can you place your phone further away from your microphone?
um it's…
Not really. We're almost done, so it won't.
But I've told her that I'm still giving the talk, so she won't be bothering us.
But the…
Yeah, the sonar ding is nice because it's something you can actually hear even if the phone's in my pocket, I can hear I got a message.
But no hup, you give it a command, you give it command with arguments, whatever your command line is.
it does a SIG ignore on hop and then fork execs things and tries to redirect the output
So that it doesn't spew all over the terminal and get lost
That is one nice thing about using no-hop versus control Z is it tries to create the
the nohop.out file. The problem is you can have if you
background 14 things with no hub
all of them will end up going to the no hup got out fora and you get completely jumbled output.
So if you're going to be backgrounding things.
And you're not going to be foregrounding them as interactive when you're done. It's usually a good idea
to redirect them to a flat file somewhere else so that they have their own file.
But that's what NOAAP does.
And it's…
it's nice, again, because if you get disconnected
If your session exits.
the processes don't get blitzed.
By…
tested and that fail.
But anyway, yeah, if the O'Reilly book on learning bash
covers
the variables, it covers job control.
And you can look this stuff online.
But that was the dog.
Was that helpful to anybody?
Oh, yeah.
Quite a bit.
Okay.
Very much.
Yeah, bash, you know, it's one of those things that
People…
A lot of people don't use most of the features
Um…
I've used that foreground background for years. I just didn't know that it
could be that extensive
And controlled that way.
Yeah, that's the thing. Yeah, you do the foreground background. You don't think about it much
Most of the time, most of us have got
one process
that we…
that we backgrounded, you know, you did something, you control Z' it, you went off, you came back
And you don't think of any of this stuff because FG and BG take the last process
stopped and the last process backgrounded as default. So you don't think about doing all the job control.
it starts to make a lot more sense, for example, if you're playing around on Amazon.
and you're working on a system that doesn't have a tabbed terminal.
you can, without having to resort to term
and switch between all the terminals and get lost, you can have one connection
And manage all the jobs from one connection.
You know, it's primitive in the sense that you don't have separate tabs and you can't rename them and you can't just
click something on the screen and it comes up, you got to actually pay attention to what you're doing.
But for the most part.
It's fairly straightforward to use.
So anyway, that was…
Gary, what I'm going to do is I'll stick this on my speaker deck
site once I've fixed the
the remaining typos.
Yep.
And then anyone wants to, if you look up speaker deck slash Lembark, you'll find me.
I'm kind of giving up on slide share
Because you have to be a member of LinkedIn to download anything.
Once Microsoft bought it, they started screwing it all up so
The slide share stuff is there because I've got links to it.
by speaker deck is where I'm putting things now.
Excellent.
And if people are interested.
If you… Well, let me…
Yep, I did it right.
Oh, hey, that link to learning the bash shell
Yeah.
that you had on the screen just a few seconds ago, would you paste that into the chat, please?
Yeah, if you go to O'Reilly, yeah, but I can do that. A quick thing is…
This is the stuff you can do to environment variables.
defaults, you can assign things, you can blow up if they don't exist.
You can see if this is set, pick something else
You can do substrings.
you can take, you can find a list of all the variables matching
prefix. So like for postgres
or all the variables that it uses are PG something.
You can get a list of all of them and it's really easy without having to hardwire the variable names, you can list all the PG variables that are set.
you can look at…
you can actually strip prefixes and suffixes
So I can take a word and I can find the shortest or longest
prefix or suffix
that matches it. So I can have star something, I can strip everything up to a word.
You can do pattern substitution.
from the beginning or from the end
you can have things
play with the case so you can
One of the classic things you want to do is uppercase or lowercase the contents of a variable.
Because you're comparing it to something
So you can do case modification.
you can take a…
any dollar thing
And you can do an at sign.
And you can…
All the lower keys converted uppercase, the first converted to uppercase.
Upper to lower
There's a string that is quoted in a format that can be reused.
This was stolen straight from Pearl backslash Q.
And it allows you to
to take an input string
And then munge it
So that if you put it into double quotes, it will expand back to the original string
with tabs and single quotes and double quotes and escapes
Oh my God.
all escaped out properly so that you don't have to.
And this one deals with backslash escape sequences. So it'll correctly handle backslash n and t
You can do prompt string. I mean, all this kind of stuff.
Um…
So these things can make it really easy.
to process you could do a lot of processing
if you take
Dollar bang prefix.
Gee.
Um.
Sorry about that.
You're allowed to breathe.
There is one of these, and I forgot, I never use it
You can actually take a parameter and use it as an indirect reference.
And that's a separate section.
But it allows you to do a fairly lightweight form of object-oriented programming in Bash.
Because you can…
you can take a variable
And take the name of the variable
and use it to reference a variable with that name.
So you can have an array
of variable names
And you can indirectly access all of them to get the contents of what looks kind of like an object.
Now that's in the bash manual. What section is that under?
Oh, God.
expansion.
Thank you.
Yeah.
Indirect expansion, dollar parameter
Um.
Oh, my God.
That's close enough. Thank you.
Thank you.
Dollar bang name.
Okay.
If I set…
set foo equal to blatch.
And bar equal to foo.
Foo will tell me, Bletch and Dollar Bang Bar.
We'll take the contents of the variable bar, which is foo.
and expand this
to dollar brackets
bar, foo, which is blanch.
So…
Oh, my God.
And just because you can doesn't mean you shouldn't.
Okay.
Well, I'll show you a good example
I'll show you a good example.
There's blood coming out of my ear.
Now, I'll give you a good example.
Postgres uses a bunch of environment variables.
So I can say um
One of the things I can do
is I can look up a list of the
And dollar dash colon dash
Dash is the first one of these, so I know where it is.
This, if I do a dollar bang prefix star, let's say, or dollar bang prefix at.
This will give me a list of environment variables whose name looks like
that. So I can do an ENV pipe grep pg
And I see, or grip.
Up here at PG.
And I see these variables.
I can also say echo
Dollar, bang.
PG star.
And I will see those same variables.
Does that make sense?
If I do this.
They'll be separate words. If I do this
And I type it properly.
I can list out a bunch of environment variables for Postgres in one step.
I don't have to hardwire them. I don't have to deal with which ones are empty or not defined.
I just say, fine, these are the ones that we have. Deal with it.
I had a different use case for the indirection at my last job.
we were doing something where we needed
to read a password in interactively, which you can do with read
But the security people involved did not want
a static variable name.
So we created a randomly created a variable
And then stored it in a variable.
each time.
Yes. And then indirectly referenced
using the variable that held the other variable's name.
Yeah, this is also really nice if you have
a configuration file that gets sourced into the environment
Because you could look for
things that are defined in the configuration file
and just display access or just display for somebody
you know this is what your configuration file gave you.
If you use a consistent prefix like PG,
you can you can display or access
or say, gee, this is what you defined. This is what you're missing.
you know um
So it's also really kind of nice for error messages. If you want to dump out a bunch of variables.
that affect a particular program.
You can store a list.
you know for in
list of variables do something and it will
it will dump each of them out of the environment for you.
Okay.
This is for…
This is most useful for most useful
systems programming where you're running other people's code.
Because then you can have them define things that you use to drive their execution.
But…
If I don't go get the Chinese food in the next few minutes, they're going to be closed.
All right. Well, let's see.
Chinese food.
Everybody think of any final questions you may have before our speaker leaves?
Before that, though, I'm going to ask our speaker to please once again run the command
uh…
No, the first thing I'm going to do is call the restaurant and order the Chinese food.
Okay.
Yeah.
Sounds like a…
After that, I've got 15 minutes before it's ready.
Okay, okay.
Oh, come on, pick up, pick up, pick up.
Oh, come on, folks.
Gary, I suggest we shut down the recording.
Not until after we do the questions. Oh, well, you can pause the recording, I guess.
bring brought up the environment variables. It shows that Stephen's last name is Lembark and his company name is Workhorse, as in Workhorse Consulting so
This meeting is being recorded voice computing.
But anyway, yeah.
computing, I'm sorry. Or you didn't put that the environment or in the variable name
No, there's this.
Awesome.
There we go.
That's how you find me. Lumber at workhorse.com.
From the good old days when having eight character domains was considered impolite.
No, think about it. Who were the first companies that had domains? hp.com, ATT.com, IBM.com.
There weren't many of them were more than four characters
Yeah.
Hmm.
And so I had to think of, and the problem was back then it made the bank paths and UUCP too long.
So I workhorse is that's the
least number of characters that when you try and say it out loud, it comes out workhorse.
Cool. Neat. Okay.
Okay.
Never thought of that.
So that's, I've had no i've had that email since the 90s.
I had a UUCP connection. The guy at Occidental college
I helped him set up
some of the oddities in send mail
for bridging UUCP to TCP.
And so he used me as a guinea pig for his network
to UUCP connections and trade for that i got i got
free mail forwarding through UCP to him. So I could use the at workhorse.com
And it ended up getting routed to him and then it would come
come back to me through UUCP every day.
I love it. I was just talking to somebody the other day and I was describing to them how UUCP used to work here in St. Louis.
Okay, so…
Well, it still works. There's still places using it.
When I used to travel, the people that ran, when I lived in houston.
The people that ran my internet service.
I had a dial-up connection to them and I had to get into my own computer to get my mail.
And so, Wendy
So Stephen's next talk for us in a few months will be
You UCP's connection.
Yeah, God, no. But the funny thing was they had a key to my apartment.
And I was working in Chicago and they would cut, you know, after a storm, after the weather flaked out
They'd be nice. They would come and they'd restart the computer for me.
If it didn't restart itself.
Yeah.
Yeah, I spent a week just
I'd lived on a race floor for a week. I looked like shit. I felt like shit.
I flew back to Houston and just took a week off.
And I was in the shower just
getting hot water and I hear a knock on the door.
you know screw off people and taking a shower
And then that's why here, this is the constable, sir. You do need to open the door.
Constable, what the
wrap a towel around myself, walk downstairs, holding a towel, you know
And there's the apartment manager didn't know me because they had changed managers. So she saw the other people coming and going.
And I had no idea why I went into the apartment.
Oh.
That's him. That's him. Arrested me broken? Oh, my God, what's he doing?
Can we see your ID, sir?
Well, Constable, I'm going to have to go get it. As you can see, I might not have it on me.
Yes, I understand that, sir. No, no, arrest him, arrest him. Get him out of here.
So I walk back and I show him the ID and it's got this address with my picture on it.
And the guy says, but this is the address, ma'am.
Who are those other people?
Oh, they run my ISP. They turn my computer on when the power goes out.
the constable had no idea what this meant. He was a constable in the 1990s. No one knew it.
Oh.
ISPs were. But the fact that that was me and my name and my name was the one and it was this address kind of shut her up for the time being.
you can finish your shower, sir. Thank you very much, Coster.
Oh, God. Hey, Steve.
But anyway…
I think you're going to miss a restaurant if you don't get a move on.
Yeah, I got a whole ass. I will catch everyone later.
Oh, okay.
have fun and I'll get this on…
on speaker deck corrected hopefully tomorrow.
All righty. Thank you very much, Stephen.
Have fun.
Thanks, bud.
Here's good good presentation.
Thank you. It's been great. Wonderful.
Okay, turn recording back on.
We should have had it on all of them.
It was back on.
Okay, good, good, good. All right. Let's see. There was a…
uh comment made out in the chat, Wikipedia
Okay.
says that Shep Ramey developed BASH, not Stallman.
So Stephen is gone.
Wikipedia is always right, isn't it?
Right.
Oh, yeah.
Anyway, someday we'll find out if Steven has a rejoining to that but
Let's see, did we miss anything else in chat here during the uh
I didn't.
We're just live? What town?
Oh, Stephen now lives in, is it Pittsburgh?
Oh.
somewhere on the East Coast. I think it's Pennsylvania. I think it's pittsburgh, I think.
Oh.
Basically, he's a consultant.
I had lived in Pittsburgh. I never knew one guy had lived in Pittsburgh.
He can do a lot of his work from anywhere where he can get a connection
And he can certainly fly places to do things. And his wife is more tied to an actual job.
When she gets a job in a different city.
It moves.
Yeah, I guess it, you know, if all his work is over the network, I guess, you know.
Yeah.
Book end, bookend, bookend.
Let's see. There was a…
also a
chat entry from Sean.
about Raptor, R-E-P-T-R.
Oh, we're Googling it and then uh
you actually found it out on GitHub. Okay.
Oh, does Sean want to display the updates on the the
a new website or is that too much?
You want to record that or go ahead and stop it?
Yeah, I'd say go ahead and record it. Okay.
Sure.
Yeah, let me just, this will be fast.
Okay.
recording it or not doesn't matter to me but
So Stan asked me to make a couple changes on the website. So I have them on my local and we can
Take a look.
All right, so Stan provided um
this logo
Transparent.
With the transparent background.
I'm having a hard time zooming in on it, but, um.
But, you know, on the dark, it doesn't look
Because we got black on gray.
Yeah.
So it's hard to see it. I think in the light mode, let me switch.
And the light motor looks fine.
Oh, that's exactly what I want. Yes.
The light mode looks fine, but if anybody's using dark mode or dark reader, it's going to be a bit hard to
see it. And then I also added this red bar that Stan asked for across the top here.
You know, if we like that, we can keep it.
And then also he asked me to make the um
instructions.
the zoom buttons stick out a bit more so
like the zoom button only appears if the meeting is in the future or one day ago.
And so now it is red. So I think that'll stand out a bit more when all the other buttons are blue.
And then if you click on the meeting, you see this big banner here that says to connect
So, I mean, it's pretty hard to miss this huge yellow banner here.
You want to condense that
Is there anything else black on this screen that disappears when you're in dark mode?
you might put you might put those in yellow
No, I hope not. I kind of work to make sure that
Go ahead. Sorry.
You might put that oh god like that eunuchs under the gateway arch
you might put that Unix or Linux, whatever that is, you might put that in yellow
that way it would show up when you're in light mode or dark mode.
Wow.
Yeah. Stan, what do you think about that? You think you can make some more edits to that thing and we can get it on there or you want to just ship it like
Oh.
I mean, it works fine if the background is light blue
Or even more.
Yeah, but nobody in Linux world uses a blight background
I do.
I hate the black black background. I find it more difficult for me to read stuff with the background, believe it or not.
Are you right back.
Really?
Yeah, for me, I can't
I don't like it.
Well, if you get your eyes fixed and you want to blat.
Well, all I suggested was if you change that to yellow.
It'll show up on a white background or a black background.
Depending on the yellow, it can be hard to read on a white. I would actually wonder if you can do an outline
in white or light.
Kind of like how on the right hand side
The white is outlined in black and it's still easy to read when it's in light mode.
Okay. Okay. That's fine.
Just change it to something that shows up.
But, well, the reason I, on the light
Representation like he has it now. The reason I wanted the red bar across there
with that blue back block down below is it's very similar
who's a current website so that when we do completely transition, it'll look quite familiar.
And it won't look like
You know, somebody just threw a hand grenade in there or something. I mean, that looks
close enough to the original site or the current site
I find it's not jarring if you put it one way.
That's a good idea.
Okay.
Okay, now for the that works, this all works for the
the light background as what we're going to do with the black
background, we'll have to work on that.
I guess.
Sean, do you know if CSS selectors
have any information based on
white versus dark background.
Yeah, of course. But that, yeah, if this was like an SVG, I could probably…
Well, no, not with that.
No, it's a PNG.
Yeah, but the PNG. So CSS can't reach inside the PNG and color that
No, no, I'm talking about
having two different versions, one that's light background friendly, one that's dark background friendly, and use CSS to pick which one is displayed.
Oh, I think I can do that. We don't do that anywhere else, but I think I could make that work probably.
I wasn't aware you could use CSS to modify things in an SVG.
Not in, but the background, like the transparent behind it
Oh, yeah. So if you have an alpha channel
The background shows through.
And actually you can…
you can well okay i don't want to speak out of his turn.
I'm pretty sure you can modify an SVG too because i've seen
I've seen things like the Twitter logo and stuff. Actually, that's what I did for like these logos down here. I told it what color to be and these are all SVGs.
Because this is the same colors like our links and stuff.
So you can color these SVGs somehow
I'm not sure if it's using CSS though, to be honest, but I think it has to be.
Well, surely they don't have one of these for every single color and the color picker so
Anyway. But yeah, I already have the meeting up for
And then this is what it looks like now just
to see the contrast so we can compare them.
So this is the current
And then this is with the changes that Stan wants to see, and I'll do it in light mode as well.
This is the current
And this is the changes.
Well, apparently I'm not zoomed in all the way so
Current.
changes so
That works for me.
And we'll have to work on the black, you know, or you can
if you can work out the suggested
CCS or whatever it is.
Well, yeah, just give me a new, you know, change the logo however you want to see it on the black background and I'll do the work. I'll figure out how to
I have no idea how to make it look better on the black. I mean.
Like I said, I don't like the black background. I find it very difficult to deal with.
Bye.
I can try. I'm flexible.
You know, I'll try. I'll see what I can do. I'm not sure.
I'm not sure.
All right. Yeah, but I was thinking if you could provide a logo, then I'll do the, I'll see what I can do as far as choosing one if it's dark and the other one if it's light salt.
If I change the black stuff to a light blue or white, would that work on there?
Yeah, it's worth a shot, right? I think that's worth a shot. And then…
Okay. Okay, I'll do that.
And then if I can…
And
Steve Akron was suggesting yellow would be a good
color that would work either way.
Okay.
Depending on the yellow
you use, it can start disappearing into white.
Hmm.
Why don't you make it white like the lug logo?
That'll work.
Very light blue.
Well, with whatever
Well, show up on one background league.
Oh, whoa.
Whenever the boys here, it's almost white.
Whatever. Whatever.
Never.
Yeah, make it look like that. Chef, take the paint, you know, without the penguin.
Wouldn't that be simplest, Dan?
uh…
Flip this thing to white background, will you?
Yeah, why not just do it like the penguin logo in the upper right-hand corner?
Okay. Okay.
Just make it like that. It shows up easily.
All right, I'll take a shot at it, okay?
Yeah.
Yeah, okay.
One of my favorite techniques that's very stylish now
is to
have a light gray background
and have text that is
maybe one shade darker than the background, sort of like right over here on the left side.
God, I hate that.
That's just devilishly hard to read.
Is that the way Apple does everything?
You know, I mean…
Pardon?
Is that the way Apple does everything?
God, it sucks.
Everybody does it. As soon as everybody copies them.
Sucks.
Yeah, I mean, it's just
You can't tell me that's a good idea if you want people to be able to read it easily. There's no way I'm going to believe it. I'm not that stupid.
A lot of times I have to highlight something and cut and paste it somewhere because it's
So darn pale.
Yeah.
Yeah, yeah.
So maybe we ought to at least try and get our own website not to do that.
I don't know.
Is there a way to control? No, you can't, I don't think you can do that with a browser
finish your question, is there a way to what?
Is there a way to control font color
That'll override whatever the author of the webpage put in there.
Sure, it's called Dark Reader.
different web browsers have
different options for that.
Netscape has had the ability to set
foreground background
And the option to override
whatever the webpage wanted for a long time.
What I have started seeing more people do
is they'll use various different extensions to modify the css
on the fly so
it changes to whatever you want and still looks
relatively decent.
Yeah. Now, Lee, you mentioned dark readers that
It's a plugin for Firefox.
Okay.
I found it about 10 years ago. I've been using it ever since
Well, you know, about this?
Okay. Anybody got anything like that for Brave?
You know me, I hate brave
Well, you're welcome to like it or dislike it.
what about it and
what's braid isn't bird based on older
Firefox code?
Pardon?
Isn't brave based on older Firefox code?
No, it's a fork of chrome.
Okay.
or chromium.
Hi.
Chrome is in the public domain. Google did that.
Yeah. Yeah.
at least some version of it and they forked that. That's how they get brave
I couldn't remember what it was based on.
Yeah, that's…
Yeah, same thing micro shaft does with edge
They build their own custom version for it based on the open source code.
Yeah.
Well, the thing I like about Brave is it gets really, you don't have to run any add-ons no
You know, you don't have the problem of websites puking when they see that you run a no script
And…
Yeah, but there's so much other crap in there. It drives me fruit.
Well…
You got to collect points.
Wait, never heard of that. Eight points.
Point?
or brave bucks whatever they do
What's that for?
I don't know.
Yeah, they have a cryptocurrency built into their web browser it's
Oh, good God.
Yeah.
I don't care about that.
Well, anyone, Gary, let's uh
What happened to our Q&A anyway?
Yeah.
Hey, what do you think about this? What do you think about, as Stan was talking about the red, what do you think about making all the links red versus blue?
Zoom preference?
No.
Better.
I…
Makes it harder to read.
Yeah.
There, that's better, better.
Blue is easier to read, yeah.
Alrighty.
Hey, Sean, maybe make your Zoom links yellow. They'll show up better.
Yellow? Okay. I thought, yeah, okay.
I will.
Oh.
Because if you pick the right yellow, it'll look good on dark or light
Well, yeah. Okay.
I just think it matches. It kind of matches the bar
Yeah.
Same red, but…
I don't really care. I can make it yellow.
I'll go ahead.
Red actually is a very hard color to read.
you should always avoid using red
protects, protects.
text.
It's a graphic color. It doesn't have enough contrast for text.
Yeah, exactly.
I have a yellow here one
A little show.
No. Hold on one second.
That doesn't look like yellow.
Yeah.
that yellow there you go. So like that kind of yellow
All right.
Yeah, flip it white. Let's see what it does.
No.
Oh, that worked.
Oh, you think that's better?
Yeah, that works.
I miss the red. I miss the red.
I'll make the bar red. I'm just right now, they're connected.
Well, it's a handy way to check
you know whether the color works
Mm-hmm.
I like the red. I like the red better.
I'm like…
Yeah, I do too on light.
The only problem is when you go dark it's
makes it harder to read.
Yeah.
Yeah, but it stands out. I think it's okay. All right. I'll go ahead and push these up and then the logo will be janky in dark mode until we get it fixed, but that's okay. Something to the world.
Yeah.
You know, it's going to be fine.
Stan will work on that, yes.
Okay, what else?
Good.
This has been fun, folks.
Yeah.
It's been a really good meeting. I enjoyed it.
I made way more stuff out of Steve Lindbark than I thought we'd be getting.
But my goodness.
Yeah, he claimed, what, a half an hour presentation? Yeah, yeah, yeah.
Yeah.
You might have a little something for us.
Well, I tried to do three questions per slide, but I just fell asleep a couple of times.
uh…
Stephen was in town back around July the 27th and uh
We got together and uh
So over dinner.
you know we talked about things he might be able to do a presentation on.
We're still recording. We're still recording
Be careful what you say.
So I'm not going to say anything bad.
So yeah, he had some time to
to consider what he could put together for tonight. So he made it sound like this was just a quick rush, but no, he did a nice job of preparing for it.
All right.
Let's see, any other questions on other topics?
Comments on other topics?
I'll throw out there the basic job control.
Yeah.
foreground background and jobs.
Okay.
that should work in
most shells.
from the mid-90s on.
Okay, cool.
Does anybody know anything about port knocking?
Yes.
Is anybody brave enough to volunteer to do a base on port knocking?
Hint, hint, hint.
We can talk.
Okay. All right.
Cool. Cool.
Right.
I'm willing to provide as much help as I possibly can.
Which means I know nothing about
topic other than kind of
I was going to say, what is port knocking for? I've heard the term, but I don't know what it's used for.
That's about…
No.
Oh, if you want the answer to that, you'll have to tune in.
Oh, maybe next month or the following month, whenever Tyler and uh
Stan, get this organized. So it's Tyler or Grant?
Correct.
All right.
Is it Tyler or Grant who volunteered to work on it?
Grant.
Oh, I'm sorry, Grant.
Yeah.
Go ahead and end the recording, then I'll give you a 90 second answer of what it is.
Okay, let's see. Hearing no other things that need to be on the recording?
This was the uh
general monthly meeting of SLUG, S-L-U-U-G, the St. Louis Linux Unix users group
Today's date was Wednesday, October the 9th, 2024. Our speakers tonight were uh
Stephen Lembark, and he was talking about job control in the bass shell
And before that we had that
Fuck you.
Pony's Athropolis.
who was talking to us about cyber
security improvements with AI.
So thank you all for coming. We appreciate it. And we'll see you next Thursday.
Next Thursday, it'll be uh
talk on linter and other tools for cleaning up your code
And