So hello and welcome. My name is Marcus Koshani, and Today I want to talk about Debian games. I am a developer from Germany and also a member of the Debian games and Java teams And I'm also a contributor to the long-term support team Yeah, what qualifies me for this talk I have some gaming experience since the 1980s I have been using Different computers up to now like the C64 the Amiga 500 all to modern PCs and yeah, I was a long time gamer enjoyed gaming but more recently I have Become a Debian developer and started to packaging games and starting to maintain them And nowadays I don't have much time anymore to to play games despite the rumors In 2012 I created a small website project called linux uarts DE That's basically a simple website with some statistics and some dedicated servers multiplayer dedicated servers Basically it is about You can find almost all dedicated server games on this website which we provide in Debian and and Well, it was my fun project to learn more about Debian games in general and Linux and administration Here in the meantime, I've touched already 400 packages in Debian mostly Java and Debian games and We probably won't have enough time for this talk, but if you have questions about specific games You can always ask me later And I will probably be able to answer them. So What do I want to talk about today? first of all, I want to give you an Overview about all our games in Debian main Debian Contrib and Debian non-free. I Also would like to present you game data package It's basically a tool to cover the fourth category of of games or games content Which is even worse than non-free These are this is a non-distributable content which Debian is not allowed to Legally distribute I Also want to talk about another project. I started in 2013 2014. It's called Debian games blend and How I tried to improve the visibility of games in Debian and then I also would like to talk about creating free content and About some ideas for future projects or how you can contribute to games first of all The gaming industry is really really big the global game marketplace according to a gardener.com a research company is About hundred billion dollars per year There are other numbers and figures That indicates it is only a double-digit figure in the billions But it's still quite high and it also depends on how they How they May I define what what our games and how this marketplace of what kind of games this marketplace consists of they basically say Take into account mobile games web games PC games console games, but also hardware So it's quite difficult to say how big the market really is Successful games attract usually millions of players When we talk about proprietary games, for example blizzard entertainment the very very very well known company That produced titles like starcraft warcraft world of warcraft and Diablo employs more than 4500 people and Yeah, well they own or earn Millions of dollars per month they had two million subscribers for world of warcraft in the year 2010 that was the peak time of the game and in 2008 they decided to Create another next generation MMO Nobody knew what it was back then And they kept it secret what we discovered in 2014 That they wanted to create something Well a huge MMO which basically Should combine multiple aspects of gaming so it should be a shooter game or combat games and you should also could you could also explore society and Trade with other people this very very complex very very complex ideas, but then they decided, okay It doesn't work. We won't produce it. We stopped the production. We stopped the development and Determinated everything in 2014 They employed more than 100 people just alone for this game and full-time and They use some of the contents and to create another game called overwatch Which is now the fourth franchise of blizzard entertainment and It also Attracts more than Several million of players daily What it is also worth to note that Property games receive a lot of extensive news coverage for example, I discovered last week or two weeks ago a BBC article about overwatch and This is usually something you don't see for free and open source software games Yeah, well, what's the difference in contrast to proprietary games? Most Foss games are developed by only a single person and this person is someone who Does it just for fun or for educational purposes? He mostly receives no money at all perhaps some donations and the even less receive money through crowdfunding or sales or a monthly fee Successful games in the first world attracts several thousand players, but not millions and The communities are rather small very small compared to let's say Blizzard World of Warcraft with millions of players So it is fair to say that the first games are a niche and It should not be This should not sound negatively it's just realistic so Nobody outside this room perhaps or in the community knows a lot about games What games we provide and how big they really are and nobody really talks about them and on major news sites We shouldn't really try to compete with these proprietary games It is not a matter of freedom but it's more a matter of money resources and How many people I employ to produce this content and to produce these games and It's very difficult for force game developers To create such a big game that is recognized by millions of players So how many different games are there in Debian? I have not counted them by hand. I've used the Debian games source package and Counted all unique games in all of the tasks files and subtracted the library packages and Also a subtracted toy games, which are not really games So I finally found the number and we have around about five hundred sixty one plus If you know KDE and KDE games, so roughly six hundred What is most important about Debian main is that all the contents is free software But not only the code, but also all artwork complies with the DFSG and If you take a closer look most of the games are written in C and C++ We have very few games who are written in pearl, but one well-known game. That's frozen bubbles The other one is pang zero We have one Haskell game. That's rank head We have three Java games Robocod Robocode is an educational game a programming game. We have free call clone of colonization and Triple a it's a strategy game We have dozens of python games mostly Based on the pi game engine and We have dozens of D games a few years ago. I didn't know that something like D exists at all But they are really cool. So if you have time check out the meta package games slash shooter maps They are really special. I like them because it's an it's all extra abstract shooter games And I think they are very well-written the problem with these it is highly unstable at least in my experience and We have to deal every release cycle with release critical bugs because something changed With the compiler and they don't work anymore. They cannot be compiled from source. So if you know D Would like to save these games Please contact us Well popcorn reports that our most popular games are I have more than 2,000 installations our most popular games are extreme tax racer or zero ad super tax card something like that and Well, you should take popcorn values with a grain of salt Because it is this tool is not installed on every computer by default So it is not clear how many people really use a software And it's also not clear When they will Most let's let's say it the other way most people play a game and then they remove it from the desktop or from their computer again This is in contrast to the tools that you daily need like web browsers male clients your Packager your archiver Whatever and so it is hard to say how many people really play these games PC games definitely dominate in Debian. We have very few web or mobile games They are almost nonexistent. I'm talking about HTML 5 games here and theory we could add hdm 5 games for example kth express Supports such a compile option But then I would also need to fix the M script and package in Debian Which is currently a bit buggy and doesn't work really really good. So Very very few HTML 5 games in Debian If you look for developer tools you can find them in our game slash death packages So if you're interested for example in C++ development You will find a lot of useful libraries in games C++ death So in my opinion the pros of force free open source software games is That we can preserve classic games Because we have the source code and we can reuse Artwork music files And they are free to use It's also a great way to learn a programming and developing in general. It's quite quite a fun as I said before many developers are people who Try to produce a new game or try to create a new game and started by coding a game The difficulty is You you must also be a person who Can create game content who is able to Create a good graphic create a good sound and only a few people can manage both It's something related to the brain. Some people are good at mathematics and others are very creative so a game creator has to be both at the same time and He needs to create a game that is fun So you can be a great developer, but if the game sucks nobody will play it Yeah, well on one one another point Our force games and may are very well integrated into Debian I've listened to the talk of Simon about flat pack. It's the easy way to install games. Okay But in my opinion and force games are a way to Well, Debian main is a way to package really great force games and they Have the same standard as our other packages So if you try to package a complex game like ufo alien invasion You basically have to invest the same time as the maintainer of Okay, it's just exaggerated but it's complex enough like like servers like a patchy server or Or Tomcat servers so you need to have Didn't know how to create a dedicated server package But you also must provide a desktop client package and you must analyze all the codes If it complies with the DFSG and you have to write a copyright file and for example for UFO alien invasion There are 5,000 different graphics and image files in this package. So it is quite of hard to Quite hard to find Or to analyze this package so to invest you have to invest some time in it, but if you do it you get a high-quality package because everybody knows this file is licensed under this license of this license and You can reuse it for another project or for something completely different. They don't have to be a game. It could also be your next video or slide whatever and This is not something a flat pack would give you you don't basically not, you know, basically nothing about the interiors Yeah, well, how Can we find all those games and that was a question I asked myself in 2002? It was rather complicated because I had to use some command-line tools like aptitude You can use aptitude search section games and You get all the games in Debian Okay, but few people know that most people will expect that there is something like software manager application and All the games are visualized in some way big icons I want to sort my games and strategy games in in role-playing games in roguelike games and shooting maps and so on and This is something which was not present in 2002 when I discovered Debian or Well, we had synaptic. I believe back then but it still it was difficult to find all the games so a Debian games blend Should solve the following problem It should list all games in Debian main and it should categorize them in different categories at the moment we have 34 meter packages containing 693 packages and This includes also library packages for game development You can take a look we have a home page at blends Debian or games tasks It's not perfect, but I think it was very easy to create because someone else did the job already My goal or my dream is that we create something better perhaps something listed under games dot Debbie and orc But we need someone with The skills to create such a web page who knows HTML CSS JavaScript and make something more beautiful How does it work? Creating major packages is very simple. There are different techniques, but a Debian games blend Makes it very easy or the blends framework in general makes it very easy. So you can basically Put one line in your Debian rules file include all the Necessary commands you have to depend on blends dev at Debian control You have to write a simple control stub file which contains only the minimum of Lines required to to create a Debian control file and the rest is simple text files are simple text files in your task directory where one line Indicates a dependency or recommendation for one game or a suggestion and then you ran make this and Everything will automatically be created you get all the other binary packages and Well, that's it basically Well some recommendations here If you're new to Debian games or have never heard of the games made of packages before please check out games finest These are the 100 recommended games chosen by myself. I Know I know It's because of popcorn value. I've chosen them because I thought unique gameplay. They had a unique gameplay They looked great or Yeah, well they were simply outstanding in some way. So why did I choose 100 packages when I mentioned this number? Last time at Debian 15 Some people rolled their eyes because yeah 100 that's Isn't it a bit much? I could also choose 10 the top 10 of Debian games or the top 25, but what does that mean? It's very subjective And I have decided that let's choose 100 games which are really good and This would guarantee that people will find it. Yeah, is there Is there a way to have? Default games pre-installed Just even just a few. I keep being asked for solitaire and the you know the equivalent of Windows games And I have to install them manually for each Newcomer so I don't know. Do you want to answer the question? What we had? short before Stretch was frozen. We had in the installer the selection that you could select the blend Games or others, but this was killed Unfortunately, and so you need to install the meta package yourself There's the task out there. This is what he's talking about Yeah, the task is there, but you can't choose it at installer time You have to use it's apt install games slash finest and then you will get Approximately 10 gigabyte of data it sounds a lot it sounds much, but if you compare it to modern games Single game can can have more than 40 gigabyte of data nowadays 10 gigabyte is nothing and this We are talking about 100 100 games here also, I Think the the default install of like the known desktop or the KDE desktop used to include Like my sweeper solitaire that kind of thing I think those have been deliberately taken out because the relevant to desktop teams wanted to kind of prune down how much they were installing Yeah, at the same time. I don't know about KDE, but at least in gnome if you search the overview for like solitaire No shell has integration with gnome software. So if you just type in solitaire Among the search results will be hey, you can install this solitaire package from apt So it is reasonably easy to get these things like on demand So first of all I've deliberately excluded KDE or gnome games because I didn't want that users Pull in complete desktop environments KDE games and gnome games depend on the whole Desktop environment So you would mix two different completely different desktop environments and I didn't want that so they are only suggested and all those meta packages You're right They are really big sometimes or Solitaire games are under games Board I believe You won't be interested in all of them. That's for sure. It's mainly intended to be used You look at the meta package description and you could install them separately, but you could also say, okay Forget it. I just want to take a look and let's install all of the games And then you could easily remove those that are unimportant to you Because the meta packages don't depend on them. They recommend them only So it is very easy to just remove the ones you don't like and you can keep the ones you like That's all about it. I think also If you seek for Solitaire, then you need to know that Solitaire exists and so people end up displaying only Solitaire and The meta package is suggesting things you never heard about before That's the point more questions Okay Yeah, well, it's That was mainly the main reasons for David games blend What else could we do? I Always wanted to create a live image of Debian and Well, I tried to figure out how it works. I studied All the relevant packages But I never Could get it to work never worked for me at least I gave up But this is one thing I want to learn But maybe someone else in this room is interested in creating a live image and I think it would be a very cool idea because Let's take Fedora for example, they call it spin. They have a game spin We could also create such a spin when let's let's rename it and call it Debian games Okay That was basically main I have chosen to include only games from main because I think Debian is all about free software Of course, I could include contrap games and non-free games and well basically every game that ever existed But I wanted to draw a line. I wanted to make sure that we only recommend free games So what are Debian contrap games now? So the policy says every package and contrap must comply with the DFS gene. So all packages and contrap are free software But they are there because they either built or Either built depend on something non-free or they need something non-free to function and In this case it is the the function word which is important It is very common in Debian that we have a lot of free engines, but they require non-free contraint for example Years ago we had Sauerbraten in Debian contrap. That's an first-person shooter and Well, the main contents of the image files are most of them are non-free because they are licensed under non-commercial clause licenses or they may not be modified Very interesting is that for example Richard Stolman thinks that the art in the game is not software It is not ethically imperative to make the art free though free art is an additional contribution This are his words about non-free games so in Debian it is imperative that free games also have free content and Otherwise they can't enter the Debian main archive and but he has a point. I mean Are PNG files really software? Some people in Debian argue that way they say You must provide the source for PNG files. So PNG file or JPEG file is only It's not the preferable form of modification maybe the developer has something better an SVG file or well an uncompressed sound file but it's very hard to tell if this is really true and Some people like me. I Found a PNG file on the internet. It was licensed under a creative commons license Share like I've used it. I modified it and I used it for another game. I Never had the SVG file. So does it this isn't is this a reason to call a game non-free? Hmm well the problem is or The problem exists because in 2004 We wanted to include scum. We am into Debian scum. We am is very well known application where you can play old adventure games and Back in 2003 2004 The FTP masters decided That an engine without free content cannot enter the main archive So the lead developer of scum. We are at this time asked to a company if they would license real license one of their games and so beneath beneath a steel sky and Flight of the Amazon Queen entered the archive. They are BSD licensed basically and That was the reason scum. We am could be moved into the main archive Because remember Only main comprises Debian Basically country and non-free are not part of Debian. We only provide the resources Well on the other hand we have a lot of emulators and Debian free emulators very good ones and the question is Do we have free content for them? I don't know but they are in Maine all of them and I believe or I fear we treat Some packages differently than others And I wonder if we really serve the free software worlds very good if we say a completely free engine is Not part of Debian of all this author although it is free software and well some people disagree with my opinion and so we have Reach the consensus in our team at least and With the FTP masters we believe that engines can go in Maine even without free data Also being in Maine as long as usable data exists So that means you don't have to package Free content it is enough if you know it exists somewhere on the internet So for me Contribute is a staging area These are all games free software, but they are not perfect because they don't provide free content and you can either Say okay forget about the free content. We just take the non-free content like mr. Storm on set It's not ethically imperative Or you can say Let's create free content Let's talk about sour Bratton as our Bratton is a beautiful German word as a dish and Well here you can see some potato dumblings and red cabbage and that's what actually sour Bratton is It's also the name of a first-person shooter developed by a Developer with the nickname a double that's Dutch and literally translates to earth apple or More commonly known word in English is potato So it makes all sense if you know this information Okay, I believe it was two years ago that I decided I wanted to change something about sour Bratton So Barton the engine was free ZLIP licensed, but the content was Partly free, but mostly unfree non free It was one buck reporter who pointed me to Free content which was assembled by Alon Sakai who works or worked for the Mozilla Foundation and who Created a really cool project and he Compiled or used the sour Bratton engine Compiled it to each JavaScript with the M scripten with the scripten and You could run the game in the Mozilla web browser There's even a link Maybe you can show it to you later You can play sour Bratton in your Mozilla browser. It's yeah, JavaScript and Well, he wanted to Create a free game, of course. So we asked some of the developers if they Would realize since some of their models and graphics and as I said some of them were already free and I discovered this package Slightly modified it so that it worked with The cube to engine in Debian and we got cube to data Only recently someone contacted me and filed the first bug reports I mean upstream bug reports because now I'm a upstream developer basically It's I'm the upstream developer of cubes to data and he well, he discovered some bugs and we enabled some new game Game game modifications. He introduced some new files. Well, and now you've basically started a new project a Free project and it's it's just a demo game. It's not complete But it's playable you can use it and you can use it freely to showcase Debian or Jen in a free first-person shooters general There are several websites dedicated to free artwork One of them is open game art org and the other one is for example free sound org example number two Elgeneral Elgeneral was also in contrap But there was no content at all no game content at all So it was basically useless for a gamer Elgeneral is a clone of a Panzer general which is a game from the 90s developed by an American Company Which was very popular game. It's a classically classical a strategy game with hexagon fields and you could basically play well, Germany and World War two and conquer the whole world the main objective was if you were really good in this game you could Conquer washing Yeah, great. That's the reason why it is still on the index on Germany You're not it's no joke So well Okay Well, I am asked Steve McHugh who created our world war one a modification if he would re-license his art files artwork and He he did I could reach him his email address was still intact and still yeah, well it basically converted all this graphics into a format which was compatible with the general engine And here we are we have we have some content. I didn't develop it I just ask another person if he would like to Realize since his work and most people are very generous when it comes to this kind of question Well, so we had another content package So how do we solve these non-disputable problem? We could as I said create our content or we create Or we use a tool to download all these bad content non-disputable and This tool is called game data package. Yeah, the main drivers are Simon and Alexandre It is basically a tool written in Python 3 that scans the upstream data and and Creates creates hashes of each file. So they are all identifiable and Then downloads all the all the information all the source files and creates a Debian package But you as the user must Accept the license. So basically it's outside of Debian So the tool is free software, but you must ensure that the license is okay for you. It's It has a very simple command line interface Basically nothing can go wrong. You you just type game data package and the name of of the game content You want to download and currently we support 213 games and game variants Non-free well, this is very easy and non-free are all packages which are Encomper encumbered by patents other legal issues that make their distribution problematic meter package for for game data package So the idea behind game data packages Well that you must that you can only that you create packages for your use for your users alone and I don't intend to create a meter package, but everyone else is free to to create such a meter package I'm personally not interested in it, but of course. Yeah, you can file wishlist box reports against game data packager and request this feature or you can add games yourself. It is not very difficult game data packager uses YAML files and Contribution is really simple. Just check out the existing files and you can contribute new new games and of course you can also package something Where no Where no engine exists and then at the moment No problem. I I'm not sure if I have correctly answered the question But I maybe come back to this later Yeah, the most popular non-free packages steam. Oh Because yeah, as it is more than 5,000 installations that is more than two times What the most popular free software a game has some deviant? Yeah, why is it that all people talk about steam? Steam is a very big distribution platforms that has more than 125 million regested accounts and There are more than 2,000 native linux games available proprietary Linux games available, but also some games are completely free And they provide a means for free software developers to To get some money so you can buy their game on on the steam platform and They receive the money for it Yeah, well steam is It's not my kind of thing because I'm more interested in fixing Packages from main because I can't really fix anything in steam steam is completely It's a binary blob at the client and I can't do anything about it But I acknowledge that it is very important that people can play Their favorite game there. There's always a time you want to play a specific game Like it was World of Warcraft for me seven years ago, but I played it with wine I was probably the only one who played it with wine in my guild But yeah, there's there are times you want to play a specific game, okay it's fair enough and In this regard steam is very helpful and it's better a steam is The people place steam games on Debian or on linux than on another Operating system in my opinion Okay Some key points about the Debian games team. I joined the team in 2012 My first experience was very unpleasant because nobody wanted to sponsor my packages or review them and Without help from outside without developers like arya and globits and the Winston Chang I Would probably not stand here this really sucked But nowadays the situation is reversed I could sponsor packages, but There are no people who want to want to contribute something. That's why I'm here Yeah, some stats You can see that in 2006 to 2009 we had a lot of contributions on our mailing lists for the discussions And they were equally distributed so we had some contributors and we are well It looks quite good then between 2010 and 2011 you see one blue Guy mr. Paul wise who contributes regularly on Debian devil games, but The contributions declined over time and we are here now We need to change that please Okay, um, well, this is another graph from the package games to ball this is our buck mailing list and I started to reply to some buck reports in 2012 and here the Purple graph that's about this this is game data packages Basically, Alexander who fights wish list bugs against game data package But well, yeah, it increased a little bit. We are better now in fixing bucks and we respond to buck reports And this is my chart which I Have painted on my wall It's about bug fixes and Well, again, it shows that we have approved a little over time so Yeah, I've created another chart in this team statistics which displays The relation between how many maintainers are working for one package and mostly is one Do you know this graph maintenance pair? Package I've put the link to into I'll see room boo. Maybe we can show it later But okay, this is quite interesting and it should yeah, maybe finish your talk and then I'll show you okay No, I've never heard of it before Last but not least Ideas for future projects. First of all, it's not very difficult to contribute something to Debian games First of all just play the games Block about your experiences that is very helpful reward report bucks and fix them and What you also can do is have to improve desktop and app data files and icons It's a very simple tasks, but we need better icons You can we have some games with actually icons, but this this is the first thing people will recognize And they decide hmm, that's an ugly icon must be an ugly game So you can easily change that by providing a better icon very simple Have to maintain existing packages if you are already a Debian maintainer We would like to welcome you We could also create that we can games live project. I have told I talked about that before You could move blends dot Debian org to games dot Debian org and improve the web page and We could also create a game content database. I had a mind something similar to code search Dot net but for artwork We already provide good copyright files in many cases, so it would be very easy to say, okay I need an image about I don't know some some house or some texture and it should be a created license under a created common license This would be the perfect database It doesn't exist yet last but not least We could also create a promotional gaming video Like it is very common In the gaming world where we just showcase in one minute what games we have and What what cool games we have and yeah Why you should play them that would be really cool So that's it for my side and thank you for listening Whoever is interested later on when when we leave the show here There is currently a project based on the famous open Pandora a successor called the pyra and Fortunately, I was able to bring a prototype here. It's a gaming console Based on Debian stretch So it's quite a nice thing that there exists such a thing And you can look at it. I have it here. It runs currently frozen bubbles And yeah, I put it on my desk and everybody who likes can see it and touch it and play with it I'm not related to the project itself Yeah, yeah, we we can show to the camera And is it on the camera now? Very cool too high too low, okay It's not open hardware unfortunately Because the license is not completely free. So as fine as I know you get all their schematics and PCB and so on But it's not let's say open hardware license or something At least for software developers. That's quite okay because you know all their Pin connections and so on everybody Colonel hacker or device driver hacker needs to know But it's a non-commercial something So not really open hardware. No I'm made might perhaps show the graph quite quickly here What's what this graph shows is the version control system contribution of maintainers and about 200 packages are only touched by a single person in the game game games team about 130 packages are Touched by two persons and so on so you have this kind of hyperbolic graph and It's similar in the Indian mid team a little bit better But it should be like in the pearl team where you have kind of that graph So you have a minimum of packages only by maintain by one. It should be the goal. That would be optimal. Yeah, I agree Meet a discussion pardon Does it show the people really maintaining the package or the ones that are mentioned in the control file? No, no, this is our real commits. It are commits and I strike out Commits below five so it's a random commit but The the real question you should ask is it does it has a time scale because in Debian meet we have a better Distribution of two maintainers, but the fact in fact there. It's our package Built by somebody else and talking take over by me. So it's also a single maintenance package. So but Yeah, in the pearl team you see where it should should go and We should have a for ice principle for packages and this is definitely no for ice principle Okay, yeah, thank you all for your attention and that's it for the Debian games talk. See you around


