You stand by. Stand by.
Okay, Stan, all your recording in progress.
Okay.
Wait a minute. No, Yeah, I'm recording. Where's my shave button?
File save.
I don't know, got it.
Got it. Hmm. Hmm.
This is the, are we ready Sam?
Yeah, go ahead. Let me go back to the
Start the book, Gary.
This is the monthly general meeting of the St. Louis Unix users group. This is Wednesday, January the tenth.
2024. Our speakers this evening are Sean Twe House doing. System D timers versus are better than Chron.
And that'll be our main topic coming up near the end of the meeting. And our first topic, the basic tutorial is being done by at Holland and it's the history of shells.
With that, I'm going to turn it over to Ed.
Yeah.
Oh, wait a minute, Gary. You not even following the book ends. Good Cree. The idea is to quickly go through this so that anybody new knows what the hell we're doing.
And that's what we do in the middle.
Well.
Well, you do what you want.
Okay.
Okay, so, and have you got the slide deck going there?
Well, I wasn't prepared to do that, but Yeah. Let me get the other one going.
Where's it right here?
Well, he's doing that. I'm gonna mention. Another case of sad tightings last time we spoke.
We talked about the passing of Brian Molinar. The, creator of Vim or VI improved.
Today. Bringing up another one, although in this case nobody has actually died. So what I'm talking about is the podcast and YouTube channel.
Lost weekly over on the Twit Network. Is closed down as of December nineteenth And I have a personal history of that.
I was on a Caribbean cruise with 2 of the hosts. Of that show that's a pretty good show.
There's some really interesting interviews in its back catalog and the back catalog is still online and I think they're trying to revive it in a new form, a new format, but not in the Twit network.
So just the. Just putting that out there.
Anybody here ever listen to or watch that show?
This is Stan I have frequently.
Yeah, that's the rules. It was the most recent host. And then Randall Schwartz was, he's the, one of the pearl guys he was a host for many many years Press the Bona and Lia.
Leo Laporte started the thing back. Forget 2,007 maybe something like that.
Okay, and let me know when you're ready.
I wasn't a regular listener, but I, you and Stan talking about it all the time.
I, I just kept here and, they were very good.
Yeah, Daxter was a One of the, editors or something or other over at the Linux kernel.
And, he, one of his other co-hosts, Katherine Druckman.
Who was also of journalist or editor over there. They started their own podcast called reality 2.0 and there's some other guests on there too.
So if you want more of them Go over to reality 2.0.
Lies are ready.
Yep. Okay, sorry, what did you say, Stan?
The slides are ready. We're on the slide one.
Oh, all right. We're gonna get go. Let me just get over to my
Okay.
Yes.
Okay, you're on slide number one. Zoom. Okay. Yeah, so we're gonna talk about the history of the shell.
And this slide show. Hey, came out of the discussion that Stan and I had.
I was originally going to give a, a longer form talk on new show. That never took place.
And There was a couple of slides. At the end of that talk and Stan thought that they they would be a good stand-alone talk just about how how did we get from their early days to modern shells like like new show and power show and stuff like that.
So that's where this originated from. And I wanted to, before we get started on slide number 2.
Wanted to mention
The, Sorry, every time somebody joins the meeting. It shouts it in my ear.
There's no way to turn that off either. Anyway, The, I wanted to point out what I think of as the modern show.
Besides just a command line interface where you you type a command and maybe some options and maybe some parameters like file names or.
Or directories or something like that. That's the command line interface. You know, when you open up your terminal, it launches some shell, bash usually, maybe CSH or something.
And then you're typing commands and you can, you know, and you can you know, foot commands together, semicolons, vertical pipes.
Ampersand. 2 vertical pipes, right? You could put commands together in a variety of ways.
And interact with your system that way launch programs and perform various tasks. In addition to that, The shell as I see it.
Is also a programming language, a scripting language. So you can write shell scripts to automate as and sort of reusable type things.
And the show itself is a curing complete language. And what that means essentially is that any programming language that is Turing complete.
Can run any program written in any other Turing complete language. So, you know, theoretically you could take bash and write a rust compiler in bash.
Would you want to do that? Maybe not, but you could theoretically do that. You have all the information that you need.
So you basically need the ability to execute a command, the ability to set a variable and interrogate the value of the variable.
Thank you.
Set up a conditional branching if and else. And then also do some some kind of looping.
You know, it could be wild little reporting or something.
Let's move along, Kit.
Okay.
Yeah. Okay, so that's what I'm saying is a shell and The early history of the shell, the very very early history to show, I wasn't around for, But, some, of us in this group might have been.
Lie too.
And if I make a mistake, please, please alert me to that. But, Stan, can we go to, 2 slide 2, yeah.
So where did I come from? I started off, my first ever interaction with anything that was computer related was the HP.
Desk calculator. They have that's the same one you have on your system right now.
It's called DC. Reverse Polish notation, calculator. That was my first one introduced in math class.
But we quickly moved on from that to the, to a teletype, a paper teletype that was connected by a 300 b.
Acoustically couple, modem. To a mini computer that was running downtown. And the only commands that were available to me using that was it was running a basic interpreter or a basic environment.
So I could do list. I could do run and I could do exit and if I did exit it logged me out.
So it was it was very very limited. Then later on I ended up. being, promoted to be an assistant.
On 2 data general Nova systems. Their councils they had front panel switches they also had line printers.
That had keyboards on them. But the keyboards were non functional as I recall.
So, They were interesting in the fact that. They literally did have a boot rod, so you you would flip the switches to a particular address.
Hit enter then press run and then it would boot from the hard drive. From that point. And then I also was trained on but never had to do.
Rebooting the the imp at our at our system which was the local internet message processor.
That was a paper tape based system. Well, it wasn't a paper tape based system.
It was a front panel switches to load a a little reader for the paper tape. Then you put the paper tape and there were 2 reels, a duplicate reels of paper tape.
That had the bootloader for the hard drive in it. So you you've ran that through, hit run, it would start reading the paper tape when that was finished.
You, you typed in the address of the. That program And then that program will then.
Load the, the rest of the disc operating system. Whichever one they use that was on a, on a honeywell, 5 50.
Oh, that was our local node on the internet. I was trained on how to do that. But I only needed to do it if I was on mid shift.
And only if the node went down when I was on midship and it never did. So the 3 years when I was there and ever and never went down.
Not saying that it didn't go down other times. It just didn't go down when I was Okay.
You're doing a good job.
Yes, well, yeah, they have some, yeah, they have a backup, right? I was the backup to the backup, Okay, so let's go to the next slide, Stan.
Lide 3.
Right. So, in the early days, the computers. Had very low amounts of memory.
Could only do one thing at a time. And you mainly interacted with with them using punch cards and I had a little bit of an experience with that too.
I used to have to take I used to have to punch my own cards and then I used to have to take them over to the little window and slide them under the glass and then hope that my user name or my user ID I should say was high enough on the schedule that that I get them back in a reasonable amount of time.
In my case, it was anywhere from 3 to 5 days. Before I got my results back. And that was part of the problem, which is mainly that the the lag time or the, the user feedback.
No, if you add up, and I had this many times, I. Have a, bug in my COBOL program.
And it just wouldn't compile. And I wouldn't know why and I would get I would get it back while now you've got to wait yet another 3 to 5 days you know before you could say oh did it finally compile okay yeah if finally compiled and it ran the data deck and the data deck, you know, gave us the output.
Sometimes then you'd have, it'd have a runtime here, right? Like there was a runtime error.
You know, it didn't didn't work correctly. So, you know, in fact, another 3.
But. So that was a pain and they realized early on that they needed it to make that better.
One of the things that they had was a thing called a resident monitor. And this was a program that, got loaded initially when they first booted the system.
And what it would do is it would. It's sorta hid in like high memory and it said, okay, whenever.
The current batch process was finished, right? It would. Take it would take control back.
And then wait for a new batch, depth to be loaded and stuff like that. So it was kind of like a little, like a very early version of an operating system.
But. More can to the you know the old Terminate state resident programs. And I think like in the PC era, CPM and NSDOS.
I think there was something similar to that with the command.com. Command.com would would get out of the way when it ran your program but at left a little stub and that I think that little stub would reload the command interpreter.
So the command interpreter didn't take up a lot of butt of your, you know, 40 AK of RAM or whatever, right?
So. It would reload that after the program after you exited with a program. So that's something similar for that.
Let's just go on to the next slide, Stan. We don't have to spend all day.
By 3.
And Okay. You're on slide.
3. Or no, not a 4. I'm sorry. That was 3.
We're on 4 now.
Yeah.
4.
I'm sorry, your slide 4, right? To technically slide number 4. Okay, great. Yeah, alright.
Time gets going.
Yeah. Okay, so. This goes way, way back, even before, the advent of digital computers.
In 1,944 the United States Navy, was a losing a lot of pilots.
Test pilots they had they were experimenting with jet aircraft and other advanced forms of aircraft. At the time and they wanted to have like, a flight simulator, right?
And they They went to MIT and they said, hey, can you build us a flight simulator?
And so they started working on what became known as Project Whirlwind. Project Whirlwind was originally an analog computer.
But they gave up on that. Pretty quickly because the response times weren't fast enough. And they decided that they were going to do a digital computer but even then the response times were best enough.
So they thought, OK, we're going to have to build a supercomputer. And, So we're gonna come back to one of the people that worked at MIT.
On project whirlwind. But that's coming up.
Let's go to the next slide, Stan.
Okay, go ahead.
This this is Stan I'd like to interject some history here. The the frontier airline when they had we're here in St.
Louis in the frontier airline when they had were here in St. Louis in the building it was when they had were here in St.
Louis in the building it was down a road from me they had a mechanical Flight simulator that that would be in there and they would change it to joystick and it had gyros and all that and instruments that kind of thing.
The Japanese pilots during war work at the beginning of world war 2 before world war 2 Japan had bought more than a hundred of these things and taught all their pilots on this mechanical flight simulator.
The US Air Force Army Air Corps did not use such a thing. The test part I think that's why so many of the Japanese pilots were so good because they had hours and hours of flight simulator training before it even got in a plane.
Great, going on. Just.
Oh, okay. So that you're saying before, or before they attack Pearl Harbor, that's what you're saying.
Before they attack Pearl Harbor and it was all mechanical flight simulators to stop. I mean, Air Corps didn't do that.
They didn't believe in doing this flight simulator. They didn't pay for him. Well, he didn't have any money.
You know?
Yeah, I guess the Navy had quite a lot, quite a few funds. This project whirlwind that they, they worked on through almost all of 19 the 19 sixtys was up until the introduction of Multics.
Yeah.
We'll get to that in a minute, but that was all defense funded or defense department. But Okay, let's go to the next.
That's yeah
Wide 5. Bye.
Right, so.
Yes, Good time.
Oh, sorry. Keep hitting the control button but it's not I think I know why okay Anyway, the so Dartmouth, Dartmouth is I believe in, That's in Connecticut, right?
Is that correct? They in Massachusetts, Connecticut, something like that. And, So they did the Dartmouth time sharing system and
The. That whole thing was actually coded. By the undergrad students, the DARPA time sharing system.
The actual basic system, which was, was it Kurtz and Committee committee committee? I can't say.
Travis Kirts and, and committee. They wrote the basic compiler for that, right?
But the, the grad students actually put together the thing. So they had file, they had kind of a file system, they had files and had programs that you could run and stuff like that.
So that was it. So I think that's all that's on that slide, right? Sam?
Go to the next one.
Yeah. Yeah.
Lide 6.
Yeah, yeah, so, so I can't say this guy's last name very easily.
Fernando, Corvavo, Corvo, or Mabel, maybe. Was he was a an American born and born in California but then studied at MIT as an undergrad, eventually became a professor at MIT.
Recently died in, I believe, 2019, I think. He's the guy sort of known as the father of time sharing the basic concept that he had up here was that the computers were getting faster and faster at this point and The.
Sorry. The, the amount of time between Somebody typing. A key on the keyboard and typing the next key in the keyboard.
Like entire universe could be born from the Big Bang, go all the way through their evolution to the heat death.
And as from the computer's point of view, right? It's waiting, not doing anything, right?
So. What if you what if you tried to see whether or not another terminal was was was needing some support there right so so they had this kind of round robin idea came up with that or whatever.
So CTSS, the compatible time sharing. System was his was his baby. And, and later on, he would be one of the primary guys on Multics and so, so we're coming up to, we're coming up to that.
Pretty shortly.
Now, the this is an interesting part where Gary, Gary Myers is involved at this point.
Oh, oh, look out.
So, when, when they were gonna do Multics, they.
The, decided that they were going to use general electric hardware. And the.
The whole, they wrote the entire spec for Multics. Right. Before they even started.
Doing any hardware or software coding. Right, so the spec called for a certain kind of computer with a certain amount of memory, certain types of storage.
And that was going to be the latest generation of the of the GE 600 series specifically the 645 and Then, MIT was going to do the software that was going to be the, the, the.
The operating system and programs and things like that and they were gonna this was gonna oh this would be the first operating system that they were gonna write in a high-level language.
Is going to be written in PL one. Which is the the third language I was trained on.
Nobody did.
Via one did not like it very much. Second. Yeah, well, yeah, even, IBM did like PO one.
Then, The way that they sort of saw this is that there was gonna be just like People were gonna have many computers or computers under their desks are on their desk, right?
It was literally there was gonna be these computer compute utilities, right? And you would you would have a terminal at your home or your your office or something like that.
You would die, you know, you'd be remotely connected somehow to these computer utilities. And so obviously ATT was intensely interested in that and the fact that well.
Somebody's got to provide all that, all that data, those data lines for support, right? So they were involved from the from the communications aspect of it.
The networking, so on and so forth. So. So let's go to the next slide.
I've got a bit of trivia before you get off.
Okay, yeah, go right ahead.
Hmm.
If you, look in the man page for the password file. Man section. You still see reference to geckos.
Yes. Yeah, I, I was gonna say some things about Geckos. Gary, Gary gave me an education on that when we were at Steercom a couple of months ago or back in December I think and And I found out that it was like the first of its of the second generation operating systems, right?
So original, like first generation, that was like what we talked about before, batch processing, this resident monitors and so forth.
And then the A second generation. Geckos was a, a multi programming system or multi processing system.
And that's these terms multitasking, multi-programming, multi-processing, right, get a little conflated when you try to look them up.
The basic idea, I think, is that There was some sort of cooperation between the operating system and the program.
Like if a program needed to print something and the printer was currently processing some other job and the program had to wait it could hand off control to is that right Gary is that how you understood it Basically, you can run multiple programs at once.
And and one would be running full tilt until it needed to it blocked on some I/O.
Device that it to to contact.
Yeah, at some point they introduced. Share, you know, a time frame, a so that a program.
Time sharing? Yeah.
I said at some point they introduced in Gico's a time quantum where you know a program would only you know if it didn't hit an I/O block or something like that.
That it had to wait for. Rather than just taking over the machine forever, it would have to relinquish what it ran out of its time quantum and then the next program would, you know, pick up and that would get another time quantum and, you know, so many cycles.
Right, exactly. Right.
Yeah.
Yeah, that's where they came up with the, Cache fire. I've heard the term but I don't know if that's where I came from.
Sorry, go ahead.
Yeah, yeah, okay, right. And as a matter of fact on that previous slide that it said that version 3 of Gckos was introduced time sharing.
Right, which was, you know, the, so I guess the, the thing to keep in mind is that you've got time shifting which is you know you're shifting time as Gary just talked about between programs.
And then there's time sharing. Where are you? Where you have users? That's how I see it, right?
So you have multiple users logged in at the same time all running different programs, right? And a computer is like is running sort of a round robin type of interrupt processing thing or maybe maybe it is an interrupting like it hits the inrupt when you hit a keep when an incoming key press or maybe an entire line is passed in.
So IVM was real big on. Block level as opposed to character and line oriented stuff.
So we're all probably familiar with with line oriented stuff. But IBM was more interested in block levels though.
So. And their opinion. Like an entire screen. On a 32 70 would be a block right and then there be fields on that screen and if you filled out the fields and you hit the send button.
Those fields would be would be put into a block or there'd be blocks within blocks or whatever right so that whole thing it never like it never taxed the, resources.
Of the of the terminal multiplexer because it was it was you know waiting for you to completely fill out the fields on the screen kinda like you do with HTML forms now, right?
It kinda did all that sort of stuff but I think this next slide is we're going to talk a little bit about that.
This is the CICS slide, right?
5 7. Terminal server.
Right, yeah, this is, yeah, also known as kicks. So I spoke to a friend of mine, a neighbor down the road.
I've known ever since high school and He, worked at this, Spartan foods is kind of like the snooks of your era of your, of St.
Louis. So Spartan foods is the snooks of Grand Rapids is the snooks of Grand Rapids.
And he was system operator and a system analyst right for them. And they use 32 70 terminals and they had kicks on there and stuff like that.
One of the things I thought was really interesting that I did not know. Went until I started researching this.
Is that kicks? Kicks. Yeah, first started with Michigan Bell, but It was kind of not really an IBM sponsored project.
Eventually it ended up getting fired off to. Like IBM UK or like over at Cambridge or whatever right but it kind of started out as like sort of an open source.
A collection of programs and these are just terminal programs. These were, you know, web programs.
But, many different programs could be run under this, this same terminal server. And it was it had, you know, multi-threading and stuff like that.
And there was what he told me was that it had kind of a dashboard type of an interface where a system operator would be using a Kicks app.
To monitor what was going on on the overall system and he could start and stop jobs, restart suspended jobs.
Or kill jobs and things like that, right? So a lot of the same stuff that, you know, that us Unix people are, you know, do on the command line, right?
They were doing using kicks. So Kicks became very, very popular. And they shared a lot of their code with everybody.
So sort of a early version of, open source.
Let's go to the next slide, Stan.
Bye, 8, simple, shells arrive.
Okay. Once, Eunice got started, you nicks got started, right?
The first, like really no really big shell that was done was written by Ken Thompson and, It had a lot of similar stuff that you would know about today.
You could run commands in the background. You could do globbing, but you needed, when I mean gloving is like, you know, LS star dot txt like that star thing or whatever right that was a separate program right so you you had to run a separate program to do lobbying it wasn't built in you know right into the shell itself.
Hi.
It didn't have a lot of big features. Yeah, and then, Doug Mcilroy, which was a I was trying to remember if macroy was tops and superior in the office.
But anyway, he came up with the concept of pipelines and so they were able to pipe the the standard out of one program into the standard end of another program.
So that was, you know, as far back as the, is like the early Thompson shell. So we're talking 70 71.
Something in that time frame. I don't know what language it was written in. It might have been written in B as opposed to being written in C.
Let's go to the next slide, Stan.
Lide line, programmer workbench.
Yeah, program is workments another big advance in the in the history of the show. So we first we first got some we had variables right that was that was a that was a big thing they were one line or one character we also got, if then else.
Conditional statements. Things like that. So, it was, you know, at the, at the, the programmer's workbench was a separate.
Division from the guys who were working on the kernel and the main parts of the main parts of Unix or whatever.
But it became pretty popular because it had a lot of neat features and you could write shell scripts using using the program as workbench.
So. It also, a lot, a lot of new. Programs themselves were developed, you know, like, I think we had Lex and Yak and and also, egrap and, Tiroff or Enroff maybe I'm not sure which ones but X-rs like all of these sorts of things that you kind of know and love from from yourself today.
A lot of those got started during the timeframe of the program is work match. So, and let's.
Oh, go ahead.
How come? How common was programmers workbench outside of ATT? For some reason I thought
I don't think it was very common at all. But then, So if you remember the history of how Unix spread out of ATT to the wider world.
The, the first real big thing of that was that Thomson ended up going on sabbatical and he went, he went back, went back to, I guess he went to Berkeley and brought mag tapes with him.
And you know, that's where, you know, we get the, we get the initiation of the Berkeley, the Berkeley, Unix systems.
So, you know, Bill Joy was one of the guys there that was keen on doing that or whatever, right?
But they. Other universities were peppering ATT for copies. And during that time frame they were not the HT was not allowed to get in to the computer business.
However, there was a car about which was made for educational. Purposes and so the lawyers i guess at 18 c said well you know if you if you send us a letter or whatever and we know that in fact you are a professor at the university, we will send you a tape.
Pay for postage and handling and, and the costs of the tape or whatever. So that's how it started to spread.
Whether I guess you know most of what was in programmer's workbench was probably in those early releases that went out too.
Do you get universities around the world? But I don't know the exact details. That I answer your question.
Yeah.
Okay. I think When it started getting going, let's get that on the next slide here.
10.
Yeah, so. And what year was that? It's on the slide.
1975.
75, right, sorry. Yeah, Steve Born arrived from Cambridge to Bell Labs and I have a little bit of a history of this too.
He was a big fan of Algol. 68 and last month
Yeah. So actually take that back this month.
I went to the, to the, greater Orlando Linux users group meeting there and the presenter at that meeting was Dr.
Hendrick Boom. He was from the, from the Netherlands. The, at the, the mathematics.
Mathematical Research Center there. Which that whole. You know, that spawn people like.
Tannenbaum and, Guido Ben Roosevelt, so also Nicholas of beer was from there.
He's the like the inventor of Pascal and modulo 2 and stuff. But Dr.
Boom actually while he was there. Wrote their first version of the Algol. 68 compiler.
Now I didn't realize at the time when we were sitting there chatting To ask him, did you meet Steve Born?
Like, were you like, you know, in touch with him in any in any way? But he had he had migrated from.
From Amsterdam to to Boston and then after his visa expired in Boston. He now lives in, I believe it's in Toronto, Canada.
So, but I didn't I didn't get to ask him that but he literally wrote the compiler for Algo.
68 and my question is is that the same compiler that Steve Born did or did?
Or was it one of the many compilers that LGO 68 compilers that were done in in England.
There's the University of Nottingham. Has a whole YouTube channel. Called computer file I highly recommend it it's a all just professors talking about lots of different stuff.
And Elgo. 68 was one of the one of the big things, especially in Europe, more so in Europe.
Than it was in the US. So we get a lot of our syntax. For the Born Show.
From Algo. 68. Sort of these.
You know, if statements with if else and then, you know, that terminating FI. That actually inalgo 68 was actually the end keyword.
And also that's true for for a while the wild do and done and for doing done. That was the syntax for those, was heavily influenced by Elgo.
68. So. Yeah, and so yeah, the final slide in my deck.
Is, is what is the
Line 11, Peacher History of the Shell.
Okay.
So there was a lot of shells that were It's fun off of the born show I would take and you know you probably know most of them.
A corn shell. The seashell and then later on obviously bash and, and then Z-.
The fish show I'm not gonna list them all here but they're all very like say show compatible and most of them are POSIX compatible.
So during the during the Unix wars one of the things one of the POSIX standards was exactly how the show was like how variables were treated.
Small 3, 4 foot above both.
How exit codes were treated. We treated you know what happened if you did if you ran this program.
You know, if it returns 0, then you did the then block, right? That kind of stuff was defined in the POSIX standard.
And when I was when I was working in Atlanta they literally the company I work for, which was GTE.
The ATT I started off at But then I ended up at GTE and the ATT people apparently according to Phil.
Who got that from somebody else was called the great telephone experiment that wasn't their real name but that's what the ATT people referred to them as well while I was working there.
They decided that they needed. The entire POSIX specification in hard copy. So we had this whole, side of one book show that was just dedicated to all these volumes of the POSIX specification.
And I took, I took a couple of them home. I took the one on the the C programming language and the the C library, the C library.
I took that one home and read it cover to cover took me several weeks. About the positive. But the deposit show Right?
Most bash and, and, dash and, ZSH and stuff are considered to be POSIX shells.
And then, when fish came along, they said, well, we don't think that that's so important anymore.
So they started going. So a lot of these later shells are not backwards compatible with with your bash and your born shells and stuff like that.
But the, Probably the next big leap forward was probably Power Show, but for many, many years it was sort of Windows only.
I guess it's been ported to all the operating systems by now. I think it's even open source.
Not sure about that, but. I think it is. But they started thinking, well, why should we restrict ourselves to just sending, you know, tech streams from program to program by a standard out standard in.
Why don't we, you know, send larger, larger data sets and so it's very kind of.net centering.
Power show was, but they were sending objects across the lifeline. And then,
Not hearing anything.
And then, the final show that I'm gonna talk about today is this new show. A new show is an open source completely volunteer driven there's no company or nothing behind it and they're doing a lot of stuff where it's got a lot of modern features, lot of modern interactivity.
Such as syntax highlighting. Of antsy colors. But it's big claim to fame is that It understands a lot of data formats, everything from CSV to JSON.
Yeah, I'm all, and stuff like that. So you, you can pipe. Those file formats into into built in commands in new show.
And then. You can, interact with them so you can, you can say, okay, where this field is equal to this or give it a regular expression.
Or you can say, only give me these rows or only give me these columns or a combination of these rows and these columns, right?
So. It also has a lot of modern
Yeah. So There's a lot, sorry, every time anybody tasted the chat, it just shows it in my ear.
Distract. So, So, do show. It's a. It has a lot of modern programming features too.
So you can use it as an actual programming language. Alla Python or Ruby or JavaScript.
And it has many of those same features. So if you want to actually write programs. In new show as opposed to just simply automating things with with shell scripts.
So this might be not saying new shells to be all and all. But it could it could pre-stage.
A, a future of where shells are going. I think shells are having a bit of a revival.
Right, so the the 20, the 20 tens and the 20 twentys have seen a lot of a lot of advancements in shells.
So. And that's pretty much my entire presentation. The last slide is just anybody have any questions or comments?
Where did I get things wrong? I'm sure I got a lot wrong. but, yeah, you want to bring up that last slide there.
Okay.
Yeah, go ahead.
Hey, Ed. Earlier in the show you mentioned a YouTube channel Good apparently people are talking about the history of Unix and things.
Can you tell me what that channel was?
History of Unix, I was mentioning of a YouTube channel called Computer File.
That's computer PHIL E. Right?
Okay, and share it. I follow it.
Good.
Yeah, it is a. It's based out of Nottingham, England, the University of Nottingham.
I think I found her.
That's it. That's it. Thank you, Sean. Yeah, and, Yeah, there's a lot of, there's a lot of Unix history in there.
On what?
They have a whole series on just Brian Kernan. Yeah, only is Brian, Brian Kearney and visited there did some sabbaticals over there.
Many times and so he's friends with one of the pressors over there I can't remember his name off the top of my head But, yeah, and so They there's a there's a huge part in there where they talk about the history of Unix the history of the C language, the history of art.
And, and, yak and there's a lot of stuff in there, but they also talk about a lot of other things too, like, security things.
Artificial intelligence and quantum computing, like it's wide ranging. So.
Any other questions? Or comments.
Anyway, anybody here ever use Lexi Yak?
Oh yeah, many times.
Yeah.
I use it in a compilers class.
Yeah, I was. I wrote a program over at Mac at McDonald Douglas and I needed a way to get the input file in.
And for reasons I cannot remember.
No.
I thought Lex and Yak looked like a good idea. It was not simple. But it did work.
Yeah.
It appears simple when you first start. It's the debugging part. That gets you right.
It's like, why isn't this working? And then you have to go examine like the state tables, right?
That each one of them generates. And that's not easy. At that, greater Orlando loan accusers group meeting, I attended Dr.
Boom. Ahead of he was much more of a fan of of doing recursive descent parsing.
Which is sort of the opposite of the kind of parsing that Lex and Yak do. So Lex and Yaku is a bottom up parser, an LR.
And recursive descent parsing is a top down. And it's much easier if you have a VNF grammar you can literally take the non terminals on the left.
And make them into function names and then turn the body of the non-terminal, the thing on the right.
Into the body of the actual function. And every time you see a non- you make a call to that function.
If you see a literal or terminal, right, you just match it. You just return true or false.
So it's much easier to write. They're a little tricky to get. Right. But, they are simpler to write and much easier to keep up.
Oh, he was a big fan of that, so. If you guys are interested in more talk about parsing and compilers and interpreters and stuff like that.
Is having many more talks on that. Next month and months beyond.
Yeah, I'd be very interested in that.
I think staying. Yeah, yeah, come along to the meeting. A Dr. Boom is really, really, really smart.
Which, I mean, is this an in person meeting or is it in?
No, it's, it's a, meeting just like our other meetings. And it doesn't conflict with any of our meetings.
Although this month it conflicted with our Steer kind of meeting, but that's all due to the holidays schedule.
So normally it's on I believe the first Wednesday of the month. So like it was a week ago today, I believe.
And.
That's correct. It was Wednesday.
Yeah, do you have the URL in the calendar stand for that?
Which one?
For the for the Greater Orlando Linux users group.
He never sent it to you.
I don't know. Well, if if not, I'll And I don't know.
If he did, I'd put it in there or whatever.
Okay, well if he hasn't done it yet, Get back.
And
I don't remember what I had for breakfast, so how would I know?
It looks like Go Lug. Go log down.
Yeah, go log.net.
Yep. Oh, I'm sorry, you're right. That is that. Yeah.
No. No. Yeah.
Ed, I was a big fan also of the recursive descent style parsers. And in fact, even found a program came out of Montreal, University of Montreal.
They're called LLLL LLLL, LLL languages. And it automatically generated you the recursive descent program out of the grammar.
Yes.
And I like, I like to allow grammars because to me they were much easier to understand and use.
Yes, and I agree with you on that. The matter of fact, I think the industry is going your direction because Really early on, GCC was based on bison and bison as probably everybody knows is is the free software version of of Yak.
Oh god yes, I hadn't thought about that and oh my god how long
Oh yeah.
Yeah, so anyway, but they switched to a hand coded, on recursive descent parser.
So, I believe, and many other like go for example. These are all, probably hand coded Python, for example.
Switched recently to a peg purser. I won't get into what that is but basically it is a recursive.
Gary, are we at the,
I think so. That was Ed Holland giving us the history of Shell. Or niche and adds a long time member of our group and it's always a pleasure and informative to have him talk to us.
Thank you very much. I really appreciate it.
Okay.
Yeah.
Not a problem. Yeah.
This Steve stagnant here. Can you send me? Link or Earl or whatever to that Orlando meeting.
Yes, I will do so.
It's actually go log.org Steve. It's right there on the page.
Where?
It's in the chat.
Okay. On the chat, it's also in a calendar, right?
Oh, it is on the calendar. Good, good, good. Yeah, so you go to the slug.
Or calendar. Is that slash calendar?
Somebody said it was. If not, it will be. I'll get to that.
Okay. All right.
Do all the link that we discuss during the meetings get sent out to the discuss mailing list after the fact?
No, they don't as a Okay.
The chat gets posted up on our presentation archive.
Okay.
So if you go to, you go to the web page down the right hand corner, there'll be the, eye brain that goes to our presentation archive.
Okay.
And that's where we post the recording, the slides, if we get them from the presenter, the PDF, we get them from present presenter and any notes if we get him from the presenter, etc, etc.
And a lot of this stuff, those links are also posted in our calendar. Which is at the, www.
Sloo.org slash calendar. We'll get you there.
Okay, this point, I'm the scan rackart. I'm the vice president.
The St. Louis Unixus group. And Gary has been acting as our MC. You still there, Gary?
No.
I didn't think so. And Lee Lammert is our host and he's also treasurer.
For our group. We've got a vacancy for for secretary and Oh, conveniently, next month we have elections, all months.
I'm gonna be putting together the ballot and they'll be posted up on the the web page and anybody that sends me a $10 bill will ensure that their name is not included on the ballot.
Okay.
If we send you a 20 or 50, can we override somebody else's $10?
Yeah.
That's a great idea.
We.
Right.
Yeah Yeah.
I can just see a bidding war coming.
Yeah. Okay. Gary, go ahead.
Yeah. Okay, let's see, as we were saying, this is the GUI middle of the meeting.
And that's where we put things like the announcements and the general Q&A. So as announcements go 8 days from now.
Next week on Thursday is the St. Louis Linux, the St. Louis log meeting. The topic is coming Thursday is.
An introduction to Hey Duke. It's being done by Stephen Lumbark, who's been a frequent presenter for us.
For those of you who don't recognize the term hey duke of hey dupe is basically the framework for how do you handle just ginormous data sets and basically the way this started.
Was when Google first started and there were those other beginning, search engines like Yahoo and all of this.
As you know, how do you build a database of everything you found out on the internet? So this was the problem that Google had and, Hey, Duke was, basically, the beginnings of how they dealt with that.
So, Hey, dupe is a way of dealing with ginormous data sets, which are not necessarily in a well ordered input.
They don't necessarily all follow the same structure. So if you're dealing with a mess, hey, do, will try and put some sort of structure to it and you wind up.
Having multiple computers, multiple. Disk forms, multiple computing engines. So yes, it gets very complex.
So Stephen is gonna try and explain to us. Oh, an introduction to understand all that complexity might go.
So that's what's coming up next Thursday night. So please join us for that.
5 days after that meeting, the fourth Tuesday of the month is the new Linux users group. And, basically the rule there who whoever attends and says that they feel they are the least experience, user.
They get to ask the first question and, it doesn't move on until. There's a reasonable answer, the best answer we come up with for their question, and then it moves on to the next.
Least experienced person. So, but anyway, thanks for an interesting way of doing it.
And it sounds like, gee, wouldn't that all just be really simplistic stuff? It's amazing.
What great answers come out of asking simple questions sometime And, it's really good to learn.
And please, those of you who aren't new users, You should come too because a lot of times it's those experience voices who provide the good commentary and answers to the question.
So it's a good meeting. It's just there's no formal presentation. There's no topic of the evening. There's no topic of the evening.
It's just whatever happens. Let's see. Any other announcements? We?
Yeah, we actually have. Oh, you only talk about Dock now or anything else? Anything else first and then we'll get to the Not except for election don't forget the bribe stand so they won't put you on a ballot.
Okay. Let's see. There were a number of, interesting, anniversaryaries on the slew calendar.
One was the beginning of a canoe project. So, so if you're interested in, history type.
So, if you're interested in history type things, I just browse through the history type things.
I just browse through a calendar, usually the history type things, just browse through a calendar, usually the history type things.
I just browse through a calendar, usually the history stuff, it starts off with either something like fortieth anniversary or a year in the front of the thing at the top of the calendar page, calendar entry.
So. Let's see. Call for help session.
At this point, we have kind of run along, to get to the middle of the meeting.
For those who will also just go into free form. Call for help, chit chat at the end of the meeting, but anybody who feels they can't stay late or stay till the end if you want to get in a quick call for help and see if anybody's got some ideas on.
The situation you're facing now is the time Ask.
Everybody's thinking. Somebody is on mute.
We need.
So somebody's thinking, okay, anybody know how I can come up with a winning lottery number for the, Okay, not having heard anything.
As I say, there there is the opportunity after our main speaker to move on. So, there is a recording of these presentations.
They pretty much are just raw. They don't get re-edited very much every now and then.
We may go in and take out a accidental revelation. You shouldn't have been there, but most of us just they're all recording and that'll be out on our web page in an archive that it shows on the screen.
So.
And we do have those those, an eye frame of that presentation archive on every one of our
Webpages for the St. Louis Unix users group or the This St. Louis Linux users group.
For this St. Charles or excuse me the Saint Louis area computer club and for the new Linux usage group meeting they all have the that presentation archive.
Although there are no recordings that are posted for this St. Louis area computer club or the new Linux users group, but anybody can be recording this movies on their own.
I mean, the presentations on their own. It's just that we don't post any recordings.
That are done. I do the recordings on all those meetings so I can take attendance. And some strange idea that if you want to vote we need to know whether you attended 2 meetings during a previous calendar year.
Something about our our charter saying things like that.
What else?
As, as Sam mentioned earlier, this coming month, February is the election. And please do consider running for something.
And as Stan just mentioned, anybody who is at 2 meetings in the previous calendar year, you can vote.
So, Run for something, please. There's at least. Right.
Anybody can run. You just can only vote. If you've been there.
Anybody can run unless you've been unless you've committed Yes. Using group.
You go.
How many times do we have to spam a mailing list to be disqualified?
It's right.
Go, Cal.
Okay, okay, moving on. Oh, the calendar. staying came up with the idea for the calendar.
It's really a handy tool. I can't tell you how many people I've met around town.
Never come to our meetings but say yeah but I always go to your calendar it's got all kinds of neat things on it so we've got a little sloppy about maintaining it my fault but trying to get it cleaned up and it kind of is this My sloppiness is kind of because of COVID, so many, so many groups.
Stop meeting regularly. And, really kind of followed up how things are listed on the calendar but we're getting it cleaned up.
And then we try and make the meetings that we sponsor that we run, slew, runs, are in red and everything else on there is something that somebody else is running.
So, we're just showing it as something that somebody here may be interested in, but, but not necessarily responsible for.
Next slide.
Oh
Mailing list. Let's see, the announced mailing list comes out very seldom, usually once a week, every now and then with something special happens maybe there's another one.
And the discussed mailing list is unedited for the most part. It's whatever.
Anybody who subscribes the list wants to post talk about so you can Ask if anybody's got any suggestions how to fix your problem ask if anybody's interested in buying something ask if anybody's got something you need.
So those are the type of things they're done there. Or you can just say.
Continuation. Continue discussion of whatever we had today, whatever.
So yeah, it's a fun list. The other list there was, got back one.
Oh, steering committee. We try and make it so you don't have to watch the sausage being made.
And the steering committee is not that it's closed meeting anybody's welcome to come. It's just that we you know primarily are there to talk about how to find speakers.
And how to run this organization and how to keep our own computer that we run our mailing list on that kind of stuff.
So, but you're welcome to come if you like. Next.
No, some of our other groups besides the general meeting there is the St. Louis log, St. Louis Linux user group.
Slack slack happens to be the oldest computer group in St. Louis. And it kind of merged into us some of the original moderators, owners of slack.
Traveled off to other things but I really thought it would be nice to keep it going and it deals with Anything computer.
So there's a lot of hardware discussion. We could talk about Microsoft software. So yeah, it's a good group.
It's also no fixed presentation. There's no topic of the evening. It's just whatever people want to talk about when they get there.
And the new log I already told you about the new logs before.
Next slide.
The main topic, which is what's coming up next. In the general meeting, let tonight, we have that basic intro tutorial type on the front that Ed did And then the main topic is something that's a little more in depth.
It takes a little longer to talk about and explain. And That's what Sean is gonna be doing for us tonight.
And, There will, you know, as we said, this is all recorded. We try and keep the, slides the PDF, put that out in the archive afterwards.
And Somebody remind me, alas, Sean, Lashaan, you're using my speak up now.
You want to take questions during this talk or hold them till the end?
Yeah, that's fine. During the talk is good.
Okay. Okay. And after Sean's done and questions on his talk, kind of Peter out again if anybody wants to just ask other general Q&A topics.
Reference to Unix Linux, DSD. Other computer technology. We're all ears. There was one other thing I was gonna mention is an announcement.
The computer electronics show is happening this week in Las Vegas. Sure, no, it ends.
Yes, Oh, no, it's started Tuesday. No, that's the pre show. Oh, general show.
Okay, technicality. Anyway, there's a lot of, a lot of interesting new hardware.
And, sometimes interesting software that comes out of that. Yeah, like transparent, fourk TVs. Yeah.
Anyway, so go to the appropriate websites if you're interested and find out some of the good stuff you can.
Post your reactions on discuss. So.
After Sean's talk, we're going to be talking about the questions about the upgrade of the From 10 to 11.
Will that be open?
Sure. Yep. And, just for those who aren't going to stay very long.
A quick summary of that is. We do run our own system. We used to run multiple of them, but we keep running one.
For running our mailing lists our web page things like that It's running Debian and right now we're on Debian 10 The current version is W and 12.
And so we need to get on a get off our duff and get an upgrade done. So it's always one thing when you upgrade your own system at home because you know this system's down, it can be down as long as you need to keep it down and kind of know exactly which piece of software there to do what with a multi-user system.
There to do what? With a multi-user system. You know, we're in a work environment.
Yeah, at work. No, if you've got a lot of people using the computer and it has to be up by 8 o'clock tomorrow morning.
You gotta know which pieces of software are compatible with the new release. How to upgrade those either part of the upgrade process or before the operating system.
So basically that's what we have to do is since this is a multi-user system that everybody depends on.
We're gonna have to go through and figure out which pieces of software need to be upgraded.
Which order. So that's our project and, Lee and John will give us a little more.
To chat about that in the final after his talk of question period. So. With that.
I think we're ready for our main presentation of the evening. Gee, why system D timers are really better than contexts.
There's at least 3 good reasons. And Sean to a house. Could you tell us why?
Thank you, John.
Yeah, appreciate it. Will do. Here is, what Gary was talking about. So, a few of us have put together this wiki.
To kind of, 2 talk about the upgrade to Debian 11. So we have the goal and some things that are out of scope.
Some configuration details about the virtual machine. And then. Down here we have basically the plan as it is right now.
And then here's some sections for where like the procedures will go and the back out plan and all this kind of stuff.
So if this is something that you're interested in helping us with, then. You know, reviewing this and especially these references down here would definitely be a good place to start.
And then, yeah, just let us know if you'd like to help.
And you bump this font size on that, please.
Sure. There's not really anything specific, but yeah, so, so I originally was gonna do a talk about why system D timers are better than crime and I'm still going to that talk.
I was originally saying that it was just a base talk wasn't long enough for a main, but I got scheduled as a main.
So I'm gonna see if I, so I've been thinking about what I can add to it to maybe make it a little bit.
Main worthy and you know I thought about it one thing I've been using quite a bit or a little bit now is this multi-pass thing from Canonical.
Has anybody heard of this?
Multipass wasn't that the thing that was in the 3 5 elements, this element. Yeah.
The fifth element. Yeah.
Multipat. Yeah.
Oh really? Interesting. I've seen that we've been so long. I can't remember that.
But anyway, so what this is, this is the way to spin up a bunch of VMs like really quickly and easily and they have it's you know available for Linux Windows and Mac.
Yeah. Okay.
And it's almost like easier than containers, I would say. And so like the way that it works is it's got a CLI.
So let me.
Okay. I thought you
Oh, and one thing I just wanted to say before we get started, I see some new faces in the audience here.
I see one. What is that James? What is that?
Conroy. Hey, welcome. I know this is your first meeting.
Yeah.
Yeah, it's been a little while.
Yeah. That's good. I just a quick little thing about multi-pass because I'm because you know in order to do this demo I need a VM with system D to do my demo and so, I need a VM with system D to do my demo. And so Multipass is something that can help you fire up.
A bunch of VMs and it's just a little extra thing I can talk about real quick.
So basically, Multipass help will list the help output. And you can see there's a ton of things here.
That you can do with this and the the one you probably want to start with first is launch command okay so if I do multi pass launch And then I gave it give it a name like this.
It will basically just create an a bunch of VM just that easy, right? And so if you compare that to, you know, Downloading the ISO.
You know, creating some virtual machine in virtual box, attaching the ISO to the VM, running through the installer, you know, all that stuff.
It's very fast and very easy. So basically you just type multi-pass launch and then you can give it a name.
You can give it more stuff to like you can control the amount of CPUs and the amount of RAM and all that kind of stuff too.
Other stuff like that too. But if you just do launch like this, it's just gonna give you basically a 2204 VM and now we can do multi pass list.
And we should see here's the one that I just created right here. And normally is now like once you have the VM, right, then you need like.
Open up the virtual box thing and do a port forwarding and then you can s into it. But you know, Multi-pass takes care of that for you.
All you have to do is just to multi pass shell. And then the name of the the VM.
And Bam, you're right in a shell with that VM. And so basically it's like 2 commands and what like a minute of waiting.
So basically having a bunch of VM like up and running. So it's so much faster than.
Then basically anything else except maybe Docker, right? Docker might be slightly faster. But a lot of times with Docker you don't get like system D and Colonel.
So if you need to do specific stuff like that, you won't have as good luck with doctor maybe.
But yeah, just some interesting thing that I thought was worth sharing spreading the word about because it has a bunch of other cool stuff here like for example you can mount.
A local directory into the VM pretty easily with this mount command. Yeah, and it's just some other interesting stuff you can do here.
Another one that I like is if you do, launch.
Yeah.
Question for you. Is this multi pass automation around traditional fat VM management? And or containerization and launching a kernel and analogous to a zone.
This is a VM. This is not a container. This is definitely a VM. And you know, it works with several back-end, so it'll work with KVM QEMU or like I'm on Windows right now so it'll work with, Hyper V is what it's using right now in the back end.
Thank you.
And okay, here's one more thing. A cloud in it. So I don't know if you guys have heard of this, but this is a way to basically configure an event to system like as it's booting up and so I think if you're testing out a cloud in it file or if you're testing out like an ansible playbook that runs as part of a user data or something like that when
the machine first boots. I think this multi-pass thing could really be an awesome way to. Do some testing and development of those kind of things.
That's like, one killer use case, I think, for it. But anyway, for me, I'm just gonna use it to,
Set up the demo machine for. The talk.
Speaking of the talk, here is my slides. So recently I was creating a little, home server on my.
And I was like needing to configure some backups and things. And I was trying to, you know, I know about Chron, obviously, but I'd also heard about system D timers and so I was just wondering I wanted to check out the system D timers to see what all like is it any better.
Or should I just use regular old Chron? And actually what I found was very surprising and I actually found that I think system D timers are better than Chron tabs in quite a few ways.
And so I'm going to show you some of those ways tonight. As we go through this talk.
But first kind of like a kind of, you know, what is a crime tab? Well, this is a Chron tab right here.
And so if you look down near the bottom. You see on the phone you know going from left to right we have the Kron string which says how often the job should run.
Then we have a space for some username, who the job will run as and then after that is the command to be executed.
And this is what a, you know, typical Chron tab looks like. This is actually the Etsy Chron tab of a default, a bunch, 22 or 4 system.
This is a system D timer. Now this is just for one job, right? That Chron tab I showed you was actually for like 3 or 4 different jobs down there.
This is a system D timer for just one job. And so, you know, if we look at, if we look at the top, we see this is, got, it's got a description there and this is actually the system.
D timer for the unattended upgrades package which is a package in Debian and a bunch you that will automatically.
Install your, you know, your package updates. And so that's what this is an example of.
And so if we look down in the timer section. You can see that there's a unit file.
And this is basically specifying what unit this. Timer will trigger when it goes off. And this is similar, not the same.
Similar to kind of the command to be executed. Part of the Chron tab. And then below that you see we have this on calendar which is similar but not the same as the Chron string so that controls when the timer will go off.
And you can see those stars there, those asterisks represent the day, month, and year.
And then the 6 comma 18 means that this a timer will go off every at 6 PM.
And 6 am
Sean, this is Stan. I forgot to announce earlier I had intended to that on the the homepage at the bottom I or not the bottom underneath your Abstract, I put links to 2.
Videos on. System D and journal control. That for people that needed to have a refresher on what what's what's the available.
I'll also be posting that to. The
Basic. Discussion list later on.
It's posting it in chat right now is a little bit too complicated for me. Thank you.
Yeah, sure. Yeah. More resources are always good. I'm sure the people who made this videos are much smarter about all this than I am.
So definitely, definitely listen to them if what they say contradicts what I'm saying.
That well actually those 2 videos are very basic as to what a journal, journal control is and the, logging files for system D and about the general structure of system D.
I don't think it goes specifically into the structure of these unit files like the system D timer like you are doing.
In any great detail. So you're going some greater detail. That was posted for people that for a little rusty on system D or didn't know that much about it.
So. Thank you.
Yup, that's me. I learn enough about system D to accomplish whatever task I'm trying to do and then immediately forget it the next day.
So.
Anyway, okay. So now that we've kind of, we've seen a crown tab, we've seen a system D timer, let's start comparing these things.
Gonna run on the system, right? How do I do that? Well, for Kron, it's not that easy, to be honest.
I don't think. Because there's so many Chron taps, right? So like for example, you have the Etsy Chron tab.
That's like the example I showed you on slide 2. But then you also have the Chron.
Dot D folder which has you know 0 or more additional contacts and then don't forget about the chron dot hourly daily weekly and monthly folder because any executable you put in there will be executed.
You know, on that schedule as a job. And then also don't forget every user can have their own Chron tab, right?
Okay.
And so you need to look in bar school. To see all the users crime tabs. Yes. So it's really not that easy to actually check all of the Chron tabs, all the jobs that will run.
On a Chron based system. And then even when you do look at the jobs or find the crown tabs.
You know, and I realize this is kind of poorly formatted because it's on a slide and stuff, but still, you know, especially for like a new Linux user, like this kind of stuff just isn't that really readable or intuitive right away.
I mean you really I think you really need to like you know, like what is actually going on in these Chron tabs and I think it can be a bit confusing, you know, and I think it can be a bit confusing, you know, especially for newer folks.
And so I would say it's not that easy to see all the jobs that are running on a crime based system or system like all the crime jobs on the system.
But actually system D makes it quite easy to do this. So you can do system CTL list dash timers and then if you want you can specify the dash dash all after that.
And here I realize this text is a bit small, so I'm gonna pull this up in my terminal, but, let's go ahead and look at that now.
So let me go to my terminal and let me do system CTL list timer. List timers.
Okay. And so what we'll see from left to right, so this is. This is the next time.
That this trigger this timer will run. Okay, this is the message of the day news timer.
I don't really know what that does, but that's what this is. And so it tells you right here in.
Your and you know CST which is my time zone that this will run. On the eleventh so tomorrow at 6 am 6 56 am right and that's in and the next it has this left column here which says 10 h left so basically this job is going to run in 10 h.
And then after that it shows you when it last ran so it last ran basically you know a few minutes ago.
And then this is the name of the timer and then this is the system D unit that the timer will activate.
So this is similar to the command, part of the Chron tab. And to me, this output right here is so much better than.
You know, trying to parse those Chron lines, you know, if you just like cat. Like your Chron tab, you're not gonna get nearly as good about, but you're gonna have to think like, okay, so.
30 star star star one. What is that again? You know like And I'm just, I'm not good at that.
I'm really not good at parts of those crime strings. I'm sure people, some people on this call are Like, can do it in their sleep or whatever, but that's not me.
I think this kind of output is much nicer to me.
Sure.
Hey Sean, quick question, are you there? That shows the next time is there any way to see what the schedule is like on this because is it you can see this every day or once a week or whatever.
Yeah, Oh, sorry.
I was gonna ask something similar because you can get. Yeah. Different patterns on when things are run like.
You could do. Good. Of an hour easily with Kron.
Okay, and you have to look at them individually to see what the overall schedule is.
The repetitions are I guess okay
I think so. I think so. I could be wrong. I don't know.
I don't know how to view what you're talking about. I think that'd be super helpful, super awesome.
I don't know how to do it. Maybe it is possible. Let's check the main page.
This is not a very long man page, so it should just take us a second to glance through here.
So this on calendar, this is what I was talking about that kind of replaces the crime string. And you can specify multiple on calendar.
So the example I showed had like 6 comma 18, which means to run at the 6 a. M. And 6 p.
M. But you could just specify 2 different on calendar directives, one for the 6 am and one for the 6 p.
M. Yeah, I didn't see anything about any sort of special views in the man page. So either I missed it or maybe that's not something that's really.
Possible. At least by default. Let's go back to. You know something else I like too.
So let's just run one of these. Let's say I wanted to run this one, right?
So what do you do pseudo system, CPL start? And I think you just pop this in there.
And now if I do the, and you see how this one had never ran on this system, right?
This is a brand new VM or whatever. And so it's never ran. But now I think if I run the list timers now.
Which one that I do app daily? Might still be around. Let's see.
So let's do.
So, CPL dash U and let's do this one.
No entries. Hmm.
I'm, I'm curious now.
I'll start the timer.
Do your edit of your MIT news. Service or timer, something that has run. To check your state.
So, nope, that didn't work you there. Hmm Okay, well that was just the tangent anyway.
Let's see. But I'm really curious.
But before.
That was one of the questions. I had, I think I threw it into the mailing list was.
How does one trigger a timer? Like I need this timer to run right now. And I am not sure if it's possible.
It was,
There is a command to do that. I can't remember offhand what it is. It's
Yeah. This is interesting. So I'm sure let me.
Started with an A, I think.
Let me.
Let me, the prompt again.
Let us
John, before you go further, can you type, system control, dash, version? Sorry.
Let's see. 2 49.
I know what? Okay. Thank you.
That plus cis B and it allows you to use, the update. Man do not update the
The the older commands and it trans for you.
Would expect that that system 5 in it. Backwards compatibility.
Right, right, that's what it is.
Okay, so here I am on my Let's start this.
What was that before? So before this one rest back up. Doc's timer, 22 h ago.
Okay, let's see.
2 h ago. Hmm. That is so weird. I got I guess you can't do the timer.
I guess you have to do the service itself. Cause every timer, as far as I know, every time I can only activate a system D unit.
And so I guess I don't really know what the benefit would be. Of starting the timer versus just starting.
The unit itself. So maybe that's what I got mixed up. Maybe you maybe you just start like.
Just start the service, you know. I guess that's.
That's probably that's probably the right answer. It feels kind of weird. And it might be beneficial to have the timer stats updated by by firing off the timer and letting it fire off the service.
But you're probably correct in your thinking there. Also, I seem to recall No, okay, I might well be confused on this.
But some services can only be fired off by. Timers and not manually? Does that ring a bell?
Yeah.
Good. That'd be interesting. I'm not seeing those. The kind of service I'm the most familiar with or what this is.
So I usually do like here's one for my ZFS back up. And I like doing these one shot once, but there probably is some kind of fancy type.
They can only be triggered by a timer. But these one shot ones are basically very similar to Kron.
Because you put type one shot and this will basically just one done run the command and it's done.
And then down here in the exact start, you can put your.
You can put, you know, your basically command that you wanna run down here in the exact start. And I get a little bit fancier in my, breast ones if we look, this is the total tangent by the way.
I'm really, I get back on track here in a sec. But if we look at the rustic ones, let me do that again.
I actually got a little bit fancier and I did an exact start, but then I also did an exact start post.
And so this runs after. The exact start. And so that's something like in a you would see it as like command one and and can 2 or whatever basically is what this is.
But I just think it's a tiny bit cleaner for especially for people who don't know the shell super well, right?
I think exact start and exact start post is a little bit cleaner than command and other command. But just slightly.
So what would you?
I agree. Plus you can stack up multiple. Pre and post commands if you wanted to as well.
How would that pre and post and actual starts? Compared to putting things in a script and just calling that wrapper script from Kron, from a simplicity standpoint.
Thank you.
Yeah, that is true. That is true. Cause you could, you know, like you could have a script and then you could source.
This environment file right and then you could have one line that does this and one line that does this, right?
And you could totally do that. It'd be the same, pretty much the same thing.
I think one of the main differences would be that What is considered started. In system D. So with like with one shot.
Probably as soon as exact start happens like it starts the restic and it's like That's done.
I don't care if it hangs. I don't care if it Crap's out.
I don't care if it runs forever. It has been run. It is done. Whereas with other types of Start.
Yeah, here we go. So simple or exact or forking. Then your pre, your post scripts probably.
Having different criteria for when the process is considered finished.
Interesting. Yeah, cause I know there's this exact stop as well, right? An exact stop is basically what if it fails?
Or exact stop. Let's look at that. See if we can find this one. Here it is.
Commands that are executed after the service is stopped.
Service accident.
So it exits unexpectedly. It'll still run the exact stop is what I'm seeing here.
But then there's also exact stop post or yeah, so there's exact stop and exact stop post and so yeah that's I think one complaint people have a system D is there's a ton there's like a lot of stuff right and They're all pretty well documented as we see here.
This man page is pretty extensive, but Still, there's a lot of stuff and it's kinda hard to know like, wait, so I want exact stop or exact stop post.
You know, or whatever. And so I get that is definitely one complaint that I hear about system D and I can definitely sympathize with it as a whole.
But okay, let's try to get a little bit back on track here. Sorry about that. So basically, if we rewind go up like 10 stacks.
We're basically, I'm trying to show that. It's a lot easier to list all the jobs that are gonna run and when they're gonna run and it's nicer output with system D than it is if you try to find.
All the different Chron tabs on a given system.
Okay, and then now another thing as a software developer, I know how expensive TDS, you know, whatever it is to maintain code, especially shell code.
Right? And I would argue the one thing the system D and system D timers allows you to do is to maintain less shell code right because it has so much stuff built in.
And we got kind of a glimpse at that already looking through the man page but I want to do use this example of randomized startup delay.
Okay, so like what if you're in the situation where you have some, you know, fleet of servers, whatever you consider a fleet and you probably want to put the same jobs on all of them, right?
Like, hey, just for simplicity of administration, you just want to copy the same Chrome tab or the same system D timer on all of your servers just for simplicity.
But then what if they all start backing up to the backup server at 2 a. M. Well, you're gonna Ddos your backup server.
You're gonna crash your backup server, cause they can't handle the load of every single server backing up at the same time, right?
And so what you probably want to do is do some sort of randomized startup delay where you tell all of your servers, okay, back up at 2 am and then each server will like choose a random time between like let's say 2 and 3 a. M.
Or something. To like start this backup routine. Right, and so that's what I'm calling a randomized startup delay.
And if you want to do this with Kron. This is how you would do it. You would write some shell code.
You know, maybe a function called like random sleep. Once again, this is something I pulled from the unattended upgrades.
Once again, this is something I pulled from the unattended upgrades package here. And this is something I pulled from the unattended upgrades, package here.
And if you look at this comment, it says, from the unattended upgrades, package here.
And if you look at this comment, it says some code taken from Chron. App. So basically the people who were maintaining the unattended upgrade package copy and pasted this random sleep function from some other package, right?
And so now if you have both these packages on your system or if you're you know the maintainer of unintended upgrades on your system or if you're, you know, the maintainer of unintended upgrades or whatever, you now have, you know, more code that you're maintaining because you've copy and paste it, right?
And I don't know, maybe this code will never break. Maybe this will always work until the end of time.
I just don't like maintaining. A lot of code. I like maintaining less code if I can.
And system D easily lets you do that. It has this in the timer section here. You can see it has randomized delay, sec.
And if you just put a number in here, that's going to be the amount of seconds. And if you put, like an M, that's gonna be a number of minutes.
If you put H, that's hours. I don't know, maybe D for day, maybe that works.
I don't I don't actually know that. But yeah, you can put like a randomized delay sec and I had to write 0 shell code.
Right, but I got the exact same functionality to where this job will kick off at 6 am. Or this job will be scheduled sometime between 6 am and 6 30, right?
So I have this randomized delay seconds set to 30 min. And so sometime between 6 am and 6 30 this job will kick off.
And so that away my, you know, my whole fleet will do that, right? And it won't, D off my backup server or whatever.
Same thing for 1,800. This will kick off sometime between 1,81830, right? And I just think that this is one way where system D allows you to maintain.
Less shell code. Which is in my opinion a good thing. Another way is with conditionals. So here's an example.
Another example, let's say you have a laptop and let's say you have some backup job that you only want it to run.
You know, when you're on A/C power, right? You, you don't wanna waste your battery doing backups or whatever.
Doing your backups. Well, Once again, from the unattended upgrades package, this is how you do it on the crime, right?
You write some shell code. You document your shell code here with these comments. You know, you maintain the shell code that does basically a power check.
This is how you do it if you're on contact. See you later, James. Hope you had fun on your first meeting.
Sorry, James just posted in the chat to be said now. So good night, James. Anyway,
Okay.
But in system D, this is how you do it. Condition A/C power equals true. And bam, it does the same thing.
Right, does the same thing, but you didn't have to maintain any shelf. I see Ashley's leaving too.
Have a good night, Ashra.
And that's not the only conditional. There are several conditionals. You know, I think we just saw a bunch in the man page, but there are a ton of these built in.
Conditionals that can really do a lot really powerful really versatile okay. Yeah, so last shell code.
I don't really think we need to dig into that too too much farther. Here's another, here's an interesting one and this is where I'm hoping to learn something from y'all more than for me but Let's say that you, for example, install the unattended upgrades package.
Okay. And I'm pretty sure that when you install the unattended upgrades package, which I think, it comes installed on a bunch of by default now.
And what it does is it's gonna put.
That, there we go So when you install the unattended upgrade package, it's gonna put this shell script in your Chron.
Daily folder. And. And well we can see that the first thing it does is it exits if you're on a system with system D.
Cause I, I think that, you know, I'm telling you system D timers are better than Chron for for a lot of things.
But I think the fact that basically If you look at all of the files in your Chron dot daily, they probably all have this line here.
Which is basically like, look, if you're on a system, We're gonna exit this script and you should just use your timers, right?
So I think the maintainer. You know. Also agree that system D timers are like preferable to these transcripts, but let's just pretend for a minute that, you know, this is the crown example.
So let's pretend for a minute that we weren't on the system D system. And installing this unattended upgrade package.
Puts this shell script in my Chron dot daily. So every day this shell scripts gonna run, right?
Well, what if I don't want the script to run every day? What if I wanted to run every week?
What I just, I would move it to chron dot weekly, right?
But then, okay, so now it should only run every week, right? Assuming I'm not on a system.
System. So it's only gonna run every week. But then what happens if I upgrade the unattended upgrades package, right?
Is or what if what if the package maintainer changes that file in some way. And a and a new release.
And then I and I run an upgrade on my system. I download. That new release isn't that gonna put that shell script Okay, and then, IS, the back in the daily folder.
Does anybody know?
I suspect it would. But I counter with. More double-sand ticket style. What is the difference in what you just described versus you copying a timer file to your favorite timer.
Name and edit it. And then an update comes along. Changing the timer file that is now no longer there and it.
Puts the original version there.
Wow, I'm so glad you asked. That's literally my next slide.
Yeah, excellent question and I'm looking forward to the answer because it's a good one.
Okay, so I think.
Before you go into that, I've been hoping you were going to go into. One thing you showed about Kron that I have not yet seen about system day timers.
Is timers for users, unprivileged users.
Totally doable. I mean, I think, you know, it's gonna run as your user and it's not going to be a privileged like you can't do anything privilege but yeah you can do user level services and user level timers and I'm too lazy to do it, but it is like the you know, recommended way, right?
Cause the last things you have running on your system is root the more secure, right? And so if you go read like the Podore Docs, they're more than likely gonna tell you to.
Create all of your, you know, create a user. You know, for that activity and then create the system D services and timers as that user, you know, that unprivileged user.
And do all that. Now I'm too lazy for that, but and I'm also just administering my home stuff here.
Not I'm not administering, you know. Enterprise systems anymore so I can say that.
You, you were talking about Docs too, is that the Red Hat Pedora documentation?
Yeah, like if you the one that I really like.
I don't know if you guys have been here, but I really I while I'm more I'm leaning more towards like a bunch of now but I really like this enablement blog or whatever it's like community contributed blog And so I bet if we looked up a system D post on here, they would at least have some mention of.
Well, you should probably do this as user, you know, instead of as root. You know, or maybe, you know, maybe.
I mean, this is good practice right in general is to run things as the least privilege that you can, right?
So.
But yeah, I think there's all kinds of problems with this, right? And even if even if a package drops,
Drops a Chrome tab and Chron. Dot D, right? Like, and then what if you wanna change the default?
But then the packaged maintainer updates. Like the Kron file that they ship. Well, is that gonna like, cause sometimes I see it where it'll do like a.
Continuing doubles advocate. Doing it in dot timeframe, directory. Has the potential caveat you're talking about.
But if it's actually a line in the Chrome tab and you change it from every day to a fixed day and it's still every week.
You're not necessarily gonna have that. The original copy no longer exists can be recreated. Problem.
Yeah, like wanna do something like this. I know on Red Hat systems they do like RPM new right like if a user has changed a file and you go to install an update, it'll do like that RPM new, right?
Yeah, that's gonna depend on the package management system. How well it deals with installed files changing when it's time to update them.
Yeah, but I think in this scenario, right, because the Chron tab is gonna run everything in Chron.
Dot D.
Yeah, the Chron tab is gonna run everything in Chron. Dot D. It doesn't care about the extension as far as I know.
So if you put like a or RPM new or whatever in that Chron. Dot DI think it'll just run it.
And so I don't think package maintainers can really do this for stuff in the Chron. Dot D directory.
So anyway, I think we've illustrated the problem here with Go ahead.
Sorry.
No, all good, all good. So how does system do you make this better? Right?
And basically, what you can do is you can run system CTL edits and then the name of your timer.
And what that's going to do is that's going to create a folder, named after that timer and then it's gonna create you're gonna be opening this override.
Dot com file with your editor. And then basically what this is going to do is this is going to create a separate file with your overrides.
And so, mind, you know, the way that I think this works is the package maintainer can make whatever changes they want to the original timer, your overrides will still override whatever they put.
And this is go ahead.
Thank you. Quick adder. Once you're, editing 1 one thing I like about system control is all the commands and names, support tab completion.
You know, so you don't have to worry about miss typing. Just type, you know, few characters hit the tab key and I'll tell you what your options are.
Yeah, totally agree.
That's very true. The only the only problem the only area where that's a bit of a problem is system CTL itself it seems like there's a few conflicts between SY, SYS.
Okay, as now I have to type a CT or something. But yes, it's very well supported by tab completion, although system CTL.
Requires a couple of extra key strokes for my liking.
Got.
Although I did, I did just, I did this run on a show stopper. The damn thing calls Nano.
I know, I know.
Where, where do you set the editor?
Pseudo edit at all.
You edit.
That would nano, that's the worst abortion I've ever seen. Actually, Okay.
You change your to to editor. Editor to E.
And take the dollar sign off that.
Yeah.
But.
Oh, you're right. Thank you. Yeah. I'm just, but you can't change your editor in your dot bash RC or whatever.
I just don't have that on this.
Shawn, can you?
There's
Okay, I recommend I recommend setting visual as well. There were some commands that look for visual as well as editor.
Yeah. Is anybody else familiar with pseudo versus pseudo edit?
Singular commands like SUDO,
Yeah, I've used it a bit, Yeah.
One of the very nice things about pseudo edit is it uses sudo's privilege to copy the file to a safe location that your normal user has access.
It then uses the editor or visual from your unprivileged environment. To edit the file you now have access to the temporary copy.
When you make your changes and exit, it then copies the file back in place. If it changed.
It also does syntax checking too, as far as I know.
Well, syntax checking is a function of the editor. Pseudo edit just launches.
Your editor or visual or whatever.
Nice.
I think that has a great advantage when you are. Wanting to copy something out of that and then write it to some other file.
Yeah, because you can like in VI, you can have the buffer open, you can write it to another file.
Hmm. Then it won't be, you know, mudged with a suit, SU privileges.
Right. Sorry.
John, when you can, can you go back to the previous slide that you were showing?
Sure.
This one.
Yes. It's my understanding that override.com file is overrides the the the defaults that are in the At Bailey upgrade.
Dot timer dot D that dot D directory is is supposed to be where you put these these file or these.
Things that you want to not be overwritten. When there's and some kind of command update.
Is that right?
Yeah, that's my understanding, yeah.
Because usually the whatever the pulse says says go look in the that dot D directory and see what overrides the Defaults.
Okay. No. Thank you.
Yeah, no, that's my understanding too. Yeah, I got exactly right. Okay, let's test this thing out, huh?
So let's run the system CTL edit app daily timer. And the nice thing about this is it tells you right here where, you know, where the files gonna be once you're done editing.
And basically anything you type in here is going to be the contents of that file. And what's nice is down here it shows you the original right the thing you're overwriting which is nice because then what you can do is you can just come down here you can copy this Paste it up here, uncommented.
Let's say we want this to run. Every, I don't know. 2 am with a 1 min.
Delay. So this job before it would run anytime you know it would run at 6 am 6 pm and it would run with a 12 h delay.
So it really, you know, you have no idea when this thing's gonna run. But after we do this override, it's only gonna run at 2 a.
M. Between 2 a. M. And 201 a. M.
Because of the randomized. So let's go ahead and do a right quit on that. And then, you know, Lee was talking about the, commands, right?
So if you do system. CTL cat and you do apps daily. Timer it shows you the original.
Also shows you the override, right? I think that's super cool. Cause that because it'd be super easy to to not know there's an override right but if you use the system CTL cat it'll show you those.
And so now if we do a. List timers. And we find the app dot daily.
We see that it's gonna run at 2 a. M. Well, 2 a. M.
26 s, cause that's our 1 min random. And so in 5 h and 28 min, that's when that will run.
And, you know, since we've made this change that override file, the original package maintainer can do whatever they want.
And it really won't well within reason I guess and it won't you know our overrides will still be in place and still be effective.
Okay, and that's pretty much that's pretty much my whole my whole thing. I know we're 8 30 so here, so yeah, so this is what I do on my system.
Whenever I wanna like check my my jobs of went successfully I'll do a list timers And then I'll just go down the list basically doing journal CTL dash E to go to the end of the file or the end of the log.
You and then the whatever the name of the service is. And so I'll do the list timers, then I'll just go one by one down the list, check in the logs of all of my different.
Backup jobs and things that I was showing before.
Oh, Hey!
Yeah, okay, so that's pretty much it. I think this was a shorter presentation tonight, but like I said, this was a targeting this for a base and I got made to a main.
So don't blame me too hard. But yeah, that was my thing on why, I think system D timers are better than contacts.
Sure.
Yeah, one more heckle question for you. Okay. Do they work on Solaris Freebsd or Windows Services for Linux version one?
Probably not.
John, I have a. It's a full question. And so we're supposed to not not not ask dumb questions.
Is the. The ad come in, it was always my understanding that the at command. This kind of like these sort of one off.
Thing that Kron managed but but users could could you know say like could say at 3 PM.
You know keep the council or something. You know. Set up an alarm or something. Right.
So is that possible? Is there some? Similar type simple thing that I could do. For.
I like one off. Hmm.
Yeah, just, just, you know, once, once at the time you say to run or so many minutes from now.
Is that the whole purpose of the at command?
Huh. But I understood that underneath the hood the at command is doing something with the with is actually managing.
I might be wrong. But I thought that that was the case.
Hi, I've seen systems where there was an app Damon. Independent Chron, but that may just be in, detail.
Hmm. Hmm. Okay.
Actually, I just I just googled it and there's this command. Let me share my screen again There's this command called system D run.
That seems to do exactly what you're asking for. So I did, I think I'm sharing now.
You are.
I did system D run. Well, yup.
And if you look down here, it has. Timer options. So you can run it.
I guess. It's got the on calendar thing, which I assume is similar to the on calendar directed of a timer.
And so yeah, it looks like system D dash run is the thing you're looking.
Now is it is it system D or system CTO?
System D Dash R.
Oh, okay, Dashroom, okay. Okay.
Yeah, that's got a lot of the stuff that I'm yeah, it really it looks like it takes a lot all or a lot of the same kind of settings as a Timer file.
So.
You have a you had a timer that you had tried to invoke. Earlier when like can you run it now is system D dash one maybe the way to do it
Yeah.
Okay, let's try it. Let's see.
Let's time it to class. Okay, and then we want to do system D, and I'm gonna choose.
App daily.
Do the service.
Yeah.
I messed up the thing already. It is. Yeah.
Right. Timer. Dot timer versus dot service. Try.
The service.
Oh yeah, the service, I think we're specifically wanted to run the timer though.
Right, but if you consider the timer to just be Scheduling that runs the service. I can see how you would end up if you want a one off just run the service directly.
Oh, say app, dot service.
No, where he has pseudo system D run dash you app daily or yeah. Sorry.
I think this now going back in my memory, I think this might create a temporary time or a transient timer that will Only run basically once at the on calendar time that specified so probably similar to the act command with a Chron, at versus Chron tab is like, Hey, I just want this to happen once versus on a schedule.
And I think system D run. Versus a system D timer might be the similar analogy.
So I think you need to give it an actual executable as opposed to like the unit is to.
Yeah
Yeah, let's just do that. There we go. And so now for your list timers.
Oh, let me do.
There it is.
The third, the third row.
Oh, you see it? Oh yeah, there you go. Nice. So that's basically a way to create a one off timer.
What was the command you used again? I'm I'm glanced away for a second.
Can't do that. Last delay? Too bad.
Yeah.
What?
We're watching Sean. You blink and you miss it, man.
Yeah.
Hey, yeah.
The inner tubes. I'm finding that it's system control. To run it one off.
Not necessarily sketched it, but like if you want it to run right now.
Gotcha.
Yeah, but I think what Ron was saying earlier, was like, So yeah, we can run, we can run the service fine, but he was saying sometimes it might be good actually run the timer because then you get this like last and this Like all this data.
Like maybe you wanna show that it ran, you know, here, like for example, maybe this is like stored in a log file or maybe like Lee was asking me if there is some way to kind of see.
Like the past runs or something. And so that could be interesting.
Or even just to test what you've done is working. Right.
Right.
And so how does one run a service file? Now, I know how to enable Dashdash enable dash now whatever But how do you make it like, yeah, I guess start.
Yeah. Hey, just.
Yeah, and if it's a one off or a simple, that should do it, yeah.
Don't you say permanent or something like that?
Well, what I always do is, enable dash dash now and that enables it and starts it.
Yeah.
Right.
I'm seeing a system control start. Name dot timer.
Really?
Oh, did it. Look, look, look, hey, I did it. So I just ran, I just ran the app daily.
Hello.
Service and look, now it filled in that I ran the timer 23 s ago.
Hmm.
So it's smart enough, I guess, to realize the unit. The the timer wants
What's ran? Hey, that's pretty cool.
Okay.
How did it tie the 2 together? I want to do a, I can do it on my system here.
Yeah, right. And so, the, yeah, let's do that.
But not the service, right? The timer.
System CTL cat, apt daily service just to see what the dependencies are. No, the service actually.
Cause I think what's happening, okay, I don't know this, but I think is happening.
Normally you have to specify a unit that you want to run under the timer section. But I think if the timer and the service have the same name, minus the.
Suffix? I think it's just smart enough to figure it out, right? Because when I look at my
Right. And it said. It's said, There was some, okay, wanted by, Tano, timers, target,
Yeah, so I think this wanted by down here is just when you run enable. System CCL enable it's like what where does it create the same link I could be wrong.
This wanted stuff.
Right. Can, can, can you cat the time or file for the app dash daily just to see if it's explicitly references the
Let me check this.
Probably does.
Okay, this is
So, okay, so here's our time. And then down below that is our service.
Okay, okay, thank you.
The name match.
And like I said, I think it's implicit. Because I think the timer and the service have the same name.
I think it's like implicit. That's my hunch.
Yep, yep, I think you're right there. Thanks.
But you can see here on mine, I actually specify the unit, even though it is the same name.
I don't, I guess I don't have to. But I do specify the unit and that's how it can tell the dependency relationship, right?
It's like. This timer starts this service. So if the service doesn't exist, then obviously the timers like invalid, right?
So.
Cool. Yeah, there's so much to system D. It's pretty cool. I like it.
Every time I've used it, I've had a good time or good enough time. That I like using it and I think I've shown some ways that it's better than Chron tabs.
Absolutely, A, you have. I agree it is a huge, huge ecosystem. And on one hand, it's like, oh, I can't digest all of this.
Like you need a you need a degree in system D on the other hand I don't need to use all of it Like I don't use every tool in my bin folder.
I don't use every little thing that comes with my default install. So it's there. That's fine.
I don't have to use it all, but, so when I sit there, I look at it and it's okay, well, it's very well documented.
Holy cow, it's well documented. But I cannot. Figure out it's so complicated.
But then it's like, well, I do have. When I look at the documentation stuff, I come away with a real feeling of These guys know what they're doing.
This this is well put together the the edge cases and the run this unless that run this and if that is already running stop that and run this.
Oh, look, don't run this because that is already running. Run this and this will uphold that.
So that has to be brought up with this. And if this goes down, that has to go to the inter interplay between various services.
And stuff is Amazing.
Yeah. It is. The one thing I wish about they have a lot of options that are similar though, right?
Like we were looking at exact start. Like exact stop, exact stop. Post or whatever and like all these ones.
And it does get a bit confusing because sometimes you just want. Just start or stop a thing, right?
Yeah.
And it's like. What's the default one that I should use? And then what's the one that you added for all these edge cases?
Yeah.
You know, and I wish I wish it was a little bit more clear maybe in the doc somehow about like 99% of the time, use just this one.
But then there's all these other ones that you can use if you want, you know?
Yeah, yeah. And even with the, the, Is it the exact type one shot versus forked versus simple versus and it's like, oh, that's a nice little list.
Yeah.
Now, which one do I want to use? Darn. I, well, let's see.
One of them will consider the script or the service finished as soon as it launches it. Another type will wait for a return code from it.
Yeah.
Okay. Okay. Now you're already pushing the limits of my ability to understand and it just goes on from there.
Well said, well said.
Yeah, I think that what's your sound sounds like the forking one, right? To like forks off another process and it's like, I'm done.
But I could be wrong, like I said. Have to read the man page very carefully. To remember exactly.
But.
Yeah, I'd have to read it again too. Yeah. I don't think that's actually Correct, although it's very similar to I think simple it's just like we'll just throw this off and consider ourselves done here.
Yeah, you might be right there. Yeah.
I'm not I'm not sure.
Do you find the journals, control? Helpful in looking at what you've done with this stuff.
I was just about to ask it.
I like it. I like it when it's used. So for all of the system D stuff that I create, I just have it.
Spew to standard out which then goes to the journal, right? But The problem is, like that unattended upgrade service I was talking about, it doesn't log to the journal.
Okay. Okay.
It logs to its own file somewhere, you know, and so, not as helpful there, you know, so I wish everybody would use it and then it'd be super useful and actually unattended upgrades probably has a configuration setting that would log it there but I just haven't investigated that.
Could you use the logger command to? So that in there.
Maybe.
One of the features with the journal CTL that I like is that, When you're trying to figure out what's causing my system to crash, you can tell it to Show me the logs from.
Such and such a unit or service. From 3 boots ago. Now, try parsing that out of a giant log file like, okay, where within this log file did my system reboot?
I don't know. Good luck. You know, have you got an hour to go through and try and maybe find something visually and then make note of the timestamps and then pull everything between the timestamps.
You want to try comparing times stamps and bash. Script. Good luck. With journal control.
It's just like, yeah, show, show me what happened 3 boots ago. Thank you very much.
What I like is sometimes they, it, with the errors, it gives you suggestions on how to fix your error.
Not always, but occasionally.
Can I ask a question about multi-?
Oh, sure.
Yeah.
Well. As you're about to, I assume at some point you're about to like hit control D.
Right? And that's going to bring you back to your original show. Right? Where you started Multipast Chrome?
Yeah, I just did it right here. So, and now back in Powershell.
Yep.
Oh, okay. So if you did a Well, how would you? Shut down. That container.
Right.
It's a VM. But there's a stop.
Oh, you just say multi-pass stop and then whatever you named it.
Okay, okay.
Stop suspend, delete and purge. So they have a lot of different ways this time. And with the newest, RC, let me see if I have that up.
With the newest RC which I tried running but I had some issues with 13 one dot 13 RC they added snapshot snapshot and
Wait a minute, back up a minute. What's an RC and what's one dot 13?
So multipass. RC is I think release candidate. Version one dot 13 dot 0 They introducing snapshots.
So you can do multi-pass snapshot and then multi-pass restore to restore the the snapshot.
Okay. Okay, so you're saying that if you just got multipast straight, you would just get the stable release.
Which would be like some other one dot something. And then the RC is the one dot 13 branch right.
Okay.
Right, right. And here's all the I don't I don't think I can make this spot bigger but yeah here's the VMs running in hyper V they're actually VMs it's not containers which containers are nice if you don't need system D right and you don't need the kernel that's when I would use a container, but for this demo, obviously I
need system D. And so I thought doing a VM would be. Easier way to get system D than a container.
And Multipas made it super easy to spend one up and. You know, like a minute, so.
Yeah, that's okay. That's okay. That morning.
I did like how with this VM, multipath that you could mount something from your host into the VM to have a shared folder or file or something.
I thought that was pretty good reminding me of Docker or something, looked really nice.
Virtual Box and Vmware. Player, I don't know about. Center. Have that capability as well.
And I believe it's done without. Networking.
So that's not unique to Multipas.
Yeah, and that's all this is using under the hood is either a hyperb or virtual box or QEMU.
Depending on what platform you're on. I don't know what uses for Mac, I don't know.
Yeah, then you've got the new in series max, which. I haven't experimented with running a Linux PM under that yet.
I'm hoping to though.
Yeah, some people at work do that because they, because we we have to run Oracle database.
And for the longest time they didn't have an arm build. So our people that got the new Shiny Max had to run.
A Lima virtual machine. X 86 and then run the Oracle data and then run Docker on top of that and then they could run the Oracle container.
And their new ultra fast Mac was like you know twice as slow as everybody's Windows machine because of all this emulation that had to go on on top of their.
Fancy new processor.
Yeah, and that was what the, wasn't that what the, what's that, saw a hi, Linux or Si Linux, I think.
Was supposed to be. Linux for that. But those Apple in.
Asahi. And,
Yeah But I didn't know understand if that was like completely replaces mac OS or does it run as a BM.
Underback OS.
It completely replaces mac OS, but you will need to keep a partition with Mac OS on the system.
For doing something, but it's not. Running all the time. It's for running updates or something like that, but when it comes to putting into Asahi, it's on the bear metal so to speak this the silicon itself.
Arameto, okay. So there are like, Sean was saying, virtual things for example I think parallels maybe you can do it. I don't know.
There's a couple of them out there, right?
Right. No, I've heard I've heard just fantastic things about Asahi. The performances.
Second to none in the Linux world on laptops or something audio is working quite well now. And some of the podcasts I think I mentioned the late night Linux podcast way up to top the chat there earlier and One of those guys a former canonical employee I think and he's he I think it was him that was running it and he's Just been thrilled with it.
Right.
I follow one of the developers of Asahi on And it is interesting watching him. Work on things.
Complain about trying to fix things upstream. He ends up finding a bunch of bugs that are actually outside of Asahi like something in Colonel or something in.
VLC or pick your application. There is. And unconscious. Platform bias specific bug that when it is tried to make work properly on a different platform, almost like little, and big Indian.
Hi.
Right, yeah. X 86 bias as opposed to platform independent. Yeah. Cool.
But, and his efforts to get sound working right. And. Yes, a lot of people end up.
Harassing him.
Yeah, he's
Yeah. But I didn't mean to, but I didn't mean that this, I didn't mean to. Of course, Sean.
So I just was curious how you were gonna. Stop that.
Oh yeah, I gotta stop to be in. Thanks for letting me.
Yeah.
Don't worry, Windows will run out of memory and it will build something.
Yeah.
Too soon, too soon.
Sorry if I touch on something I'm ignorant of.
No, no, no. I'm, I'm fully, okay, getting gripped for running windows.
That's fine.
I am old enough and have been doing this long enough. I don't care which editor you use for any value of editor as long as you get the task at hand done.
Hmm.
Yay, Okay.
I've used I've used Nano to do a lot of stuff including like building websites with React and JavaScript and CSS and all that stuff.
And I just did it in Nano on a remote. Machine and I knew I was somewhat hampering myself, but at the time I just figured it's probably faster than trying to.
So much muscle memory if I tried to do it in VS code where I'm not as familiar it wouldn't actually end up being that much faster.
Yeah. I refuse to learn something to make myself faster.
I do have an after the comment about system D versus CIS 5 and it. I suspect just about everybody on this call.
Will agree that sis 5 and it is now. 30 plus years old long in the tooth and lacks many features.
System D being much newer brings many more features. But there are other, systems for other platforms that bring similar features.
One that I deal with in day job is system management facility. On Solaris has many of the same types of features.
Did. System D has. So in the Linux world. This to be is the new kid on the walk.
In the script. Or a management world. Yeah, there's other things that have. Do what does even Windows.
Has some things that This can be brought in that SIS 5 did not.
That's a good point. With a lot of the Storm and you hear about complaints about system DI can never get those people to to try to address what it is that system D was trying to solve.
For example.
Canonical came up with upstart. And upstart ended up being adopted by Sussi or at least Open and Fedora and I believe Red Hat.
But in the end, system D did went out and and system D became kind of the services lifecycle management.
Tool for for Linux and It's like, well, why was Linux looking for something like this? And it turns out, you know, there's a video I just posted there.
Yeah, you're right. Mac has got Launch D. Windows has got some similar thing on I don't know what it is and frankly I don't care, but they have something and it was only the Linux and the BSDs that didn't have some sort of a tool like this.
And it's perhaps not even accurate to call system D and in it system. That's
System is. I am anti system D, you couldn't tell. System D ecosystem to me.
Is too many things and violates. Do one thing and do it well. Precept that is so common in Unix.
I also have run into too many times when I'm trying to shut a system down. To work on hardware.
And I end up in a perpetual. Stopping system, our service didn't stop within 90 s waiting 5 min.
Service didn't stop waiting in 5 min just waiting. And I have no recourse. Short of power failing the box.
At that point. Or similar types of things trying to bring the box up. And it just Any other in it system on any other platform?
Would fail and move past. What I end up dealing with system D is nope I'm gone.
We're going to sit here until I'm happy and I'm never going to be happy.
I've heard people say that before and I haven't experienced it. I've seen on reboot where things might.
Time out for some amount of time and I don't know. I may have just said, you know, screw it and just hit the power button because I didn't care about that.
Service closing down cleanly. I was like rebooting for some reason. But Hello, having us something say, hey, you really need to like close your database down clearly cleanly.
You don't want to you do not want to be pulling the plug in a database base probably or something like that.
Right.
You isn't necessarily a Bad thing. But I
Saying the most reproducible thing I would run into. Is like if I was running view or less or something, a pager.
On a file on NFS. And the NFS server went away because. My network table got unplugged.
And it would try to close that file. But it couldn't close that file because it was. The harder soft.
I don't remember what and it couldn't talk to the NFS server so it was just in a perpetual wait state.
And if I had a terminal, I could just kill dash 9, the pager, and it'd be fine.
I could probably just issue a regular kill to it and be fine. But instead, I'm stuck with a system.
With many mounted file systems and various other things. That will not unmount cleanly. And I'm more concerned about file systems.
Than I am, you know, like you were saying, the database, I don't have many databases.
But it's. Usually something stupid. Like somebody's go kart ran out of gas.
On the on ramp in the middle of rush hour and the tow truck can't get to it and it's pouring rain so nobody will get out of their cars and push it out of the way.
So everybody else can go.
Yeah, I mean, it having heard this from some other people as well. It does sound to be a, a problem.
Have an experience so I can't say too much about it but you know trying to make sure that you don't end up with a you know, pulling the rug on a file system or a database sounds like a pretty noble task but it may not be executing it properly.
But I do think that considering it a in its system. Is a missed consideration. It is. Better considered a services lifecycle management system.
Which of course requires it to be able to in its stuff as well because being editing stuff is going to be part of.
A services lifecycle management system. But he services lifecycle management system is going to be a lot more than just like Firing off a a new service and then washing your hands and not carrying any longer if that service trips over or something like that, right?
I can make a suggestion. That particular problem. Would seem to me a really good question to pose to 2.5.
They always have a section at the end of their their podcast every week. Where they answer listener questioners.
Oh, I don't have any system D systems around me. I'm running gin to an open RC and I'm thinking very seriously about how much do I want the Linux kernel.
And do I wanna go BSD or since I'm doing Slayers for? Do I wanna go contemporary Solaris?
I'm a Unix power user. I want The G and you tool chain?
I'm not doing things where I wanted the Linux kernel, like network namespaces the same way.
Or I could do them on a VM. And access across the network. When you start doing remote command execution and x 11 remote networking What is the computer and what is the kernel running the screen you're in front of?
Becomes a real squishy. Undefined question and when there is a piece that bothers you You can probably trade it out without a whole lot of problems.
Interesting alternatives.
Glad you bring them up.
I was very impressed with the the editing of the override files. I was aware that you could have little snippets in in a sub folder like that, but when Shawn showed how he ran the system CTL edit service name.
And it commented out the existing stuff so that you could easily see refer back to what it's doing and copy and paste it into what you want it to do.
Along with a little instruction header line there. And. When he made this change and in the timer instantly reflected that.
I thought that was Pretty neat.
Yeah, that looked like a good. Okay, wrapper. You know, create pulling a template that.
Pulls in the current timer file as comment and cute in a good way.
Okay, how many times have you all been like? Wanting to run something on the crown, right? So you like, you edit your script and then you like set the crown for like 1 min from now and then you wait.
Yeah.
Hello, let me have a time, typho, so then you set the timer.
You see, as the crowd again, you set it for one more minute, then you wait.
Oh, you see, I do it a little differently. I've gotten kind of allergic of complex Chron entries.
I put stuff in a script and I have a singular command in Kron. Per entry that is the script.
So I don't have to fiddle with the edit, the minute, the minute game.
It's just, I run my script, I fix my problem, I run the script, find and fix the next problem.
And once the script is happy. Then I go poke the crown for 1 min from now.
Okay.
Oh yeah, but then you, and it turns out that environment variable that you have in your profile doesn't, you know, that you have in your profile, doesn't, you know, that you have in your profile, it doesn't, you know, Chron doesn't have that.
And then, you know, your script is not working again. And so the reason why I'm running on the Chron is just to get as close to what it'll actually be like when it rounds on the problem as possible.
Yeah, I'll say. The experiences I've been burned by that I learned how to avoid most of those, but occasionally I
Yeah, I learned the hard way to put all all of my stuff into a separate shell script that can then be tested and invoked at any time.
Of our
One of the big things I had with putting certain bits of script inside of a was when I wanted to say run a backup and our synchron, a tar or something and I wanted the target file to have the date and time.
So the date format using the percent symbols to try to refer to the year months a day. And then it turns out that inside of that requires some weird special treatment.
Yeah, code inside of code inside of code is always fun.
I've, I've done maybe a question when you have time for me.
Go for it.
Okay.
I, I have a task that I just run as, as, as, I'm my user, not a system path.
But I'm running with the app man now. I'm here, and everything I've looked at with system, you, by setting things up to run under the system.
I in this in the you know So a few, well, the modify system files. I just want to run those things as they use the task once a week.
Yeah, come on, I can't I can't see what makes it happen. They're moving.
I've got a schedule and everything. I've got to go through a schedule once a week and schedule free every week.
Once a week. My f use as my user.
I don't see how for them. I'm sure.
I think That was basic. And I think found the answer to that.
I've had problems with Chron where,
I have a script, probably would have been a Python script with the one that I recall that,
When I as my user when I logged in in my bash profile that set it an environment variable that the script used.
And it worked fine as long as I ran it logged in as me. But then when I log out That the environment variable that it.
Hi. So
Adm my login provided wasn't there so When the system ran it. It didn't have that environment verbal.
So things were kind of subtly crashing in the background. So that's one thing to watch for.
Yeah.
Right, but I mean, I,
There was kind of fun to figure out.
This is a very, so what is a simple one line command. I just say app. Our minute second, Can I run?
I just, by putting one empty for every week because I don't, I can't, I don't think you can say run it every Saturday.
Once a week to run and record the radio program off the web.
Yeah, you can give it a specific day. I think, every Saturday would be.
I don't mean I don't want, I want to say every Saturday, but I can't do that with the, I can, as far as I can tell.
Well, with that, yeah, maybe not.
And
If I got wrong with prom or or or system D, I've got to create files and run them.
As And as the system and and I just want to run as my user idea with the week.
Well, good. Kron's designed for that. I do it all the time.
Yeah.
Okay.
Hope. Right Okay, I haven't gonna make a run in the system. I don't want to run the system.
I just want to run
Right. Look in the chat. About time stamp of 8 30 rb said to everyone ron BC said to everyone at grant yes any user can create a unit file stored in a sub folder of their home directory and that sounds like exactly what you're wanting to do.
Use a system D timer as your user. To record the radio program.
I think even better Carey would be. If you run man system D dash run. We should be able to see like what Sean did when he created a temporary slash transient timer that ran his LS command.
And if you did a system D dash run and then whatever the name of the command is.
That you wanted to run to record your thing and one of the options to system D dash run. Is a calendar spec.
So like you know, every Saturday and at such and such a time and that ought to do it. The only problem with this is that System D run is for transient jobs.
So it will. Perhaps not persist beyond a reboot. But it will create a timer and I believe it will create a unit file that you can probably then use to
Yes.
Make something that works across reboots and things like that and the oops I may have made a typo in chat there man system D dash unit will show you where within your home folder you can put your unit files and stuff like that so you don't have to have them on the system wide sort of a thing
Just as a, backup to something, Sean said very early on. Was that there's a you know, crime that daily crime that weekly thing.
Okay.
And it's not under the EDC stuff, right? So it's under Was it the bar or something?
I can't remember.
Right.
Cron, Chron, tab, username, you can. Be able to get to that at easiest as your user with a CROC.
I was just.
Which will your default editor for your user content.
I was just gonna say that. Yes, yes, I was gonna say Krantabashi.
Will bring up your editor, whatever you got editors that too, and, and you can, you can add in something in there when you save it.
Yeah.
It'll go into into there and then it'll run weekly or daily whatever you like
I have seen multiple systems where User Chron tabs are not allowed and sometimes when that's the case You have to add the username to like, it's a cron.
Dot allow or something, but if you try to do it as a user, you'll get a very obvious error.
Hmm.
And that'll be a 45 s. How do I fix this? Go ahead. You're using name to this file type thing.
Right, it's kinda like that's, thing, right?
Yeah.
Okay, so sounds like Kron's.
That'd be my inclination.
I mean if you just want something simple
Okay. Since this talk was about Christmas isn't being better, I bet that's good enough for me.
Yeah.
Yeah, let's try it. If you don't mind, we could try it real quick.
We can get this set up and working.
Okay. This is how we all
Let's see. So.
So, does if you do the Kron as well as system D, does it like one over idea or do they both run kind of in parallel?
I would think they would both run.
Okay.
That's the actual executable is aware of the other. Or checks to make sure there's no other instance of itself running type thing.
Okay.
Then it's a race condition of which one kicks off first.
Being careful what filelessly write to.
Yeah.
Oh, I wanna ride to it. No, I wanna write to it. No, I wanna write to it.
That's what lock files and Singapore files are for, right?
Yeah.
Yeah, interestingly enough, in my earlier presentation, I forgot to mention this, but, Fernando Corps, he's the guy that invented the password. He is the guy.
Whenever you log in invented the password, he is the guy. Whenever you log in to any system and you have to type your password and you can thank him and the reason he did it.
Was simply for what Gary was saying. The people were using the time sharing system and they were just saying, hey, there's a little pile over there.
Let me go edit that file and then they would edit somebody else's file and that person come back and go wait a minute somebody ended my file why did they do that?
So.
I thought passwords existed before. File system permissions.
That's a different thing, right? I think the file system permissions came about, I believe.
Right.
I will be in Multics, right? This is prior to that a little bit the CTSS.
How systems were Viggo
Having a pass. This
What was it in GEE? Was it in G Coast too? Wow, permissions or? Okay.
Yeah.
So.
Okay, so you're right, Okay, first, right. But the passwords like in order to be able to log in.
And then know that you're you right to allow you to edit the file. That was him.
Here's some trivia on the trivia. What was the original purpose of the? Geckos field in Unix.
Don't know.
Was printer identification for when Unix talked. To a GECOS machine.
What printer do you?
So you mean in the password file itself? The.
Okay.
The geckos and field is a defined field. In the password file. We no longer use it for its original intent.
So it has been. Subsumed. By we put. Friendly name room number, phone number, etc.
Yes.
So it's kinda like a sort of a commentary or note field or something Yes, okay.
That is that the one that could be updated and printed by the finger command. I forget.
Finger will actually read a bunch of different fields out of password, but
Sean you might have to do whatever we go
Thanks.
Forgot the system CTL.
Thank you.
That's Oh wait, what if I do? There we go. So you just do the dashash user and then you don't need to go.
I'm not showing up though.
I gotta say if it was Kron, it would have been in place and tested despite the minute increment game by now.
That's true.
Yeah. Yeah, but you wouldn't have all the interesting logging that you can go back to and refer.
You'd have to build a logging yourself. That's one of the things I like.
It's called T and output the program with a PIN to a log file.
I know, I'm just being snarky.
Yeah, Stanford was probably right, with you there. He's he's not a fan of these systems that don't use plain text files
Sandford.
I think some of the comments Sean had. About all the places you have to look for Chron tab entries.
Versus system D timers. I feel similar. About when I'm debugging something. And I'm looking in log files.
It's like, okay, where did system D squirrel away the message that would have gone to Var log messages on.
Slackware systems 10 years ago.
Inactive dead. Hi, I'm sorry.
That's fine. I think I enabled it was a one shot. So I don't think that makes any sense.
I think inactive is correct. It shows that it is enabled that the vendor preset is also enabled, which is odd.
And then inactive, which means it's not currently running, which is probably good.
Okay, so it did run once. Okay, so we got it running now. We just do the timer so Let me, go copy a timer from somewhere.
Let me copy a timer from my notes.
So what you're saying is you need more templates.
Yeah.
As a user.
Sorry that. Let's try that. Let's try. This one.
We do.
No, I don't know the password.
Bye. Do you need a dash all for?
Maybe.
So not seeing it.
Okay, so this is the so this once the timer
It's a one shot, it doesn't echo. And then this is the timer.
I didn't specify the unit.
Maybe I could try that.
Sometimes what's that necessary?
There you go.
When when it did the
Okay.
Okay, we're getting close now. What is this?
One piece of that just got further away. It's no longer all timers and one output.
Where's the download radio dot? I'm come from Oh, I guess I can cat it, right?
Yeah.
Us. Is there? Nope.
Can you just, remove it or delete it by system CTL?
I don't know.
We nope. I don't see a remove.
Disabled.
Huh. Is there a delete?
Oh yeah.
Huh.
You all that name? That was a radio downloader.
Right download or tab.
There we go. Radio download. Okay, so it's listed as here. It's enabled, which it shouldn't be.
And then let me do the timer.
Like we're pretty close. So we got the timer, it's enabled.
And the problem is, is that we're not seeing.
We're not seeing the next run.
So let me check.
You need to do enabled, now. I think you said enabled, but not now.
Yeah, but the now should just run it.
I think enabled means started at the next reboot. Versus
And now, and now, I mean, it started all started now also.
Okay, I'll try it. Oh, Oh, okay.
Yeah.
Yeah, you have completion. Oh, it's not.
That's not working.
Oh, you're right. I need to start it.
So that means that it will run. So it'll I put it around at 0 55. Okay, so now we gotta do.
System the Oh, calendar. Every Saturday.
Hmm.
I don't know how to do every Saturday with the on calendar spec.
Let's see.
Oh, that's nice. On clock change or on time zone change.
So an on calendar can be triggered when the system clock jumps relative to the monotonic clock.
Or when a local time zone is modified. That could be handy as I'm traveling as I'm going through time zones, you know, trigger something.
Oh yeah.
Oh, there we go. Hey.
Like. Like. Right. Set your watch back.
There's also system D dash analyze. That you can throw a calendar phrase at and it will then tell you it will expand upon your calendar time and give you a little more information on it kind of neat.
You need to reload.
I didn't have to why I was doing the
Well, I'm doing the system level one. No. Well, that might not be valid.
Let's try just changing this to. What I know will work. Perfect.
I think if you I think you can put a keyword of like Saturday.
Oh, that's tomorrow.
Updating. Why wouldn't this? So why is the override working? Interesting.
Okay, what if I edit the actual file?
Yeah, so much better. Okay, let's do.
Think you can put like sat or Saturday and that's
So, year.
Okay. So I have to enable it to see the change when you're running it as user. That's so weird.
Yeah, that doesn't
Try changing your override this Sunday and you're re-enable.
Why wouldn't you restart instead of, of enable it again?
Oh yeah, that's good point.
Yeah, make an edit in the override and then try whatever command he thinks should. Okay.
Yeah, well the overall is not working because it says 6 right now That's not what.
Okay.
Yes says.
Let me try the reload.
Not applicable for a timer, so I guess that's not some kind of thing.
Try restart.
Okay, didn't complain. Okay, so I guess that's how you run. Sorry, it took me a while.
I've never actually done it as a user before, but. I think that's how you would do your thing every Saturday.
So the first thing you'd want to do is let's do it.
The first thing you want to do is create a service file like this. You'd want the type to be one shot.
And then inside of the exact start you put whatever your command line utility is right here, whatever your command is.
And this would be your service file. And then you do the timer. And you'd specify on calendar every Saturday.
Any day of the you know year basically and then whatever time you want it to kick off and then you'd have to do a system CTL enable.
This is the key. Just to do. Reload dash dash user, right? So that'll load.
The unit files. And then you gotta do enable dash dash now. User and you gotta put your
Video download a timer. And then once you do that enable now. Then you can do list timers.
Dashdash user and then you should see it gonna run. On Saturday.
So. I think that work.
And up your home directory so you don't have to recreate the service and time. Again.
Don't know why the over is not working, but You know, it is 9 35. My brain's fine not working that well.
Yeah.
Hello.
Kudos to you for letting us
Armchair quarterback? So.
I was gonna get it. We're still on the recording. I wasn't gonna let you all.
I think it's still recording. I was gonna let you all undermine my talk right here, 5 min after I got that.
Yeah.
Okay.
From tab dash e as the user.
That's right.
I, I think that the reason the tab completion wasn't working might be the folder location.
This man system D dot unit. Shows Config, and K, it does show config. Dot company system D user.
I would not be at all surprised if the, syntax files. For temp completion.
Are not cognizant of. Looking in user directories for contents to tab complete with. That from a completion syntax standpoint.
Oh my god, that is much more complex to look in many directories instead of just for files and.
Specific ones.
Yeah
Although I think that if you Speaking of there is a location.
Todd local
Share bash completion. Completions. And then you can have your bash completion.
Scripts in there. And interestingly, the bash tab completion processes like the complete, etc.
Will actually, they will look in there, but it's like a lazy load. They will only look in there.
How do I say this?
If they it's unlike putting them in the etc. bash underscore completions and stuff like that it will find these things but it kind of lazy loads them.
It will only load the functions when it encounters. A tab tab on something that exists inside one of those things is kind of weird.
I got bit by that.
Hello.
Hello. Yeah.
Are you guys still gonna do that thing you were talking about?
Talking about Bach upgrade.
That's right. Yes. Thank you.
Getting off all late.
Yeah, I think it's an awful late. I mean, the general idea. Is there that we need to go through this?
Yeah, the fact that we've created that wiki, that gives people a place to, Kind of join the conversation, see what's going on.
And, if, if there's time at the end of next next week's meeting, they talk about it a little bit more.
But.
Thank you. I get the right window out there.
Oh, he is trying to put up the wiki right now. Yeah, I'm trying to show it, but it it didn't give me the right screen.
Looked like a wiki page. I don't know if it was the right one or not.
Not the right one.
We could probably stand a, a smaller. Whiggy name.
Yes.
Is that, you guys see the slew wiki? Okay. Oh, this is under wiki.
Dot slug.org. This the build page that we talked about a Hi, and Shawn and some of the other guys and Ron and Grant have been starting with it.
In fact, some I updated it tonight.
We got some good history here. We're getting some good notes.
If you're interested, yeah, those you helping out. You're already in here tweaking it and looking at it.
I.
And by family, I also would like to help out. We need all, we need different skill sets, you know, we need people that can go through and do the upgrades.
We need people that can work on the documentation here so the plan is clear. After we start doing it we need our goal is to update as we're doing it And it would also be good to have some folks that.
Aren't necessarily techies, but Just interested in hanging around and watching what we're doing and another set of eyes to help catch any errors.
And document.
Oh guys, we want to call it.
Quick question.
I Add one footnote in here. Somebody who worked with the good old Honeywell Gcost machines of the the accepted pronunciation I've always heard.
Was Gicos. So
I'm not sure where. Where the other destination started, but GCOS is something, the people who used it.
Of 20 to 40 years ago. That's what they were calling it.
Feld then because I see 2 different spellings at different times. GCOS and GE, COS.
Yes. When, it was started, it was owned by General Electric Corporation. In 1970 honeywell bought John Electric's computer division, which was based in Phoenix, Arizona, although it had other pieces around the country.
But after Honeywell bought it, they decided that instead of calling it the general electric comprehensive operating system, they called the general comparing to operating system and eventually they drop the E out of the So, but it was the same software.
It was just a Minder name change.
Right. So how was it pronounced when it was still with General Electric?
Still called JCOS. They didn't change the pronunciation.
Okay, I will personally try to make Retrain my brain, but everybody I've been around has called it, and it's probably just lost time and there's also some tomato Sutu pseudo potato potato type thing in there.
I think I heard.
Good will be. Yeah. Yeah, Grant, I forget you're located where?
I'm in St. Louis. Been here about 9 months.
You are Where have you heard the pronunciation here in town or out of town?
Hi, Shawn.
We I was at IBM in Colombia about a decade ago some 30 year IBM Veterans, Unix guys.
They called it. Geckos.
Okay.
And that may per specifically be they had only seen it GECO S. And never heard it pronounced.
Yeah.
I think somebody else chimed in and they had a quick question, wanted to make sure they didn't get lost.
I had just was curious on how whomever had the Weiki page up. Had it in dark mode.
And. I think my browser by default requests dark mode.
But it's not showing in dark mode. Is there something I'm missing or is that something that somebody set up as a specific thing.
No, in this case it's a plugin.
I don't know. Okay
All right.
Well, wrong page, hang on a second. Years ago I found Dark Reader. It will basically tweak the HTML as you display it.
Right, yeah.
Who do I need to talk to to see about getting? Access to the wiki. I don't knowingly have any logins on any.
Just mailing list and heckling people.
That's really right. Stand by 1 Si think.
You're talking to the right people.
I think I was.
Yeah. Well, let me let me try to log out real quick.
Yeah, I discuss freely.
Okay.
You know, cause if somebody blows it up, we can always go back to the last backup.
We do it every, we pull in every 4 HI remember correctly.
Okay.
Yes.
But the, so I made a comment about the wiki itself. When you're editing it.
Now you're basically editing the text file. It's saved on Bach. Oh, it's just text and then.
You've got formatting in here.
Asterisks. And. You know, there's a whole you can use the help bar up here to tweet formatting.
Yeah, it's standard, on top of mark down or storage or something like it.
Yeah. Alright. Yeah.
Hey, Lee. Yeah, well just looking at the at the wiki And is it under build?
Docs or is it under projects? The the block upgrade.
I'm sorry, I can't see the whole thing in one.
No, the
The link is. Bill and then there's some tabs here and in third 4 stanza.
Planning a move which is old building amber's old back 2,018 is old The fourth line is Bach upgrade Debian 10 to 11.
Which is what we're looking at now. Once we get that done, we have to work on upgrading mailman.
Replace mail man 2. And then once we get mailman. Upgraded. We can.
Upgrade from 11 to 12 which will probably be next year. But at least this way we can keep notes of what we're doing and we've got a good reference for it.
Okay, I got to it. Yeah, I found the link so Okay, thank you. Just.
Okay, good. Sure. Is it speaking or should you ever get your, Channel like working?
Yeah.
Oh, you mean as far as having it connected up to the internet? Thing. I got a way late on that project.
So.
Okay, one that, no, Biggie, if you need more help, just let me know.
Yeah, it's a. Yeah, there's just a well for example, it wasn't working at all today because we had a big snowfall today or yeah.
Yeah, I think it was today, right? Maybe it was yesterday. I don't know.
But anyway. There was so much snow that If it came in at all, it was like.
Yeah.
Pixelating and the audio was choppy and everything like that. So. Yeah, so, but yeah, as far as the internet goes, I don't know.
What, I needed to look on the dishes online help. And when I first looked for that, I couldn't find it.
But I didn't go any deeper after that surface level. Okay.
Yeah, yeah, no big deal. I just wanted to check where you were since I hadn't talked to you for a few weeks.
We're still recording.
Yeah.
Yeah, yeah, Yeah, that's fine. That's fine. Yeah, I just, You know, I don't know.
It's kinda like if, if I ask her to do it and then, you know, I say, okay, press this little blue button and you know, say, okay, press this little blue button and then you'll be able to ask for whatever show you want.
So I don't know.
Yeah. Alright, yeah, are you ready for a book in? I think so. Thank you all for coming and I apologize.
Looks like we still have a couple people who may have joined us for the first time. Normally we a little tighter on the time than this, but, we're having such a good time, excellent talk by Ed on the front end and we really didn't expect Sean's talk with Sean kept on saying, I don't know if I have enough information to do a long talk.
Well, no, I don't think I told the truth. But both of our presenters, you did a wonderful job.
Thank you very, very much. We're all better informed for it. And thank you all for coming tonight.
You've all been a great audience. You contributed a lot in questions and commentary. And with that we're going to close the recording.
This is Wednesday, January the tenth, 2,024. It's been the monthly general meeting of the St.
Louis Unix users group slug. And our 2 speakers tonight we had Ed Holland doing a talk on the history of Shell and Sean.
Tweethouse