I don't think I need to introduce the next speaker very long, because you all know him. Our beloved dictator, Mr. Brandon Robinson. Yeah, you're in for Nixon now. Okay. Well, just as a word of preface, when I originally submitted the abstract for this talk, I thought it was going to be for a 90-minute workshop. Sometime after that, the organizers decided there weren't going to be any 90-minute workshops, so there is more material, even after I cut it down a little bit, I think, than we can fit in. So, if I start going too fast, you know, raise your hand, stop me, and I'll slow down. Yeah, very funny, Jimmy. As fast as you talk, but Jimmy Kapliewicz, SPI treasurer, is here, so get your money from him. The checkbooks are in my hotel room, so. So yeah. Okay, well, I'm Brandon Robinson, and I'm here to talk about man pages, and you may provide your own alternate expansion for the F in the acronym, if you like. I'm going to cover a few areas. I'm going to talk about why I'm giving this talk, why you should care about it. And I'll move on to some basics, which will be more like how to read a man page in source form, so that we can then move on to understanding how to write one effectively. And that's man page tips and tricks. And then there are some issues surrounding man pages that don't involve actually editing the source file, the dot man, or sometimes they actually have the suffix number in the source distribution. It just depends on what you're doing. But ultimately, we have to get down to things like, gee, what should the copyright and license be on my man page? And how do I actually get it installed reliably, especially if I'm using the alternative system and I've got a command that uses alternatives and a man page for that command? I don't know, but if you're like me, you've been annoyed consistently over the years by getting these spammy mails from Cron, usually weekly, from Mandi Bee complaining about dangling sim links. And this is usually because someone failed to do the right thing in their post tensed or their pre-rem script. So I'll talk about how to avoid that. So let's move on to the first item here. Why should we write manual pages at all? Well, the most important reason, as far as I'm concerned, is because we tell people to read them. We have that acronym, RTFM, which I riffed on for the title this. We all know what that means.  It's not very nice to tell people this, apart from the profanity in it, actually obscenity. There is a distinction. It's not very nice to tell people this if there is actually no manual for them to read. And sometimes we tell people to RTFM even without knowledge for sure that the man page in question actually exists. So that's not too cool. We should be nicer. And besides, policy asks us, I'm sorry? UTSL? Well, yeah, but not all our users can be hackers. So I did an experiment just on my iBook. And I had a little shell script that went through every file, really, in sbin, bin, user sbin, and user bin, and took that and did a man-w on it and checked the exit status. So I got better statistics than I was expecting, really. That's pretty impressive. But then I only have stuff I really need on my iBook. My home box, Sisyphus, is considerably more crafty because it's got lots of disk and I just put any old thing on it and then never take it off. But still, that's over 10%. So we could do a little better than that. Yes, sir? I didn't check that. I'm not sure. The question was, sorry, I'll repeat the question. Let's see. Sorry, your name batch here. Per Olofsson? Yeah. Okay. Per had a question. How many of these pointed to the undocumented man page? Actually, I think the answer would be none because if they linked to the undocumented man page, man-w would have exited with status zero. It would have succeeded. So it would not have been reflected in my numbers. So the figure could actually be higher than this. Ah, my pessimism is vindicated. So we've got at least 10% that don't exist at all. Now some of these will be false positives. You could make a case that, and I'm staying too long on this point, but you could make a case that some things don't need man pages such as, you know, desktop environment applications that will never be invoked from the command line for any practical purpose. Maybe you could make a case for that. But another reason to write man pages as you've already read ahead of me is that the man DB package which provides the man pager infrastructure and the command is priority important. It's almost always going to be around. Web browsers and PDF viewers often are not, or they require a GUI environment, and it's not a lot of fun. As I know from numerous users over the years, if your documentation is going to require a graphical browser and somebody can't get the X window system configured or the X server configured on their system, they've got a pretty serious chicken and egg problem. So it's good to have man pages. It's good to have something that will work reliably on a terminal, and man is that. Man pages are one of users' last lines of defense against frustration. You know, when all else fails, it'd be nice to have a man page there. And we should write them because they haven't all been written yet. And finally, of course, nobody actually reads any read-me's, as we know. So there's not a read-me command. There is a man command. Actually, there should be a read-me command that goes and looks in user share doc package for readme.debian. So somebody here who isn't through the NMQ yet could volunteer to do that. It'd be pretty simple. Just remember to write a man page for the read-me command. Why should we learn to write good man pages? Because many of the ones out there are suboptimal. My exposure to this fact lay in that I didn't know how to write man pages when I first started. I started looking to existing ones for examples. Well, I picked out I'm kind of random if they looked good and I learned some bad habits that I later had to unlearn. So I'm going to try to, while I'm sure, well, I know I still don't know everything. I'm not a 70s-era Unix hacker who knows Roth inside and out and Colin Watson, for instance, who unfortunately I don't believe is at the conference this year. He knows a boatload more about Roth and macro packages than I do. But I know a little and I'm going to try to communicate what I do know. People are generally unaware of conventions used by high quality man pages and so they go unwritten or they go written poorly.  If you aren't aware, Roth, as I alluded to earlier, goes way back. The original program that it's descended from is called runoff, which I think dates back to the 60s and actually predates Unix. And one of the very early things that Unix time-sharing systems were used for. Yes, this is Lars, my uncredited, okay. He's getting ahead of me so it'll be ready when I get to it. Let's see, one of the first applications of the Unix time-sharing system is developed at Bell Labs was for document generation. So Roth was a pretty sophisticated system. Unfortunately, it had licensing issues as did a lot of the old Unix stuff. You're distracting people from me. I'm a prima donna, I've got to have all the attention. Anyway, I'm delegating some of the attention to him. So, almost fairly not altogether bad, yes. Excuse me, if anybody needs to ask. Microphone gets to you. Yeah, because of this. Right. If we want to have much posterity in our recordings for posterity, it's helpful for people to view the recordings to actually know what's going on. Which means you want to be on the screen sometimes and you definitely want to be heard. You want to make it to the soundtrack. So, and of course, if somebody can't get the microphone, I'll try to repeat the question. Anyway, I digressed into the history of Roth and I'm going to get off of that. It goes back a long way. GNU, as they did with so many other things, wrote their own and it's largely compatible. People don't know lousy, gruff, or A in syntax or usage of the system when they see it. And as a result, people are often poorly equipped to judge the output of engines that generate man pages from another source format. Lars Rosinius, this is a pet peeve of both of ours and he's been helpful to me in over the years and recently in developing this presentation. Doc Book to Man, which is probably the one best known to you, is especially bad with what it generates.  I dealt with this at Progeny when we were documenting. I believe it was Discover and, oh my God, the output was just awful. It looked terrible. I mean, not only was it syntactically bad in source form, but the actual man page, as viewed by the user, was bad. It was ugly and unpleasant to read. And a man page that is unpleasant to read is less likely to be read. So, well, let's talk about what a manual page actually is. And now I'm talking here about the actual source file that is used to generate. You may not know, you may not be aware that there are multiple output formats that man pages can be used. We're most used to the terminal, but you can also generate postscript directly from a man page. And you can also generate an X window. If you've ever tried the dash capital X option to the man command, then you might want to experiment with that and see how things show up. It's nice, especially for font rendering and stuff like that. Man pages are written in the Roth type setting language, which I pretty much already covered out of order, as tech is. Tech is another type setting language. Type setting languages tend to grow macro packages. Like any low-level tool, people write macros to make things easier. And the AN macro set is the one that man pages use. The reason they're called man pages is because you select the macro package that you want with a command line flag to Roth called dash M. And then you specify, without any space, because this is old school unix, the macro package afterwards. So you type AN, so the command line argument would look like dash MAN. Now these days, Groff doesn't actually get invoked that way for historical reasons. It uses a thing called andock, which picks M-docker. Anyway, I said I wasn't going to go into it and then I did, right? Man pages use the AN and less commonly dock macro packages. Dock comes from the BSDs. So you'll see a lot of M-dock man pages on the BSDs, including the dock macro package itself. So if you man seven dock, you'll be able to see what this looks like. A man page is intermediate in scope between terse user documentation, like usage messages, which should be lean and mean. If for nothing else, if someone forgets to pipe it through a pager, it'd be nice for most commands to fit what they have to say, under one 80 by 24 screen. And of course book length manuscripts like the GNU, Emax, Lisp reference manual, which I think is two volumes or something like that. Something that huge is not appropriate for man pages in my opinion. And in practice, most people don't write man pages that huge. Where are man pages kept?  I'm going to stray a little bit from telling you things that are factual and get a little bit into areas of opinion. I like the idea of a fairly tight coupling between the sections of man pages and where you find the things they document on the file system. Not everybody shares this kind of militant mapping philosophy. So in many cases, you won't find things quite this simple in the Debian system. And it's not necessarily a bug, I'm just kind of a Puritan. So with that caveat, generally section one, as you may know, there are eight sections in total. I'm sorry. Well, nine's not used on Linux. So what section nine was used for historically was kernel internal interfaces. And these days, I guess you have O'Reilly books and Linux weekly news to read about kernel internals. User commands are in section one. These are things that generally don't require privileges to use. Section two is the system interface or system call interface. So the C library doesn't provide these, or they're just wrappers around the actual system call interface. So these are services provided by the operating system kernel, fork, read, sbreak, so I guess that's set break for BDL would know he goes back far enough. I don't know the provenance of some of these names. The library interface, for instance, the C library is most commonly thought of as being documented in section three. But any library can be documented there and often is. Malik, printf, those are C library functions. And xtcreateManageWidget, which as you might guess from the name in my history, comes from x, specifically the xt library, which underlies Athena and less thief. So section four is the device interface. Device nodes are often found there. I meant to check before starting this to see if there is actually a null man page. But in principle, you could man null and read a section four man page about the purpose of the dev null device. File formats, this is, I'm sorry, did you have a question? Okay, I saw your hand move, so file formats. This is a section of the manual that a lot of users don't seem to know about, which is a real shame because there's a lot of good information in section five of the manual. So someday when you have time or right now even LS user share man man five. You'll see a lot documented there that you may not have known about. And it's good stuff. So fstab for instance is documented there xorg.conf. That's a way of teasing you because it's not unstable yet. I didn't, I can't, we're getting away from x386. I just couldn't stand to put xf86 config in this document. I'm trying to look to the future, so in the present for that matter. Section six, games, I think it's kind of silly that this was segregated off. But it was, back in the days of time shares, it was important to be able to switch off the games or switch them on at night when the system wasn't going to be used. It's kind of an anachronism, but there it is.  I've really got to pick up the pace here. Administrative commands, SBIN, user SBIN, much like section one, except these are things that typically require administrative privileges of some kind. One thing to note is that non-English man pages are often available. And you will find them right under user share man in the local named directory. And those reproduce the man hierarchy, man one, man two, man three, etc. Did I forget seven? Missile, okay, it's on the slide, I didn't talk about it. Section seven is pretty miscellaneous. I think historically it may have been used just for documentation of macro packages itself. I haven't been able to find a lot of information about this. Yes, that's one. It's just more of a generic stuff than just single command. Yes, I'll repeat. Wouter said that, for instance, you'll find an X man page in section seven. I'm repeating his questions. You'll find an X man page in section seven as well as section one. The one documents the command and the other documents the system. So there's a lot of high level information about the X window system that you can get if you type man seven X. Those are three arguments. So yes, thank you for catching me there and having me go back and talk about that. So let's get into the meat. What does a man page look like? Line's beginning with a period, aka full stop. I have this propensity to use actual UTF-8 names for or unicode names for things. Our control lines, they're also called requests. So we see a thing here called .sh and then synopsis afterwards. And then a line that says one, two. And then a line that says .lowercase, br. And that's not a reference to myself. And then three on a line. In the above, synopsis is an argument to the sh request. Now, it happens to be rendered, but that's just because of the nature of what the sh request does. You can have requests that don't reflect something that gets printed. For instance, there's a request that sets the distance between paragraphs. So if you said .pd5, you wouldn't see five show up in the corresponding spot in the generated man page. Instead, it would make the distances between your paragraphs larger. So just think of that as kind of like a function call, instead of some piece of literal text. And that's gonna come back in a moment. I'll dwell on that a little bit. Everything that isn't a control line is a text line. So if Groff can't interpret it as a control sequence, it'll try to write it out as text. Character sequences beginning with a backslash are escape sequences. Now these are separate from the requests that are on a line starting with a dot. These often consist of a left parenthesis followed by two characters. Groff is significantly more flexible than that. But for historical traditional reasons and so that your man pages will render on more implementations of man. You often see just this kind of abbreviated strange syntax where you have a backslash and then two or three characters. So for instance, copyright backslash open parent, that's correct. There's no closed parent. CO gives you a copyright symbol, 2005 quucks. And then backslash lowercase f, capital I, and then immediately italics backslash f, capital P, Inc. Now I'll explain that a little more later, but as you might guess, that puts the word italics in italics. And yes, it is ugly, and we'll come back to that too. The Groff 7 manual page, again, people often overlook sections that aren't one or eight, contains detailed discussions of control lines and escape signals as much more detailed than I could go into this presentation. Groff is pretty forgiving of poor invocations of requests. So if you give a request fewer arguments than it expects, it tries to muddle through. Sometimes this will throw a warning. I don't believe I've ever seen one bust a man page. Generally, well, I mean it may look ugly, but you don't exit with an error. Instead you just get poor rendering and it pushes on forward. Arguments to a request in excess of those required are ignored. So put all the garbage you want out there if it's not defined to accept those arguments they're thrown away. Use double quotes to include white space in an argument. So for instance, if we go back to the slide and say that SH synopsis, now the SH request takes one argument. So what happens if my section heading, which is what that is, is called say application usage. That's two words. Well, I shouldn't say application usage just as is. I need to put it in quotes just like you would quote at the shell prompt, an argument that needed to have embedded white space in it. Now, again, graph is forgiving, especially for the .sh request, because so many people forget. Actually, the real example is C also. Most man pages have a C also section at the bottom, and it is very common to see the quotes missing from it. But it's two words. Remember, just go ahead and quote it. Because not all requests will be so forgiving. To begin a line with a literal period use the escape sequence defined for this purpose. Actually, this is broken, I confirmed it right before the talk. This is documented to work this way, but it doesn't actually work. Instead, the lines treated as a comment, I don't know why. Does one of you? No, okay. Well, like I said, I'm not an expert and the documentation did say that should work. So hopefully I'll get time to file a bug and someday Colin will get to it. To input a literal backslash, this does work. Use the escape sequence defined for this purpose. So it's a backslash and open parent. This means that a special character is being defined, as it turns out. And RS, I guess the mnemonic for that is reverse slash often indicates a new line. So put a new line at the end of every sentence. This is another one that almost nobody knows about. But like tech, the type setter knows about the difference between a space, between a word, and the space between sentences. Yes, this is nitpicky stuff, I'll get into more high level stuff in a moment. I'm giving you the syntactic basics. This tells Graf to use intersentence spacing, which is, I'll be happy to eat that when it's good and cold. My pizza, now all the toppings are slid over to one side. Okay, all right, yeah, I was finishing this up. So I didn't get to go to lunch, so ordered pizza. But thank you. Intersentence spacing is important for proportionally spaced output formats. And there's a more important reason for that. It makes life easier for translators. Most languages, in fact every language I've heard of has a conception of a sentence. So you have these logical break points. If you run all your sentences together, then viewing diffs becomes more of a challenge. So another thing to keep in mind is don't put blank lines in your man page. That is beginning of line and then nothing, just immediate new line. So backslash n, backslash n, and if you viewed it with octal dump, O-D. Don't do that, there are better ways to get spacing. Like the .pd request I talked about earlier. That's capital P, capital D. And in general, I don't find much use for adding a bunch of extraneous white space in man pages anyway, even when you do it the right way. Use the null request, a lone dot, to pad your man page if you need it. If you wanna put some space in between things, so you can read it better. Or if you find it might make the page more maintainable, absolutely go ahead and do that, just do it the right way as shown. As with any civilized language, Groff supports comments. Any language that doesn't support comments is garbage. Anthony inspired me to just be a real curmudgeon today, I think. The backslash double quote begins a comment that runs to the end of the line. Much like forward slash forward slash and C++ and now C99. So for example, we have something here C spot runs. And then I immediately follow it with a backslash quote. Note to myself fixed grammar. The XXX fixed grammar won't show up in the man page output. And then the way to do a comment on a line by itself is to have that kind of null request, the lone period, and then follow it up with the comment character. So this isn't, this is really two pieces of syntax here, not one. Okay, this is some more, now we're gonna get into some more fun stuff. We're gonna move up from that low level and start building upon what we've already covered. .pp is a new paragraph, there are a couple of aliases for it. But .pp is the most commonly used and I encourage you to use that one. .tp is to define a new paragraph with a tag. You'll be using this all the time when you're documenting things like command line options, because to get a layout the way most traditional, most man pages, almost exclusively all of them, the document commands. You get a level of indentation that differs for the description of the option. So the options here and then the description of the option is indented a little bit. And that's the way to do it. And the .b option or the .b request you might guess means bold. But we'll get back to that. There's a mistake here. There should be backslashes in front of those hyphens, sorry. .rs begin indented area, .re should be end indented area, sorry about that. .b u as you see in the example, that's a bullet. There are lots of interesting symbols available. And as people use UTF-8 terminals with good fonts more and more, these things will actually show up in the man pages. These all have down conversions to ASCII. They'll all be rendered in ASCII in some crude reduced form. So go ahead and take advantage of it. It'll make things look prettier when the man pages type set. And it'll make them, you'll have more distinctiveness when you're viewing things in a UTF-8 terminal or in hard copy. Okay, people love to fool with fonts in their man pages, in part because it's fun and in part because it's often important to set aside things that are going to be substituted or things that are meant to be typed literally. Now this is not sophisticated. These days we have semantic markup as in XML. But these are the old days when you just used presentational markup. So I want this to be bold instead of this is a keyword. Uh-oh, the cards are coming over. And I'm how many slides through? Okay, b.b.i, bolder italicize all arguments. There are ways to alternate bold and Roman or normal upright. And this just means every other argument uses, like for instance with br, the odd numbered arguments to the request are bolded. And the even numbered ones are upright. And we'll see examples of these in later slides. I recommend using these macros and preference to font escapes wherever possible. Remember that backslash lowercase f and then capital I stuff. That was kind of ugly to read, wasn't it? These are better. You can put the escape in the middle. It doesn't cause a line break. So, but you need to know the font escape sometimes as we'll see. And these are what those mean. Switch to bold font, switch to italic font, switch to the Roman font, and something that is underused, switch back to the previous font. It doesn't make a lot of sense to literally go to Roman when what you really want to do is treat your fonts like a stack. So push bold onto the stack, pop it off. Push italic onto the stack, pop it off. So I encourage the usage of dash f capital P. Now this is something that almost everybody screws up. Dash is hyphens and quotation marks. And in fact, LaTek was kind of giving me a bit of grief when I was trying to get these characters exactly right. So they don't actually present perfectly. But I think you'll see what these are from context. And that just means that the directions on the single quotes down there are wrong. They should be different. But anyway, a dash all by itself is a hyphenation dash. Now when you're in a UTF-8 environment, this will render very narrow. You can use a backslash open parent en for n dash and em for m dash. And if you don't remember what those are, they're covered. An n dash is for a range, generally. An m dash is for a break in discussion. And then backslash hyphen is literal hyphen minus. 10 minutes. I knew this was going to fill 90 minutes. And I only have 45. It was probably a backwards decision of the language designers to not swap or to have the hyphenation dash in a literal one this way. But let me tell you why it's important to use the literal hyphen minus instead of the hyphenation dash. Because when somebody's in a UTF environment and they're searching the man page, well, when they hit slash and type a string to search for, or a reg x, and they type a dash, it's only going to match the literal one. So if you've documented a command line option, for instance, like dash dash help and somebody's looking for that, and you use the wrong kind of dash in your man page sources, they won't find what they're looking for. And it's because you use the wrong type of dash. As I said, this was probably a backwards decision. But if you want to help people out, this is the way to do it. Use the right kind of hyphen. You can get left and right single quotation marks, and you can get the neutral straight up and down ASCII quotation mark. That's why I mentioned the code points here. These are code points in ASCII, in the ISO8859 family, and in Unicode, of course. Because those are steadily building supersets in the first 128 bytes. Left and right double quotation marks. You know, use these to set aside your text so that people can tell when something's meant to be interpreted literally or not. Critical man page macros, there are two that are essential in all man pages, because man DB uses them for indexing. The first is TH, which declares most of the basic information. I really shouldn't just read the slides to you. Let's try to pick up the pace here. Source and manual title are inconsistently used. The really important ones are the first three, and probably really just the first two arguments to the TH macro. Put the command name in there, and put the section in there. Most man pages capitalize the command name. I think that's a silly convention. So again, I'm going to deviate from practice here and give you a recommendation. We have commands that switch case in the name. So it would be nice if what we're documenting actually showed what you're actually supposed to type, as opposed to something that's done up in uppercase for the sake of presentation in a printed book. Man pages with the same name can be disambiguated by the section name. Now, they may all go in a directory called man3. But for instance, you can have a section called 3 Perl or 3x11 to indicate the source of the man page when you need to disambiguate something. This is how you avoid collisions in man page names. So if you've ever had to grapple with this problem, use this technique and you'll be fine. Now remember, the file name extension, that is the part after the dot in the man page name, needs to match the section as declared here. Don't worry about the directory that the page gets installed to. It'll go to man3, but the extension needs to match what's indicated in the TH request. The name section is the other essential part.  This is the section heading macro as I already covered. It takes a string argument that runs to the end of the line. Note the hyphen minus. That's really important because Mandy B scans. It needs to find that hyphen minus so that it knows what to use for the description of the command. I think Colin, within the past year or so, might have made that a little more robust or maybe upstream did. But at least as of a couple of years ago, you could confuse it by using the wrong type of dash, which is why the man page is got, which is why the bugs got filed. Again, use correct casing here, even if you don't in the TH request. Now that is the convention. So I'm not making a recommendation apart from convention here. A command synopsis should document the command's name, operands, and options. I distinguish between arguments, operands, and options. Arguments are just things that are given to the command. An operand is something you operate on, and an option is something you don't necessarily need to have because it's optional. I'm a stickler for terminology. So we render the command name in bold. Now this one has a dash in it. I did this on purpose so as to again remind you of the importance of quoting that. If someone searches the man page for update dash gizmo and you leave out that backslash, they're not going to find it. So it's important to be able to search man pages, as most of you probably know. Again, note the escaped hyphen. Put the command name in anything to be typed literally in bold. I'm documenting convention here. Square brackets indicate five minutes to go. Optional arguments. An ellipsis, notes repeated arguments. Now you'll see I have a couple of quotes around the ellipsis. Can you guess why that might be? Well, I have a space there. And these will be run together. So the fact that I have separate arguments doesn't mean there's implicit white space between them. So if I want there to be a space after the word file and before the ellipsis, I need to put that in one or the other of the arguments. I mean, I don't think there's any difference between an italic space and a Roman space in graphs. So it doesn't really matter which one I use. And you use braces or curly brackets, as they're sometimes called, and vertical lines or pipe characters to denote that one of an exclusive set of arguments should be used. And I tried to pick an example we might most be familiar with. When you invoke tar, you might use, where are my hyphens? OK. I screwed something up in that. But there should be backslash hyphen before each of these. But as you know, you can invoke tar with create or list an archive or extract one. But you never combine any two or three of these. You only use one. And that's an important distinction. So to indicate that you have that type of selector or radio button, essentially, you use braces and pipes. I should note here that the stuff you literally type in is in bold. And the braces and pipes are not in bold. That indicates that you don't type them literally. If a command can be invoked in multiple incompatible ways, multiple lines can be used for the synopsis. There's nothing wrong with that. So for instance, in this example, which is broken across multiple lines, both to show you that it can be done, and there's an extraneous quote in there. But you can break it across multiple lines. Well, I lost my train of thought because I saw my bug. So shame on me for not proving more carefully. I've got a list of recommendations for man-page section headings in the various sections. Now these are executable commands. Now this looks like a long list, but I actually got this mostly from the single UNIX standard. And in my experience, I actually find documenting most of these if they're applicable to be pretty important. Names, synopsis, options, and description are found almost universally, as is see also and usually authors. The others are often left out, and I think that's unfortunate. An exit status section. Yes, is this four minutes? OK, thank you.  So it's a good thing to document. Input files and output files, if there are any. Diagnostics, that's the convention for describing what the error messages are that come out that you spew to standard error. It's good to document what those mean too. Asynchronous events, that means if you set up any signal handlers. So if you wrote a shell script that traps sig quit, for instance, I forget if you can trap sig quit. Let me try sig up. I know you can trap that one. If you have a signal handler, document it here.  Especially if you leave stuff in places that aren't slash temp, it would be more important. Or if you're likely to remove somebody's root file system if you're interrupted, it's a good thing to note there. Author or authors pretty much goes without saying and see also. Sections two and three, these are largely, thank you. These are, again, mostly used for C programming, although Perl has a lot of section three man pages as well. There's a slight difference here. Return value instead of exit status. But I mean, that should be pretty well understood people who are accustomed to programming. Conforming, too. This is a reference to standards documents. For some reason, I never see this in section one man pages, but I do in the libraries. Author or authors and see also. Sections four, five, and seven are pretty free form. You don't see, you see all kinds of things in here, very little is standardized beyond that. How to portably include URLs, I think I did actually make it more than halfway through this. Just include this magic recipe near the beginning. I'll have this available online so you can look it up. I don't expect you to copy this. Well, I expect you to copy it into your man pages, but I don't expect you to copy it now. How it works is you define a new URL macro that works like this, and it happens to be provided with the GNU-ROF. So that's what that last line is. We define the macro, and then we say if we're using GNU-ROF, load that macro file, and then that will just clobber the URL macro we defined with the real GNU one. And this enables your man page URLs to be viewable on systems that aren't using GNU-ROF. So which I just said, what's on the slide. So how to license your man page. Oh, where did the last section? If you're writing your man page for an existing piece of software copyrighted by something else, I think it's just polite to stick with their licensing conventions. I recommend this. Well, it's polite to place a manual page under the same license as a software. It documents, basically. And then I'm going to show a little heresy here and say I recommend this even for GNU software, whereas we all know they like to use the GNU-FDL. But they also hate man pages. So it's not so disrespectful to use the GNU-GPL for a man page, right? There's a more practical consideration, though. And that's the fact that the GPL and FDL licenses are compatible. It's redundant to say it well anyway. Incompatible in both directions. You can't just take text from the software and move it to the documentation and vice versa, unless you're the copyright holder. Or you have special permission to do so because the licenses are incompatible. I think that's a little brain damaged. Because ideally, don't we want something more closely approaching literate programming? So anyway, that's my recommendation for that. The other one would be to do a license. I personally have used the MITX11 and GNU-GPL licenses for man pages. Those are the only two I've ever used. Let's see, I'm going to run a little over. I think I can actually get through in five or 10 minutes, though. Is that OK? Who's in charge? May I have permission to run five or 10 minutes over? Oh, OK. Oh, OK. All right. The speaker after me is delayed, so I get to run long anyway, even without your permission. All right. So installing man pages that don't require any alternatives handling is not too hard, especially if you use Deb Helper, CDBS, or something like that. DH install man is a pretty nice command. I don't see Joey here. I'm giving him love, and he's not here to receive it. OK. Man pages using the alternative system require more care. This is that weekly spam from Cron that I was complaining about earlier. So I'm going to teach you now about how to avoid it. Generally, a man page that has handled by an alternative is not an alternative in and of itself. It's a slave, and if you man update alternatives, you'll be able to read about slave sim links. It's a slave to the thing that is actually managed by alternatives. So for instance, the awk man page, as Anthony covered in his talk earlier today. He was talking about mock and awk. If you have an awk man page, well, you'll pick one, and then automatically the sim link for the man page will be switched, because you wouldn't want awk the command, which happens to be mock, to be documented by the gaulk man page when you type man awk.  So if nothing else, it would lead to surprising behavior. So you need to register the man pages in the post end script of your package using the update alternatives command, just as you do for the thing at documents. And you need to unregister the man pages. And here's what gets people in trouble, for the remove and de-configure arguments only. And if you don't know what this means, if you have no fear, I'll show you. Now, the font gets a little small here, and I apologize for that. But I'm going to give you a real world example that I know works, and I've never bugged report or personally experienced any man page sim link breakage with x term. I've managed to get it right. The first time years ago. So I'm proud of myself for that. So that's very long. But as you can see, all it's really doing is setting up an x-terminal emulator alternative for x term itself, and then see that double-dash slave argument. Well, that's showing it to point the x-terminal emulator manual page to x term. Now, that's update alternatives install. In the pre-rem, we want to do a test. A post end story ever does one thing. It's supposed to get the package into a configured state. But a pre-rem does a few different things. And two of them are removal of the package and de-configuration of the package. And I obviously don't have time to talk about the distinction between those two. But if you'll just copy this recipe, you should work at least as well as the x-term package. So under those two conditions only, we want to deregister the alternatives. One of the others is upgrade. So you can see what happens here. You don't want to be deregistering the man page across an upgrade. And I made it to my final slide. For further reading, you can read man pages. I learned a lot of what I reported in this just by reading them. And I don't have any shame regurgitating some of it. Because one, these man pages get pretty long and detailed. They cover the fine details. And I wanted to extract out the highlights for you. And again, as I said, a lot of people don't know about section seven or section five. They don't know about the man pages that are there. And it's just unfortunate. So I'm hoping to open up a little bit of a new world to you in writing documentation. So I've been talking much faster than I would rather talk for a presentation. I apologize for that. I know not everybody here has English as a first language. It was to get through all the material. So as long as I have a little more time, yes, yes. Thank you. That should be in there. You don't have to install a man page to read it. I swear to God, you don't have to install a man page to read it. All it has to be is on the file system. You want to look at it, man-lowercase l, and then the filename. That works for anything. That's old school. Yeah, but that's old school. And actually, that bypass is pre-processing, if I remember correctly. So if there is table, or pick, or EQN, any of those pre-processed things, they'll be skipped. Well, yeah. But if it has them, it'll break. And you'll get weird output. This just works. So yeah, Wouter pointed out that you could use en-rhoff-man. And so there's what he said. And you can mentally insert that before the response that made no sense. So yes, about alternatives. Yes? Ah. Probably need to put it in a for loop. Oh, wait. No? Because you probably need to use xargs to build a command line to update alternatives. I hadn't thought about that before. Thank you for pointing that out. Did I repeat the question? I'm sorry. I said I'd do it, and then I'm screwing that up. Junichi? Yes, that's it. I remember you, right? OK. Junichi pointed out that, well, you'd also want to install the slave sim link. For instance, for x-term, if its man page had been translated. So what if it had been translated into 30 languages? Well, that command line, which was already pretty long. Whoops, it's right there. OK, that's long enough, right? Well, what if I had 30 translations? That would get absurdly long. Unfortunately, I think update alternatives is not granular enough to handle just calling it over and over again with different slave sim links. It would be worth learning. It would be worth finding that out. The alternative, I guess I can think of, instead of putting this into a for loop, you could do shell tricks, maybe x-args, maybe command substitution to make this happen. It's worth asking about on the mailing list if it's a problem you have to cope with. Alex? Yes? My successor is here. Just for the speaking, right? Not for leadership, right? OK. OK, I'm allowed to take one more question, and then we will proceed with Tolif's talk. OK. Yeah. If there are any more questions. Oh, yes? Under the sections, you didn't list bugs. Bugs is a part of the man page that I've had a lot of use for lately. The question was, the comment was, I didn't mention a bugs section. That wasn't quite an oversight. The SUS, single-unit specification, actually doesn't document bugs sections. In my opinion, those should be subsections of the description or, well, yeah, pretty much of the description. There is a macro. There's a request for subsections instead of .sh. It's .ss, and these are capital letters because they're part of the macro package instead of graph. I didn't actually cover that item in my talk either. I did prepare this talk in a hurry. I apologize for that. I might have had some time to think about it more carefully had I taken the time.  No, because I haven't put them on the web yet. But we can put your slides on the web, and people can see the rest of the slides there. Yes. So thanks for trying to summarize a 90-minute workshop into a 45-minute slot talk. Thank you very much. Thanks for listening, guys.


