Happy Halloween everybody! Kind of a gross day, but it's kind of par for the norm where I'm at. It tends to actually snow on Halloween, and I'm surprised it's not that cold this year. I have another video in the works that I plan on recording today on using stringier for doing text validation in a contrived console app, but it's enough to show the basics. And it's just sort of an employee crud if console app hooks up to a database and does some basic crud operations. Obviously it makes more sense to do validation before sending it off to the database because especially if your database is in a remote location, which is becoming increasingly common, but also if it's even if it's at that same location, it's much quicker to do the validation on the client side than to send it off to the database, have the database be like, I can't take that. That's bad for whatever reason and then send it back. That validation can obviously be done with RIGX and other stuff, but I just wanted to show how it would be done through stringier. That being said, I do want to talk a little bit about what I'm working on. Some of you may have noticed that I've stripped a lot of the projects that I have been doing and the reason for that is because I spread myself too thin.  I don't want to talk too much about that, but the .NET world, obviously there's a huge amount of packages available through NuGet, which means you really don't have to. There are already excellent math libraries. There are already excellent container libraries. In fact, I had done a little experiment using my container implementations against Microsoft, and there really wasn't any noticeable performance increase. The characteristics were a little bit different, but overall, it wasn't discernible whether one was superior to the other, unlike with AIDA cores where basic common operations were like twice as fast. So that's good, and that allows me to really focus, and instead of doing a bunch of stuff that just kind of has the basics, I can go full in on something and provide a really excellent implementation of that. What I want to do that with is with Stringer and another project that builds on top of Stringer that I'm not really ready to talk about because it's still very much in the works, and I don't have the design formalized yet. Look at the kitty. Hi kitty. I'm going to clean that door, but it's kind of bug season. I'm doing, well, we'll phrase it this way instead. I have some stuff that I want to do to Stringer for a version 2 release. I know that's pretty quick, but the development of it's also been going pretty quick. And it all sort of started by recognizing that the cultural comparisons that Stringer was doing aren't actually being done right. They are in certain instances and then aren't in other instances, and yeah. I was originally piggybacking on the String equality in C-Sharp, where it will allow you to specify the String equality comparison type, which can be the standard ordinal that you'd expect to see, but also culturally sensitive comparisons. And I'm not entirely sure why that wasn't working right. I think it had to do with just how I was breaking down text and how I know in some cases it was because I was looking for a specific length, and not all equivalent words are of the same length. The easiest example is straight from the Microsoft docs where Encyclopedia you can have that spelt with an E, an EA, or an Ash, which is the AE ligature, and the AE is obviously of a different length than the other two, because there's an additional code point in that String. Coming up with a way to resolve that is actually quite difficult, and it doesn't seem to be something people were using very often.  It's a little unfortunate. I can revisit it later, but I'm not really going to be working on that for the time being. I really would like to add that in later. I'll have to come up with my own implementation for it probably, but I would like to implement that again later. But while also trying to track that down, I had noticed that there was some significant hardening I could do. The whole project had originated as an extension library basically. The actual stringier package is just a bunch of extensions for characters, innumerables of characters, strings, and innumerables of strings. This to provide some useful common string operations or things that were a little tricky to implement, just have them as a single method goal. Like chopping a string into chunks. It sounds sort of contrived and like a toy, but it's useful for situations where you're sending text through a fixed size packet, so you can chop it to like 254 characters or whatever your packet size happens to be, and then just send all the packets with those chunks. And then the actual patterns engine, stringier.patterns, had largely originated the same kind of way as just building on extensions and then turned out to be actually quite a good approach. So there were a lot of missing things like null guards and range checks that I'm adding, and there were some problems with algorithms, just minor problems. Chop didn't quite work right on certain length, chunk sizes, whatever you want to refer that as. But there were some others. Overwhelmingly, it worked right, and that's why I went unnoticed, but because I'm needing to add more safety checks and more tests, and since I was doing a general audit, it's like, all right, well, you're going to be going through the entire code base looking at every single implementation, writing tests, numerous tests for every single implementation to make sure there's good code coverage. But also, I had done a little experiment that really affects stringier.patterns, parsing engine, more than just general string stuff. But as it turns out, it's possible to do many types of string comparison using SIMD instructions, which also means it's possible to do the string comparisons using graphics card shaders, which really fast, really, really fast. Considering the .NET world, you're working with 16-bit code points. At least on my machine, that means you can do a vector of 16 characters at once, so you can compare a string of 16 characters long in a 16 code points long in a single SIMD instruction. Now, there's a little bit of overhead, so it's not a 16-time speed-up, but in a lot of cases, it's considerably faster. Now, it is still subject to a lot of the control logic. If you have an alternation, a choice of something that's four code points long and something that's three code points long, you can only check those chunks individually. And similarly, if you're checking for something that has a plural form, you can check the non-plural form and then have to check the plural ending separately. So there are limitations, but considering for most textual patterns you wind up having predominantly consecutive strings, consecutive code points, it's an opportunity for considerable speed-up, but it does require rewriting a lot of the underlying stuff in the parsing engine. And it's considerably easier to get that working without cultural comparisons, because that is strictly an optimization around ordinal comparisons. And as it turns out, because of how the engine works, you can also do an optimization specifically for case-insensitive comparisons by pre-converting the code points to either lower or upper forms. Now, it turns out to be better to do that for upper forms, upper casing. But again, that kind of optimization requires a little bit of rewrite in the engine itself. So because of all these things presenting themselves around the same time, I've decided to go through and do a full audit of everything and just sort of get it all in one sweep. And when I do that, at least for smaller projects, and despite the efficiency, despite the amount of work I've been pouring into it, it's a small project. The entire libraries are less than 4,000 lines of code, and the pattern engine is barely over 3,000 lines of code, so small projects. How I like to do audits when it's small projects like that is to gut the repo, make a local copy of it. You can either view that by copying the files or by cloning another version of the repo just so that you have reference files, and then go through and manually write everything again, just to kind of force you to think about every single implementation and go through and not get lazy about tests, because that's the thing I notice happens a lot. When you've gutted it and you have to think about writing the tests all over again, you tend to be more diligent and not go, oh, well, this one was already covered, and it turns out you're missing nine important cases, maybe eight of those passed, but one of those fails, and the guy didn't mean to know that. So, yeah, that's a thing. I also sort of decided while doing this, while starting this audit process, that it would be useful for this project to have access to writing code in IL directly, and I know that's not something the overall majority of people ever do or need, but as it turns out, there are quite a few algorithms that are actually easier to implement in assembly, which IL basically is, than to implement in higher level languages. That sounds kind of bizarre, but there are some edge cases where that holds true, and there are quite a few cases where it's considerably faster. Optimizing compilers have come a long way, but certain language constructs just get in the way of that still, but do note that if performance is your top goal, exhaust basically everything possible before going that route. You'd be surprised how many optimizations you can get out in native language. You really should not be dropping to assembler in most cases. But there are also some expressive reasons for doing this. There are certain things that I would like to implement that can't be adequately expressed or can't be expressed at all in C sharp visual basic or F sharp, and that's been a limiting factor for various reasons. Now that mostly has to do with the project that I'm using stringier for, but it does affect stringier in certain cases. So there is ways to go about that, and the one that I found that makes the most sense is a project called IL support, which piggybacks on the MS build build system, which is compatible with Linux and macOS guys. So the solution would still be built using a simple dot net build, which is good. You want build systems to be really easy, even if you're supplying the stuff through Nougat, you still want the build system to be really easy. So it's not going to change anything in that regards. But he figured out a way to provide projects with mixed in IL. So you can have a project that's still predominantly in C sharp, but you can mix in IL files and it'll compile both into a single assembly. Now, unfortunately with the newer dot net framework releases, and I'm not talking specifically the older dot net framework, I'm talking all of the framework runtime SDKs. He, Microsoft kind of broke his extension. So I've been working with him on getting that actually working again.  Nobody really programs in IL deliberately. So there really hasn't been any type of good support. There's not much considerations for making these things available. So when they did a breaking change on where IL, ILASM and ILDASM are located and how you get them and all that, they didn't think twice. They just did the breaking change because people don't do that. So for the few people that actually do that, yeah, but we're figuring it out. As of yesterday, I worked out how to get them reliably across platforms and the stuff required to get them running reliably across platforms. So now it's just figuring out how to integrate what I found back into the build system. Obviously, if it's already installed on the system's path, then it's a non-issue, but those tools aren't normally exposed on the system path. So yeah, that's where I'm at. Like I said, expect, well, I don't know if you should expect the next video today. I will record it today, but expected by the weekend should be done before the weekend. But I'll try to get it done today. Until then, have a good one.


