Here we go. Welcome to this talk. This talk is about building server applications using Objective-C and NewStep. Well, the reason I'm giving this talk, really, is because this is an argument which most people can't really know. Actually, NewStep is usually identified with this GUI development framework, mostly for GUI applications. But in fact, it's composed of two parts. One is NewStep base, which is a new graphical kind of foundation, Objective-C, and the other part is NewStep GUI, which is more for graphical stuff.  So it's actually a really cool and finished piece of software that you can use. But it's really little known, it's actually little known to the public in a sense. The company I work for has been running very large scale applications on this, like big messaging servers, or SMS with amplinos and stuff. And it really works really well. So I always wondered why nobody else was doing it. So I give this talk just to give an overview of what you can do or how you can use this stuff. By the way, if you've been to the Tokyo State, this is coming up in place with that. Objective-C, which is the language used by NewStep, is open to the programming language. If you're using NewStep to do several applications, you are going to use Objective-C. There's not much point otherwise. Well, there are some other options which we discussed in the end, but this is your main option. Obviously, Objective-C is a strict super set of C, meaning anything you can do in C also works in Objective-C. You can compile and link Objective-C libraries in your Objective-C program, which means particularly for server stuff. It's great. You can take open SSL, you can take whatever else you have. Just any C library, you can just link it in and use it. So the main difference between Objective-C and C is that Objective-C adds a number of new features, if you want. Some syntax constructs that you can use that allow you to define classes, name, object, instance, date, methods, invoke methods, etc. And actually, quite a few quick advanced stuff that sometimes you don't even find in higher level languages like forwarding or categories, etc. So why is Objective-C so special? In fact, why is Objective-C so good for server applications? Because I think it's a perfect match. And the reason is, first of all, it's just C. It's compatible with C libraries. It can be as fast as C if you just use the kind of C subset of it. So if you're writing your server and you just tap bit of code that really needs to go really fast, you just write C code. You just use C arrays and I can write everything. But if you can also use its object-orientated extensions to structure your software like in a very good high-level language, do your nice design patterns very dynamic. And then the nice thing is you can mix the two things. So once you know a bit of experience, you can actually kind of change your style and have a bit of part more of C-like, a bit of part more of small talk. So really compressive and a wide range of things and applications you can do with it. So it's extremely flexible. And actually for server applications, it's a foundation class library. It's really powerful. It's really good and brilliant. Now, why would you use object-orientated C for server applications? I've already said that. It's very fast. You can mix it with C. It's an high-level language which you can use to design your stuff properly. And you've got this powerful foundation library. So let's have a quick look at the foundation kit, which is what this talk is mostly about, basically. First of all, use that base, which is this thing, actually implements the foundation kit defined by this API from 1994, which defines a number of classes for an objective C foundation framework. We look through some of these classes later just to give you a better idea of the capabilities of this library. Obviously, you've got obviously the root objective C classes. You've got strings, numbers, data structures, arrays, dictionaries. Very interesting for servers. You've got one-groups, timers, I'll talk about later. You can do IO, notification, a lot of stuff. So this was the open step kind of API. This is how the open step actually does it. You can run your stuff on any operating system, in particular all the various unit variants, which are probably the two most interesting ones. You need a new objective C on time, which is shipped with a free software foundation GCC, so you don't really need to do much. And obviously, that's the base. Okay, so let's have a quick look at what actually you need to build server applications with the new step. First of all, you need GCC. Most Linux distributions, for example, have got a separate package for GCC, so GCC is what I've been able to see. It just gives you the objective C compiler and the objective C on time. You need a new step made, which is a small made file library. It's the official new step build system. Basically, you buy some very small and clean made files, and then the new step made will take care of all the compiling and linking and porting to other platforms. And finally, obviously, you need a new step base, which is this implementation of the foundation GCC, which provides you with this core objective C classes you can use. A couple of important dependencies that you actually need. I already gave an XML, which everyone has it. This one is a bit un-neutral. You need this library called FFI. That's because new step base supports forwarding, which means you send a method to an object, and then the object, without even really knowing that it was called, can forward the method to another object, which is very good in certain very advanced design. Anyway, you just download that library, install it, and that's it. If you want to use HTTPS, you can use the base. You want to be able to connect to HTTPS as servers, or actually write in HTTPS server. You probably want to use UnityOS for open as a self. Obviously, you just install those libraries. Now, I need a quick look, and this is just to give you an idea of how easy it is to install a boot. I just picked up an institution. You just need to do up-to-the-end or start package the boot, then get on your dependencies and you're ready to go. This is instead, if you're installing it manually, which, for example, is what my company does, we install all our servers manually. So, it looks imposing, but that's really all you have to do. It's not much. You need to install a couple of... So, GCC and XML open as a self, obviously. You get Libre for five from that. You just simply install it. Other quality may, if you do like that, it will be installed and you use lockouts, obviously. You just need to make sure that the link will find the libraries and it will have the lockout sort of thing. But you just have to make the configure-make-make install. You get new step-based and the same. We use open as a self, so you need to pass this lock and enable open as a self to be configured. And the only really unusual thing here is you need to source the script. There are ways where you don't need to source that at all. But as a first start, just to make sure it all works, you source this script which will set your part, set your library part, and you don't have to worry about that. Once you're a bit more familiar, you can actually do an FHS style store where your programs end up in USB, your libraries in USB, and you actually don't need that. Okay? So let's have a very quick look at how you compile it, actually, in objective-seeing user-based program. This is a three-day example, the same example used yesterday. So import, this is the main header for the foundation for user-based. So once you import this header, you have access to all the user-based functionality. And this is just the tiny NSLog, actually, right through Stannabarrow. So typically, you use it in service to log stuff. And that is a static string. The syntax at and then the string is actually a static NS string, which we'll talk about later. This is an example going to make file which compiles that thing. Actually, if you have more files to compile, the make file is exactly the same. You just list them all here, all your source code files, then you type make and it will work. So the structure of the new make file, first you include this comment on make, then you specify the name of your program, which is hello, and the objective-seeing file is composed of the program, and here you can just list them all. And then you include this thing, this other make file fragment, which builds tools. Now, there are different make file fragments, different things, like libraries, bundles, which is like a plugin that you can load in your program. The tool is basically just a non-graphical objective-seeing program. So for server stuff, if you're doing a server, it's exactly what you should use. Once you've written this, if you've sourced that script, which will actually redefine this variable, you have all the usual commands, so you can type make it with bin, you can do make clean, make this clean, you can do make install, which will install it. It will give you quite brief output, like compiling file. If you actually want to see the GCC command line, the link, exactly, just add these messages, yes, and it will be going to variables mode, and prints everything that it's doing. You can also use it for make install, for example, if you want to see where things are going. Actually, it then supports a lot of other stuff, like yes, all the stuff you usually expect. But probably, you just need to know that. And when you type make, it will tell you there's a special target you can run to get help, and it will be printed in the first line. Okay, at this stage, it was planning to do a quick demo, but with a thing that it would just keep down. Anyway, basically, if you put those two files in there, type make, it will compile them, so that it's not that great. Okay, now, if you're actually trying to do this, where do you start? First of all, you need to just know a bit about GCC, about this Gluster-based foundation you were using. This page has got a number of tutorials, which I actually wrote myself. And it's a good starting point, like for those make files, for some classes. You use the base as an extensive API reference, which I think is pretty complete. Okay, almost complete. And that's kind of where you're at.  You can actually, I don't know if you can hear, but you can actually also go on the Apple website and look at their foundation kit, which is a similar API. So sometimes they may be misleading, but... Now, okay, let's have a look, like the basic classes of Gluster-based, such as strings or arrays or dictionaries, etc. It's got quite an interesting design. You would expect you can't do much with those such basic stuff. Everyone knows that. Actually, Gluster-based foundation kit has some very interesting ideas in the design of these classes, mostly for performance. One thing it does, it uses this class-to-design, which means, basically, it's a way of optimizing the classes without kind of changing the API. So when you create a spring, which is a spring, you don't always get an object of the same class. You get an object of the... It's called a concrete subclass, which actually is optimized for that type of string. Well, because, objectively, it does dynamic dispatch. When you call a method of the object, then depending on the concrete class of the object, a different implementation will be used. That means if you create a unique string, or if you create an ASCII string, you use exactly the same API, you don't need to know which type of string you have created. That type of string will know, and when you do things on the string, it will use the optimized implementation for that type of string. That also is done for arrays, for dictionaries, in some cases, and you can even implement your own subclasses. So if you've got a particular type of string of array or array, or that you really have your own way to optimize it, you can actually implement the subclass, and then pass it around whenever a string is required. You can pass a string of your own class, your own optimized stuff, and it should work. The other thing is, there is a distinction between mutable objects and new mutable ones. So you've got NS string and you've got NS mutable string. That allows you, that allows the classes themselves, like when you put strings into arrays, or dictionaries, or do things, to actually optimize quite a lot because you know that a string, an NS string can never be changed while an NS... Yeah, so I didn't say that. So the difference is, a normal string, like an NS string, is a string you create and you can never change. If you plan on changing it, you should create an NS mutable string, which, and then you can add characters to them, et cetera. So let's very quickly have a look at these base classes. This is an example of NS string. This example is... the team also supports static strings, like this one. Again, this is basically allocated by a compiler. Obviously, NS string is a string class. It's got full, unical support. And one thing which is really key for server stuff is this class-class implementation means ASCII string is still extremely fast, even if there's full unical support. So you can... anytime you want to just put a unical string in it and it will work. But if you put an ASCII string, it will still be really fast. So, unlike Java, for example, where strings are really slow because it's always a kind of unical mode. It depends on the implementation. This is a typical array. That's a properties, which is a way of describing these collection classes and realizing how to serialize them. But anyway, it's just to make sure you understand an array is this thing. Well, the dictionary is kind of an associative array or ASCII will depend on you. The terminology used. So it's more like that one. So it's got keys equal value. Again, you've got... It's important to know if you use the API. The only thing you really need to know is you've got the array class, sorry, the NS array class, the static stuff. If you want to change that, you can use the NSMutable array. And prediction is actually the same. Now, I don't have time to go through all of the glue step base classes one by one. I just want to mention a few ones that may be good to know. So if you go and look at API, you know where to go. One thing you probably want to do if you're writing a server is like your server will start a run loop and wait for sockets to connect in or wait for some time to arrive to do something or for something to happen. That's a typical thing. So for that, you will use an NS run loop. You've got a full-length base model. You've got NS file handle. It allows you to do IO, which is your integrated with your run loop. You've got NS timer. You've got this class called NS thread, which you can use. For locking, you've got NS lock and there's another bunch. Another very nice feature of NS is called notifications. It's pretty easy once you get into it and it's really kind of addictive. It allows you to connect objects in a very flexible way. So you've got this thing called the notification center. That's the class NS notification center. You can have objects which can observe notifications. So you have an object that's waiting for the NS file download completion thing. When something else will post that notification, your object will be informed that that event has happened. You specify which method you want to be involved when that happens. So you've got a notification center with various observers that are observing notifications. Then something else will post the notification to the center and all the observers will get informed. That's nice. It's a standard design pattern because it allows you to link basically the observer to the object to post the notification without actually themselves access it flexible. Obviously, if you actually want to use the standard notification center, if you look in the NSF code, you will see it used a lot. And it's a very good idea to use it in code as well because it's really flexible. The other thing that NSF buys and NSF in general do a lot is using delegates. Now, this is not really implemented in the library to create delegates. But it's something that is almost everywhere in the API and it's actually something you want to do in Europe and APIs as well. A delegate, basically. The idea is in object-oriented stuff, usually subclassy class to extend it. The problem is sometimes that's very heavy. You have to create a subclass. It can be quite messy. You have to create a subclass without subclassy. So you've got your class that does something and then you add that and set delegate and a method to return the delegate. And then whenever you're using an instance of the class you can set a delegate. And then the class obviously, when it's processing at some point, you check if there is a delegate and if so, we call the method of the delegate to ask for to delegate some of the processing to it. It's very flexible and it's really good. So it's if you actually, even if you are not going to do this it's a really good thing to have a look and see how it works in the other step API, etc. That's just a C sharp delegate sorry, function pointers. It's similar to C sharp delegates, right? Where they're basically function pointers. No, it's really different. It's totally different.  So it's totally dynamic. Whereas in C sharp it must be already there, it must be defined. It's not the runtime thing. So a delegate is an object for support. So you've got your object, then you've got another object. Let's say you've got an HTML parser and you want to do SUCKS stuff where when it finds a tag you could call a method in your code. So you could have a delegate which is what you're supposed to implement to actually react to events and then in the XML parser you send the delegate to whatever object you want. And then when it finds a tag you would call a method of the delegate which does something and goes back and it finds another tag and you call the method. So that's how it works, that's it, yeah. Okay, I'll see that actually because I think I was getting the point but I don't know that it's too different from my time, yeah. The only thing similar to that is the name which you saw, but it's really different things. Yeah, no, thanks. Anyway, I have to say it is a standard design pattern. I'm sure you can find it in almost all the other but here it's really new slide. In Java it's the listener. Listener to listener. Is it? Well, actually you can have delegates in Java as well. We'll do that in time. As an object of C, you do not invoke methods directly but there's actually a concept of the selector which represents a message and it's completely decoupled from the lookup process in the class. So the delegate or something as a delegate can be completely dynamic. You don't need to know what methods are implemented in there. For example, if you pass an X and R you can write class which has methods like begin for any tech you could write a method and of the X and R class could dynamically ask whether it's implemented or not. So it's quite common for us. Now I understand that but it's like a package that has actually been built. Yes, it should have. Another thing that can be another thing that can be something that most of these provides is something called distributed object. Again, that's basically it's remote method invocation. You have there's millions of implementation of that. But this is quite high level and natural and does use again some of these objectives see really dynamical stuff. So basically what you do is you've got your process, you've got an object in your process and you can expose it to the network processes can call methods to the object. The fact is the way you use the API it looks as if that object in the remote process is actually in your own process is like an object like everything else. It's very very natural to use. It's great if you've got a number of processes that need to talk to each other but are separate process and just sometimes involve methods of each other etc. Which can be handy when you're building servers etc. Now I don't have to go to that but I wrote a nice tutorial on this on that webpage so you can have a look and just get an idea. Now I thought I would look at a few of the most useful libraries you can use if you're doing server development with injectancy.  If that does provide a number of server kind of libraries most of them are in their small human subversion but I go through the most interesting ones in this talk. Then you've got other parties that provide some very nice subjective C libraries. For example Soapy from the Open World Project which is a full application of server we'll briefly mention that later. And obviously there are some libraries for Apple Cocoa that you can reuse their written objectives in a very similar API. Some of them are actually officially ported to Blue Step so I don't know if you've got some weird format you need to parse you may find something for inclusion something for Apple that will just do it. First thing we'll quickly discuss is just the database libraries because if you're doing server development chances are you will need to connect to database. The first thing you can do obviously is just use your own favorite C library if you have one or so if you're connected to Postgres you could just use the Postgres C Binds and just use that. Genusna provides two database libraries which I will discuss in great detail the other one is called GDL2. Finally if you use Soapy for example Soapy has got his own database layer which obviously if you're using Soapy it's definitely the best choice if not I'm not so sure you probably just want to use one of those. Let's have a look at these two. First of all SQL Client SQL Client is just an SQL layer so it's pretty kind of low level in the sense you write a SQL code and just execute it. As for backend bundles a bundle as I was mentioning before the terminology for plugin has got plugins for the different databases Postgres. These are the ones that are currently provided in the standard distribution as Postgres or SQL SQLite and Oracle. The focus of this library is really on our performance and it really does provide cool stuff there. It does connection pooling obviously it does all the transaction support now because it does query caching so it can do a query and say that you want it to be cached for 10 minutes so if later on your code does the same query it will just hit the internal cache. The other thing you can do very nicely is batching updates or inserts If you're doing really high performance stuff it can become important to just batch a number of writes and a single transaction which is executed faster so this allows you to as your code goes cannot take statements to be executed to a transaction and when you reach the end you just execute them all and if the transaction fail you will actually if you want just retry all the insert of updates one by one to make sure that you if one of them is wrong as well as a completely different approach is trying to go for the high level stuff so this basically provides you an object-to-relationship mapping framework it will automatically convert your database stuff into objects it allows you to it does extensive use of those KBC, K viewer things which are cool in Objective-C which allow you to change stuff into other objects so then we have and basically strong MVC button very nice stuff I've got an SQL layer at the bottom which again I've got different adapters for different database it's really good for rapid development so you've got this classes but in other classes you can program to more than your database how do they compare well if you're performance oriented you just want to use a secure client that makes sense particularly if you're basically going to write and tune every single query anyway if you require that level of sophistication in terms of performance obviously you don't want anything to generate queries for you and then you should just go with a secure client if you're looking for an ideal framework where you can work properly with properly designed stuff etc models, objects etc you don't want to write SQL and GDF things for you performance in general I have to say it's a bit hard to get into because it's modeled over a load framework for next step called UF so the people who knew are you know everything about this the people who have never used it it's usually hard to get into but once you get into it usually people just fall in love with it and say it's the best thing ever question? how does the materiality of GDF2 compare to the materiality of EOF let's say in 5, 6 years ago good question anyone who might have been inspired I'm sorry I think GDF2 is supposed to be better at the moment I think there are people using it in a real life situation in production but for example I'm sure the doctors are full tested and the Postgres one works really well I'm not sure about the elements so it may not be as polished as Postgres my question was not so much about the adaption database adaption but it was more about framework itself I used to work with EOF from 2003 so I've been there since I looked at it and that's one of the reasons but it was really good and I can imagine that this could be better because I guess it had the same tactics as the doctors which has exactly the same EPI, the same class names but I can't tell you how mature this is I didn't test it okay I was just curious I think they are better suited ones excuse me ok is it a requirement of GDL2 that there is a database behind or is it is GDL2 just an object persistency no no no ok sorry it's not always like that so you've got my Postgres you've got it in your application to access Postgres you use GDL2 the point is you have a screen database in the first place and you want to use it but you could because I wanted to ask a kind of trick equation you say once you use the GDL2 you never want to use it but what about object oriented databases like Jamstone or I don't Halge yeah what about object oriented databases like no because Nikola said once you use the GDL2 you never want to use anything else but if you could just start the transaction and persist your object without doing anything that would be an object that we don't have on the object that's here right yes so the problem is just a map an object relation database map and you have lots of trouble like if you translate for example then your object graph that you want to save to the database is obviously not the same like in the context of the object to the database actually using GDL2 probably as well as using your FQ code write an object database because the high level stuff which for example so use interface to the database that's completely separate from the storage layer so if you have something that's just part of your object score which does all the mapping if you would want to you could just utilize the object and write them to the just the possible you can just graph file one or something else the question was what if there was a map in there you don't need to do the mapping using GDL2 is actually two parts one part is tracking the state of the object which you could use in the object database backup some kind of transaction in memory transaction so trace all the changes to the objects and when it saves those changes you could either write the objects as a serialized form that's where the mapping kicks in or you can serialize them to a SQL database but it's really independent those are two different parts there was also one time a platform adapter for UF you could just it's already met you don't need a database as such the one is there okay another library which is used to provide this library for web server library which allows you to connect basically to AP servers this is not really for building web pages it's more for API, transaction on APIs where someone is calling your API team do something connect to your database or something it provides a kind of full web server, usually use it without it's quite handy if you actually need to do that in case you need to interface with Java stuff there's a GNU step to Java interface which allows you to use Objective-C Object Classes etc from Java from Objective-C it's very cool, it does work there's a number of cons though it can be slow so you don't want to overuse it if you have a problem it's hard to debug because of the cross-language calls support for cross-language sub-classing is actually a bit limited and it's not easy to port to other platforms one of the last things I wanted to mention was Soaping which is a basically web application server environment it's got an extensive set of frameworks and a lot of stuff which you usually want to do with this thing it's kind of compatible with Apple Web Objects even if it's got its own concepts and extensions so it's not perfectly happy compatible it's kind of clearly derived and mostly it's not even trying it's not even trying it does do a lot of stuff to do XML processing XML RPC obviously it does MIME, IMAP etc it does LDAP it does horizon database stuff and it does icon processing if you're interested that's the URL where you will find more information we forgot to mention Twisted Web it's a library which is modeled or compatible to at the Web Objects or next Web Objects it was this time 4.5 I guess and it uses contrast to Web Objects today which is now Java based it's still an Objective C and the API is a little bit different the prefixes are not really O but GSW what I think you can configure that you can configure it I didn't know that it's supposed to be 100% comfortable with Web Objects and it's alternative to ZOP just looked at the glass names and I thought what's that so you don't know what we need internally we need to Web Objects which is this Web Development framework by next step originally now by Apple SOAP is a very good one but there's another project which is GoonStep Web which is more compatible less advanced though I don't know what do you mean I think they are stating that they want 100% compatible but I think that more compatibility is okay so we have four legacy applications the SOAP and they work any more questions thank you very much if you want more information on the website some main English gas questions and good luck