This lecture is part of an online commutative algebra course and will be about the relationship between a ring R and its localization R S to the minus one for a multiplicative subset S. So the first thing we want to do is to look at the relation between ideals of R and ideals of R S to the minus one. Of R S to the minus one. So suppose we've write down the map from R to R S to the minus one as being F. And then if we've got an ideal I of R, we can go from ideals of R to ideals of R S to the minus one by taking I to F of I, except F of I is not an ideal in general. For example, we could take the map from Z to Q and then if you take the ideal two of Z, its image in Q is not an ideal. So instead of mapping this to F of I, we map it to the ideal generated by F of I. On the other hand, if we've got an ideal J of, and the localization, then we can take the inverse image of J in the ring R and this will indeed be an ideal of R. We don't have this problem that we need to fiddle around with it a bit. Incidentally, this operation is sometimes called the contraction of J and denoted by JC. And this ideal here is sometimes called the extension of I and denoted by I E. And I'm not going to use this notation because I always get E and C muddled up. And these operations aren't necessarily in versus of each other because there's not a bijection between ideals of these two rings. However, they're still quite closely related. What we're going to show is that if you start with an ideal here and then move it to an ideal of I and then move it back to here, you get back the ideal we first thought of. In other words, if J is an ideal of R estimizes minus one, then J is equal to the ideal generated by F of F to the minus one of J. And this is easy to check. It's obvious that F, F to the minus one of J is contained in J, this is trivial. So we want to show that the ideal generated by this contains J. So suppose X is in the ideal J. Then X is equal to R over S for some R and S. So R over one, which is equal to R over S times S is in J. So R is in F to the minus one of J. Notice R over one, we're writing for an element of R S to the minus one R for an element of R. So R over one is in F of F to the minus one of J. So R over S is in the ideal generated by F F to the minus one of J because S to the minus one is in R S to the minus one. So what this means is that the map taking J to F to the minus one J is an injective map from ideals of S, so ideals of R S to the minus one to ideals of R. So we can think of the ideals of R S to the minus one as being a subset of the ideals of R. So an immediate corollary of this says that if R is notarian so is R S to minus one. And this follows from almost any of the criteria for a ring R being notarian. For example, notarian corresponds to the ascending chain condition for ideals. And if the ascending chain condition holds for ideals for the ordered set of ideals of R, it holds the ordered set of any subset of it. So it's true for this. And by the way, you notice this ideal is generated over R by some elements. So if the set S is finite, then this fact follows from the Hilbert-Base theorem. But you notice that in general, R S to the minus one is not usually finitely generated as an R algebra. So the Hilbert-Base theorem saying that finitely generated algebras are notarian doesn't work or it does not help. The other thing to notice about this example is it's a special case of the fact that localization is really nice. Pretty much any nice property of a ring will also hold for any localization of the ring. So this is one of the reasons why commutative algebra, people doing commutative algebra like localization so much it's just this really well-behaved operation that doesn't cause any trouble. And there are other operations like completion which are continually causing odd technical problems but localization is just really well-behaved. So we can now see that the spectrum of R S to the minus one is homeomorphic to a subspace of the spectrum of R. Well, we've seen it's a subset. Well, it's not really a subset. It's really isomorphic to a subset but mathematicians are always a bit sloppy about identifying spaces. So it's isomorphic to a subset of the spectrum of R C above. All we've got to do is to check the topology and the topology of spectrum of R S to the minus one has a basis of open sets of the form U R over S. So you remember this is the primes not containing R over S and this is the same as the set U R over one because S is invertible. And the set U of R over one is obviously going to correspond to the set U of R in spectrum of R. So you can see that the topology that the spectrum of R over S just has the subspace topology of the spectrum of R. So the picture of the spectrum of R over S is as follows. So what you do is you sort of think of the spectrum of R as being some sort of space like this. And then we've got some elements S and you can think of the elements S as being sort of functions on the spectrum of R. They're not really so. So let's pretend elements of S of functions on the spectrum of R. So these functions will have zeros. So, and the zeros, you can think of as being some sort of space of co-dimension one. So this might be zeros of F in S. But by a zero of F in S, what we mean is that F is in the prime corresponding to some point here. So you remember the points of the spectrum of R are really primes. And we sort of pretend that elements of R are functions and pretend that if they're in the corresponding prime then they vanish there. So spectrum of R is some space and we've got all these lines here. But what's the spectrum of R S minus one? It's just equal to the spectrum of R minus all the zeros of elements of S So you can see this because when I said that spectrum of R is homeomorphic to a subset. So when I said the spectrum of R S minus one is homeomorphic to a subset of the spectrum of R you can ask which subset this is. This is just the subset of primes P which is a disjoint from S, which is, leave this as an easy exercise because I'm feeling too lazy to prove it. So that's what spectrum of R of S looks like. It's informally obtained from the spectrum of R by throwing away a number of co-dimension one pieces whatever that means. So if you're throwing away a finite number of these then this will be an open subset of the spectrum of R if S is finite or finitely generated. In general, it would be the intersection of an infinite number of open subsets of R. So it's not open in general but it sort of behaves a little bit like an open subset and it's not too far from being an open subset of the spectrum of R. Well, we should take a look at some examples and the main examples I'm going to look at are the following. So the most important special case is RP which is defined to be RS minus one when S is equal to the complement of a prime ideal P. So we briefly mentioned this last lecture and we recall the complement of a prime ideal is a multiplicative subset. In fact, that's more or less the definition of a prime ideal. So we remember this is called the localization of R at prime P. Notice here the localization of R at S means you invert all the elements of S. The localization of R at P means you invert all the elements not at S. So the terminology is a little bit mixed up as usual. So we've had several examples of this before so I'll just quickly recall the examples we've had before. So if we take Z localized at zero this was just the rationals. If we take Z localized at say two this is just the set of all rationals that form A over B for B odd. The other examples we had were if you take C of X localized at zero this is just the ring of all rational functions and C of X localized at the ideal X is just rational functions that are defined at zero where the point zero in the complex numbers corresponds to the ideal of all multiples of X. Well, what I really want to do is not just review this one-dimensional case but do a two-dimensional case. So we're going to take R to be C of X, Y. As usual, I'm going to pretend the complex numbers are just one-dimensional. So I can draw the complex plane. Well, yeah, the terminology is a bit modeled up. When I say the complex plane I mean something with two complex variables not complex plane with one complex variable. Yeah, terminology has really got messed up. Now let's look at some prime ideals of this. Well, it's got three different sorts of prime ideals. So here are some primes. We'll classify the primes of this ring a bit later but for a moment I'm just going to state what we get. First of all, there's the prime consisting of all multiples of zero. So this is the zero prime. Next, we've got the prime of all multiples of F where F is an irreducible polynomial. For instance, F might be say Y squared minus X cubed. Say what could be any other irreducible polynomial. And thirdly, we've got the primes of the form X minus alpha times Y minus beta. So where alpha and beta are complex numbers. So there's a three different sorts of prime ideal. And now let's try and draw a picture of the spectrum of CXY. Well, I drew a picture of this before. So what we can do is we can think of the points of this form as kind of correspond to points of the complex plane C2 which I'm going to draw as a real plane. So we've got a real plane with lots of these points in it. Then I'm going to draw the prime here will correspond to a point whose closure contains all the pairs of points where F vanishes. So you can think of this as being some sort of curve. And you can think of this as being the curve of all points where Y squared equals X cubed. Say whatever else the equation is. So might be another curve there and so on. And finally, there's the point corresponding to the point zero whose closure contains everything. So you can think of this as being a sort of huge two-dimensional point whose closure contains absolutely everything. So the spectrum of this string has zero dimensional points which I've indicated in red and one dimensional points in green and a huge two-dimensional points in yellow. Yes, I know points are zero dimensional, not two dimensional, but you just have to put up with this. Now what I'm going to do is I'm going to draw pictures of the localization of this at various points. So let's localize at point zero. Well, this means I'm just going to invert all functions that aren't zero. So I'm getting the field of rational functions and the spectrum is only one point and looks like this. Notice that you shouldn't confuse this with the quotient CXY over the ideal zero. So this is CXY localized zero. And this is the quotient of CXY at zero is quite different because this is just CXY. So its spectrum looks like this. It's got all the various points of the spectrum. So the localization has very little to do with the quotient. So now let's look at what happens if I localize at this green point. So let's take CXY and localize at ring F and see what we get. Well, this means I invert, I'm allowed to invert all functions except those that vanish along this curve. And what this means is the spectrum still contains this ideal corresponding to F and it still contains the generic point, but everything else has been killed off. Again, this is quite different from the quotient because if I take the quotient CXY over F, what does its spectrum look like? Well, its spectrum looks like this. We keep the green point corresponding to F and we keep all the red points on it because the prime ideals of this just correspond to the prime ideals of CXY containing F which correspond to the points contained in the closure of F. So again, you can see the localization has nothing to do with the quotient. Finally, let's localize at, oops, sorry, wrong color. Let's localize at C, let's localize the point X minus alpha Y minus beta. Well, this time I'm going to keep the point corresponding to alpha beta and we also keep a sort of ghost of all the one-dimensional points passing through it and we also keep the yellow generic point. So that's the spectrum of the localization of one of these red points. On the other hand, the quotient, if we take the quotient by this ideal, so if we take CXY modulo X minus alpha Y minus beta, this is just a field, in fact, it's just the field of complex numbers. So it's spectrum just looks like a point there. So these are what you get if you take the spectrum of a quotient and these are what you get if you get the spectrum of a localization. Let's see what the difference is. If you get the quotient of something, you're sort of taking all, if you take a quotient at some prime ideal, you're sort of taking all points inside that prime ideal in some sense. So here we're localizing this prime ideal. So we take all points inside it, which corresponds to all primes containing it. On the other hand, if you localize, what you're doing is you're taking all points outside but nearby. So here if we take this green line, the only point outside of nearby is the yellow point. Whereas if we take this red point, the points outside it are the red point itself and the yellow point and all green points passing through it. So we get something that looks a bit like that. So localization is the sort of opposite to taking a quotient. So what we have is a spectrum R over P. You can think of us being points in the closure of P. So here a point means a prime and saying it's in the closure of T just means it contains P. So the spectrum of R over P corresponds to primes containing P. On the other hand, the spectrum of R localized at P is the points whose closure contains P and these points of primes, these are primes contained in P. So what this is doing is it's turning P becomes a maximal ideal. On the other hand, if we take the quotient by P, P becomes minimal. In fact, it's definitely minimal because it just becomes a zero ideal in the quotient R over P. So quotients and localizations are sort of almost opposite operations. One of them is making P maximal and the other is making P minimal. So here P is the unique closed point of the spectrum. And here, on the other hand, P is in the closure of, no, it's not. The closure of P contains all points. So P is about as far as it can possibly be from being closed because if you take it closure you just get the entire spectrum. So let's just have a final example of looking at localizations. So let's take the localization. Let's take the ring C, X, Y, modulo the ideal generation by X, Y, and let's localize it at the ideal generation by X and Y. And we asked how many points are there in the spectrum? And what I want to do is to do this problem without any calculation whatsoever just by drawing pictures. So what we're going to do is just draw pictures of what's going on and this will hopefully make it obvious how many points that are in the spectrum and what they are. I mean, if you try and do it algebraically it's not at all clear what happens if you take this quotient and then localize and then try and figure out the prime ideals. But so let's draw pictures of the spectrum. So first of all the spectrum of C, X, Y over X, Y looks like this. Well, it's that the places where X, Y are zero is really just the X-axis and the Y-axis. So we draw the X-axis and the Y-axis and we draw all the points on them. So this is the spectrum of this ring here. It's got two one-dimensional points. So this is the ideal where either this is the ideal X and this is the ideal Y. So the spectrum is a unit of two irreducible subsets and then it's got all these various points. For instance, this is the point generation might be the ideal generator by X and Y minus two say this might be the ideal Y, X minus three and here we've got the ideal X, Y. So now we want to localize to the point that the ideal point nor which corresponds to the ideal X, Y and you remember localizing means we take the point that we look at the prime that we're localizing at and just keep the points outside that are nearby. So we end up like with this. Now you can see there are just three points in the spectrum. So the point is if you try and visualize these rings geometrically by thinking about what the spectrum is this question about what is the spectrum of this localized quotient becomes completely obvious. Okay, so next lecture we will be reviewing a bit more about the spectrum of a ring which is how to regard functions of the ring sorry how to regard elements of the ring as being functions on the spectrum of a ring.