Boy, oh boy have I missed daily vlogging man. Sometimes we need to do something every day It can seem as a chore But then once you stop it And you have like all of a sudden a very different Routine through the day you start to like miss what you did like every single day, so That's what I'm feeling right now Are you guys doing thorough comment? Let me know how you're doing today. I miss you guys So let me give you the quickest update a possibly can Right now I'm going to drive a hundred miles to check out Possible bus number two the only problem is doesn't have AC I'm also looking for a Josh to find a bus. I'm gonna help him find one as well Uh What else is going on? Okay, so for bus number two I haven't even made a PDF Explaining like my mission statement and stuff like that to send to companies and things like that But I already have like it looks like a full solar system set up I have Michael navigation nowhere. He's helping me out. I have I just got off the phone with a vegetable oil person He wants to Be a part of it too And not just like in financial sense in in in in help, you know He's done a bunch of conversions and thing like that. We got bad. She guys know bad She wants to help install the vegetable oil system Shoot what else?  I met at the RT actually at Jamie's van build He's in the credits Dell he's got some contacts. He's working some stuff this company turned into something really awesome, and I'm super stoked and so, yeah, I Yeah, we're gonna go for a ride today and we're gonna go fire up one of these mid-sized buses full-sized chassis You'll see exactly what I'm talking about in just a minute There seems to be quite a few buses over here Um Yeah, that's a let's jump inside one. All right, so I I kid you not I walk in five minutes later I'm taking this baby for a spin. So we got some dealer plates on the back This is uh, this is what it looks like here a Freakin school bus you guys have seen school buses before This one does have a wheelchair lift the only thing that I don't like about This bus it does not have air conditioning, but look at all the space here give run laps. So this is what's called a 14-3 bus, I don't know if it's 14 chairs or room for 14 Plus three would be three wheelchair positions. Nice little kitchen door, I suppose But this is I'm not a huge fan of that, but the number one thing with me is uh Nice seat Number one thing with me is air conditioning. So dude so far so good. I've made it only a few feet out of here But the engine sounds so good and the mechanics that work on these things are actually here You know, obviously, I mean they work on these things all the time But they're here so I could potentially talk to them, but this thing is a beast Um, yeah, they just gave it to me. They're like, yeah, go run it on the block like Okay That easy, huh? Unbelievable makes very sensitive. Honestly, this thing is so much fun to drive It's a little on the squeaky side Nothing I'm not used to it's probably gonna get even squeakier But it's a very very smooth bus in a very smooth engine Um, and I like the fact that I can see out of the whole entire thing As well as uh being a little bit higher up and having a a little nose in front of me Um, but yeah, this thing handles super well super smooth Transmission uh shifts very smoothly. He's like, you know, he said, you know, make me a deal So, you know these buses, you know, they don't hold their value that well Only thing is like the air conditioning part But I mean I'd be tempted just to buy it just to You know, like worst case scenario this like this is my bus, you know, and then if I find one with ac I don't know that kind of wouldn't make sense really The air rakes though are very sensitive very strong very powerful This cracks me up The because you know what it is like the last one was like a van front end, you know But this one is such a school bus for an end like look at all these cool buttons here like booster pump like what the heck's a booster pump driver heater Like rear, you know dome. I don't know override all these panel lights. I don't know What's that this thing? high low fan What's this? I don't know throw some throttle button There's so many like new interesting things in the air brake thing. Check this out If you guys didn't know these massive trucks don't even have park You just put that sucker in neutral and then this is like your parking brake basically so I know it's bizarre Anyways, so So this is like a legit school bus and I don't know it comes with a camera perhaps Um a little stereo all that would be ripped out all this. I don't know if I would keep this or make it would but You know, we can we can do some fun things in this bus A little weird because It's not in park because it doesn't have park. But anyways, it rides really well Look at all this extra room. That's some good head. That's some good space, huh? The last one they had to do this so there's plenty of space and if you guys didn't watch the the build videos this right here Takes up about maybe three quarters of an inch so Because there's plywood down there and then there's the rubber on top and actually There it's not too bad You know a nice little Opening here and one in the middle. That's okay. That could be a skylight. This potentially is the better area This potentially is the Bath room. I don't know how that's gonna work with that Wheel well there, but you know, maybe put the toilet on top of that shower at this part. I don't know There's there's plenty of space I think in this how many windows we got one two three four five Six seven so what's that eight nine so it's potentially a nine window bus This is actually maybe a little bit bigger than I thought Which is a okay with me. I just wanted that shorter wheel base um because the The big long ones are just a little bit too long for me, but let's I'm gonna open up the hood in a sec I'm gonna leave this sucker running and uh I'm gonna I'm gonna look in there for batch and also for myself and for you guys Uh a lot less rust than my bus. There's a little rusting on the the headers down there for the exhaust This bus is a 2002 so we're talking 16 years old and the blue paint is still on The valve covers right here as well as the turbo um This is the cleanest This is cleaner than my 2003. This is a 2002 But look at this amount of tread on the tires looks like somebody spit shine the engine before I got here Let's check out the chassis underneath and see what kind of rust we're looking at By the way, this is up by Seattle, there's no freaking rust no rust at all. So I don't know. I'm gonna say this is a very very good bus here I'm gonna take a wild guess and say this one is uh No good I'm just walking through their bus lot because they They said there was another bus over here That is available although it didn't start And it has done done done no handicap door. However, I don't know the condition of the bus Quality-wise here it is bus number 52. I don't know the condition of the bus And obviously I would not want to trade a bus In my opinion that bus I took for a spin was in fantastic shape. I wouldn't want to trade a fantastic shape bus with something that looks better But doesn't operate as well. I guess it could be the batteries. I'm not really sure if that's If that's the case could swap them out, but Here's the other bus Not as nice on the inside. Looks like they did rip out some seats which Actually, they did me a favor I don't know if it's longer, but this one is a nine-window bus So It also has the shorter wheelbase, which I like But would provide a little bit extra space You know inside More windows more space each window Well, that's the front ones each window here is about I don't know two and a half feet three feet whatever however long my arm is I'm six foot one So I'll have to call back and inquire Um a little bit dirtier on the inside Keys are in it bus number 52 So the question is What's a scoop on this thing look at the tires here Okay, tread nothing fantastic No tire rot nothing super super crazy old. It's okay. This one's all right too So guys, what do you think? They're on some comments Do you think I should go with one of these buses without air conditioning? I just don't know The price though the price is going to be fantastic I already know just from talking to them so Could I live without onboard air conditioning? Or could I mount air conditioning on the roof? I don't know. We will see only time will tell my friends Interesting day if you asked me before I started bus number one It made the lights go off. I would not I would not have guessed it would Be busless hunting for another bus. I thought bus number one was the ultimate perfect version of a school bus That I could possibly build. It was different. It was unique. It was rustic. It was uh one of a kind it was uh rustic Recycled man cave Reclaimed a man cave. Um There's no way. Yeah, there's no way I would have Guessed I would be doing this all over again I would have thought to myself why on earth would would you ever want to go through that torture again But in fact it is a kind of expression in a way of Of of design of space of functionality of of traveling and also um a way to Make others Feel comfortable. It's a home. It's not a school bus That's the thing, you know like used to be a school bus, but it it's a home. It's a place of of Of cooking meals and and of course the traveling aspect of it and sharing stories and You know sorts of wonderful things meeting new people and friends and strangers and uh Yeah, giving lots of tours I know it's gonna be even more in this one um I called badge I talked to him about the bus. I told him how fantastic that engine sounded Um really it was a Pretty darn good bus. I mean there's no rust no any of that stuff and uh I was thinking about the air conditioning situation. I I was adamant about having air conditioning and then I realized With all this power this electricity. I'm gonna have on board on on this bus. It's gonna be slightly different setup more powerful I can run one of those rv style uh air conditioning units on the roof So cold air enters the vehicle. It doesn't matter if it comes out of the dash or not um And instead of uh and I mean they're under a thousand bucks I think some of them are even like five six hundred bucks. Um if you get the low profile ones that I don't know There's different models, but uh, you know, I spent like $2,500 on the last one trying to get it fixed I could have bought like Two to five air conditioning units I mean and then I wouldn't Yeah to to have it unattached to the to the engine. That's um interesting also If I have it parked and I can plug it in someplace If it is summertime Just like a trailer park, you know, uh, then I can just leave the air conditioning on that'd be fantastic I don't think I'm gonna have enough battery to keep it going to operating off of the batteries You need some major major power for that. Um But who knows me. I don't know. Maybe I'll get a generator or something or just avoid hot climates That's kind of what I've been doing. Anyways, the exception of uh vidcon, but that was just That was worth it wouldn't you wouldn't you say So anyways, um, oh also before you know what I'll do it in the next one I forgot the last two videos to thank the new patreons But uh, I don't want to shove it at the way end where nobody Not nobody or less people watch it. So I will call it a day Very optimistic very excited. I'm also shopping for a bus for josh I'm not sure if I mentioned that before if not. I'm also I'm in charge of that Um, so I have some news for him. He's off at the shorty wards in new york city So we'll catch you uh on the next upload which I think we'll do every other day until I get back in a bus And back on the road. Thank you so much for watching. I really appreciate it. Appreciate it No, I'm saying