Thanks for checking out this movie review video. So this is for the 2020 release Train to Busan Peninsula. And yes, it's the follow up to the very popular zombie film Train to Busan from South Korea. Now this is going to be a shutter exclusive. It's coming to shutter on Thursday, April 1st. And because I'm putting this review out before that, this is a no spoiler review, but also just because it's new to that streaming service. So just going to give you some information and you can take it as you want. So before on this one, I by and large don't really like zombie films, but I did like the original Train to Busan. So for me to really enjoy a zombie film, it has to be very different. It has to have a very original interesting take because I personally think that zombies are super boring and dumb. And there have been so many zombie movies and shows that have been out over the past well, more than a decade really at this point that I'm just sick of them. So in order for me to actually like that stuff, it needs to be very unique, very interesting, have a really compelling and good story. And as you can probably tell with me ranting about that, this film is not that for me. But if you just like anything zombie or you're not that hard to please with zombie films, you may really end up liking this because it looks really good and there are good things about it. So I'm going to break it down good and bad, but I just needed to get that disclaimer out of the way first. Written by Sang Ho Yoon, who also did Train to Busan and also the little animated short that they short film that they had for it called Soul Station, which I did not see that. And I think it was on Shutter for a little bit. I might be wrong about that, but it was on Shutter or maybe they even still is. I don't know. Written by Yoon and Ryu Yong Jae, who has no writing credits. So this was our first time working on a script. This actually takes place four years after the events of the original Train to Busan, but it doesn't really have any connection to any of the original characters in the film or the place or doesn't have any connection really, like pretty much no connection. It's just called Train to Busan again and it's in the same world and it's four years later and it's based off the same zombie situation. So very quick synopsis, it's a zombie film that takes place four years after Train to Busan. I mean, that's really, I mean, I guess what I can tell you is that I don't want to ruin too much about it because there's not a ton to the story itself. So I want to leave as many surprises as possible if people actually want to check it out because it looks good. And like I said, if you're if you're down with zombie films, you may very well really like this thing. So I don't want to say too much about it, but they do go larger in scope. They do more with a lot of scenes. This whole like bigger, better, you can tell it's kind of probably a bigger budget for the film and it just feels that way. So just know that. The beginning sets a bleak scene as the backdrop for the film, but you knew that if you saw the first film that it's bleak. But there's one particular event that happens early on that's supposed to kind of set the tone for the world they're living in and kind of what's been done to humanity in a sense since the zombie situation occurred. And that's kind of a theme that continually comes up, which you could probably end up guessing because that happens in a lot of zombie films where there wasn't really a military element in the first film. There is one in this film. So you feel like there's kind of a bit more hope for survivors. Now this is one of my problems in general with the film in comparison to the first one. The first one was mainly like, you know, civilian people, you know, for the most part closed in a train for the majority of the film. So it was very kind of like little hope with people who are normal people in a very confined space. So it felt claustrophobic. It felt more high stakes and it felt more hopeless. The problem with this film in my opinion is that it expands the world a lot more. There's a lot more space. There's a lot more opportunity to get away, to live, more options for ways to get around the zombies or fight the zombies. And then you also have a little bit of a military element injected in there. So that kind of ups the survivability. So I think for that reason, it's it just doesn't feel as high stakes. It feels more relaxed in a sense. And I don't know if other people end up feeling that when they see the film. But I just think in comparison to train to Busan, it's a lot less intense. It's a lot less high stakes. It's a lot less interesting, in my opinion, for the most part. It feels like any random zombie film I've seen for a long time. I've seen so many. Yeah, the film looks, oh, okay, real quick, there's something that happens early that's supposed to have a big impact, but you don't know the characters. So it kind of turns into low impact. Now looking back on it when you get further into the film, maybe you'd be like, oh, now it makes more sense. Now I feel the impact of it more. But there is kind of this issue overall in the film that a lot of the characters aren't that interesting. They're not very well developed. You don't really have much backstory on them and you're just supposed to feel for them. So they're not very good characters. There are a few. There are a few who are kind of interesting, good characters. But I don't think they get as much screen time as they should. They get an okay amount of screen time. And those are kind of the more bright parts of the film, in my opinion. So some people may be able to guess who I think are the better characters. You can put a comment down there because go ahead, spoilers in the comments. We can do that. The film looks good and their dark scenes don't end up being too dark. And I'm not talking about dark subject material wise. I'm talking about dark as far as lighting goes because there's a problem for some films when it's dark to be way too dark. So you have a hard time seeing what's going on. They do not do that here. You can see everything that's going on even when it's dark outside. So they did a good job there. Directing and cinematography also looking really good. The acting is really good in it as well. No problems there. So from a technical standpoint, if you just want a film that looks good about zombies, this might be the film for you. It is really good looking. And there actually are some really cool scenes, especially later in the film, that I actually was pretty engaged with kind of the more, like I said, they go bigger in this than they did in Train to Busan in certain ways. And in some moments that really does pay off in a cool, engaging way. But it was mainly towards the end of the film. I already talked about acting being great. There's a mission aspect to the film, which I like as a concept for a zombie film. Now that said, it does tend to kind of get a little bit boring for the majority of the film. And it is like a two hour film. So I think they should have cut it down. I really think it needed to be cut down because the story is just not that compelling if they would have moved it a lot faster. I think I would have enjoyed it more just saying something happens about 30 minutes in that had me wondering where they were planning to go with it. So there was that little twist of intrigue. But then, like I said, it starts to get a little bit boring and the pacing little problematic. There's a callback from the beginning of the film that seems like a real stretch in my opinion. And yeah, I'd be interested to see what other people think. But obviously I'm not going to talk about the specifics of that because I don't want to spoil anything. There are moments of comedy and a lot of them actually don't end up working. Some of them do land and some of them were legitimately kind of funny. But there are too many of these kind of like try hard comedy moments. And it didn't feel appropriate for what's going on. Like it really didn't. I feel like they were very much shorned and they just didn't go over. Well, I mean, like I said, a few of them landed. But for the most part, they didn't. There are some solid action sequences with well handled camera movement. That's the other thing. I said there's some stuff towards the end of the film that's more engaging and cool and the camera work is really awesome during that. Because like I said, directing and cinematography really good with this film, the movements, how the camera kind of like makes its way around certain people and objects in scenes looks really, really good and engaging. I enjoy that aspect of it. About one and a half hours in, there's some stuff involving vehicles that's really fun and engaging. So look out for that if you're going to watch it. That's my favorite stretch of the film. So about an hour and a half into about an hour 45. So for those like 15 minutes, pretty fun, pretty engaging. I enjoyed that. They really do draw out the end, though. And the music is over the top at the same time. But some some people may really like it. They're going for big impact at the end. But I think they overplay the music a lot. They take it way too slow and just like focus on it way too long. There's too much kind of slow motion type stuff. It just takes too long. And I think for me personally, it starts to lose the impact. But also the characters just aren't that great. So I just just like, can we just, you know, can we just be done here? Like it's almost two hours. Let's just be let's cut it off. I got what I needed. Let's move on here. The first film kept tension high with zombies in a confined space. This one doesn't do that. So it feels like there's a lot more potential for survival, like I already said. But they do make the scenes a lot bigger in scope and increase the zombie count a lot. That's the other thing. Now, that said, I do feel like the zombies until the end of the film. It's almost like they don't matter. And that's one of the big issues with, like I was saying, with the first one, it felt like the zombies mattered the entire time. And there's low survivability and it's a high stakes situation. Things are so low stakes and things are so open that until the very, very end, when stuff really starts to go crazy, you kind of just feel like whatever about the zombies, like you even for a stretch, you feel like they're not even there, honestly. Like they have no impact on the story. And honestly, this script could have easily just been done. So they were no zombies. Like the main story doesn't even matter. Zombies don't matter at all, really. So, yeah. The story isn't that compelling and characters are characters and the characters aren't really either that compelling. Although, two, two in particular, I did enjoy. There are some characters who were kind of like, kind of maybe. But there are a lot of characters who just like they just introduce them and they're just supposed to be a certain way and you're just supposed to accept that. And it's just kind of like you can't just drop this on me and think that I'm supposed to care or like think that it's supposed to like fit the situation you're going for. It is weird. There's some real negative commentary on human behavior in a zombie situation. And I think it's actually probably all accurate for like, if we actually had a zombie apocalypse, I think that stuff would be pretty true. Basically about humanity just being terrible. I think it's probably pretty accurate. But, you know, if you've seen The Walking Dead or if you've read the comics, then you probably know those types of points they're getting at because it's overplayed. So in the end, I don't need this film. I was fine watching it once. There were some cool engaging films, engaging scenes and aspects of the film. Like I said, it looks really good, really good directing, cinematography and acting. And for the most part, the music is well integrated until the very end where it's way too over the top. But I didn't I don't need this film. We don't need more zombie films. I think for me personally, this is another casualty of the there's way too many zombie films, everyone's doing it and we should just stop because zombies are boring. And unless you're bringing something super new to the table, let's just move on, please. Can we just get more like werewolf films? I would like some of that or like creatures from the sea. I like underwater films. Those are cool. Anyway, that's just my thought. So out of five stars with half stars in play, I'm just going to give it a two and a half because I know I have some bias here because of my not liking zombie films. And there are some good things about it. But I think the story is just really, really lacking and it's too long. And that whole thing with really drawing it out at the end and some pacing problems. But two and a half. I thought about going two stars, but I'm going to be more fair, two and a half because it looks good. I mean, it is a well technically executed film for the most part. But put your opinions down in the comments. Let's talk about it. I especially want to hear from people who liked it and why, you know, what grabbed you about the film? And also if people want to throw some comparisons between the first and second film, you know, your thoughts on that, that'd be awesome, too. But anyway, thanks for checking this out. Do me a quick favor, though. Hit that subscribe button if you can. And you literally can because it just tastes like a second to do it. And I do really appreciate it. I'm just trying to grow this nerdy horror community and have more people to talk to. And sure, if I get a lot of subscribers, that would be cool, too. Let's just keep going, folks.  But I really do thank you for taking your time to watch this. And until next time, keep it brutal.