Hi, I'm J-Row. It's Nuggy. And I'm DJ Paulie Dean. This is the Jersey Shore London Quiz. Oh, God. Wow. Big Ben is the clock. But it's actually the ding dong in the clock. Well, because it's a stored place. It's a ding dong in the clock. It's a ballast in the clock. It's under construction right now. We're trying to go see it, but they're remodeling. Four years under construction. But it's the little bell inside the clock. Buckingham Palace. Buckingham Palace. A beef eater. Is that sexual? It's a ceremonial guard at the Tower of London. Oh, that's a beef eater. Whoops. London Texcans are? Red. Yellow. Orange. Red. Black. Black. That's why I'm in a nosy mood. Damn, that's why I didn't see in a minute. What would we do at Harrods? Harrods. What is that? I don't know. Is that a bar? I'll go shopping. Hi-Mash. Bangus. Hi-Mash and bangus. Bangus and mash. Bangus and mash. Steak and potatoes. Falsies. These served jelly deals. Oh, jelly deals. There's jelly noodles here. A bubble bath. You're having a bath. Your bubble.  You're having a laugh. A bubble bath. You're having a laugh. I'm having a laugh. Maybe all those cheese. I don't know. Fancy stores. Brick Lane. Brick Lane is like new restaurants. Curry. You're going to Brick Lane. Chicken. Like, food, curry. Chicken? Yeah, spicy curry. They are like the season. No, curry. Seasoning. We're going to get supported. All right, so that was the Jersey Shore London quiz. And we failed. With our London quiz. We still love you. We love you.