Ok, so let us continue with this proof of the Riemann mapping theorem. So what we have is see we have this family script F consisting of analytic functions from the given simply connected domain D which is not the whole complex plane ok and taking values in the unit disc delta alright this is the unit disc centred at the origin radius 1 right open unit disc such that of course F is analytic injective and taking F of z0 to taking z0 to 0. So z0 so z0 is a point of D alright and so we have this family script F then what we did was we had taken so the fact that each F takes values in the unit disc they told you that mod F is always strictly less than 1 for all F in the family so this tells you that the family is uniformly bounded ok. So script F is uniformly bounded and of course that we have already seen that this family is non-empty ok because you can always find a holomorphic isomorphism of D onto a sub domain of the unit disc ok that was the first step of the Riemann mapping theorem that we started to prove ok. So this family is non-empty ok and the family is uniformly bounded alright and therefore now you apply so what you do is you take so Montel's theorem will apply to say that if you have any if you take any sequence in this family then there will be a uniformly there will be a there will be a subsequence which will converge uniformly on a compact subsets namely you will always find a normally convergent subsequence normal convergence means uniform convergence of compact subsets ok. So Montel's theorem will apply but to which sequence do we apply to so what we do is we look at the we look at the supremum there is the supremum of the derivative of these functions at z0 the modulus of the derivative ok. The fact that this is the finite is because of it is basically because of Cauchy's estimates ok therefore the supremum is a finite number we called it as a alright and we proved that since all the this a is of course non-negative in fact so the fact that all these f's are all injective means that all these derivatives can never vanish ok therefore a is a positive quantity alright. And then what we did is we took sequence fn in the family f such that the if you take the corresponding sequence of derivatives and it take their moduli that converges to a and this is because a is a the supremum it has a approximation property a supremum of a set of real numbers can be gotten as the limit of a sequence from that set ok. So you that is how you get the sequence ok the sequence of functions in f such that the derivatives at z0 the modulus of the derivatives at z0 tends to a ok and then by using Montel's theorem Montel's theorem tells you that there exists a subsequence fnk which converges normally to a function f0 ok. So this is the application of Montel's theorem which says that whenever you have uniformly bounded family of analytic functions then you take any sequence in that family the sequence will admit a subsequence which converges normally ok. So normally on d which means uniformly on compact subsets of t alright. Now what we did then of course the big deal was that so then the claim was that the image of f0 under the image of d under f0 is actually the whole unit disc ok. So this f0 succeeds in mapping the given simply connected domain which is not the whole complex plane isomorphically on to the unit disc ok which is the main aim of the premon mapping theorem. So the first thing is that so there are few facts that one has to understand the first thing is as I told you first of all if you the fnk of z0 in modulus the derivatives tends to a that will tell you that f0 the derivative of f0 at z0 is also a the modulus of that is also a ok because fnk tends to f0 because it is normal convergence the derivatives will also tend to the derivative of f0 and if you apply z0 and take modulus you will get this fact. So this is limit function ok mind you a normal limit of analytic functions is analytic therefore this f0 is certainly analytic alright and it is derivative at z0 if you take the modulus that will be a alright that is because of this convergence and the definition of a and the sequence we have picked and this so the derivative is at z0 is certainly the derivative at z0 for the function f0 is non-zero so it is a non-constant function. So f0 is non-constant ok because had it been constant the derivative would be 0 alright everywhere so it is a non-constant function but then you now apply Hurwitz's theorem which tells you that whenever you have a sequence of injective analytic functions that converges normally to a function then the limit function is either constant or it is also injective but since the limit function is not constant Hurwitz's theorem will tell you that f0 is also injective f0 is also injective that is 1 to 1 or univalent in other words ok. So that is because of Hurwitz's theorem then the other thing is that you know since mod f is always less than 1 for all f in script f so that will tell you that you know of course this f the subsequence is also from there so mod fnk is always less than 1 so that will tell you that mod f will also be less than 1 ok. So here I mean mod f0 will also be less than 1 ok and why is this true because you know of course if all these functions are bounded by 1 therefore the limit function will also be bounded by 1 ok but I want to say it is strictly bounded by 1 I want to say the limit function cannot take the modulus of the limit function cannot be equal to 1 and why is that true because if it is equal to 1 that means there is some point in D where f0 takes a value which lies on the unit circle ok but then there is this open mapping theorem which tells you that the non-constant analytic function always the image of any open set if the image under any the image of any open set under any non-constant analytic function is an open set that means what is another way to say it the other way to say it is that an analytic the value is that analytic function takes they are all interior values analytic function cannot take a boundary value. See what is open mapping theorem say it says you take you apply you take an open set and apply the analytic function you get an image set that image set is open that means each of the values it takes is surrounded by a disk full of which are consisting of the values of the function so it cannot take a boundary value so you can also think of the open mapping theorem as saying that an analytic function cannot take a boundary value. So this f0 cannot take the boundary value 1 because you know if it takes the boundary value 1 ok then it will also take values outside a little outside the unit disc ok. It will if it takes the boundary value 1 ok if it takes a value on the unit circle ok the bound which is the boundary of the unit disc then it will also take all values in a neighbourhood surrounding that point on the unit circle and that neighbourhood will say part of that neighbourhood will be outside the unit disc okay and therefore it will take some values outside the unit disc okay. So then you will get points you will get points in D where the function limit function f capital f not is taking values outside the unit disc but it is a limit of functions all of which are taking values only inside the unit disc and that will give you a contradiction okay. A limit of a sequence of values which lie in the unit disc cannot converge to a value which is outside the unit disc okay. So that contradiction will tell you that f not also is strictly bounded by 1 in modulus okay and so use by the open mapping theorem and so and what so the moral story and of course you know if you take fnk of z not is 0 by definition and but this tends to f not of z not which will tell you that f not of z not is also 0. So all these observations tell you that this f not is actually an element of the family script f. So f not is an injective analytic function from the given simply connected domain in D which is not the whole complex domain taking values in the unit disc and taking z not to 0 okay. So f not so in other words you see you have you have for all you have the supremum a the supremum a is attained by a function that function is also in this family that is what we have proved okay the supremum a is attained by a function which is also in the same family alright on which the supremum is defined right. So this f not is in f so this is a fact that we need okay that is an observation that we need to make then now comes now I will have to tell you that you know f not takes D on to the unit disc. So I mean the moment I say this it means that you know you know f not is already injective so it is an inject and you know an injective holomorphic or analytic map is an isomorphism onto its image therefore this once you prove this you have already proved that f not is an isomorphism of D on to the unit disc okay which is the purpose of the Riemann mapping theorem alright. So now you know so the fact that f not the image of f not fills out the whole unit disc that is a fact which requires the use of hyperbolic geometry okay which is what we are going to look at. So what I am going to do is so what I am going to do is I am going to break off at this point and say a few things okay. So the first thing I want to say is that you know so we go to we change our focus for a little amount of time and look at go back to hyperbolic geometry okay. So the first thing I want to say is so here is a remark so the remark is you know that if you take a point if you take two points in the unit disc so I think maybe I should not use z not because z not is already used let me use something else theta not and theta 1 okay. What is rho sub h? Rho sub h is a hyperbolic distance the distance between these two points in the unit disc for the hyperbolic metric okay and you know that is the arc length of the arc joining these two points on the circle passing through these two points and orthogonal to the unit circle okay because that is the geodesic for the hyperbolic geometry the path of shortest length okay and of course if one of these points lies if one of these points is the origin or if both of them lie on a diameter then that geodesic turns out to be just a straight line segment okay and otherwise it is not a straight line it is always a curved path it will be an arc of a circle which is which passes through these two points and which is perpendicular to the unit circle which is the boundary of the open unit disc right. Now what is the formula for this? The formula for this is you see you know you know given any two points in the unit disc you know you can always find a mobius transformation and automorphism in the unit disc that maps one of them to 0 and maps the other one onto if you want a point on the real axis okay you can always do that okay. So you know situations like this I have so this is my unit disc and you know I have two points z0 I mean zeta0 and let us say zeta1 okay then you know I can write this mobius transformation if you want let me give it a name capital H okay and you know I can find a mobius transformation which will map the unit disc to back to the unit disc that is it will be an automorphism unit disc and it will map the point zeta0 to 0 I can make zeta0 go to 0 and I can make zeta1 go to a point on the real axis I can do that okay this can always be done how because you know you have to just define H of z H of zeta to be you know if you put zeta-zeta0 by 1-zeta0 bar zeta okay this will map zeta0 to 0 and this is certainly of the form of the general form of an automorphism of the unit disc okay and then the only thing is when I put zeta1 I will get H zeta1 is zeta1-zeta0 by 1-zeta0 bar zeta1 that is a point in the unit disc it may not lie on the positive real axis but you know if I whatever its argument is if I multiply by you know e power i beta okay so that beta is the negative of the argument of this when I substitute zeta equal to zeta1 then H of zeta1 will lie on the real axis. So you know so this is something that this is an adjustment we can always do so what we will end up with is I think this so you know H of zeta is equal to e power i beta beta times this you put this okay if you multiply by e power i beta it is still an automorphism of unit disc because e power i beta is just rotation about the origin okay and you know general automorphism unit disc looks like this that is also something that we have seen already okay where you put beta to be negative of principle argument of you substitute zeta1 without the e power i beta tau okay. So now if you calculate H of zeta1 and you calculate the argument of H of zeta1 argument of H of zeta1 will be argument of beta I mean argument of e power i beta which is beta plus this okay so you will get 0. So the fact that its principle argument is 0 tells you that it is on the real axis so it is a positive real number it is a fraction and it is inside the unit disc so it is a fraction. So you can do this now but what is the you know what is the advantage of doing this see the advantage of doing this is you know that the hyperbolic you know that the automorphisms of the unit disc are isometries for the hyperbolic metric every for the distance given by the hyperbolic metric the every automorphism unit disc is an isometric okay. In fact in a way the you know the original version I mean the pix lemma for example says that that you know if you have an analytic function which maps unit disc into the unit disc if it is not an automorphism then it will be a strict contraction in terms of the hyperbolic metric otherwise it will be it will preserve the hyperbolic metric and it will be an automorphism okay. So in this case this H is an automorphism so it will preserve the hyperbolic metric so this is the same as hyperbolic distance between H of zeta not and H of zeta 1 and this is just the hyperbolic distance between 0 because H zeta not is 0 and H zeta 1 is so H zeta 1 is whatever it is of course it is a real number okay. And you know we derived a formula for this is this is half lawn of half lawn of 1 minus H zeta 1 by 1 plus H zeta I mean 1 plus H zeta 1 by 1 minus H zeta okay. So this is a formula for the hyperbolic distance between any two points of unit disc because this is something we already calculated if you had real number R here okay where R is a fraction you will get half lawn 1 plus R by 1 minus R right that is just the radial distance from the point from the origin to the point with point lying on the real axis with coordinate R okay. So this is a calculation we have already done I need you to remember this therefore take g from delta to delta analytic not an isomorphism okay take a function take an analytic map from the unit disc to the unit disc which is not an isomorphism alright take such a map. Now what this will tell you is that you know I mean what does pix lemma tell you pix lemma tells you that g is a strict contraction g is a strict contraction with respect to the hyperbolic metric okay. So that is what pix lemma tells you alright what does that mean it means that if you take 2 points z and zeta 0 and zeta 1 in the unit disc okay you apply the points to g you take there that is you take the images under g and you apply you calculate the hyperbolic distance okay the distance between the image points will be strictly less than the distance between the original points. So it will be strictly less than the hyperbolic distance between the original points so this will happen this is pix lemma that any analytic map or self map of the unit disc which is not a isomorphism which is not an automorphism it has to contract okay you take 2 points and then you take their images the distance between the images under the hyperbolic metric is smaller than strictly smaller than the original distance distance between the original points under the hyperbolic metric okay. If you know if zeta 0 is fixed and zeta 1 tends to zeta 0 okay what will happen you see as zeta 1 as the points come closer and closer the obviously the distance between the 2 points will come closer and closer and it will tend to 0. So what will happen is that the hyperbolic distance between zeta 0 and zeta 1 that tends to 0 okay and as zeta 1 tends to zeta 0 g zeta 1 will also tend to g zeta 0 because of continuity of g okay g zeta 1 tends to g zeta 0 it will imply that the hyperbolic distance between g zeta 0 and g zeta 1 will also tend to 0 okay. So I am just stating the obvious thing that as the points come closer their images also come closer okay and both sides will tend to 0 okay. See if 2 quantities go to 0 okay it is not necessary that their ratio goes to 0 okay it can happen the ratio can go to infinity or it can go to 0 or it can go to some finite value. So these 2 go to 0 but the fact is that if you take the ratio rho if you take the ratio of the distance between the images and the distance between the 2 given points okay this quantity can be approximated by the following number 2r by 1 plus r squared okay where zeta 0, zeta 1 belong to mod z less than or equal to small r which is strictly less than. So in fact I want to say in fact I do not even want to say this I want to say that this is always less than or equal to okay this is a bounded quantity and this is the bound okay and this bound is and in fact this bound is even attained okay and the bound is attained okay. So there are you can find point zeta 0 and zeta 1 in this disc for which the ratio of the distance is exactly equal to this so that bound is also attained. So for so this is very important this is not for any g this is for g zeta is equal to zeta square this is for this this is for the square function okay. So I mean if g is any analytic self map from the unit disc to the unit disc which is not an isomorphism it is a contraction okay and the point about both sides is both sides goes to go to 0 as the points approach each other okay but if you take the ratio the ratio is a 0 by 0 form okay and a 0 by 0 form can behave in any way that you want but it will go to 0 because the numerator is strictly lesser than the denominator alright this is strictly less than this okay. So you can expect it to go to 0 alright but then you can get a very special expression for what this ratio is for zeta 1 very close to zeta 0 okay and in fact if you take both zeta 0 and zeta 1 in this close disc okay then this is bounded by this number 2r by 1 plus r square where and that is for the particular case of the function g which is zeta square okay the square function. The square function is of course an analytic map from the unit disc to the unit disc but you know it is not it is not it is not an isomorphism because it is not injective because you have 2 square roots going to the same it is 2 to 1 in a deleted I mean in the deleted disc I mean from the disc if you remove the origin then both z and minus z will go to the same value so it is a 2 to 1 map alright. So this is not an injective map so it is not a holomorphic isomorphism therefore by pix lemma it will be a contraction but the point is when you calculate this ratio for zeta 1 and zeta 0 inside this close disc this is the bound for this ratio okay but the question is how do you get this number okay for that you know you have these points zeta 0 and zeta 1 you can move zeta 0 to the origin you move zeta 1 to this r by using a map h like this okay and then you calculate now you calculate this ratio you calculate this ratio this ratio will be rho h of you know this ratio it will be rho h of 0 r square divided by rho h of 0 r okay I am calculating it for I am simply calculating it for the for the for these two points and there the effect of the function zeta going to zeta square for those two points okay instead of calculating it for two general points zeta 1 and zeta 0 because I can move them to these two points alright. So you know for example if you do this calculation okay you will get you will get half lawn you will get half lawn of 1 plus r square by 1 minus r square by half lawn of 1 plus r by 1 minus r okay this is what it will be alright and then you know if you try to apply if you try to study it as r tends to 0 okay this is a you know as r tends to 0 this is lawn this is lawn 1 this is a 0 by 0 form so you can apply Lopital's rule okay.  So the moral of the story is that I need to know how this quantity looks like you know when the point zeta 1 comes very close to the point zeta 0 I need that fact right and in particular of course you know you must remember that this is this is less than 1 is certainly less than 1 because if you cross multiply and move things to the other side I will get 1 minus r of the whole square which is strictly greater than 0 right. So this I mean the fact that this is less than 1 is the statement that I mean it again reinforces the fact that it is a contraction it is a strict contraction alright. Now anyway actually probably even this expression is not so important for me I want I want to say that there is a constant okay this ratio is less than or equal to a constant which is less than 1 okay I need that fact for the square function right. Now what you do is now we do this very nice lemma so here is a lemma which is kind of one shouldn't call it a lemma in fact it is more than a theorem because it uses lot of stuff okay and which is it is a critical lemma that we need to complete the proof of the Riemann mapping theorem. So the lemma is the following the lemma is if let me use d not in delta is a simply connected domain such that d not is not equal to the whole unit disc suppose you have simply connected domain in the unit disc which is not the whole unit disc okay and if 0 is a point of d not then there exists an analytic map or holomorphic map psi from d not to delta such that psi take 0 to 0 and the derivative of psi at the origin as modulus greater than 1 okay. So this is a rather technical lemma okay it is a rather technical lemma which uses hyperbolic geometry but this is what we need for completing the proof of the Riemann mapping theorem. So what this tells is you see the situation is like this the situation is I have I have this I have this unit disc I will draw a bigger one so that I can fill in with other things so and I have I have a domain I have domain d not which is not equal to the whole unit disc okay and such that it contains the point it contains the origin okay. Then what this lemma says is that I can find you know a holomorphic map that maps d not again into another domain in the unit disc okay such that 0 will go to 0 alright but the derivative at this at 0 can be made greater than 1 okay. So this is like you know you see the point I want you I mean the way I want you to think about it is like this see what is go back to our Schwarz lemma okay go back to Schwarz lemma go back to actually infinitesimal version of Schwarz lemma what does it say from if you are having an analytic map from the unit disc to unit disc okay then the derivative at the origin in modulus has to be bounded above by 1 the derivative at the origin cannot exceed 1 it has to be less than or equal to 1 and it will be equal to 1 exactly when there is an automorphism if it is strictly less than 1 it is certainly not an automorphism okay now that lemma has this is like you know the effect of statements similar to that lemma not for maps from the unit disc to the unit disc but for maps from a smaller simply connected sub domain of the unit disc to the unit disc. So what that lemma says is that if your map is from the unit disc to the unit disc then the derivative at the origin modulus is bounded above by 1 but if you try to map a smaller domain a smaller simply connected domain to the unit disc by an analytic map okay you can always succeed in exceeding the you can always succeed in exceeding that bound for the derivative at the origin okay see this will not happen if d not is equal to delta if d not is equal to delta then Schwarz lemma the infinitesimal version of Schwarz lemma will tell you that the derivative is less than or equal to 1 and in fact if it is not an automorphism it will be strictly less than 1 you can never exceed 1 and you will get 1 only when it is an automorphism okay but the moment your smaller simply connected domain you can manage to find a analytic map which whose derivative at the origin modulus is greater than 1 this is like you know this tells you what you can this tells you about analytic maps from a simply connected proper sub domain of the unit disc to the unit disc it also always tells you that you can get you can always find one thing that that you know that is opposite to what you will get for the Schwarz lemma had d not be in the whole unit disc right. So you should see it in that you should see it in that point of view okay.