The next talk we have is Neil Brown from SUSE, he's Colonel Engineer at SUSE, and this talk is SysFS classes for virtual block devices which is slightly shorter than what I had in the program. The original title I probably should have shortened. So Neil, please. Thank you. Yeah, so when I came to make the slides, I realized I had to shorten the title because there's more of kind of a mini abstract or a long title that I gave him. I picked out the important bits and important bits of SysFS and virtual block devices because those are two concepts I'm interested in, want to talk about, hope you might be interested in how they work together. By virtual block devices, I particularly mean RAID sort of things, MD and DM, which I might call MDM from time to time because hopefully the distinction is blurring and all blur more. So SysFS and adding new functionality is something I've noticed a few times is a bit of a problem. SysFS isn't something that was kind of designed perfectly in the beginning and has a design document we can always follow when we're adding things to it, SysFS kind of evolves. It originally was really focused on power management and how to, I guess, know what device you had to power on before powering on the next device and so forth, but it's kind of grown since that in different ways and I pick up a sort of reading the lists and stuff that different people have quite different ideas about what should be in SysFS, what it's for, what its purpose is. Just recently there was a bit of a fuffle because in SysFS there are these symbolic links between like a DM device and the device of a component of it, it's called the Slaves and links going one way are called Slaves and links going the other way are currently what they're called, but it was suggested that this was wrong and SysFS should never been used this way and it's horrible, which may be true, but the people who originally meant implemented how are they to know, do you know? And so I figure maybe if I want to do something new it's good to try and find a forum to present the ideas and get people to complain and tell me how I am first and exactly what forum to use isn't clear. If I post some design document on the LKML it'll probably get ignored. People like code, they don't like design documents, if I post a code it'll probably end up going upstream before anyone complained about it. So I thought I'd try a conference and maybe there'll be someone here who could say oh I don't like that for some reason and maybe it'll be a good reason, it'll be good, but so I should ask who thinks they have some understanding about SysFS and what goes on inside it and how it works. A few half hands, who's tried to understand it kind of failed and it's just the same hand to go up and a few more. Yeah, it's got some really good stuff in it, but trying to say this is what it's meant to work, this is the rule for how it works is really hard. I mean the only rule you hear so often is one file, one value. One file, one value and I'm not sure that actually makes a lot of sense when you have like array values and stuff like that. So the only rule we have isn't much good. So basically I want you to tell me if the idea is dumb, reflect any way that you can, is this sort of thing you'd like to see more of in SysFS, what I'm talking about. And what I'm talking about is using SysFS to expose more of the structure of things like DM and MD. For those of you who don't know, DM and MD are the two kind of competing sort of RAID thingy implementations in Linux. They combine multiple devices into, well actually multiple devices, one device or more devices. MD focuses more on traditional RAIDs as RAID 0 and RAID 1 and RAID 4 and RAID 5 and RAID 6 and RAID 10, which is a bit special. What MD stands for is not clear. It's either multiple devices or method devices or something. DM focuses more on logical volume management. So there's less of the redundancy management. It's more of well chopping up a device in lots of little bits and reassembling them into whatever you want it to. But it's the same basic concept of taking some devices and producing some virtual devices out of them. And so they have a lot in common. But they're really two completely separate code streams developed by different people with different agendas who don't talk to each other. Not because we don't like each other particularly. I've met a number of the key developers and they're nice guys. But they're busy doing their thing and I'm busy doing my thing. And there's just not a lot of cause for overlap. But as that first point says, we have just recently beginning to see a little bit of unification. I've sort of wanted there to be more unification for a while but I never had the time or the motivation. What's really brought it along was there's a DM implementation of RAID 5. It's not in mainline, but it's in SLEZ. I'm pretty sure it's in Red Hat, I'm certain it's in Red Hat. And it's maybe being used, I'm not sure. I think there's been bug reports against it, so it's probably being used. And having a separate RAID 5 implementation is, well having two of them in the kernel is not really a good idea for maintainability, it's actually fairly complex. RAID 0, there's two different RAID 0 implementations. RAID 0 is really trivial. There's no big deal, RAID 5 is a different Kettle of Fish, though. So that sort of pushed me to sort of do a bit of work towards unification. Something else pushed one of the DM guys to do a bit of work. And so we have been talking to each other, which is really quite awesome. I'm not sure creating what we're currently created, which is I think in the current merge window, or the recent merge window, merged a driver that uses MD's RAID code to present a DM target, which maybe isn't terribly useful, but the important thing is a step towards talking to each other. Anyway, even if we merge bits of MD and DM at that level, there's still a point that there's some core problems in both DM and MD that need to be solved for both of them. It'd be nice to solve them for both of them at once, rather than I fix it for MD and find that it's really good. It doesn't quite work for the DM. And making horrible designs neat is a rewarding part of kernel development. Fixing bugs is kind of good, but it gets boring after a while. Actually doing something new and making it look neat and elegant, getting rid of the rubbish and creating new stuff is something I like doing. I hope a lot of kernel developers do. So the particular focus here is device creation. How do you create a new MD or DM device? What does that look like?  It's an external physical event that causes it to happen. But you don't have any external physical event like that for MDM sort of devices. And the way device creation works at the moment is actually quite ugly. It doesn't play very well with Udev. We've made it work. Every so often Udev maintainer says, you know, this should be fixed to me. And I think, well, yes, it probably should, but it kind of works at the moment. So the point, what's wrong with it? You need to think about an arrayed array. Let's stick with arrayed. An array is, there are two kind of distinct objects. There's the mapping, the array, the description that says these few devices have to be connected together with this chunk size and this sort of layout and whatever. And that sort of describes the array. And then as a separate thing, there's a block device, a block device which appears in slash dev, which you can open, which you can mount, which accepts a standard sort of interface. So the block device kind of defines the interface to this thing. And the array defines the structure of this thing. That might seem a bit abstract. Hopefully it'll get a bit clearer as we move on. And the problem is that both MD and DM create these things at exactly the same time. They use completely different mechanisms. But essentially they're created at the same time. What that means when you create it, you've got a block device that doesn't work. You try and read it to look at the petition table, IO error. You try and do anything to it, IO error. So you there sort of finds this device, tries to initialize it, sees all new block devices. Maybe this is a device I should mount somewhere. Maybe it's encrypted and I need to do something crypto thing on it. It can't do that because there's no block device. So it can't respond to the add event when it appears. It's got to wait sort of for another separate change event that comes on. It says, oh, that block device I gave you a while ago, well, there's now data there. And that's an ugliness. And it's, I mean, that's a fairly simple view of the ugliness. More deep, you look further down, in the code, there are kind of ugly aspects of it as well. So they should be separate and they should be a clear ordering. You know, the array should be created first and then set up and then the block device in it. And this is where we connect to SysFS. Because SysFS is a lot about, well, one aspect of SysFS is a lot about device discovery order. As I mentioned, there's originally, as I understand it, developed to help power management. And so there's a devices tree.  Unfortunately, life is actually more complex than a hierarchical tree, isn't it always? And sometimes you have to do multiple things that are dependent. A lot of things can depend on multiple things for power and addressing. But anyway, the basic idea of the devices part of SysFS is that a higher thing is needed to access a lower down thing. So things that are discovered from the top down. So in kind of a typical SCSI IDSR to sort of device, you have a host bus adapter, which has got a bus. And then in that, you find some targets. In the target, you find a logical unit. So the logical unit, you find a block device. On that block device, you find some petitions. In the petition, you find the file system. In the file system, you find a file. Anyway, so it's nice. It's superficially a nice, clean hierarchical thing. So I said there are sometimes exceptions that don't work. So how can I follow this pattern to make virtual block devices work? And it seems kind of obvious, once you've presented that way, that there should be a device in slash devices that represents the array. And then a child of that, a sub-directory or sub-file, something of that, the device that represents the block device. And then it again might have petitions, of course. But that's not at all what we've got. What, where a DM or an MD device appears is simply in, I got that wrong. Sorry, it's slash sys-devices-virtual block. There's this sub-directory and sys-devices called virtual, which just gets all rubbish. Everything that doesn't belong somewhere else gets thrown in there because it's probably the virtual device. But it doesn't tell you anything about the structure, sort of, who controls it, who owns it. It doesn't differentiate between MD devices and DM devices and loop devices and other sorts of virtual devices. So it's, yeah, it's a bit ugly. So what else, so currently the main thing you see is just the block device. You don't kind of see much of the array at all, which is not a bit. I mean, if sys-device really is the way of the future, and some people might think it isn't, I think the reality is that if we want uniformity in the kernel, we want to make as many things use sys-device as uniformly as we can. So DM currently doesn't expose anything else in sys-device at all. All you see in sys-device is the block device. If you want to configure it, there's this major arch-ottle for doing configuration and kind of works, but it's legacy. It's not the way of the future. MD does have some stuff in sys-device, but it's in exactly the wrong place, right? As I said before, the array should be above the block device. You define the array and then out of the array you make a block device. But the MD stuff in sys-device is inside the block device. So you have a device directory called MD0 or MD1. Inside that there's a directory called MD. Inside that there's your chunk size and your layout and your array level and all the other stuff. So it's in exactly the wrong place, which is my fault. I put it there, but I blame Q. If you look inside a SCSI drive, any block device is a directory called Q, which refers to the request Q, but that actually technically belongs up at the SCSI layer. When you instantiate a SCSI drive, it actually creates a Q so it can send a request to the device to see if it's actually a block device. So the Q exists before the block device, but it appears in sys-device afterwards. This is one of the reasons I have trouble understanding sys-device. It breaks its own rules because they're never being written down. But anyway, so the current state of MD in sys-device is ugly. It's in the wrong place and even though I put it there, I don't like it being there. It should be a way to put it above. The whole way MD devices are created at the moment is also ugly. You actually do a mooknod in slash dev to create the block device and you open it. That action of opening the block device causes it to exist, which is really backwards too. At the time, it probably seemed like a good idea 12 years ago whatever when this stuff was first written by somebody else, but it doesn't feel like a good idea anymore. So how would I fix this? What would I do to make this better? And is this a good use of sys-device? Does this actually fit your model of how sys-device might work or more accurately does it deeply offend your model of how sys-device might work? So people are more likely to talk about how they are offended than how they are pleased. So can you imagine this offending you or someone else? And so the idea is to create two new device types. One's a class device and one's a bus device, which itself is a bit awkward because some people tell me that this distinction is going away. They're all going to be called subsystems. We'll get to why there's a distinction between them soon. But anyway, a class device and a bus device. Vol group is obviously short for volume group. It represents the concept of a volume group. Now LVM has a concept of volume group. It's a good concept. It's a concept that doesn't actually exist in the kernel at the moment. So adding it maybe not necessary. It's kind of one thing I'm a bit certain of. But the basic concept is that it's a set of volumes described by one chunk of metadata.  Then that's one volume group. If you have this set of devices that have metadata describing stuff here and this set of devices that have metadata describing stuff there and they're kind of two separate volume groups. A lot of vendor metadata. So when you get these firmware aid cards or fake raid cards, whatever you choose to call them, they tend to... Well, those that allow multiple arrays will allow... will have multiple arrays on a particular set of drives, all the drives attached to their own controller with one set of metadata for all of those. So kind of an idea of a volume group rather than just individual volumes does make sense to some degree. And I think it helps. And the way you create a volume group is just to echo a name out to a magic attribute in slash sys slash class slash vol group slash new or something, which does have a little bit of a precedent. So this is one thing when you're doing stuff in SysFS, you want to say, well, how did somebody else do this? Is there a precedent? And there's a module called PKCDVD, which is packet access to CDs and DVDs, which allows you to do... It makes it look like they've got 512 byte sectors when really they've got something like 4K byte sectors and you can do reads and writes and it coalesces them and it does the right stuff. I don't know much about it except that you can create them by echoing out to a SysFS attribute. But when you follow examples in SysFS code, you've got to ask yourself, is this a good example to follow that other people would say, yes, that's a good idea?  Of course, I've never actually used packet CDVD myself. I don't know how it is to use. Hello, question? Right, so this is a network bonding device. So just to repeat, the question was simply an observation that the bonding networking driver has a very similar sort of concept and so there is more precedent, which I like to know, that's always good. But there's a very good point that I've sort of thought of too is namespace control inside the various directories. I mean, it's kind of best, either a directory has a bunch of ad hoc names for like attributes of a device or on something, or it has an ordered list of names, like names of all the devices. Right, but if you try and mix those two, then you find you can't create a device named ad because ad is a special file for adding new devices. As this is a thing that came up, always mentioned about bonding devices, that you have both a list and some ad hoc names in the one directory, and that's certainly a bad thing. I think I've probably done that in the MD sub-directory too, but it's good to actually... I mean, it's worth kind of writing all these things down somewhere, somewhere, to try and avoid making the same mistakes again. So vol groups, a volume group, is a fairly simple concept. Basically, we can collect volumes into it. It gives sort of an identity to a group of volumes, which is more than just aesthetic. It does have a little bit of meaning, which hopefully I'll get to in the next slide. The other type of device, which is a bus device, is what I call volume, and the volume includes both physical volumes for people who understand LVM and logical volumes and RAID arrays. Everything that can conceivably contain a block of data or a contiguous set of data is a volume and volumes group together into vol groups. Now, the reason why volumes have to be bus devices is, brief pause, who knows the difference between class devices and bus devices? Who knows that there are such things? A few hands. It took me a while to figure out the difference. It's kind of... Once you see it, it becomes, oh, of course, but until you see it. The difference that I saw is that bus devices, you can bind a driver to each different device. So you can have a different driver for each device on the bus, I guess. Class devices, there is no concept of distinct drivers. It's just a class device has a set of methods. Somewhere deep in the kernel, it does stuff. But with a bus device, you can specifically bind a separate driver to each device on the bus. So a SCSI target turns out to be a disk drive. You bind SD to it. It turns out to be a tape drive. You bind ST to it. It turns out to be a CD drive. You bind the other one to it. SCSI. CD. Is it just CD? Anyway. So, now, this kind of is fairly similar to the DM concept of targets or the MD concept of personalities, that a... and a RAID array can be RAID 1 or RAID 5 or RAID 0 or linear or RAID 10. A DM target can be snapshot or stripe or linear or all the rest. This list goes on. And so it's a very similar concept of different targets. Different drivers. It's a generic sort of device for which there are different drivers. So a volume is kind of a generic container device and you can bind different devices to it to get different behaviors. So, to get something like a pVol, a physical volume, you bind a driver which I've just here called BlockDev which basically takes a block device from outside of the volume infrastructure and takes ownership of it, which stops anybody from mounting a file system on it for something like it, kind of takes ownership and makes it available for other volumes inside the volume group to make use of. And make it available as the volume for other volumes to make use of. So, you know, hopefully we could then implement the current loop driver or present the current loop driver in this volume abstraction in SysFS and it would kind of all fit together better. So there'd be some volumes, BlockDev and Loop, that just take something from outside and make it available internally. And then you have more logical volumes like RAID1 or Stripe or Catanate or RAID456 or Snapshot that basically take other volumes in the same volume group and do some magic to the blocks in them and present them as a new volume, right? And then these things could be arbitrarily stacked because each logical volume takes other volumes inside the same volume group and that's where the concept of the volume group starts to become important. There's a container that keeps these ones separate from those ones, in a sense, to make sure you don't tread on your own toes to some extent.  You could combine them without having kind of the infrastructure of lots of block devices in the way. You can currently do this by stacking block devices but block devices internally have kind of a lot of extra weight that just kind of gets in the way. They're not really designed for it. It's been added as a afterthought and it doesn't always work the way you want. But anyway, once you've created a volume and you think this is a volume I actually want to export outside of the volume group not just to be used internally inside the volume group, you tell it again probably by writing to some magic attribute, SysFest attribute, you tell it to export a block device and then the block device MD0 or you probably can give it a name instead of all these meaningless numbers MD underscore my home or MD underscore backup or whatever would appear in the SysFest device directories underneath. So you'd have the volume group and then the particular volume and then the block device appears underneath that in the correct order, in the discovery order as you'd want it to. And that means the moment the block device appears it's already fully configured all the data is completely available when Udev sort of sees this block device now asks for a petition table it gets a petition table or maybe there isn't a petition table it gets whatever's there sees a XT3 false and super block and decides to mount it or not depending on what the policy is it just sort of removes that ugliness of doing things in the wrong order which sort of has to be worked around so that's what a volume would be and that's really the whole picture it's stuff that's kind of already there but it's exposed in SysFest it's exposed in SysFest with hopefully a fairly meaningful abstraction it does things in the right order so that particularly so the device discovery happens properly but is it a good idea and some of the questions I've actually got code that kind of does some of this not all of this, haven't written all of the different drivers for all the different targets but just kind of proof of concept code and it sort of works but is the volume grid level really necessary? DM which is the kernel side of LVM doesn't have a concept of volume groups at all and it still works, is that good or bad I think the main thing about volume groups see the kernel has a concept of ownership for every block device so when you mount a file system from a block device that file system owns a block device and nobody else can own the block device so you can't sort of turn swap on on a block device that you've already mounted and when you try and if you try and fix this FSEK a block device it'll try and take ownership of it first and say oh somebody else owns this you can't just chuck it at the moment, sorry oh you have to be more careful so and a volume group would then each volume group would own a particular set of block devices and you'd sort of the ownership model would work better currently in DM DM owns every block device that you give DM no matter which volume group it's in it sort of waters down the ownership model maybe that's not a problem I'm not sure is it cool to create devices by writing to a class attribute well we've had a suggestion that it's been done twice at least once in network bonding as well as in the packet dvd thing so maybe it is is this a question I mean is binding a personality to a blank volume is binding a driver to a regular bus device they sort of feel similar but they're really quite different realms of activity there you bind a driver to a block device because to a particular device on the bus because you've probed the device you've looked at it it's got some magic vendor comma device number and so you've done a mapping and that's the driver has to be it's quite different from saying I'm I'm configuring this and I want it to be this way around it's sort of a different thing to me I missed the question should I use configfs this is one thing that there's a thing called configfs does anyone know about configfs yeah good explain it to me there's a thing called configfs which is kind of a bit like sysfs but the documentation says no it's different from sysfs it's because you use it for configuring things you can have it that's the bug sys come on configfs come on yeah so why don't we add mcdo to sysfs and be done I just don't kind of get the distinction to configfs I've read what people have written and it still doesn't make any sense to me so either I'm wrong or they're wrong or we're both wrong um yeah so if anyone could suggest you know why it would be better to use to configfs or something like this um I'd love to have that conversation and the fourth point there um and this is kind of a sticky one in that as anyone who's used lvm knows you can reconfigure a device on a fly on the fly you can um one really good example is pvmove when you want to use pvmove to move the data in the physical volume from one place to another it turns this device whatever was on top of um the device gets turned off a raid one gets inserted in there and it's turned on and then there's this raid one so you're writing to both devices and the data is migrated across from one to the other as a pvmove progresses and once the data has been copied onto both of them they both have a full copy of the data which might have been changing the whole time then the whole thing suspended and the raid one is converted back into just a plain device and then turned back on again so data moves around underneath the covers and your falses doesn't need to care about that which is and that's just a simple example there's lots of different ways in which this suspend and reconfigure and resume is really good stuff in dm um how does that fit into this model kind of the most obvious way to me is you create another volume with a new description of how it should be and move the block device from one volume to the other but this concept of moving a block device it's probably impossible to implement um so I don't know it's kind of the the stickiest bit of this and it's kind of should we should maybe Sisyphus should be enhanced so you can move things but if this is the only situation where moving things could ever possibly make sense then maybe I need to find another way um I don't suppose anyone's ever heard of people moving I mean you can't even look there in Sisyphus you almost certainly can't move things around um so those are my questions yeah unplug then re-plug which is exactly what I don't want to do because I want the file system to stay mounted in this case yeah um oh you use that feature of LVM and PV move and stuff yeah oh certainly wouldn't want to take it well I want to sort of make it more accessible I'd really like to be able to convert a sda into md0 and stuff like that there's kind of issues of where to put the method data but they're probably solvable the difficult thing is getting the infrastructure inside the kernel to do it seamlessly and um maybe there's something else to be done here solution to every problem is another layer of indirection yeah another virtual layer to put the block devices I did sort of instead of putting block devices underneath the array devices which is where I think they should be maybe they should be higher up with some sort of linkage to them with with something not similar when you when you unplug yeah possibly so reconfigure the volume yeah yeah well that works if what you're saying is what I think you're saying um like if you create a dm target a dm device that just has sda under it and you have mount the falseness of the dm target then you can later replace sda with a mirror of sda and stb easily but people don't tend to put a dm target on top dm device on top of every block device they use they tend to sort of look for sda one mount sda one oh damn I really want that to be a raid one what do I do now um and it'd be nice to be able to make that work um and it's it's kind of hard to make it work so the observation is in slara particularly using zfs all this intelligence has kind of moved into the file system and the file system creates volumes and the file system you can tell the file system to do stuff with the block device so in a sense and it's a bit maybe like the direction of going with butter fs is merging the file system logical volume layer and and doing it all doing all under the covers in a sense it's kind of hiding it again from sysfs it's it's saying creating my own separate new abstraction where a file system can have multiple block devices and it can do whatever you like for them and maybe that's a good thing to do it just kind of it'll be a long time before the whole world is butter fs or zfs so okay so maybe the idea of the sysat the configuration tools say well if you're allowed to mount sda1 you have to mount dm-sda1 which is the dm wrapper on sda1 insist that extra level of indirection is put in there from the start I've certainly heard that proposed yeah I haven't heard it accepted though it feels you're automatically at the level yeah possibly whether yeah well into a cp inside sysfs yeah yeah well it'd be nice if we could implement move inside sysfs but it yeah move from one direction to another is kind of possibly do something like that there's another question yeah there must have been a lie okay yep procfs do I think sorry do I think what should be in procfs yeah so do I think there are things that should be in one and should be in the other um they're both a mess they were designed with good intentions but there's nobody to oversee the progress and say this is right this is wrong and there's no maintainer of procfs there's no sort of heavy hander maintainer of sysfs who kind of has the time to understand all the needs of all the different devices because you know different devices have really different needs of sysfs and should file systems appear in sysfs and how and well some of them are starting to in different ways um so I mean like any I mean sysfs and procfs are both apis to the user space and apis it really should be a high what's the word you need a high level of requirements to get things into the api but it's just too easy to add stuff to sysfs and people have myself included that's not really well thought out not really discussed um apis are hard I think I think sysfs is going the way of procfs um has gone the way of procfs but we can't really create another one that would be even more insane sorry oh that's our Vero's pen have a new file system for everything I've sort of kind of tried that and that I used to be the NFSD maintainer NFSD has its own file system for exporting its own personal stuff but where do you mount it I don't know in sysfs well actually it mounts in procfs um but it does it just makes it somebody else's problem it's still a problem exactly it's an api which is a path name and a thing at the end of it and it's simple nothing new goes in procfs all new things go in sysfs probably not worth the effort Linus I figured this out he was saying before you never allowed to break the api and then he would break the api and that'd be fine the general summit actually I finally figured it out the rule is you can't no one is allowed to complain that's the rule if you do something and someone complains Linus will revert it if you do something nobody complains that's fine if you want to break you can break the api as much as you like as long as you orchestrate things so nobody complains so if you control the main user space as well and you get it upgraded itself like we're actually going to break the api for NFS we can rip out some old code but that's the right because the user space tool the only user space tool that uses it has been using the new api for years and everyone's really using that I'm sure when we remove this deprecated stuff no one's going to notice and if nobody notices nobody will tell Linus it'll be fine it'll be seriously fine because the problem isn't breaking the api the problem is inconveniencing users and that's really what it's about we don't want to inconvenience people we don't want people to think Linus is bad so as long as you can fix things without inconveniencing people it's fine which is one of the problems with do I want to do this I'll still have to keep the old md inside of block devices around for a period of time is it worth the effort well I think it is this is maybe a good point to finish on I want Linus to be a great operating system so I want to get rid of some of the horrible stuff now and this is a step in the right direction so I'm finished any last minute questions or should the file system hierarchy standard contain any information about Procifest this is a standard yeah well I don't I think the agenda of the FHS is to tell distros how to lay out the file system and Procifest is already a standard determined by the kernel FHS maybe should say Procifest should be mounted at Slashproc but there's nothing else for it to say if maybe there should be a separate standard that describes everything in Slashproc that'd be fun to write but I think it's a separate a separate concern because it's different people who can break it anything else oh thank you