What is so triggering about this podcast clip? Let's break it down. Yeah, we got to talk about this viral clip from the whatever podcast it's titled these Asian girls do not like Asian men. Let's run the clip. What's one race you laddies wouldn't date? Asian. Huh? Oh, aren't you aren't you like half Asian though? Yeah, but like why? What I just I've never found an Asian guy attractive. And it's just preference to I just never have like I'm not like a post to it, but it's just like it's like it just came up in my head. Like, oh, like it's kind of weird that I've like never been attracted to an Asian guy. So like me personally, I would date. I used to not find Asian Asians attractive. But like now I do. I think it's more so like they can relate to me more with like culture and everything like that. So like me personally, I really like I I like dating Asian guys. Stop it type now get some help. Who, Andrew, are you surprised that there's three thousands comments and growing from non Asian guys as well as Asian guys chiming in. And some of these comments that people are leaving are like a page long. Yeah, I don't know. I think this really hit a hit a chord with a lot of Asian guys because it's very nostalgic in a bad way. So I do think that the crowd that is sending this around because I got we got sent this video before, but it was by like maybe older like 30 and up guys who had experienced this growing up and are still kind of like, man, it still pains me to see this. Even the young girls do it. I don't know how many Gen Z guys are mad about this. Maybe they saw it. Maybe they're not mad. Whatever. How about this for the older millennial guys, Andrew? It's a negative retro. But for the Gen Z guys, it's almost like a peek into the past because, you know, nowadays there's so many like Asian body builders. There's so many like there's so much more Asian representation.  Like there's a lot of dynamics that have flipped or seemingly flipped in a media sense. This is almost like rewinding the clock the clock back to 20 years ago. Yeah, but I think these women who said this are fairly young. I would say they're probably under the age of 23. I'm doesn't go to show you that as much as some pie slices of society change, some of the other pie slices, maybe bigger ones that people are not paying as much to because they don't change as much. Stay the same. Yeah. Well, guys, we're going to break down this clip. We were going to break down what a lot of people are saying.  So please hit that like button right now and check out other episodes of the hot pop boys. Hit that like button. Andrew, let's break it down like ESPN detailed.  What's happening here? Like just play by play. I mean, listen, the probably very attractive hopper girl who's half Asian says that she would never date an Asian guy. And she says it kind of like she's proud of she's quick with it. She's an Asian. I would never date that. And then, you know, but I'm also not surprised. I think I'm more disappointed that some full non Asian girls say this than the half ones, because oftentimes they have white fathers. So it's like, you know, the man in their life is why. Anyways, guys, different dynamics. And then the one girl called the V girls calls her out.   And then the Thai girl says, oh, yeah, for the first time in my life, I can't believe I just thought about how I have never dated an Asian guy. Yeah. In fact. And she essentially says, I've never thought about Asian guys until now. Right. So she's trying to like be moderately against Asian men, but in a nice way, but it's also dismissive. She's trying to say, like, I just omitted them from my life. I didn't negative negatively turn them down. And we're going to get into the reasons why I think she did that. And then of course, Andrew, there's this weird kind of like hot but like Asperger's white girl in the corner who basically, in my opinion, implies that she would rather date an Asian woman than date an Asian man. Obviously, there may be some orientation aspects that come to play. And then the full via girls rapping. She says, no, I date Asian guys now, but for cultural reasons. And then Rhino from Live, Love, Serve. You might have seen some of his videos. He kind of like he's kind of sitting there listening. I'm sure he's heard this dynamic before. And he just says matter of a matter of fact. Yeah, well, it's because Asian guys have like more feminine features like the females who accept it plays worse for men. Anyways, we understand that dynamic. We talked about on the channel, Brian, the host of the whatever podcast comes in, tries to defend Asian guys, even throws in. Hey, you know, if I swung that way, I don't know. I think I'd go for Asian guys too. Thanks, Brian. An ally. Real quick, Andrew, we got to just address the macro here.   Yeah, man, I don't know for a lot of the guys on the Internet.  Like, I know that that's what gets clicks, but honestly, they don't ever really give you that much vital information. I feel like you got to have like more women that the guys on the Internet are actually going to date like on the panel. Anyways, some real personal points that we want to make before we get into the comments section, David, I have seen with my own eyes, Asian women say that, oh, I don't date Asian guys to a group of Asians full of men and women and nobody really called them out. And I just think that it's at that point. I'm not saying you got to like cuss people out and be super emotional, but I do think it's at that point where you can call people out in public for this, right? You're saying in 2023 after like, let's just say that's been happening for 30 years that the Asian American community can begin to say, hey, why'd you say that? How long are Asian guys going to take the slander? We've been slandered everywhere from light to heavy. There is no Asian guy who has not been slandered a little bit. Yeah, I don't care if you're from the hood or you're from the good, which is like a really good neighborhood. You have felt it at some level. I'm not saying some people have felt it way more or less. So depending on the circles, they've inhabited or their own personal stats, what I'm saying is I think people need to figure out a way how they're going to word and voice that out in a civil ban. I think that this is a really good point, Andrew, because I do feel that some Asian guys have almost gotten to the point where they don't like to hear it, but they just accept it because they're around this attitude so much depending on if they're like Asians in Hollywood mainstream spaces.  All right. Sure. It doesn't hurt. It doesn't hurt. And then you're just like, I remember the first time I heard this was from the like the pretty hot girl group at youth camp because we went off to a Chinese church and they had youth camp. And I remember they said that out loud. You know what I mean?  You don't really know how to handle it. You know, but you know, I would say a lot of, like, you know, like you're saying, like in sort of these group contexts, a lot of people, they don't know how to handle it, right? They don't know how to bring it up and be like, hey, why are you being self-hating? Yeah. No, I'm going to just make it a joke. Yeah. Hey, you're why are you self-hating? Hey, you're self-hating. What's up with that? And then at least make them think it's kind of funny. But anyways, guys, yeah, we can get into the comment section. I'm sure there's a lot to talk about. There's a multitude of reactions to it. Yeah. This first comment was basically from a guy who said, I'm on my I'm like 25 now. But when I was like 15, 16 or 17, this used to really hurt me. But now like I've learned to like not really care. And like I just don't let these these people who feel this way, these women, even if they're really attractive on the outside, you know, shallow side impact how I feel. Yeah. I think it's important to let especially random people affect how you feel and control your feelings, especially, you know, honestly, generally, like women who say this that are Asian are like, I don't know. I'm never an Asian guy. It's like, yo, what's your reasoning? Yeah, you got to have a good reason. And usually, to be honest, they're bought into like a very white or just a very non-Asian subculture. And they feel like that their attachment to the Asian world may hold them back from rising that ladder. Yeah.  And they're just like, yeah. Yeah. And you know what it is again? Like probably they're probably aged like 22, 23 or 21. And it's just funny because you think that we have all this representation, but there's some women who are still part Asian that full Asian cannot imagine dating an Asian guy or I've never met or been exposed to a datable one, which is interesting. Yeah. I mean, I think it goes to show you that some of the dynamics from 20, 30 years ago, they could still exist in 2023 as much as the Internet has all these pro Asian movements or pro Asian male movements. And there's some Asian women were firing back in the comment section of the whatever podcast saying, I forgot to add I'd like any guy as long as he's not problematic, sexist, racist and has male entitlement. However, Asian culture checks so many of those boxes. So forgive me. Hmm. I mean, I think it does apply to some portion of Asian guys, but I feel like not the majority. She almost more is this a sins of a father type situation? I'm not saying for sure, but like I generally feel like sometimes girls and I'm not blaming them. They might have a downside experience with like their dad or something like that and then project that onto, you know, other second generation immigrants that I think that there are reasons and excuses that are better than others. That's right. There's a range, right? There's a ranking of excuses, right? Um, this guy said as an Asian man myself, who grew up in New Jersey and New York, it's 100 percent a masculinity issue. A lot of us are perceived as more feminine, but if you increase your height by wearing lifts or muscular going to the gym and in general, just be more alpha, you can dispel the stereotypes. I know it worked for me. So basically Andrew, he was almost saying it's a masculinity. I mean, this is kind of like the Jim bro testosterone thing, right? Yeah. Yeah. But I think like, I don't know what the, when people say, Joe, just be more alpha, it's not just that. I mean, I feel like there's so many layers to that you got to be more outspoken. You also have to have a personality. You have to have passions and interests and you actually have to like build this guy up and then you can kind of be more confident and alpha. Isn't this kind of also, I'm not saying that, first of all, this is good advice. That's fair. Yeah.  Here's this lean protein and just like slap it out of their hands. They're just like, is that really going to work too?  Yeah, just quit smoking. Put the cigarette down. What do you mean? What's so easy? Yeah, just put it down. Just throw it out. Throw them in the trash. And then you're done. You're done smoking. Yeah, online bullying. Just block that person. And that's it. This person said, actually, I think it's a lack of game issue. It's not even a physical thing. Culturally, Asians are coached to be beta passive and being shy is harmful for men in the US dating scene. This was the observations of a non-Asian. Guys, I think coaching and training is the right word. I don't like the whole thing about like, oh, it's just game. Oh, guys need to develop their game. Guys, it starts way before that you need to be trained and coached properly from a young age. And this is where a lot of Asian guys are missing it because we focus so much on school and academics and our community is unbalanced. And maybe there's not a lot of mentorship. Maybe you're the only Asian kid. You don't have anybody who's looking over you. Your dad's not home.  They lack training and you got to get that training in for years to fully develop that as part of it.   OK, yeah, I don't know. That's interesting. Yeah, man, people just blaming it on Niatni. Yeah, maybe it all Confucius, I guess. There's definitely some blame.  I know that, for example, a lot of my peers that are also married to white women or non-Asian women are not going to have sellout kids like that. I just feel like a lot of women who marry a white guy are more likely to have that type of kid as an outcome. Who's like hates one of their sides or thinks one of their sides that makes them up is like the weak side or the uncool side. Yeah, generally, obviously, like, man, if the dad is Asian, you would assume that the kid is probably going to be more likely to be proud. I've definitely met proud hapas and children who have an Asian mother and white dad, but I will say, generally, in a family, if a woman, especially a immigrant woman or foreigner woman marries into an American family, which culture are they going to buy more into? Probably the American. Take the fan dual odds, guys. I'm betting they're going to buy into the American system and the American standards and everything. This guy said, I will never understand why people of different groups are repulsed by people from their same ethnic group. This guy said, self-loathing psychologically and naturally, a person is most attracted to somebody closest to them. So therefore it's safe to say there is some deep trauma that had to have to occur for someone to go out of the way to exclude someone who looks closest to them and prefer somebody greatly who does not look like them. Yeah, I think the whole attitude of like writing off Asian guys and being disgusted by them is the is the real offensive part.  I've never really dated Asian guy and I've never really found any attractive. That is bad as well, but almost not as bad as just being like, yeah, I just won't date him. I just won't. Right. And then I'm going to tell all my friends to not do it too.  What happened to you? Yeah, I mean, I think we're all subject to our upbringings, right? I mean, we are growing up in Western society. Not everybody grows up in an Asian enclave. Not everybody even goes to a high school or middle school that's like 20% Asian, you know?  What you like, what you like to eat, how you speak, all these things are environmental in America is a very diverse country, right? Somebody said Asian dudes are actually very good men, hardworking, intelligent, humble and loyal. However, they were usually viewed as good, nice guys. And that is considered uncool in 2023 unless you are looking for a husband that is also a church leader. Yeah, so I have heard from multiple Asian women that I have gone out with or talked with or met that they said that they do, they are attracted to Asian guys, but they literally have never been hit on by Asian guys, or it's never really like just happened, you know, because a lot of people will kind of date who's around them or who's coming after them. And if no guys approach them and are constantly like, you know, being suitors for them, then that's almost those are a lot of their options. They're just going to their options are who's coming for them. Right. I guess simplistically, if you were to not in a simple manner, in a simple matter, almost like your average person making average read and taking the incoming versus sending out going and I doubted this, but I thought about it for a while. And I was like, no, it's definitely possible that some girls are actually open to Asian guys, but have just never been exposed or been approached by any. Yeah, no, it's possible. I think there's a lot of sides to this coin. It's not just a coin.  And you know what it is?   Dude, like, how, you know, like everyone says, like, white people hit on every the girls, but the girls like never get Asian. And it is different for every type of Asian guy, right?  Somebody said, this is a small sample size, but I'm pretty sure if there were five girls of their race and three of them only willing to date one of them and they were like black or Latino, they would probably flip out and at least point it out to their face.  No, I think Asian dudes got to call it out. And I will say this. Asian guys have been overall, overall across the board, generally fairly chill about taking in all the slander that we get. Oh, you're talking about the emasculation. Yeah, I feel like that Asian guys have maybe handled it well, maybe too well. And I'll tell you this, I'll be honest about this. And I got to keep it real. Emasculation, I think a lot of people like to use that word, but they don't really know what it means. It means that even though you're a man, you're not treated with the respect that a man commands. You're not treated like the stalwart of your community. You're basically treated like a role player on your own squad, right? Which whereas to me, I'm not saying that I haven't heard because we have a lot of diverse friend groups. You know what I mean?  Everybody's got pros and cons about how they view their significant others and their others in their community. But it's like they would never air it out on a podcast like that because that's so emasculating because they would be like, I can't do that to my uncle. I can't do that to my father. I got like too much respect for OG, you know? Yeah. I mean, it does. It is a family thing. If that family didn't build in that respect, then that's kind of their fault, too. Right. Somebody said, as an Asian man, take these women, please. I mean, yes and no, I think that that's a great way to handle it. But trust me, they're already taken. Yeah. They're already taken. What do you mean? They've been or I don't want to say they've been taken. They've been, they've given themselves away. Um, somebody said these are the type of women I always thought I wanted to meet in my 20s. Then I became really successful in my mid 30s. And those same girls would hit me up. But I was already with a young wife that was much younger, hotter and much more traditional than them. Yeah. I don't know if this is fully true, but yes, I understand what you're saying that these definitely are the type of girls you really want to date when you're like 18, 19, 20, 21, 22. You're like all about these groups. These like blonde acting Asian girls that are not like hood. You, a lot of guys like, I mean, are these girls not the 2023 version of mean girls like that, uh, no, they're essentially, you know, they're kind of like Asian Barbies. And I don't mean the ABG ones. I'm saying these girls are like not ABG right. And we're not talking about the meta movie that's like real thoughtful. They just came out Barbie. We're talking about the actual, you know, Malibu Barbie. Let's go Barbie. Let's go party. This guy said as a black guy, this doesn't really affect me. But I feel for my Asian brothers out there. I've always been of the belief that Asian women have white fever, far more than white guys have yellow fever. Stay strong boys. Really interesting empathy. I mean, Rhino, I wouldn't say he was this empathetic, but he, I definitely when he said it, she, I remember Rhino in the podcast was like, ah, this again. Yeah. You hear this from black and to a lesser extent, Latino guys.  Um, it's tough to put on a percentage on it. So I guess, I guess that's an interesting idea. Yeah, I think it's on a case by case basis to the tango. But I don't know which it is, which pie. Andrew, I always say, man, usually people can agree on the pie slices on the on the pie chart. No, you mean what? But they always disagree over distribution. Right. Um, somebody just said, this guy said, as an Asian guy, I can tell you that being an Asian guy, I think he was speaking to the non Asian guys in the comments that being an Asian guy in Western countries is the worst. Personally, I was open to all ethnicities, but then I realized that white, black, Middle Eastern, all types of women from the Western hemisphere basically see Asian men as inferior and weak. And I was always going to take a huge fractionation or tax on my value. Yeah, yeah, I will say this. I will say this in the mainstream Western Anglo society for any English speaking countries, there is a tax for sure on being an Asian guy. Now, how big is that tax could vary person to person in fishbowl to fishbowl? It really depends on what type of person from that community you're meeting, because if you're only meeting like shaws of sunset Middle Eastern girls, they are not going to be into Asian guys like they're the hot Arab girls. I've rarely seen it, but but there are. I've also seen guys get with Middle like, you know what I mean? Right, right, right. And just yeah, if you're talking about the hottest person of each group, it is. But you know what it is too, man? Not everybody, like we said, Andrew is going to be like a tall, good-looking, charismatic guy who works as a bartender or a nightlife. You got to think how many more reps that somebody who works in that particular field with, you know, certain particular prerequisite stats, they're almost going to see like maybe at some point, 10,000 percent or 10,000 X more reps than a regular guy. Right. With without those stats, too. So it could shift so much, guys. Maybe the time of life is infinitely complex. Somebody said has to do with Eurocentric beauty standards. You know what I mean? Everything from changing the shape of your eyes to the shape of your nose to skin bleaching, et cetera, et cetera. This is just a fact of the Asian world. Yeah, I mean, that's an interesting perspective, too. I think that, you know, like we said, it's a whole pie thing. Somebody just said, you know, it all comes down to exposure. Now that we get more media exposure, just like K-pop, that's got its own little wave, even though that's not a mainstream wave, it's a growing niche. Andrew, how much is it about just representation?  That is the most important representation in changing this is that Asian dudes got to meet and talk to people in real life, or at least on the apps or something. You know what I mean? Like, but you cannot rely on the movies and K-pop.  And this is the issue. A lot of Asian guys are into STEM fields, right? So you spend a lot of time studying engineering, medical. And to be honest, those are primarily male as well. Yeah, those are primarily male, heavily Asian, not very, like, blonde, female-y. So you're not going to get a lot in FaceTime talking to blonde girls or not just blonde girls or even different types of girls.  They're not fun, you know, they can be great people, but they're just not necessarily fun part of you don't develop your like social skills on that level. Andrew, this was a really interesting comment.  It's depressing on this side of the spectrum, too. What is this comment trying to say? Yeah, well, it's just trying to say that that as a gay Asian guy, this person has been attracted to Asian men, but some of those Asian men are just only attracted to white guys. So so some Asian dudes in the in the LGBT world are also self-hating. So they're just pulling the same thing that these pretty girls did on the whatever podcast, but just just in a different world. No, they would say the same thing. Yeah, like, I would never date Asian dude, you know, like that's.  So it's like, it also goes back to even in the LGBT world. Asian guys are still not hitting another Asian guy. Does this almost serve as a control for the science experiment? Just the fact that it's like mirrored in a different orientation. I just think like, man, white dudes, they really get after it, man. And it's maybe it's because it's their country. I don't know. It did take over the world for the last 400 years. Anyway, somebody said, I'm a white guy and I'm married to an Asian woman. I know lots of other of my friends who did the same because most American women just aren't traditional anymore. They can sure drink like their father, but they sure can't cook like their mother. But these Asian women, they still got all the skill sets. That's a funny bar. That's a funny bar. Yeah, I do think a lot of white women, I don't know. I don't want to stereotype them. Can they not cook nowadays? You let me know in the comments down below. Yeah, but they can. They know all the rap lyrics to the rap songs that I don't know either. Why don't they learn the country's to the country songs? They be rapping their whole songs at their weddings. I don't like it. I try to be down with it, but I know it don't. Somebody said as an Asian guy, I know that life isn't fair, but you got to make do with what you got. Somebody there was a lot of arguing back and forth. Some guys were like, dude, why are you giving up? I mean, I think this guy wasn't like super good looking or anything like that or something. And then this guy was like saying, no, man, it's smart. I'm a doctor now, and I'll tell you this. This is why Asian men tend to have long term relationships and successful careers, because we have way too many life challenges, especially socially. So we have no choice but to hustle and be consistent. So basically, I do think, by the way, there are Asian F boys. You know, obviously, especially in Gen Z, but still, I would say in comparison, probably if you made me guess in comparison to every other group, maybe still the lowest amount of F boys, right? Well, maybe percentage wise. Yeah. Yeah. Anyway, Andrew, let's just get into the takeaways and some suggestions. I mean, I would say to that last comment, man, there's so many different ways you can approach like feeling like you're at a disadvantage, right? You can either accept it. You can have a monk like mindset. You can either be set on fire to get in the gym and get super ripped, super low body fat to try to, you know what I mean? To fight it. Or like I guess what I'm saying is there's a lot of different ways to attack it mentally and emotionally, right? Yes. Yes. And I hope that any guy who's feeling down is seeking advice on the internet from on YouTube by the dozens and hundreds of channels about male self-improvement. Some specifically for Asians. Yeah. Some that are ran with Asians. Move to the enclave, especially nowadays. Everybody's work. You can move anywhere you want. You can avoid this type of woman. But this type of woman is actually still always going to exist, you know, for a while. But I do think the numbers are going down. Thank God they didn't all want to do podcasts like 20 years ago. It was it was worse. Oh, man, it would have been crazy. I mean, that's why. Because then there would have been no like, yeah. That's why in a way the women who said it back then where it was even worse because it took so much more work to get on a microphone and get those words published. Oh, you had to want to say that. I thought about it a lot. Yeah, because there wasn't a lot of media back then. Yeah, but now media, people, things just fly out of people's mouths. I would say this. The first, the truth is, as much as people see this, the whatever podcast is filmed in Santa Barbara, Andrew, it's probably very white there. Like you said, Santa Barbara Barbie. That's very much that Ken Barbie culture would just move somewhere. I always tell people this. Don't go to UCSB. Don't go to University, California, Santa Barbara. I always told people that's a mistake, bro. You don't fit in with the beach, bros and the beach blonde babes. Like go to UCI, go to UCLA, you know, and then you more find tribe, right? Like I'm saying, I'm saying different people are tapped into different things. Like if you see if you meet Asian girls, like really in a basketball or like a rapper or something like that, she might date like black guys. These girls were clearly tapped into white culture. They're looking for blonde dudes. Yeah, also, if you're not one of these Asian guys, and you don't feel like, you know, just don't get emotional about this. Like, why let what random people say on a podcast dictate how you feel?  But again, man, see improvements and, you know, it's a long, it's a long road ahead, boys. Yeah, I mean, I guess ultimately, Andrew, what do you think? Because this is probably not the last time we're going to see this exact dynamic pop up, right? Because this is like people, you know, have been sending the street interview clips now, it's the whatever podcast. Who knows what it'll be like three months from now. Yeah, who knows why?  I don't understand why they go on the podcast. I don't get it. But anyways, you guys, let me know in the comments down below what you think about all this. Make sure you go over to this link right here, the whatever podcast clip link that has like 4,000 replies on it. Read some of them. Let us know what you think in the comments section below. What do you think of the clip? Is this newsworthy, not newsworthy? Is it old school? Is it new school? Is it relevant to you? Is it not relevant to you? We couldn't even get to everything that we wanted to talk about in this podcast, but we got to wrap it up, guys. Let us know what you think. Keep it civil until next time. We are Hop Hop Boys. We out. Peace.