Hello friends, myself, Prof. Narendra Kartikar, Department of Mechanical Engineering, Valkan Institute of Technology, Solapuram. Today, I am going to discuss the on topic auxiliary view. At the end of this session, the student will be able to generate the auxiliary view as well as the student will be able to visualize the overall part geometry. Let us see before proceeding with the auxiliary view, what are the type of part drawing representation methods. In first year engineering graphics, you might have learned about the orthographic views, where particularly the 3 quadrant, 4 quadrant, 1st angle and 3rd angle, 4 quadrant method we are used to represent the part geometry in different number of views. For example, this is the front view, here we are representing the top view and besides the front view, we are representing the side view. This is the two dimensional method for representation of any part geometry. The second method which we had come across that is isometric drawing. The isometric drawing or isometric view representation is nothing but representing the part geometry in 2 and half d manner, even though we are visualizing the part in a 3d sense, but actually we are calling it as the isometric 2 and half d drawing. This is another method of isometric drawing. Now, after these two different methods of part geometry representation, we will proceed with the auxiliary view and we will discuss first of all the need of auxiliary view. Why to go with the auxiliary view? Whatever the constraints or difficulties come across in the representation of orthographic view will be overcome by the auxiliary view. Let us see the example of this part geometry. This is the simple part geometry which I am creating here. This is the isometric view which I created here. Now for this isometric view, I will generate the front, top and side view. This is the direction of visualization and let us represent here the front view. This is the front view. This is the top view. I am taking simple geometry and let us consider the side view also. Now, we have the two distinct view representation method. One is isometric and another is orthographic. Now for this particular geometry portion, in either of the view, the true shape is not visible. If suppose I want to visualize this particular hatched portion in either of the view in a true sense, it is not visible at all. Now, where to represent, where to show the true shape of this hatched portion? For the same, there is a need of auxiliary view. Now let us discuss the basic of auxiliary view. For the same problem, we will draw once again, we will refer the same problem. Now to get the true shape of this hatched portion, I have to visualize, I have to go the direction of vision in this particular side. Now to observe the object from this particular side and to create the view, I have to consider one more plane that is called as the auxiliary plane. This is the plane called as the auxiliary plane. I will label it as A1, A2. Now I have to look from this particular A direction and I have to draw opposite to this auxiliary plane A1, A2. For the same, I am considering the first angle projection method, first angle projection method. Now observing from the A direction and creating the view over here, which will deliver me the true shape of the inclined plane. That means the auxiliary view is going to be used for particular geometries which are not parallel to either of the principal plane, that is horizontal plane and vertical plane, as well as it is not parallel so that we can get the true shape in side view also. Now for the same, we have to consider one inclined plane that is the auxiliary plane. Now in the next slide, we will see that how to create this particular view exactly. Now we will see the two distinct geometries, the same geometry, this is the isometric view of the part. For this, I have to consider front and top view. This is the direction of visualization, x from the x. I will create the front view over here and I will create the top view over here. Now I have to look from this side and I have to generate the view to this side. Let us consider the auxiliary plane A dash. Now how to proceed for that? I have to take the projectors perpendicular to the auxiliary inclined plane. These are the two projectors. Now my geometry is simple one. We are creating the true shape of this hatched portion. Take the projectors to the opposite side of inclined plane, auxiliary plane. And now I have to transfer the distances. Now for that, which particular reference I should take? There are two to three alternatives. One is I can take the advantage of axis symmetricity. From this axis symmetricity, I can transfer the distances. Our second one is I can take this xy plane as a reference or geometry side itself as a reference eq. Now we will go here with the reference xy. Now which distances are required to be transferred? For that, let us label the points first. This is the point 1, 2, 3 and 4. So projection of 1 and 4 point into the front view, 1 dash, 4 dash. Projection of the point in the front view, 2 dash, 3 dash. Now taking the projection to create the auxiliary view, here I am taken. Now transferring the distances from xy. To transfer the distance, to plot the point number 1, to plot the point number 1, I will take this distance. Let us say this as a m. Now the same projector is coming over here, coming over here. From xy to point number 1 is m. Now from a1, a dash to point number 1 is m. I will transfer this distance, this distance to this distance. I will get 1 double dash. Similarly, for point number 4, I will take the distance from this total distance a n. The same way from a, a dash, I will take this projection up and 4th point projection is here. So this is the 4th double dash and this distance is n. Likewise I will cover the 4 distinct points that is 2 double dash and 3 double dash. So once I join these all 4 points, the geometry is created with of true shape. This is of true shape. Likewise for distinct geometries, I can transfer the distances and I can get the true shape. Considering suppose whole over here, considering whole over here, this is the cylindrical geometry. I have to divide the circle in 6 to 12 equal parts. I have to take the projectors over here. I can take it down over here and the projected geometry may be the ellipse one. So this is the overall idea about the auxiliary view where the most advantageous point is getting the true shape of inclined. References for this particular session is machine drawing by Siddhaswara Shastri, machine drawing by P.S. Gill. Thank you.