We are now joined by the beautiful Paul Dooley, the sexy Frank Conniff, and the Middle-aged. Gorgeous. Kathy Ladman. Hi, Kathy. Hi, David. Sorry to keep you waiting tonight. That's okay. This place is like, I had no idea what I was, what this was like, this whole endeavor. So Hornet's Nest of writers and comedians and actors. Crazy. My husband just texted me and said, is this a podcast or are they rewriting Hamlet? And Frank said both. They're punching up Hamlet.  Let's have it be more upbeat. Can he be a little more decisive? For long as you're talking about this, I want to mention something. My wife is the author of Wicked, one of the writers. She wrote the dialogue. Oh, cool. Winnie Holtzman. Yes, I know. They're planning the Japanese version. They have meetings with Japanese people with interpreters there. And it was so funny because you'd think Wizard of Oz is known throughout the world somehow, but it's not as much well known in some countries as it is here. Even though they know something about it, but it's not a big obsession like a lot of Americans. So the Japanese people are saying, why a girl have to be green? And they say, why, let me look at notes. Munchkins must be small.  So these questions were so funny because we know it so well. We think it's life. Eventually they came around and we made them understand. They were made to see what the story was. This is a terrible thing to say. That's why I'm going to say it. I would figure in Japan they'd say, what are the Munchkins so tall? Of course, that's a... The truth is there's one Munchkin in the whole story and he's just a short normal guy. There's no hitches, there's no dwarves, there's nothing. He's just one Munchkin. I don't know how they get by with that in the land of Oz, but they want the focus to be on the green girl and Linda the Goodwin. Well, in Japan they changed the title to Dorothy versus Godzilla. I think this is a rich topic and it's the perfect storm of jokes. If I weren't tired right now I could think of something about what would the cowardly Ryan want? That's the Irish word. College. It's funny they sing it all in Japanese and they come to one word and they say, popular, because that's a key word. I want to see that show. I want her to take my daughter actually to see it. The production. She's never in their adolescence. She'll adore it. She's eight. Is she too young? No, she's not too young. The production in LA is supposedly really great. Kids who come to the show, there's sort of between some of them five until about 16, they come back three, four times. I don't know how the parents can afford it. Really? But they insist and they come back and it really touches people in adolescence who don't know who they are and who they're going to become and they're anxious about they no belong and which is true of almost everybody. Right. Even once we become 40 or 50. But they just identify with this green girl so much. She'd be like the only black person in a culture. The only Jew in a culture. In a Jewish culture she wouldn't be the only green. There would be plenty of greens. Also the scarecrow would, if he was only good at math, that would be his. My brain is not working. Here we go, David. I know you've been thinking about this the whole time, right? It's like it's like a pop. What is the scarecrow? What is the scarecrow? It's like a popcorn. Well, the scarecrow had invested in tin. So, Kathy, the holidays are, as I think Robert Benchley once said, around our neck. Oh, that's brilliant. Well, you know, I was raised Jewish. Really? My husband. Yes. I'm going to, I don't mean to interrupt you. The late, great, I'm sorry, but I have not talked about Christopher Hitchens at all because it's too difficult for me to talk about it. Especially with a woman in the room because he thought they weren't funny. No kidding. That's right. He was really, yeah. I mean, I was talking to Frank about this earlier that that that that always really was really hard for me. You know, that he wrote an article about why women aren't funny. And it made no sense. You know, I never read the whole thing. It's why women couldn't be a CEO and women couldn't fix the motor of a car as it takes intelligence to do all these things. It takes intelligence to invade a country for the, for based on lies, which is something he supported. All a woman needs to be a comedian or a comedian is to be angry like all the other comics. Here's a base of fury. You have something you want to. Is that true, Kathy? Are you angry? You're very funny. I am so angry, but I turn it on myself like many, many. And that becomes depression and anxiety. Yes. Christopher Hitchens. It's a beautiful thing. I have I have conflicted emotions about Christopher because I knew him. He used to come and be a guest on a show that I worked on. He used to come in every year and I would sit at his feet. And this was in the 90s before he supported the war. Right, right. I was in awe of him and he was very generous with his time with me and I'd ask him questions.  I said, now, I don't know if you know, I was bomb Jewish. He goes, just stop for one second, please. Don't don't destroy the one shred of mystery that I have about you. That's pretty funny. And I just fell off. But I mean, it was such it was so cutting and biting. Well, I mean, he was brilliant. I mean, he had like many brilliant people. He wasn't always popular. But, you know, it's very it's very hard for me to fawn about him when he said something that it was so personally insulting to me. So now the holidays are upon us and you have a normal Jewish family, right? You have a wife and I would assume you are celebrating the holidays just like any normal Jewish woman. Right.  Right. I am married to a Jewish man. No, I'm you know, I am married to a man from Minnesota who was raised. His religion was is called Swedish Covenant. What's I shouldn't say it's his religion.  But when you're Christian, there's like this there's this myriad of sects. It's up for grabs, isn't it? It's I think it's sort of like when AT&T split into all those companies. I mean, they all give phone service. If only their acquisitions could be blocked. So Tom is from Minnesota. So this would be like a Lutheran spin-off? Yes, I think like Phyllis. Right, exactly. She was a Lutheran. And she was in Minnesota. Russia, your husband was named Lars. And then we have a little girl. And she's Chinese. Is Tom, is he religious? I would assume he's not. I get atheist off him. Or contempt or contempt for religion. Contempt, definitely contempt for religion. I mean, he and I because I definitely got contempt for Jews from him. So I figured he's just contemptuous of all. That's only in the past two years. So you have a daughter who's part Protestant? No, she's she's she's one part Jewish. She's not. We're not religious. I'm trying to figure out what the joke is. She's part Asian and part Jewish. Well, basically, here's the joke. This is the joke that my when I was in New York, I was talking to my aunt and my aunt said, are you going to raise your daughter to be Jewish? And I said, no, we're going to just raise her to be a good person. And my aunt said, that's terrible. How about she's part Jewish and part Chinese, which means she has a Chinese meal. And five minutes later, she's hungry to complain about it again. All right. I was working on something. Yeah, it's I'm an hour later joke. So Milan Milan. Yes. Am I L.I.N. Am I L.I.N. And is that an Italian name? No, it's not. It just so happens that it came out that way.  And did you go to China? Yes. We did go to China. Everybody does. They don't have takeout here in America. I get all these menus for kids at my front doorstep. And you believe it and it wasn't fast also. It took a good, a good couple of years. So we put, we just chose syllables that sounded Asian. And then we put them together randomly and we came and we liked Milan the best. It does have a beautiful sound and a nice rhythm, you know. But the people in Milan will be surprised. I know, I know that it's not Italian. She's eight. And when you said she was adopted, I'm thinking, oh, no, I thought she came out in the delivery and we said, oh, look, she's Chinese. I had no idea. Although Sunday nights really added up to something. And she is really funny because we have a menorah and she really, we celebrate every holiday that comes down the pike, basically. And she, she started putting candles in the menorah last week. And then she put a candy cane in the menorah as well. She, she just likes everything, which I think is so great. That's reform Judaism. Right, right. The menorah. That's what he, I don't want to say. He was a reform rabbi, well, very reformed. He was a Nazi. Is she going to Hebrew school? No, we're not religious, David. Not religious at all. Did your kids go to Hebrew school? Yeah. I, you know, I figured it's important for kids to have some religious background so that when they're in their teens, they can rebel against it. Did you go to religious school as a child, Paul? There were no religious schools. I'm from West Virginia. There were no religious schools. But they had church, right? They had church. I was, my parents were Baptists. So did they go to church every Sunday? They being my mother, yes. The father never went. I think she only went to see her sisters and her nieces and her cousins. So it was more of a social thing. Yeah. And at the end of it, they would go nearby to one of her sister's houses or one of her relatives and they would schmooze all day. They didn't call it schmoozing. They weren't, it wasn't about religion, really. Right. No, I was not very religious. Most I'm agnostic.  He did, which, you know. He was against integration. You come from royalty. You come from journalistic royalty. Well, my, well, I don't know about that. My father is a Pulitzer Prize winning journalist. He wrote for, he worked for Hearst Newspapers. He initially distinguished himself as a war correspondent in World War II. And when he came back, he had a column in the Journal American, which was a newspaper at the time I was just talking to Paul about.  So he led a very, and also knew a lot of people in show business, which the friend of Phil Silvers and Jackie Gleason. And he hung out at this place called Tootshores, which was a very prominent place. Tootshore is my uncle Toots, not by, not by blood, but he was a great family friend who came over to our house a lot. So I think that was actually kind of one of the things that got me very interested early on in, in cocaine, in cocaine. You know, booze, actually. Tooting, tooting. What's interesting is that there's not one reference in the Bible of a disciple called Tootshores. He was the one who was too drunk to show up for the last supper, actually.  You know, it's interesting that Frank's dad want to pull a surprise, and my father owned a bowling alley. It's a small world. He and anyone, the Nobel Prize for bowling. He did. And my dad, I was always intimidated by his Pulitzer. But then when I was nominated for a Cable Ace Award, it's like, OK, I finally passed your dad. Your dad was a war correspondent in the Pacific Theater, the German Theater. In the Burlesque Theater. In the Burlesque Theater, yes. Which theater was he? He was in Europe. What did he see? Did he go? He saw a lot of action. I think he was followed. I want to know what he did. Patten around, I think, for a while. And I think he saw some of the concentration camps, too, when they were being liberated. And his Pulitzer was for interviewing Chris Jeff in the mid-1950s. And yeah, so he was just a very active. You're very respectful. I can tell it's interesting.  You will go in it. But I can tell that you really do respect your father. Well, the odd thing is I kind of respect that he didn't spend any time with us. Because I can see how much more fun his life was. I could see how he wouldn't want to go to Neurochelle and just be a dad at home. You don't get no Pulitzers in Neurochelle. Yeah, right. When he could be at touch shores or he could be hanging out with people. He could be traveling and interviewing people. I mean, there are photographs that I've seen of him with Kennedy. Yeah, he was very, very good friends with Kennedy. And did he give you writing tips? Well, he actually, that's the thing is I didn't really know my dad that well because when I was very young, he got very sick. He had a stroke. A large part of my childhood was kind of after his career. Because he had me in his 40s. He had me like relatively late in life. He had me at Pulitzer. He had me at Jello. So he was very infirm for a lot of my childhood. He was confined to a bed. And then he died when I was pretty young too. I was like 13 when he died. So I didn't really know him that well. I didn't really have a lot of experiences with him. He did take me to see a Batman at J Stadium, Adam West. He was at J Stadium? Yeah, the height of the Batmania. They did a tour. Like a Q&A or something. No, they did like a whole thing where the Batmobile came out onto the field at J Stadium and Batman was there and Bert Ward and Frank Orson as the Riddler did stand up, actually. Turns out the Riddler was an impressionist. He was. Riddle me this Batman. How can I get on the Sullivan show again? At J Stadium, there were 50,000 people. You could fit that many, but it was, you know, it was just that was at the height of Batman's fame. And was there hysteria there for them? It wasn't like the Beatles, probably. It was, I think a lot of the hysteria was just the novelty that my dad was doing something with me. You know, the hysteria when we went to Shays Stadium was how much they charged for a hot dog. That's what really set my dad on fire. Yeah. Now, you looked at it financially. Your dad owned a bowling alley in Massa Piqua Park, Long Island. How did he get into Massa Piqua, Massa Piqua Park? Amity Phil Kopeg, Lindenhurst, Babylon. Exactly, you know the line. The Long Island Railroad conductor. He owned a bowling alley. Yeah. So you must have been swimming in shoes. Well, first of all, it was 25 miles from our house. And so I only got to go on occasionally, and I would get to take a friend on a Saturday, and it was the best. I mean, we would work behind the shoe counter, and, you know, we'd give out lanes and rent shoes, and then we'd get to bowl, and then we'd get to eat lunch and sit in the bar and watch the color TV, because we didn't have a color TV at home when I was a kid. And then we'd get to work behind the lunch counter.  It was incredibly fun. It's a lot of fun for most kids to go to work with their dad or their mom and see that world and have fun there. Yeah, I remember when I was a kid, my dad taking me, he was being interviewed on the Barry Gray Show in New York, and he took me with him there. No one in my family was involved with bowling alleys, although I had an aunt who was very promiscuous and had a league night in her house. How's your game? What's your average? Not good. What's your average? You know, maybe I break 100. Oh, you should be able to do better than that. David, it was 25 miles from our house. Do you have your own bowling bowl? She has an even better record of renting shoes. I am very fine. And in fact, I'm wearing a size eight narrow now if you'd be interested. When a building goes down, when you hear the sound of things crumbling, does a tear come to your eye and you say, Daddy? As a matter of fact, the first house that I ever bought was right behind a bowling alley.  You know, I could hear, it was a very faint sound. And it was really nice. There was a joke in the Woody Allen movies that he lived, his parents, they lived above a bowling alley and their parents argued so much that the people in the bowling alley would complain about them. I just... I don't remember that. You know, I saw the PBS documentary about Woody Allen. I loved it. Loved it. And you know, Zellig, when it came out for, I don't know why, Woody Allen... You kind of didn't get it or something. I don't know. I don't know. I didn't like it. I was, you know... I saw it the day it was. But it was not like his other movies, really. And I said, you know, I should re-watch that, because the name Zellig has become part of our vocabulary. And I started watching it. I go, this is one of the best movies he's ever made. I watched it like two nights. It was one of my favorites of his, absolutely. It was a break, though, from his pattern of the neurotic kid from Brooklyn or whatever. It's actually... There's a very sweet love story within that movie. It's a romantic comedy, in a way. The scientist, right? The scientist and Zellig character, yeah. Sweeter than any of his actual marriage. Yeah, that's right. Did you see the documentary on him on the PBS? No, I know that guy. He, he directs Larry David. Yeah, right, right, right. His first documentary is The Mark's Brothers. And his production company is called Why A Duck. Right. He's a good guy. And he, I don't think he's directing Curb anymore, but he did a lot of those in the first few years. Yeah, he did Mort Saul. Yeah, I saw him interview Albert Brooks at a writer's guild event. It was, he was, he was... He's very knowledgeable about comedy. Yeah. All his life, he studied that. You know, one of my favorite parts of that documentary was that they were showing, Woody Allen was talking about how Diane Keaton, whom he calls Keaton, is like one of the funniest people that he knows. And they show the scene in Sleeper when, you know, he's sort of become one of the assimilated part of, the assimilated into the society that loves the leader. And Diane Keaton is now one of the rebels. So they capture Woody Allen and they're trying to break him from his brainwashing. And the way they do it is they set up a dining room table and she and the other guy, the other rebel, are holding scripts and they're making believe that they're Woody Allen's parents. And they're talking in Yiddish to Woody Allen, except Diane Keaton's Yiddish accent is terrible because she doesn't know how to say it.  And I've never seen, you know, I've never seen that. I've never seen a Woody Allen blooper before. I know it was great. And there's our next sketch. How it takes from a Woody Allen movie.  And it was just really interesting to see him going from the actor who's having fun to putting on the director's hat and going, okay, we got to move on. Right, right. You know, we got to get down to business here. And it was really interesting. I loved it. I think if you guys are like me, you're having the trunk of your car or somewhere in a glove compartment, CDs or DVDs you want to listen to, but you don't always get to them. Recently, for the first time in years and years, I listened to Woody's nightclub act. Oh, really? And it's incredibly good. There's a new movie out. I got a screener yesterday. I hadn't heard of it. It's not very well known. It's an independent and no names in it, but it's called In Darkness. I've heard of it. Yeah. And it's about a guy who was a sewer worker and also a small-time con man and burglar and shady guy. But he took in a bunch of Jews and let them hide in the sewers of whatever German town it might have been or maybe Poland. This place is a cesspool. Yeah. We haven't read it yet, but we haven't looked at it yet, but my wife and I are kind of interested. What's it called? In Darkness. In Darkness. And is it a German film or an American film? I can't tell, but I believe it's foreign. There are a lot of names in there that seem foreign. It doesn't seem like a French or anything, but... You have worked with every director. Have you? Not every director. But you've worked with everybody. I've worked with you. Well... No, I only worked with Robert Altman and... What about Woody Allen? No, no, no. Did you ever get called in to...? I auditioned a couple of times for him. But you knew him when he was a stand-up, right? You didn't do... Were you at some bills with him? No, I didn't know him. I had a writer who wrote stuff for him. I stand up back in the days when people wrote for stand-up. Right. Which he did, too. And my friend and he had been at this special place up in the Poconos called Tamamint, where every Saturday night they did an original review. I was at... There's a twin place, a place called Green Mansions in the Adirondacks. And I was there with Carol Burnett and our staff lyricist was Sheldon Harnick or Rick Fiddler. And every week they write a new review and we do it on Saturday. So I did meet Woody once to shake hands with him to visit my friend at Tamamint. In the documentary, they show photos and talk about Tamamint. Tamamint was the home of really all the people that ended up on your show of shows. See if he was there, Howie, Imogen... That was the training ground in those days, right? Absolutely. That's everybody home there. And many of the writers and every Labor Day, the big agents in New York would come to on a Saturday they go to Tamamint and see the best of for the season. And the next day they would go up to Green Mansions and Upstate New York and see the best of that show. And frequently the very best of show would end up the next season as a Broadway review with Sid Caesar and people like that. But everybody was there. Additioning for Woody Allen, what is that like? Well, I didn't notice it when I auditioned for him. It kind of wasn't looking in his eyes really. I'm looking at the reader who's the casting director. But I've heard later that he doesn't want anybody to look at him. Don't look him in the eye when you meet him. You know, so the casting director is reading with you and whatever he's seeing, he's seeing. But once I met them on the street and I knew Mia Farrow because I played her father in a movie called Wedding. And I had met Woody to say hello a couple of times through my friend. I passed them on 57th Street. And as I passed them and I said, hi Mia, how you doing Woody? And they just, you know, right. I was just like, nobody. They just thought another crazed fan that we can't stop and talk. Hardly even looked at me. But I spent eight weeks with Mia Farrow doing that movie. Wow. Paul, who directed Breaking Away? His name was Peter Yates. He's an Englishman. Oh, of course. Right. Yeah. And the guy who wrote it was born in Yugoslavia until he came to America 12. Steve Tessich? Steve Tessich. Yeah. And his brilliant script and he won the Oscar. And Peter Yates, by the way, did a lot of other great movies, including one I recommend, The Friends of Eddie Coyle. Oh, yeah. I love that movie. Yeah. And his big hit was Bullet. Bullet, yeah. He was very versatile. He did a lot of different kinds of movies. And I learned a little later after I worked with him that before he became involved with movies or the theater, he had been a manager and an agent for racetrack drivers. So he was living in a world of automotive things. Oh, wow. Then he became, went to the Old Vic or one of those Shakespearean companies, became a stage manager and went up through the ranks, became a director. But whoever, whatever he did, that was obviously a wonderful movie. It's a cult movie now. Yeah. You were Minnesota. Yes. You were Minnesota for a while. And I'm exotic in Minneapolis. You know. But Minneapolis is my favorite city. It's a great city. It's a great city. Frank, I lived there for 10 years. It's a great place.  I was. Well, it's sort of like a Jew in Gentileville or something. Yes. I mean, it's a very white city. It's a really white city. They do have a black population. Very ghettoized city. It is. I mean, it's not heterogeneous at all. The blacks live in North Minneapolis. The Jews live in St. Louis Park or Highland Park or Golden Valley. And we were living in South Minneapolis. I mean, there are so many churches there. There are. It's a land of 10,000 churches. 10,000 drug rehab centers, which is how I ended up there. Yeah. I mean, it's a very progressive city. Yeah. It's pretty. The lakes are gorgeous. And the people are great. The people are really intelligent. They're so great. Very intelligent, very progressive. Is that where Tyrone Guthrie had the theater? Yeah. That was the very first regional theater I believe. There used to be an improv company related to that somehow. Oh. One of the earliest improv companies was around that same theater complex or something. Yeah. I think that's the name of it. Who was Tyrone Guthrie? I know that the Guthrie Theater. Well, the Guthrie Theater is. But I could think of Arlo Guthrie. So, but who was Tyrone? It's the same guy. It's just a nickname. I think he was English. I never met him, but I read about him a lot. And he was black, right? Tyrone. Just because he's Tyrone. And his brother, Afro Guthrie. Anyway, he had a very big reputation for that regional theater. I think at some point he did some directing there on Broadway. But I don't know much about it. Yeah, he was a very, I believe, very well-known theater director Broadway in London. Yeah. And of the regional theaters, it was one of the most respected. And it's still, I mean, it's still. Still is, yeah. And the audiences in Minneapolis. Grace, yeah. It's heaven. It's grace. I land every time. I go there once a year and my shoulders just drop the minute I get there. Because it's just so relaxed. Yeah. The people are kind. I guess it's because of the weather. There's, you look at people in Minneapolis, when my car breaks down on the road, is this person going to help me or kill me? And I think they just put out a vibe. Now I'm the guy who will pull over and help you. Right. But if I see you in a restaurant or something, like I'll avoid your eyes and it'll be really awkward if we have any kind of like regular conversation. And I'll be very aloof. But if you're in trouble, I will drop everything and help you. Right. That's very, that's good. That's very true. Half of that is like auditioning for Woody Allen. The helping party. Now why were you in Minnesota? We were, we were fixing our house here. But you've been fixing that house since I've known you. Yeah. Well, it's, we're no longer fixing the house. You've accepted it. The house is gone. I mean, it's still there, but it's not ours anymore. And the house has to want to be fixed. The house should have gone to Minneapolis. Spain Newt or if you're listening, Spain Newt or your home. It was nice. It was nice. And there's a lot of, there's a lot of good comedy there too. And you know, of course, when Frank was there and when Tom, my husband was there, comedy was great. I knew your husband before you did. I know. I know. Back in the, back in many years. Some of the greatest comics have come out of Minnesota. Oh yeah. Louis Anderson came out of there. Tom Arnold, Jeff Cesario, Frank Conniff. Yep. All the guys from Cinematics, Titanic. There's Winstead. Joel Hodgson, right? Yeah. And then... Mitch Hedberg, God rest his soul. That's right. Mary Jo Peel. Mary Jo Peel, yeah. Eddie Canto, Fanny Bryce, they all came. What is this Lowry side? I used to tell people when I went to New York, I was born in the Lowry side of West Virginia. Well, before we wrap it up, the new year is upon us, 2012. A year from now we'll be looking at 2013. What would you like to change? We'll start with Paul. Maybe my knees will feel better when I climb stairs. And Frank? I would like to have said this time next year, wow, 2012 was so much less stressful than 2011. I would love that. But I think people are discovering, or rediscovering you, right? It's funny, I think that because of the internet, because of Twitter and Facebook, I have a presence in whatever the public, and I use that term loosely, that I didn't have before, and Cinematic Titanic too. But that's like my old Mystery Science Theater fans. But I think now because of Twitter, I do at least one joke a day on Twitter and Facebook. And I think I've built up a little following from that. And I think there's a whole bunch of people who know me from that more than anything else now. So that's kind of interesting. Yeah, and the podcast. And the podcast that I'm doing this show, doing Jimmy Dore's show.  I mean, doing this show has been a real, has been a blessing and a treasure. And doing the other things that I do around LA and stuff. And on the road have been really great.   I wanted to ask you two questions. One is, can you write a sketch for next week? The outtakes from a Woody Allen movie? I made a note that would make me. The other thing is, have you thought about blogging? Have you thought about blogging? Have you thought about blogging? I used to blog. I used to blog on MySpace back in the day. I had to have a concept for a blog before I could blog. And I had a thing for a while called the Pinkberry blog. And it was all based on, I would go to like, whether I went to Pinkberry that day or not. And then I would use that as a jumping off point to write about politics or whatever. But I did that for like several months, the Pinkberry blog. I spent 2011 trying to figure out what blog meant. Just for a moment, let me tell you a great Gelbart line. When Larry Gelbart passed away, they quoted some of his lines in his obituary. One of them talked about age. He said, the first thing to go are not your knees. It's the word for knees. Oh, what a great line. That's great. He was. He also, I heard someone said, maybe Paul, you might have even told me this. I'm sorry to be said. Someone said, Milton Burl was at the Paramount.  What would you like for 2012? You're not going to want it to be on your show, what I have to say. Is it negative? Too maudlin. Is it negative? It's not negative. It's just kind of serious. Oh, go ahead. I just would like to be able to be happy and accept myself. It's not funny. It's not funny. I don't think that's in the card. That's not in the card. Why would you accept yourself? Yeah. Maybe this program will help.  You mean you don't think it's possible? I think why would we accept ourselves? You might lose your funny. I don't know. You know, I don't know if that's true. I think, do you accept yourself? Not really, but I also think that talent is talent and devotion to talent is devotion to talent. It can be helpful to your art, but if you're a happy person, and I'm talking purely hypothetically in the realm of fantasy here, but if you are a happy person, I think your talent can still be applied and you can still do great work. You know, I think it's a bit of a myth that you have to suffer for your art in terms of poverty and, you know, poverty is the worst thing in the world for your art, because all you're thinking about is money all the time. You're just worried about money. You can't concentrate on what you want to write or what you want to do. So the idea, that's a complete myth, I think. And I think it's also the idea that you have to be unhappy for the rest of your life to be creative is, I don't think is necessarily true.    Self-loathing leers. Thank you, guys. Thank you. Great. Great, Kathy. Thank you, Dave. Thank you.


Meantime, Vice President Professor Yemi Oshiba-Jo has commented on the deaths of the chief of army staff left then to General Ibrahim Atahiru and other military officers in an air-crash in Keduna on Friday. In a statement signed by his spokesman Laulak Odey, the Vice President said he received a niece with great sadness. According to Oshiba-Jo dear deaths while inactive service in the defense of the country reflect the deaths of sacrifice Nigerian military officers, men and women of the other ranks are often prepared.