Last Saturday, Mother of Three, Kathy Barker, passed away unexpectedly and with the assistance of two community organizations, Community Trust Make and Cornerstone Church, they're hoping to give her a proper funeral. Friday we spoke with GoFundMe organizer Tammy Riley about how you can help. There's a family in town who have had a tragic experience. So we have a family with a mother who had three children in the home under minor age and she was the only caregiver for these children and they certainly loved her and she clearly loved them but she was Kathy Barker and she died unexpectedly so she left the three minor children without any relatives to take care of them. So those children have been you know in a matter of a few hours last weekend they were removed from their home you know they lost their the only mother that they knew and loved they're in a different community for now and they were very scared and obviously grief-stricken and when I spoke with them their only concern was you know were they going to be able to say goodbye to their mother this happened very quickly to them unexpectedly obviously and so I gave them my word you know that we would make arrangements for them to have a ceremony a dignified burial and the ability for them to say goodbye to their mom so the community in conjunction with Cornerstone Christian Church Community Trust Bank a set up an account there's a checking account at Community Trust Bank under a Cornerstone Christian Church's name with Kathy Barker final expenses also included in the account name and there's a go fund the account Kathy Barker burial expenses so you can donate and contribute and help the children in a number of ways you can drop a check at Cornerstone Christian Church you can go through Community Trust Bank drive-through ask for the Cornerstone Christian Church account for Kathy Barker's final expenses or go to to my Facebook page or do a search for Kathy Barker final burial expenses on go funding again to donate you can visit gofundme.com keyword Kathy Barker or visit the link provided in the description for mountaintop news I'm Joel Chorjol


Gunmen suspected to be members of the Indigenous People of Biafra iPop have launched another attack on Odorepe Police Station in any local government area of Aqaibam State, killing six officers on duty. It was gathered that the attack occurred in the early hours of Saturday when people were still asleep. Our correspondent reports that the early morning attacks is one of the series of attacks against security operatives by armed men.


Yes, good morning everyone! Are you awake? Okay, yeah, it is the first talk in the morning, it is always a little bit sleepy. So, welcome to my talk. Thanks for coming. This talk is going to be about RubyMind, about RubyMind different tips and tricks and some productivity hints, and I hope you will learn something new today. But before we can start, I would ask you to do something for me. So, please stand up. Okay, thank you. So, please raise both your hands if you use RubyMind. Okay, please just stay. Please raise both your hands if you don't use RubyMind. No, no, no, just stay with your hands, yeah? Okay, let's raise your hand a bit. Okay, yeah, morning routine, thanks a lot. So, please sit down. I think that now we are ready to start. So, my name is Tatyana, I'm a product marketing manager of RubyMind. I'm a part of RubyMind team at JetBrains, but I'm not a developer. I used to be a developer 10 years ago, I used to be a Ruby Rails developer when Rails was really young, but now I'm not. If something is not working today, don't blame me. Okay, I'm joking. I'm a RubyMind part of RubyMind team, so of course you can blame me, but I will blame the team, the developers. Okay, so, let's start. When talking about ID, the first thing you start with is actually making your environment looking good for you and making your environment comfortable as possible to your eyes and fingers. So, we will start with some tips in making your ID a little bit more suitable for your needs. And we will start with the color scheme. Oh, sorry. It's my rescue time. So, let's go ahead. I want to use this very quick switcher and change a look and feel. For example, to duck one. Or you can switch it back to default one. And just want to ask you which is better for you, for this presentation, for today. Duck one? Duck one? Okay. Okay, let it be duck. So, another thing that sometimes it's useful when you're working in a pair for something or making presentations. Or a quick way to switch the color. And the same way you can switch the key map. I'm using this one. But, of course, you can use another one. We have some predefined ones like TextMate, Emacs, and some others. Again, for example, if you're a pair programming with someone who uses another key map, it is the best way to switch between them. You don't need to go to preferences to search for key maps there. Just make it in one click. But, still, if you want to go to preferences and, for example, adjust the key map for your needs, you can do it here. Go to key map in preferences. You can see all the comments here. You can change the shortcuts. And you can even search by Kstroke. And then change it. So you can adjust any predefined key map for your habits and for things that you are used to. Okay, so let's go back. And, of course, you can also adjust all the colors. I mean that we can switch these predefined color schemes. But, again, you can save all the colors for everything you need to. You can change it. Adjust. So, just in case you need it. And another thing I want to show you that, from my point of view, is quite useful. It is a list of plugins. You can see that we have a lot of them. Most of them are bundled with RubyMind, so they are pre-installed. But if you need something more from RubyMind, you can always go to the list of plugins and install something new. For example, for this presentation, I'm using this one, Presentation Assisted Plugin. It shows all the shortcuts I use at the bottom. So, here it is. And to install new one, you just need to go to this Install JetBrains plugins, or even to install, not, luckily, it's from JetBrains, but from the community. Okay, so, you can also adjust the look and feel of the window. You can see that I have, in my view, I have a project tree at the left, usually, I have an editor at the right. You can also switch all the tool bar, switch on navigation bar, status bar, and here the small icon that helps you to navigate among all the tool windows. You can have these tool window icons here, but you can hide them as well. And another interesting tip here is that you can see these numbers in the name and the title of every tool window, and this number means that you can choose command this number to open this tool window, like command one to open project view and to hide it. Or, for example, command four to open around window and to hide it. So, and if you're open too many, for example, tool windows, a lot of them, and you're a little bit lost and you want to go back to your code, the best way to do is to use shift command F12. This will hide all the tool windows and just go back to editor for you. So, it's a good way to stay focused on your code without having all these tool window icons actually open. So, I hide them. I don't need them. I navigate with a keyboard and I don't need to see all of them all the time. If you want something even more to be even more focused on your code, you can go to these view mode and to destruction free mode and it looks like that. Nothing, just code. Or you can exit this destruction view mode and, for example, enter presentation mode and it will look like that. Sometimes I use it when I'm coding a lot, when I have live coding during the presentation, but today I won't use it because I want to show you all the windows and all the ID, actually we want code. So, I will exit it. Okay, so something that was about setting up your environments and now let's talk a little bit more about navigation through your code. Maybe the most common way to navigate the most simple one is to see this project tree, project structure and nothing special here. I hope you know that you can search here. Just start typing and you will search for this tree, but the things that I want to show you is this small icon in the settings and these two options. It is auto scroll to source and auto scroll from source. By the way, who uses that? Whoa, one person. Okay. So, if you switch auto scroll to source, it means that when just going through your tree, you will also open all the files in the editor, but frankly speaking, I don't like it. I don't think it's very useful. What I do like, it's another one. It is auto scroll from source and this one means that when switching through your tabs, through your code, you will still be aware where you are in your project when the project structure is opened. Sometimes it's good. For example, when you are debugging and digging in your code, sometimes you really need to know where you are when you are closed. From my point of view, it's a good option. Okay. So, it's about project view. Another thing is that if you are doing Rails, and I think that most of you are doing Rails, because we are at RailsConf, you can also switch this project view. Don't blame me. Please blame developers. Just a moment. Let's try to fix it on the fly. But I will definitely add a bug report. Sorry for that. Okay. So, you can use this Rails view and this view means that you will see the structure of your code, not at the folders and files structure, but by means of models, views, and controllers. So, what you can see here is all the controllers in one place. And, for example, under each controller you can see other actions. And under each, actually, you will see all the corresponding views. So, kind of Rails view. And, of course, you can navigate from here as well. Let's switch to views and et cetera. But if you still need, for example, I prefer Rails view, but sometimes I still need to get back to project structure view, to folders and files structure. The best way to do this is not to switch this project view, actually, but to use navigation bar. So, you can see that here on the top I have navigation bar, and I can really easily, very, very easy navigate through all the folders and I can, again, just start typing here and it understands snake case and, of course, camel case. So, it's a good way to navigate through your files and folders if you still need them without opening project, project review at the left. Or, staying on the Rails view there. Okay, but I have a question, one question. Do you feel comfortable with this view or something is a little bit weird, a little bit strange, something you don't like? Come on. Any ideas? Tabs, yeah! I think that, yes, I think that tabs are really awkward here. They take so many plays of your code editor. Why do you need them? I don't think that we actually do need them. I don't. I hope that you don't as well. So, the best way to deal with them is just to switch them at all, switch them off. And we can, of course, do it with the preferences, go to preferences, find the right line here and switch it back. But I have a smarter way. It is a way by using find action feature. Do you use it? Or, my users, do you use it? Okay. So, do you know that you can, with this shortcut, find any every action in the ID by the name, like start searching like copy or something like that. And it is also a good way if you forgot some shortcut to remember it. But it is also a good way to change preferences. For example, if I start typing not tab, but tab placement here, you can see that all the preferences as well. So, just start searching and you can just manage them from there. There is no need to go to preferences. There is no need to search through all the preferences lists. So, please use it. But, you may now ask me if I don't have tabs, how I'm going to navigate through my recently edited files and so on. And the best way to do it for me is to choose command E to see all the recent files or to shift command E and you will see all the recently edited files. And for that, speaking, you will see all the files and tool windows and from my point of view, it is much better than tabs. And of course, you can just start typing here to filter if you have the huge list, if you have edited a lot. Okay, so another thing that I, sorry, just want to click escape. If you still want to go to let's go back to controller and sometimes if I'm in view, I can do with the simple icon. If I want to navigate not only from my files, but also to navigate, let's do here, for example, to navigate through all the methods, for example, in my class, in my file. The best way for me to do it is to use command F12. It shows structure pop up and it shows all the methods. And the interesting thing here is that if you will click it once more time, you will see all the inherited methods as well. So sometimes quite useful. And another thing, a little bit more smarter, a way smarter navigation is actually to use go to definition, because I believe that a lot of times what you really need is not to navigate to any file or class, but to navigate to declaration, to definition of any variable method you are looking at. And the best way to do is to use command B and you will navigate to definition, to declaration. Okay. And you can use it again and again to dig your code. And you will navigate to libraries to gems as well, not only through your source, project, but through gems as well. And you can also use this one is command Y. If you don't want to switch to that file, where the definition is you can use this quick definition pop up to see the method definition in a pop up, not going to the file. Okay. So now I have a question for you. Please raise your hands if you already use something new from the last slides. Okay, great. Now you can leave. No, I'm joking. I'm hoping that you will use something more you as well. Okay. Let's talk a little bit more about coding now. So yeah, starting with creating new file, I think that it is very basic action. I hope that you know it. But interesting thing here, hopefully know it, that you can use Rails generators from here as well to use your scaffolding controls and whatever. And one more thing here is that when creating, for example, a new file, simple file, you can also use like directories here and everything will be created for you. No, I don't want to edit. And with this auto scroll from source action, you can see that you will be navigated in your project structure very fast as well. Here I am. No, don't really need it. So I'm going to delete. Yeah.  And for making that I don't want these files to be stored in my project structure. I don't actually want them to be stored in my version control system or whatever. I just want to play with them. And the best way to do that, not to create these temporary folders and these 4 rb files, but to create scratch files. And you can do that with shift command n, create for example some ruby file and it is like file but it is not physical file and it will be stored inside inside ruby mine inside IDE. But still you can start coding here and everything will be available like code completion. And good thing is that you can also use shift control r and you can run it from here as well. So for ruby code it's pretty useful from my point of view. Okay. And if you want to go for example to see where these files actually are you can go here, go to scratch files, again the same box, sorry for that but I won't do this now. And you can see there that for example I have free scratches so they are stored for you. You can then back to them again and do something. Okay. Hmm. Okay it's just my thoughts about this bug. Let's go back to some controller. For example this one. This one. Of course when coding you manipulate code a lot and you use a lot of copy and select code actions and so on so forth and ruby mine they're pretty pretty basic files but still I don't know if you use it you can use this extend selection it is quite useful it will select the chunks of code semantically and you can then like for example here yeah. And you can then for example move them please don't do it paste just move them if you need moving. And you can also copy some lines and you don't need to select the whole line you just need to put a cursor on it and you can duplicate them delete them again you don't need to select the whole line just put the cursor. And when copying a lot of them and if you need to paste you can use it with shift and you will see the history of your clipboard sometimes it is useful as well and we also do have some multiple selections you can set multiple course source by finding next occurrence for example and you can just start typing and you will see that code completion is working here as well for all the places and so on and so forth right now speaking if you want all the power of for example WIM editing and by the way who is using WIM ok so for example if you want the whole power of WIM editing code editing in RubyMind so if you want to have the boss from both worlds the best way to do it is to install a special plugin you need to go to plugins find sorry idea WIM plugin you need to install it it is not bundled from these general plugins and once it is installed you can go here to tools WIM emulator and just enable the emulation I won't do that but if you want to try then welcome to go after my talk or to go to our booth JetBrains booth we have it and to try on my laptop for example with this plugin just to try all the actions because I'm not a WIM user so I'm just not even not pretending to try all this smart things from WIM but you still can take a look how it works in RubyMind ok so one more thing about editing a little bit more about code snippets so do you use code snippets ok so ok so in RubyMind we have a lot of predefined code snippets but you can also create your own ones and sometimes it is a great way when you have a kind of very looking similar code that you don't want to type a lot of times and I'm not thinking about defecting here it's another topic so you can just select this code fragment and go here like save as live template here it is and you will need to add a title for it and you can go there and add some variables here I also want to add variable it means that I want to put a cursor another line after ending with this code snippet ok let's now try so if I go there sorry and now command G and TCC here you can see that cursor was placed on the right place it is the first variable place and now you can start just typing and complete and it will be completed according to our code snippet template and then I just click tab and go to the end of line it is the end of my code snippet ok so let's go back to them to the list just to show you that of course you can also use a lot of predefined ones or you can change them slightly if you want or you can set up your own ones and we have a lot of them not only for Ruby but for JavaScript and Rails and SQL and everything ok I'm just going to delete this one another really quick way to code when I'm now talking about html it is emet so anyone using emet here ok I really I do like emet I'm not really experienced in it but still so you can use it in RubyMind as well just start typing and with the tab it will make you html from your emet and another thing that you can now select this code and use shift command G now alt command G and surround it with emet so like here yes here it is and you can also if you're not really sure about your emet I use it a lot you can also choose emet preview oh where is my link ok oh I see it depends on the place where the cursor stays so you can preview before adding to your code ok and now for example if I change something let me sometimes I want to look at it a little bit nicer and I mean that sometimes I want to after that to reformat it to make code style looks good so talking about code styles there are several there are several ways to work with the code styles in RubyMind and first of all we have a lot of code style preferences you can change them if you want to they're based on some community community styles and you can use this alt command L or with shift to define a scope for the code fragment that you want to reformat according to this code style settings but actually you can also use editor config anyone using editor config yeah you're not doing a lot of open source or something like that because they really do have editor config files with the code style settings just to have the same code style for all the developers among the project ok so by the way if you have editor config you can just put this file editor config file it will be got from here sorry for my English and if you're writing JavaScript and using ESLint you can set up RubyMind to use this one as well so it's about code style ok we'll have not a lot of time here so now I want to talk a little bit more about not only writing your code but about cleaning it up so about some inspections and refactorings hope you know and about our I need some broken code at least ok yeah here it is hopefully you know that RubyMind highlights all the errors according to a lot of inspections that we have and it provides a quick fix option so with alt enter you can see that you can see that it was unless used with else and you can just click enter to fix it to change the code and sometimes into the good way just maybe to provide for example new methods so not only to clean your code but to write it as well like you're just then you're just going to intention action and create it with one click so and one thing that maybe you don't know that you also have this small icon where you can manage your highlighting level and switch the power safe mode if you need to so if you don't want to have all these highlightings no problem just don't be panic just switch it off okay but be responsible for your code in this point and we have you can also run the code inspector through all the whole projects for example to see all the errors that RubyMind can find and I want to show you one of the examples it is not only inspecting but it is also about like anything duplicates yep RubyMind finds all the duplications in your code you can see the details here like here it is almost identical you can see or like here it is just identical and it means that if you have a lot of duplications in your code it means that you want to do something with this with this code it is definitely not dry and you can just go from this window to your editor you can see that we have navigated to an editor and RubyMind highlights this code fragment and now I can for example just select it and use my refactor this option and for example extract method from this code some new method okay and this dialog is very interesting because you remember you had two places with the same code so RubyMind warns you that if you are extracting a method from a code fragment if you do have the same code fragment so you probably want to change to invoke this method there as well so do you want to replace it yes do you want to replace it yes okay so it is just a way to inspect and refactor like your code okay now let's talk a little bit more about testing and debugging stuff all my tests with rake yeah and while running maybe if you use testrunner maybe you know that by default it is on the bottom but you can always move this tool window on this option you can move it top bottom left or right no matter I like to place it on the left but maybe you prefer some other options the interesting things here I want to show you is this small icon it filters all the tests so you can see all the list of tests or you can just click and see only failed ones so I think that you may want to stay focused on the failed ones not on the green ones and you can see what was gone wrong what was wrong by switching and you can see yeah here what was going on and you can just navigate by clicking from here to the test code so quite useful and again if you want to if you have some failed tests but what was wrong you can navigate to test and a good way is just to debug this test it is like a quite natural next step I guess so you can just put a break point here and you can debug control shift yeah I just forgot okay so you can see that now our test is running on a debug mode and we stop the break point you can see that and we can see the list of variables here yeah and we can go step by step okay set equal maybe just one more time to show you without step over but with step inter so here it is you can step over you can go through your code look for some more details and by the way you can also manage break points you can go to these more break points and see all the break points through your code you can enable or disable them so if you have a lot of them sometimes it is also useful and you can also add some break points and and etc and one quite a new feature that I want to tell about debugging it is this small preference non-source no where is it oh I know where is it yeah ignore yeah so we can go there and you can see that we have this small setting in debugging stepping and it actually means that you can decide whether you want to step into your libraries into your gems or you want to stay inside your project so if you don't want to go to dig into all the libraries just put this setting and you will debug by stepping over only in your code even if you have break points in your gems you will go only through your code and step on break points in your code in your own code okay so the main tips and tricks and just one more question if you use version control system with ruby mine if you use ruby mine okay we have not a lot of time and maybe if you don't mind I will answer all the questions afterwards because I want to show you one more tricks if you don't mind okay so about version control systems it's quite a useful thing let's go to version control and okay you can see all the history here for all the project for all the repository and you can see your local changes but the useful thing that the small trick I want to show is that for example if you are going to if you are going to commit your changes not push okay common K it was the wrong shortcut yeah you can see that we have this commit dialog with the diff view as well and now you can actually edit your code just in your commit dialog if you need to fix something small and you mention it you don't need to go back to editor you just need to check this icon and now you can just change whatever you need for example just get the version from the left or just start typing here something so whatever you want so it's a small trick that from my point of view is quite useful if you are using version control systems okay and one more question is about databases do you use databases in RubyMind database you okay so you know about them quite a lot but if you don't use just want to let you know that we have this database where you can see all the data you have just open your tables you can see all the data of course you can even change the database from here but I think it's better to do with migration files you know so but when you want to look through your data and to have some queries like we do it's sometimes good to go for example to where is it yeah here it is like open some console and just start typing and it will well highlight not highlight but complete everything you need and you can run them and what else so you can play with the database and you don't need to set up everything cause as far as Rails project do have database configurations files actually everything you need when you set up your database the first time you need to go to this database click here and you can see part from sources so everything will be suggested to you just according to your database configuration files so it's quite useful for my photo view okay so that's it only one minute left thank you for your attention if you have some short questions I will be glad to answer we can just have a chat after the talk or at the booth we have a booth at the exhibition called JetBrains so if you want to have more demos if you have any questions we will be glad to help and there one guy he is a developer to remind you so if you want to blame something to have some bugs to talk about come on you are very welcome okay so thanks thank you