Cool. So recording and let me share my screen here. How's everyone doing? This is the get credentials binding project for August 4, 738 and India standard time. So I asked a question and I forgot I didn't introduce the meeting for the YouTube. And I'm doing great, although I have to admit I did not complete the things that I had envisioned doing in terms of preparing to test. So my weekend was spent on other Jenkins things not on, not on our project. I'm not sure why it was not connecting. It will give me a time out exception, but it was not working for me. The library is able to read the keys, past is collected or not past is collected, but I was not able to make establish a such connection. I believe has found another library.  If you're speaking. No, we haven't. And oddly enough, I don't have the thing that would allow me to ask him to unmute. I thought in the past, I had had an option that would allow me to invite someone to unmute their there, but I don't see it here so maybe I'm just remembering badly or maybe it was only from a webinar. Oh, I got it. Oh, looks like he joined as another account. Yeah, maybe audio problems. So you should ask something. No, no, I was just saying that you found another library to do the work right. Oh, yeah. Yeah, I was successful to create. I was able to read the RSA key but not able to establish a such connection. Yeah, so I found out that the fingerprint of the private key that is generated using the decrypted private key that is generated using the SSJ library is different from the fingerprint of the private key. That is, you know, encrypted. So I think due to that, we are not able to connect. So the keys are different. So the server won't able to recognize a match for that private key with the public key. Yeah, I just wanted to ask before you introduce the new library. Did you ever try to read the keys and use the client called SSH client provided by SSJ to connect to a remote server using any of your SSJ keeper. You are saying to that I should connect to the SS server that is good to use using the SSJ library rather than commanding. I, yeah, I mean, I thought that the fastest way to know if SSJ will be able to decrypt the keys correctly and then, you know, it is going to provide a key which I'm going to work is to use their own client to establish a connection with any server, any, you know, any place which has 22 port over and you can establish a connection with it. If that is possible, then those keys, you can be sure that SSJ is not creating an issue for us. I mean, but you've found a new library, right? And, yeah, and you were, yeah, please move forward. The new library is, you know, the Apache SSHD. So even Jenkins has a plugin for that. It's called SSH server. So currently I'm facing a dependency issue in the grid plugin due to this, because the SSH server is an implied dependency. And this, I don't think that there is any direct, you know, define, you know, explicitly defined dependency or SSJ of the SSSD. So, and it's using a version that is below 3.10. So, and the code is very much different from the one that is that we want to use. So, have you used it? Have you used this library to use RSA pastries, connected keys and then work with them? Were you able to do that? Yeah, it worked with them. And I was able to establish the connection as well. But the issue I'm facing is, you know, the dependency issue. So I think I mentioned it on the GitHub chat. So what should we do next, right? Should we define this dependency explicitly in the plugin? And if we do that, then we have to, you know, increase the Jenkins version. More than 2.0 above. I think it's 2.8. But currently, the Jenkins version is 2.2, something like that, or 2.6. Not sure about that. Are you saying that a newer version of Jenkins Core has the version of SSHD that you need? Yeah. Oh, good. Okay. So, so that's a great excuse for us to, and what, what version of Jenkins Core has that? It's 2.0. Let me check on the GitHub chat, I mentioned that. Wait, 9.1. Yeah. 2.289.1 or 2.282. Okay, so, so if we upgrade, upgrade our dependency to require Jenkins 2.289.1, then we get the SSHD that you need. Yeah. And if we explicitly define, yeah, sorry. No, no worries. Yeah, and I think, I think you're saying that either one of these SSH server plugins would work? Yeah. So these have the, the version of the Apache SSHD library that we need, and that's supposed to decryption of the OpenSSH piece. Yeah, so then it seems like a simple answer to me, we upgrade the minimum Jenkins version to 2.289.1. I like that. I mean, preference mark on whether they pick, we pick, so it looks like there's two plugins, there's 310 and 304. One of them is a higher Jenkins version and one of them is a slightly lower one. The other ones 2.282. Not sure if you have any. I've biased in the past towards choosing an LTS version. And in this case, I don't think we've got a lot of users that would be on 283 through 289, but not on LTS, right? So for me, the preference is LTS. Yeah, that makes sense. I mean, weekly, you should upgrade weekly actually, because for instance, 2.300 has a security fix in it. And if you're, if you're choosing to run weekly, but you're still on 2.282, you're in danger. So, but if you're on 2.289.2, you're not in danger because the security fix is backported to it. So making it 2.289.1 seems very reasonable to me. And I knew we knew we were going to have to eventually upgrade. Yeah, there will be people who say, but I want to run the credentials binding without having to upgrade to 289. 289.1 and the answer is sorry, you can't. So, so harsh should it feel it sounds like then what your technique would be is you'll set the Jenkins version in the in the palm to be 2.289.1 and then you can use that that library that we've that's available. Certainly there will be people who say, Hey, I cannot upgrade to 2.289.1 and if, if we had for instance to do a security fix, we may have to deliver multiple versions of that security fix so for people who can't go all the way to 2.289.x, but I'm fine with that. We've done that before. So the get plugin already rely on SSH server plugin. I don't, I didn't think it did directly but let's check I mean that may be a circular dependency I'm not sure what that will mean, because I would expect the SSH server plugin probably relies on the get plugin. Yeah. So if we look at just look at get plugin. It's not in there. And I looked at get client plugin and it's not in there. Oh, I'm not sharing that screen. Sorry. Okay, get get server does not depend on the get plugin, at least not directly declaring it. Oh, that's fun and the get server plugin requires Jenkins 2.289.1 as well. So we're in good company harsh it. So one question I have is, do we want to take a dependency on the SSH server plugin. So, so when I look at, I'm not sure it's SSH server plugin. So you take a dependency on org dot Jenkins dash CI dot modules SSHD and use that dependency so I think now that's the SSHD plugin that you're looking at. Okay, yeah. Okay, what's what's the what's the body called the address of that thing the coordinates of that thing you're looking at is it or dot Jenkins dash CI dot modules.  And I think is so harsh it is, is SSHD from Apache or from this code the thing that provides the method you need, or do you need something that's actually in the get server plugin. Actually has the, yeah, so we see that the online 53. It actually has the latest version of the library that we need, so either we can depend on it directly or we could depend on the. Oh, okay, so all, all you need is org Apache SSHD. Yeah. Oh good then we just should depend directly on that. And if that means in order to but in order to make that load then we have to increase the, the Jenkins version number to 2.289.1. Yes. Okay. Why do we need to increase the Jenkins number to this is this is an external dependency right when external and if you're choosing to use SSG cool. No, we have to increase if you can see online 34. But also if the, you know, define external dependency that is SSHD Apache, then in the mavin dependency tree, it will be used rather than the. It will be used in for the SSHD server or in a plugin Jenkins plugin. Instead of because currently that plugin is using the library version 1.7 so after we only define it, it will be updated to 2.7 so in, you know, implicitly we are changing the library dependency of that plugin only. No, but you can exclude the depend since you're going to directly use this library this dependency then you can exclude that from the plugin, which requires a newer Jenkins version and then you can use directly this I don't understand why would we need a new Jenkins version for that. I mean, if you're excluding it from that plugin and using this instead. I mean, or the library that the plugin has. Yeah, SHD code. SSHD code. This is the exact. This has the code. The functionality you need to. So, back to the shop's question but to ask it in the form of a question is or dot Apache dot SSHD dot SSHD dash core version 2.7.0 enough for you to have the API you need harsher, or do you need something that is it is. So then I'm prone to agree with, with Rashaab that we should at least try to just depend on that library if that still requires us to upgrade Jenkins dot version that's fine. It's acceptable to do that absolutely. But I would rather directly depend on that Apache library, then depend on a plugin that includes that Apache library. Yeah, because what'll happen is, if you depend on the plugin directly. When someone wants to install SSH, or sorry, when they, they will need to, they will basically get SSHD plugin installed to, along with the get plugin. Well, and I think SSHD plugin is an unavoidable plugin because it was bundled in core. Oh, is it? Oh, okay. I think so. I think there's, I think SSHD plugin is one that was discussed just recently on the mailing list with. Wow, why is this there I don't need SSHD and the answer as well because it was bundled in core and years ago and thus it's still its API still has to be available in core. Okay, well, ignore me. Even if you see the effective form of the plugin, you can find that plugin. The SSD plugin is defined, but the version is changed. Sorry, you're saying that the Apache SSHD core library is already in the, the get plugins dependency tree. SSD plugin Jenkins SSD plugin. I was talking about the Jenkins SSD plugin on the actual Apache library. Okay, so, so I apologize I must have missed a word so the Jenkins SSHD plugin already includes this and I think that's what we're looking at right now right yeah that's what what Justin's showing us is that that Apache library is included inside the SSHD plugin agreed, but my thought was, if all you need is that Apache library, then all we should depend on is that Apache library with its specific version number. Yeah, the plugin, you know, implicitly depends on that SSHD plugin. So, it, oh, it does. I was saying that in the effective form of the plugin, you will see the SS Jenkins SSD plugin dependency available there. The version is, you know, low, lower. We can overwrite that right. We can say that we don't want that we don't want SSD core from that plug in instead we'll use our. Yeah, but but I think I think, oh, go ahead, Harsha. That would mean that we are upgrading the version of the core only like we are not replacing we are upgrading the version of core for the Jenkins SSD plugin. How that could mean that it was the SSG plugin comprises of and it's not just SSD core right. It's it's a collection of multiple libraries. Choose to use a new version of another library. How would it increase the version of SSG plugin? Because in the dependency tree, if we look at the library that you know the dependency that is on the top will be used rather than dependency on the bottom. So the plugin that is using a dependency of the lower version will be upgraded to higher version. So explicit, so I can say implicitly we are, you know, using a lab core SSD core of version 2.7.0 only instead of the lower version that is 1.7.0. Ah, look at that. Okay, I think I understand what you're telling us, Arshad. Okay, so I did what you what you described which is Iran maven dependency colon tree. And in the output of that, there is a dependency on org dot Jenkins to CI dash mod dot modules SSHD version 2.7, which then itself has a dependency on as on the Apache library core jar or core SSHD core 1.7.0. So if we upgrade, I'm not sure if this actually works from maven. If I force it to Jenkins 2.289.1. Does it then already tell me hey, we have a newer version of SSHD core. Just a minute. I tell it to depend on to require Jenkins 2.289.1. It doesn't even have a dependency on SSHD core. Interesting. You've done the experiment, Arshad, and you said that by upgrading the by forcing the Jenkins Jenkins that version to 2.289.1 you get the you get access to the SSHD core library version you need. I was saying that I, I was defining the dependency explicitly. And as I also pointed out, I was defining the Apache SSHD dependency or explicitly both. I mean, I was trying to experiment that. So that will indirectly tell us to upgrade the Jenkins version. I think, I think that's the right approach. I think we should accept that in order to get this functionality. They have to at least be running Jenkins 2.289.1 because we need the version of SSHD core that Apache provides, and that is, that is available only beginning with 2.289.1. That's that's great. Arshad, with this library is was there a specific algorithm even you face an issue with or this library solves the problem we faced with SSJ. If we are using this library, so the working keys are actually in open SSJ format, they will be, you know, RSA, EECDSA, ED25519, and yes. So actually all the algorithms, encryption algorithms that are supported by the SSJ keys in utility and they were working also. That's great. We don't even have to use another library to do that. Yeah, that's great. Yeah, I was thinking of, you know, using the there's a PEM format support for PEM formatted keys or PKCS8 format keys in the lab in that library as well but the there's an issue opened on the, you know, mailing list. That says that the PKCS8 PEM encoded key is not yet supported. So as I have to switch back to BOMC Castle plug-in. Okay, you're talking about PKCS8 encrypted keys. PEM encrypted, yeah. PEM encoded keys. Yes. But they are not supported in the library SSHD library. But so my question is that do we want to first focus on the algorithms on the use cases which will be 90% of what we're going to serve or I'm not sure how many in how many cases we're going to see the PKCS8 encrypted PEM encoded format keys. I was just doing an experiment with that because SSHD library has a lot of functionality and a lot of support also so I was trying to figure out if I could mostly use all of that and instead of depending on the BOMC Castle API but it was not supported in that. Yeah, I mean, I think like, like we talked about the last time and you probably could start with, you know, just loading in support for the top ones. And if we find that, you know, PEM supports not working, we can document that as unsupported and that's a geo ticket or something like that for later. Okay, so I mean, should I then use the SSHD plugin or well actually we use both then we have all the keys working on all formats. When you say both you mean SSD and BOMC Castle? Yeah, both the library. If there's no additional cost of using BOMC Castle then we should. I mean, if everything is working then why not? Yeah, I guess from a process and work perspective, like if it's easy for you to get them all in one PR, like, maybe that's okay. One thing I could see is like, if it's hard to start getting the bouncy castle stuff, then maybe it's a good idea to start with the most critical algorithms to cover and then do those in a PR. But then I also realized there's some testing and stuff like that involved too. So, those are the things that I would think about for that, if that makes sense. Yes. So, one doubt I have is that should I, you know, explicitly define the SSD plugin that the Jenkins module SSD plugin right in the form of the plugin. Sorry, ask that question again it was should you define explicitly define the version of SSHD dash core in the palm file for the get plugin? On the SSD plugin should I explicitly make a dependency in the get plugin or should I use the Apache SSD core? For me, I would use the Apache SSHD core to make the dependency as narrow as possible so as narrow only as wide as you need. Yeah, and also explicit on what you exactly need to. It's kind of a nice practice. Right now, now no guarantee that that still that that will work because of the nature of that SSHD plugin being a formerly bundled plugin, you may still be forced to set the Jenkins minimum version to 2.289.1. Yeah, I will have to. Okay, good and and and just to reiterate that's that's perfectly okay. We want people to upgrade and this is a good motivation for them to upgrade. Cool. So I'm going to put that in our notes here to switch to minimum Jenkins. I'm going to go to 2.289.1 and then depend directly on SSHD core 1.7.0 and you're going to do that in the get plugin, right? No, it will depend directly on SSHD core 2.7.0 I think it is the current version is 1.7.0 and that's in 2.7. And then that'd be in the get plugin, right? Not in the get client. Yeah, and it's SSHD, Justin, just that extra H. You got me. Thank you. We can do it. I have a question. I was also looking at the dependency graph and I can see as I mentioned that in the Jenkins core job we're getting SSHD core SSHD plugin as a test scope. Can we not remove this altogether? Do we need the SSHD plugin for anything? Do we need it? Yes, in order to run tests. Is that what you're saying is that it's a get plugin test dependency? Yeah, okay, we use this. I just thought that this is being bundled but we don't use it. No, well, so the get plugin definitely does not bundle the SSHD plugin. So I'm not sure maybe you need to explain to me more clearly what you're meaning by bundling. Do you mean the Jenkins core bundling it or the get plugin bundling it? No, Jenkins. We're getting this from Jenkins core, right? Right. And is the get plugin using this library? As far as I know it is not today. Yes, my question was that can we not just remove this, exclude this and use SSHD core directly? The plugin altogether. We may be able to but I don't know what that will do on a Jenkins 2.263.1 when the get plugin wants to load SSHD core 2.7.0 but Jenkins has already loaded 1.7.0 of the SSHD core plugin because of the built in SSHD plugin that's using SSHD core 1.7.0. So I would expect Jenkins will say I've already loaded SSHD core. I refuse to load another one. And then we'll be stuck because get plugin won't be able to find the API's it needs that are only available with newer than 1.7.0. Harshit, I think I was describing it correctly. Do you need to correct something I said there and tell me no mark you made a mistake. Mark you are right. I actually have faced the error myself. So I know the error will be no class no class found exception. That was coming because the library that was loaded was one SSD core 1.7 and I need the libraries of SSD core 2.7. So there was I was stuck for, you know, for one day whole one day speaking on what why why is it this happening. So then I figured out that this for dependency issues. Great. Thank you. Well, and welcome welcome to Maven's dependency tree. So that sounds really positive. Does that kind of help you with all the questions you have for for that specific one harsh it. Yeah. I mean, I am currently focused on this issue. So, I have not even booked on the issue. I'm just focusing on this issue. Sure. But this issue is, I think this is a major victory that you've you've reached as far as you have, keep going. That's great. And did you see harsh it that we have one more person who's interested in in the work and did some experiments we can ignore their results, if we need to but I was delighted it's great that we got people who want to use your code. I mean, I missed it. Who is it. So I had closed a bug report from someone who asked for the ability to add a special case to the Jenkins get publisher that would allow it to push push multiple tags. And the person actually submitted a poll request to the get plug in saying hey here's the implementation, and it was a good implementation they did a good job with it. And I closed that poll request and said nope we're going to do this with with this Google summer of code project and so the person then went and took the latest build from the poll request and tried it. So you'll find a comment on the poll request where the person says, Hey, it didn't work for me here's this but given what you're working on with SSHD. I'm not at all surprised that it didn't work for the for the for this person. I just want to see that comment and the progress that he has made. Yeah, yeah, I will make sure that I will make a reply to that. Yes, yes, that's it. That's the logo. Yeah, and I pointed the user and said hey use username password it works now. And he said no I have to have private key. And this is his effort trying to work with private keys so that's great. Nice. It didn't work. That's, that's not a problem. The fact that we've got one more person trying it is really great. Mark, did you have any opinions on the PEM format and including bouncy castle in the in the next PR or do you think that should be like a separate PR what's your. Yeah, I'd rather. I've never once in all the time I've dealt with private keys never once used a PEM format private key with with SSH. I don't, I think that can be separate let's get the other things working and be confident we're tested and we've checked them in all sorts of configurations. So at least for me I'm not worried about PEM format right now.  Yeah, great. You get to deliver more value faster. I will try to make the PR mean I will try to make the PR buy today for the open SSH format support. Let's hope for the best. Oh, are we also are we also covering the cases or thinking about the cases when SSH agent did not produce open SSH keys before this format was adopted. I think, I think we'll get that as a result we'll get test cases for that, based on the, the, the tests that I intend to run with generating keys on sento seven, and on Debbie and nine, because those are relatively older SSH implementations. So I think we'll get test data. And even what I hope the test data will then tell us is, yes, it works with the SSHD core and oh it does not and if it does not we will probably just initially say, known to not work, you must use a modern key format. Does that does that seem okay to you, Richard. Yes, I think. Actually, I think I'd rather look at what her sheets code is I look at his implementation. How it depends on these algorithms how it functions with these algorithms visit. Do you have to write different code for each of them. Like, is there is different. I'll just look at the code. And I think mark that should be fine for us that we run those tests and then we figure out. Any other doubts or topics we should talk about. Yeah, so the grant here that I have opened for the SSH binding I should change that for open specific open SSH format. Arshad, I'm not sure I understood the, all the all the details with the audio so were you asking should you alter the current pull request to only support open SSH formats. Yeah. And I make a PR for the ones you got. For me, I think that that seems reasonable. If that's, if that's easy enough for you, I, that'd be the way I would go. If, if you find it easier to combine them into a single PR, and still allow us to do allow me and others to do testing. Yeah, I agree too, but for me a separate PR with the bouncy castle work feels better, just because I want to be sure that RSA and ED 25519 keys work, because those are the keys that are important to me. If I remove the bouncy castle, they are like four or five lines of code that will be affected. I mean, that's not even a factor. Okay. Minimum there for four lines of. Well, then, then it may not be worth your spending the time to remove it that that's entirely up to you. I just don't want to be blocked testing RSA or ED 25519, because of a format that I don't use now other people may have a very different opinion and say hey I use PEM format all the time but I truly do not recall ever using up. No, maybe I guess I did use one once because some of the cloud vendors give you a PEM format key. So I guess maybe I have used one. But it's very rare for me. Yeah, I have a reference. I'm sorry. Do you have a preference on which way to go like whether to include it or not or. I think I want to go with the included one. Great. Yeah, and now that I look at my config file, I was just wrong. When I connect to the system 390 mainframe that IBM has lent to us, lent to the Jenkins project I'm using a PEM format key. And it works great. So yeah, I think if we include it we can always just declare that, you know, something's not supportive. You know, even if it goes in with the PR, right. Sounds like we've got a path forward. Anything else we want to talk about, or any other doubts. Good. Your shot mark. I'm good. Great for me as well. Thanks harsher. Thanks very much and congrats on finding the solution to the SSHD core challenge. Yeah. This is awesome. Yeah, it is. Great. Well, we'll close it down early then. Thanks everybody. Thanks all. Have a good ones. Bye.


Let everybody else also join and then we'll start. Hello. I would like to welcome all. Hello. Yeah, are you going to hear me? Yes. So we are here to discuss isomorphic JavaScript. And with me, like, let's start. So I am Makbul Khan. I work for 5G Solutions Private Limited. And I'm an eco-certified developer. With me, I have Nikhil Sukul. So hi everybody. Good evening. Last session of Drupal Khan Asia. Excited everybody for tomorrow's print? Yes. We should be. So I am working as a senior Drupal architect in 5G Solutions. Okay. So I am working with this firm for a long time now. Okay. So let's start. Not so long, but yeah. Long enough to do a lot of contributions in Drupal. So let's start with this session of isomorphic JavaScript with Drupal. Ready everybody? Yes. Okay. So just to get a feel of audience, how many of you know isomorphic concept? So what do you know about isomorphic? Exactly. Okay. So the topics which are going to cover are what is isomorphic JavaScript? Why isomorphic JavaScript? Why this instinct idea? Then the sites which are using isomorphic JavaScript, the sites which are in production. Then how to isomorph? Available libraries, which library we can use to build our isomorphic applications. Then we'll look on isomorphic JavaScript with Drupal. So we have prepared a small demo using Drupal. And last, we'll see the code. Okay. So let us start is what is isomorphic JavaScript? So isomorphic, as the term goes, is actually means iso means same and morphic means form. It was actually coined by Charles, Charles Robbins, Charlie Robbins actually, in 2011 in one of his blogs. And what he was actually talking about is that we can actually share the same JavaScript code in client as well as on server. So that was actually he was talking about. His vision was that we need to have JavaScript frameworks or JavaScript libraries, which actually have the same JavaScript code, which will be executed same on the server as well as on the client. So what exactly isomorphic application? So in literal sense, isomorphic applications with a dynamic website would literally means that it actually JavaScript based website. Everything is absolutely dynamic. It has a capability to generate its HTML. Well, this term is not exactly very small here. We can have a separate session on it because it's actually talking about something known as virtual DOM. So there's a concept of virtual DOM, which is being there for a while now. Generally, we nowadays using virtual DOM in some of the library, which are using isomorphic concept. Whereas in traditional JavaScript or additional way, we were using structural DOM. So DOM, if you know, document object model. It's a way that HTML and JavaScript are rendered or HTML is rendered in a structured way in HTML page. Virtual DOM is a way where actually you can re-render the HTML based on the dynamic content. That's the whole idea of virtual DOM. And it's a capability of isomorphic application. Yes, that's what the last line is. Use same code in both server and the client. So actually in this diagram what you are seeing, it's not actually ideal because as per the isomorphic application concept, the amount of code which need to be shared between client and the server should be at least 80 to 90%. So for the sake of this presentation, we are actually talking about with respect to Drupal and how we can share the code from Drupal to the browser. Though the isomorphic application can easily share the code for iOS or for Android. So we can actually use isomorphic applications code for any kind of platform. It's a cross-platform thing. You can actually use for iOS, Android, Microsoft or anything. So why isomorphic JavaScript? Why do you require isomorphic JavaScript? What is the need of it? So let's talk about a history behind web applications. So generally the web application to start with was actually a server rendered application to start with. Long back when the web started, we are actually having a same kind of request coming from the browser going to the server. The server was actually giving the entire application in either a static HTML format or very minimal dynamic content on it. The entire HTML gets rendered on the browser and then we can see the application or when we can see the website. So that was the traditional era. So very lately after that people will start thinking that why only server side? Why can't we try something from the client side? So people started working with fat clients. Fat client means where lots of codes are already available on the browser itself rather on the server side. And then nowadays people are talking about a concept known as isomorphic web application. Don't worry, this is only the three things in detail we are coming in the slides anyways. So let's talk about in detail. In the server rendered application, so let's talk about server rendered application. So ideal scenario in a server rendered application you actually have a DOM manipulation and user interface on the client side. And you have view layer, application logic, routing, persistence, which actually your data layer on the server side. It can be on any language. It can be in Drupal, Ruby, Python, you name it. It will be on the server side itself. The flow in which happens is from the browser side on the client side we actually get a request and then from the server side we get a response. And again, if you want another request it will come from the server side and again we get a response, sorry, from the client side and again we get a response from the server side. The request response loop is keep on happening. So for every request coming from the client there will be an ideal response coming from the server. This ideal scenario in server rendered applications. So if a client is sending a request to the server what happens in the background? So the server will send a response. The client will download the response. The response downloading the response means actually having only the static HTML empty divs and then it will render that HTML. But what will follow after that? It will download starting the assets. It means it can be JavaScript assets, images and all those things. And when the JavaScript assets and images are downloaded it will start executing those scripts. This is a very standard way of server rendered application. So what happens in server rendered application? What is the advantages of it? Server renders the content. And now in server rendered application you can actually have using a JAX or jQuery, a lot of effects if you want in server rendered applications. It will serve HTML first load and it is very, very fast. Definitely from server rendered application if your performance is optimized your time to load that particular page will be very fast. And the web page will be SEO friendly. So the search engines can actually do a lot of SEO on it and it will be having the Googles on anywhere on the top 10 sites of the world. But what happens? What is the disadvantage of it? Maintaining UI and render logic in both kind and server. So what happens is you need to have logic. I'm not talking about JavaScript. I'm talking about logic. So in case of logic you need to have some logic to render the things on the server. Then on the same logic you need to have on the client. It can be with the JavaScript logic. It can be the server logic. So what happens? You have a duplication of logic. You have two languages, two frameworks, two development stack or two templates whatever way you think of. It's all duplicated. So it's not easy to maintain. So the idea of what came up after that was rather than maintaining all this, let's say to client rendered applications. Why not we have a client rendered thing rather than having a server rendered application.  So we have a DOM manipulation user interface, view layer, application logic, routing, all on the browser based thing. And on the server side, wow, my server is very, very thin. What it has is only have database. Just get the connection and have it. So the client will request for persistence that is only for data. And then the response will be sent by the server to the client. And that's the way it works. But in that case think of a mobile. Think of a browser in mobile. This fat client thing won't work there. It's too heavy. It won't work in this kind of scenarios. We actually want an ideal scenario in which both should work in a same direction and sharing the same amount of code. Otherwise my browser will be too heavy on the client side. It is not actually acceptable, right? Now nobody tries to have a browser which is very, very heavy. It will crash it. Or your mobile will crash or hang or something. This happens when you have a client requesting for a client-ended application. So the server will send a response. The client will download the response. It will download the assets. It will execute the scripts. It will fetch the data. If it is API and I'm still waiting, I'm still waiting, still loading, showing me a spinner on my page and haven't got anything till now on my browser. Then it rendered the template and now I got an HTML. So think about it, that it's taking so much of time to do a client-ended application. What we used to get is animated things, loading GIFs. We used to get that on the browser. It's keep on loading, loading, loading and loading and suddenly you get the browser and everything come at once. And we don't have patience of so many minutes or seconds to wait and get all these things. So in client-ended application, what is the advantage of it? Yes, in client-ended again, it renders the content as a server side. It is separate application logic and data retrieval because a lot of logic is there on the client side and the server side is different. Yeah, you have very much optimistic UI. The UI can be proper. You can actually make drag-drop application on the browsers if you require a client-rendered application. It's very, very heavy, right? And then the examples can be Gmail. Offline Gmail is actually an application which is client-rendered. You can actually use that. Or you're using it already, I hope so. And what happens, what is the disadvantage of it? So let's think about SEO. It's not SEO friendly, a lot of JavaScript and everything is available within that HTML page. And user have to wait. That's what we just saw. Load the spinner and then see the content. And yeah, it's very expensive for the maintenance course. To summarize, in the client-rendered application, server-rendered application, so server initial load is good. Client, bad. And the server SEO is good. Client, bad. In the server, user experience not so good because you actually have to render from the server itself. I mean, you can actually make the UI very good. So what we should do? We should do for server-rendered application or client-rendered application? Yes, so like we have already seen the comparison between server and the client. So we need to think about the best of the both worlds. So we can implement isomorphic JavaScript over here. So let's see the diagram, the basic diagram which we can get when you search the isomorphic. Client in the shared JavaScript and the backend. So the shared JavaScript contains view layer, application logic and routing. So this is the main core part for the isomorphic application. If you see the flow for isomorphic JavaScript application for the first-time request, so we have DOM manipulation user interface. We just set request for some data in the shared JavaScript. At this time, our shared JavaScript rendered as the backend at the server side. So what happens, we get a request from a client, it processes, manipulates and sends a response back to the client. So while sending the response to the client, it also sends view layer, application logic, routing that your shared JavaScript to the client. So what happens for the second request? The subsequent request? So again we do a request. So this time it won't go to the server because we already have our shared JavaScript at the client side. So we have a request it is getting served by our JavaScript because we have an application logic it manipulates the request it builds a virtual DOM over here and sends a response back to the client. Again we have a request it again goes to the our shared JavaScript and sends the response. So as you can see we have graded out request and response to the server. It doesn't mean that request will never go to the server if we do a hard refresh a page. So at that time the request will go to the server. So let's see what happened for the isomorphic application for the first time request. So we have a server response it download the response and user can see the content at the same time it will download the app logic and a rendered updated app. So the client is now having all JavaScript and for a subsequent request it will not go to the server it will come to the load app logic it will face the request it will do the manipulation it will virtual DOM and sends back to the server back to the clients. So this happens for all the subsequent requests. So let's talk about view layer so view layer is really made up of different components and if we are trying to pass a view layer to the client and server so we need to make it this layer as an isomorphic. So what are the components? Markup. Markup is HTML the template part then we have data presentation. So we get data from the server we need to massage it somewhere because we need to make it more effectively to the client side. So we need to add some CSS, JavaScript and all the beautification part. Then we have internationalization we have date currency formatting a gate picker is a good example once we click on the date picker so it automatically populates the calendar then we value our formatting. So basically for our isomorphic JavaScript we need to pass our template to the isomorphic. So why all this trouble? Why we need this one? Because we want our performance. So it improved page load speed because we have for the first time request it's fast but for subsequent request it's more fast. SEO it's probably one single page app so currently Google provide the support for isomorphic apps because your clients Google can index your client page. It's flexible because your same code is running both on client and the server and because it's flexible it's also easy to maintain. We have a single code to maintain so the mentality cost is automatically low. So let's see what are the sites which are currently using isomorphic. So let's talk about the sites using isomorphic JavaScript. One of the examples is Flickr. So you can see here we have a lot of pictures of Taj Mahal so when I search for Taj Mahal I get a list like this and then when you click on any of the image you get like this. So you get a pop-up which actually shows you the image and then it shows the related content for that particular image and it's all being done by isomorphic way. So Flickr is a very good example of how to use isomorphic application. So what Flickr uses is actually Mojito. So Mojito is a framework which is actually a successor of MoDown. So Flickr was actually using a framework known as MoDown and then they discontinued it and make it as Mojito. So Mojito is a framework a JavaScript framework which is used by Flickr to get the isomorphic effect here. Another example is Instagram Surprisingly Instagram is not actually using it right now for the production sites but they actually implemented this for their sandbox for a while and this is also using an isomorphic concept here. So here if I click on a picture I get a pop-up like this and actually in the pop-up you can see there a lot of information available and what kind of framework they were using is React. So React is one of the best isomorphic framework or library you can say available and they were actually using in the back end as Python. So Zango is a Python framework they were using in the back end. So they tried to experiment it in their sandbox and that time they actually tried using React with Zango. Do you think Drupal is far behind? No. So Lollabot around 7 to 8 months back launched their isomorphic site. So Lollabot is actually using isomorphic. Can we have a round of applause for Lollabot because they are Drupal? So Lollabot is using the way they are using Drupal is and the way they are using isomorphic is using React. They are using Node.js in front of it and Drupal as a back end CMS. So they are actually using these four technologies to have this isomorphic thing done. So not only Lollabot, there are so many more. So Facebook is anyway using it. Everybody knows Facebook. React is actually from Facebook so Facebook will be using it definitely. Yahoo is using it. So this is a very good site. Go and check it out. It's actually a task management tool. It's a browser-based task management tool. Try to check it out. It's very, very user-friendly. It's actually using isomorphic application behind it. Then we have rising stack, Airbnb and all. So everybody, a lot of things are using isomorphic here. Actually, how to isomorph? How we can build an isomorphic application? So if I categorize isomorphic JavaScript, so it can be categorized in two parts. One is environment agnostic and second one is as per environment. Environment agnostic does not depend on any client-specific properties or browser-specific properties. So like we have a window, we have process.environment, request.cookies. So it does not depend on any of the browser or client-specific properties. As per environment, it exploits environment-specific properties. So one can expose a single API. But under the hood, there are actually two environments running. Then it has window.location.path name, request.path, abstraction. So one of my favorite is set cookies. So if you have to set the cookies at the client side, so we use document.cookie, the cookie name and the value. On the server side, we have response.set header and then set header name, cookie name and the cookie value. In the green, you can see we are using React. So it's used set cookie, cookie name and cookie value. So we don't have to write it two times like client and server. We can use a set cookie for both. Redirects, same thing. So we have document.location.href and the destination URL. And if you want to do some more estimate five things, more fancy part, so we can use window.push state and the destination thing. And on the server side, we have response.redirect and we are sending an HTTP header over here. And if we see on the isometric part, so this dot transition2 and the destination URL. So writing of cookies, like if we take an example of cookies, we have some other properties, like domain name, path and then expires. So it's a complete string. But if you write on isomorphic, we can write in this way. We have cookie, cookie name, then part, domain, expires. So it's like an array format, we can see. It's quite easy than the complete string, big string. So there are many JS library which are isomorphic and some of them we are already using. So let's see which are those react. Listed, naso, render, meteor, bojito. So there are lots of things. I am mostly interested on react, render and meteor. As per my understanding, these are the mostly used for isomorphic applications. So react a JavaScript library for building a user interface. Meteor is a JavaScript app platform that builds apps.  So we will be taking a react for our demo purpose. So react is basically introduced by Facebook and why we have taken react. So it has some advantages. So it's new, like a JavaScript library for building user interface. Open source, it's a library. It's new and fashionable. New. Because we have released from 2013 and the stable version was released on 28th of January 2016. Just quite a days before. It uses a virtual DOM and since only the change part. So if you have to change a specific part of a web page like it can be a blog, it can be a region, it can be a header, it can be a footer. So we can use it. JSX, it's in JavaScript XML. So it helps developer to write an HTML like syntax that compiles down to JavaScript. React puts HTML into JavaScript. So all the HTML part that tags the span table or goes into JavaScript. It's lightweight as compared to other libraries so that's the reason we have chosen React. So if you see a simple application if you have to build on React, so we have a simple HTML page. On the header part we have script tag. So it's used build slash react.js and then we have a JSX transformer.js. That's in JS largely. So even if you use the React.js it will, like you can build your apps. Now on the body part we have an empty div which has id block slider and we have a script type text slash JavaScript and our React code will go over here. Let's see how. So we have React.Render and then we are printing a hello world over here. So how does it get replaced? It's replaced by get element by id. So if we do a most specifically using React so we can build a component. Components are basically a functions in React. So we have a component, my component then we have a react.create class render function then hello world and it's again pass the value to the top bit. So I sum up a JavaScript with Drupal. How we can implement this one. So I search it out on the Drupal.org I found React with two models. React and my React.js. So basically React is for this React is basically download all the libraries and it's called libraries API and then my React.js it's a test model where they are building a pie chart using React and then we have Meteor it's a sandbox project and not been updated for while. For render we don't have any model. There are some risks with the React it's still growing as the stable version already is on January. So it's still growing. Debugging is trickier. We don't have any tools such now to debug the React applications. Then avoid exposing sensitive data because we are creating a code which is getting shared by client and the server. So we should not use it for sensitive sites and then we need to put number of libraries for enforcing directional flows where we have called testing, dependency different ways to declare a component. So the example which we have seen so there are different ways to declare same component. So I think we have already talked much about the isomorphic so let's see the code. So this is the demo which we have built. We have used our Fitches site and we have changed the slider. So only the block part you see we have just make it isomorphic. So we click on the navigation part. So we have panels, layout, duration is, there are different options we can use. So it's like quite fancy part. So previously we were using this thing from views we used to change the view slide show and then save it out and then go to the home page or the block. So let's see the code behind this one. So I have created a simple module demo underscore react this is an info file which has a style sheet simple css which we have written on for this demo and then we have a react.min.js where we actually implement the react and we have created one more js demo underscore react.js that's our one. Yes, it's in Drupal server. So we have created a simple block. We have a block underscore hook underscore block underscore info it shows my slider then it is a block underscore view subject as my slider then it's called a function. So we have Drupal get path model name and then it's called a json URL. So this json URL can be from any third party json. Currently we have created a view using data source so we have a json data format over here. We have used a single image field over here and if I click on the demo part so we have a json over here. So basically a complete URL for the image. So we have created an array variable over here and then we are storing all the image URLs over on this variable then we have created a Drupal where we are passing this variable to our React.js file and then we have a theme. So maybe all logic goes on the slider isomorphic template. Let's see. Oh, we don't have anything on this one. We have div id slider content. This text will get replaced by react. So let's see on the demo part let's see the view source of this one. So as you can see we have a div id over here which shows this text will get replaced by react even on the source we don't have the code where it comes from. So we have demo underscore react .js. So this code is already available on Drupal and it's an open source so we have downloaded from there so what we have done over here we have passed the id for the div which we got to replace and at the bottom we have passed the URL the image URL that is an array. So basically it includes a class initialization and the render and this gives effect of first slider and that's all for the demo for isomorphic. Yes. So if you guys have any questions please ask we are ready for it any modules available for this isomorphic. So basically we had one model the name of the model is react there's one more model my react.js basically we can use react model what it does it just download all the libraries for the react and my react.js is a model which has been built for just for the demo purpose it has the feature which we can use. So basically it creates a content type at the back end and you can expose all the data via json over there and you can just build a pie chart they use a pie chart library they pass all their data to that pie chart and they build a graph over there. Indiate anything? Not yet. Any other? Yes.  So if there is no data there's an actual markup of the blogs then how will crawler it will affect the user? So like we have a react.js the implementation Google is smart enough to call that JavaScript it's built based on there. So what happens is in case of react as what you have studied the only search engine which is actually able to work for isomorphic JavaScript is Google right now and they say that they are able to search inside it but you are right that as per the view source code we are just replacing that particular thing dynamically. So the crawler won't able to get that. Right. So instead of showing that the implementation of the data it's giving me the tax. Correct. So I have worked with Angular.js and Angular is more of a framework than a library and they both have different things altogether but Angular is more in that perspective but the SU is not there also so I don't think currently we have a solution on it but we can search on it currently I don't think in Angular we have a solution for it my own site is in Angular and this is just struggling on it. But in react what they said is as per the Google goes they actually do that I don't know how but we need to search on it. No they are not only doing that they are also using Node.js in front of it so it's here we don't have any Node.js thing we only have Drupal and we only have react there they have four things we have seen the slide so they have Node.js, CoachDB, Drupal they have four things involved and that's why they were able to get that effect so a lot of push thing is happening from the Node.js which is not possible in case of normal Drupal application it's more of get and then post so we are just creating an application where it's more of only using Drupal and how you can do react yeah so SU is one of the things which we need to take off any other? okay so thanks a lot thank you for coming hope you enjoyed it and please give us the feedback which is there here thank you


Greetings, everyone. This is James P. Madonna, the founder of the Facebook group, Everything is Food. You know, I've said it on my show, Progressive Discussions, that all these local pubs and taverns and restaurants, they all stopped the all-you-can-eat corned beef and cabbage on St. Patrick's Day. Well, Happy St. Patrick's Day 2016. I might as well start off by saying that. But you know what? This is the second time I've made it. The first time I made this, it came out excellent, and I am going to eat corned beef and cabbage that I cook myself until I bust. I will create, as I did before, my own all-you-can-eat corned beef and cabbage. Tender brisket of corned beef, red-skinned potato.  All right, there won't be any problem. You don't have to change the name of your team. Cabbage, which I always loved, carrots. But you have to put the carrots, cabbage, and potato in the last, at 15, 20 minutes of the cooking process. Never put it in with the corned beef, which boiled with the spices for two hours, because otherwise you'll have mush. The carrots and the cabbage and potato will become too soft. Enjoy and be safe.


Teens notice older men walking with girl, then realize something is off. Four teenagers practiced their skateboarding tricks in an underground parking lot. For them, it was just another day. Realizing that it was growing late, they knew that the fun would have to end and they would have to start heading home. But the four Canadian boys weren't expecting to see something so suspicious as they emerged from the underground of Calgary. A teenage girl, who was visibly upset, and too much older men were making their way over the grass and to the parking lot. The man seemed to be quite forceful with the girl. The men paused when they noticed the boys staring at them, but it was only when the boys noticed something else about the girl that their suspicions were aroused. One of the skateboarders, Carson Wright, recalls, she was screaming and yelling. She just wanted to be out of there. That's what made the boys stop and take notice. Growing more suspicious by the minute, they stopped to confront the men, what's going on here. The larger of the two men turned and asserted that he was the girl's father. The implication was that he perhaps found her drinking or something similar. So the boys, satisfied, backed off. The teenager hadn't contradicted the man, nor had she asked for help. The boys decided to let it go. But there was a nagging feeling in all of their minds that something just didn't feel right. Already later than they had planned on staying out and aware that they all had curfew set down by their parents, the boys really needed to be heading home. Packing up their skateboards and the nagging suspicion that they were missing something, they started heading back. It was easier to believe the man. After all, the girl hadn't disagreed with him. But they just couldn't shake the feeling that something was off. They tried to console themselves that the girl had obviously seemed intoxicated. They discussed it as they walked home. And the more they thought about it the more they were sure something was amiss. They wondered if they should they have backed down so quickly. Perhaps they should have asked more questions or gotten the girl's side of the story. But the man had seemed exceedingly confident, arrogant, even. None of their fathers would have treated them that way. And then, an unsettling fact dawned on them that made them question everything. Carson remembers that she looked like she had been struggling against the man, perhaps even for quite a while. She was all scuffed up and dirty, he recalled. The most unusual and upsetting thing was that the man had her slung over his shoulder like a bag of potatoes. Even then she was still trying to resist in her inebriated state. They stopped walking. Each one of them coming to the same conclusion at once. Every instinct told them to go back or they'd never forgive themselves if they didn't. The more they thought about it, the more they knew that something just wasn't right. Sometimes you can tell when seemingly innocent actions are not what they seem just by the feeling you get. This wasn't normal and they all agreed that something felt off. They had only the man's word that he was her father, nothing more. Another strange thing was what were they doing walking outside the parking lot at that hour after all the shops had closed long ago. The sinking feeling hit them all at once, there may be something darker going on here.  None of the boys knew for certain but Wright said, you don't want to really think of the worst in somebody like that. You don't want that situation to be real, so you just brush it off and hope for the best. It didn't take them long to get back to where they had encountered the father-daughter pair, but it was quiet and no one was around. The boys knew the whole place from their skating and knew exactly where to look if something fishy was happening. They were not happy to find the trio exactly where they looked. They had searched the parking lot, peering in between the rows of cars as they walked. Not wanting to miss a potential shadow that could be hidden in. They could be anywhere. But it was only when they searched the stairwell that they found them. The scene they had walked into was even worse than they could have ever imagined. The boys rounded the corner and were startled by what they had found. They could just make out the shapes of the men in the darkness.  They couldn't just leave the girl to her fate, they had to do something. The four boys were disgusted and remained frozen in place by what was happening to the girl, by what the man was doing to her. Arnaud Nemenya, one of the boys, admitted that he didn't know what to do. It seemed like an eternity before they snapped out of it and that's when they leaped into action. They knew they had to separate them and just get the girl away. The men, of course, were furious. Figuring it was in their best interest to make a quick escape, the men, thwarted, tried to leave the situation altogether, wash their hands of it. Nemenya remembered that they followed them and it was then that they started getting combative. He pushed me aggressively out of the way, kind of like just gives me the smile, like, I can do this. You can't do anything about it. The man underestimated the youths. They wouldn't stand by and let him get away with it. The men walked away as though they had done nothing wrong. Then they turned to see three of the boys starting to chase them. One of the teens had stayed behind to watch over and comfort the shaken girl. The others had given chase. The awful adults tried to outrun them, but youth was on their side and they were catching up fast. Determined not to let the men get away with such unspeakable cruelty, the boys sprinted on through the streets of Calgar. Suddenly, they were on them. He had nowhere left to run. They had nowhere left to run and only one option left to them. The bigger man turned to face the teenagers and that's when he decided to fight. Ripping a skateboard from the nearest boys' hands he attempted to use it as a bludgeon, trying to push them back. Fighting as someone who has nothing left to lose, he tried to overcome the boys with sheer force. He didn't know that the police were only a few feet away, watching everything. Luckily the man wasn't able to do any serious harm to any of boys before the police stepped in and intervened, hauling the men away. The three teens, now with the law on their side, went back to their friend who was still sitting with the girl. The four finally went home, not knowing just how grateful the city would be for their heroic efforts that evening. Then they started getting phone calls. Too afraid to answer. They assumed that they were in trouble but they couldn't guess what for. What if they were in trouble for fighting the man? Or worse, what if the man had somehow gotten their contact details? But the calls kept coming. They knew they had to bite the bullet. They had to face the consequences of their actions. They couldn't run away forever. The teens didn't realize that their ordeal wasn't over yet. The police chief, Chief Constant Roger Chaffin, kept trying to call the boys. Unfortunately, the boys misunderstood the calls, they thought they'd get in trouble for fighting the man. In fact, he was wanting to thank them for what they'd done. Eventually, the call went through and the boys were surprised by what the chief had to tell them. The four boys were invited to attend the chief's award gala in recognition for their services to Calgary and to the young girl they'd saved. All four agreed that it's what they hoped anyone would have done in the same situation. Next time, they'll know to trust their instincts as much as their boards. They had put their own lives at risk to save a stranger that needed them more than they ever knew. If you had found yourself in the same situation, would you have trusted your good feeling? Or would you have walked away? Would you put your life on the line or someone you don't know? It's not an easy answer. But to that girl, their choice made all the difference. What these four teens did was an incredible act of bravery and took a lot of courage. It's not easy to stand up to an adult who seems to have authority. Who knows what would have happened to the girl if they hadn't trusted their instincts.


Upon arrival house was pretty much fully engulfed. We had approximately 15 firefighters. You know, we done everything we could. It was a total loss for the family. We did try to salvage some stuff out of one of the bedrooms, but it was pretty much already gone whenever we showed up.


refuelling station is a complex system and it consists of several components like compressors, storage vessel, then there is a dispenser, high pressure filling lines, then there is a chiller or heat exchanger or the pre-cooling unit. Now, these hydrogen refuelling stations can be of two types, either it could be an on-site hydrogen refuelling station, where in case when the hydrogen production place is far off from the hydrogen refuelling station or if the hydrogen refuelling station is not connected to the distribution terminal, in that case hydrogen is being produced on-site using any either a reformer or an electrolyzer. It is carried using transmission pipelines and distribution pipelines through the service pipelines to the hydrogen refuelling station or it can be an off-site hydrogen refuelling station, where in the hydrogen which is being produced in a central production plant or in a semi-central production plant it is carried using tube trailers or insulated trucks onto the refuelling station. Now, at the refuelling station these can be these refuelling station can be either compressed gaseous hydrogen refuelling station or it could be liquid hydrogen refuelling station. So, in this class we will learn about the different components which can which are there in the hydrogen refuelling station and what is the mechanism of its operation in very brief. Now, in a typical compressed gas hydrogen refuelling station, the hydrogen which is carried from the distribution terminal through delivery tube trailers, this is at a certain pressure that we have seen in the last class. It is compressed using a compressor from the tube trailer pressure to the high pressure storage buffer storage pressure. And before filling in into the vehicle tank, this has to be cooled to a certain temperature and finally through a dispenser has to be filled into the onboard onto the car tank. Now, in among these there are several components as I mentioned, now one of the important component of the compressed gas hydrogen refuelling station is the high pressure buffer storage. Now, this is important in the sense that determines the capacity of a hydrogen refuelling station. Now, this can operate depending upon the application, this can be either a high pressure storage facility which could be made up of composite material that we have already seen in the previous classes. Either the similar to type 3 or type 4 winding tanks then the volume could be typically 1 to 20 meter cube depending upon the size of the refuelling station or it could be a low pressure tank which could be either a seamless steel vessel and all these have a standard like it has to be designed as per the ASME standard and THG 21 2016. Now, depending upon what is the capacity of this buffer storage, there can be different types of hydrogen refuelling station. Now, the future hydrogen refuelling station has been categorized into either very small hydrogen refuelling station, small, medium or large hydrogen refuelling station. Depending upon what is the maximum hydrogen throughput per day in kgs, what is the average hydrogen throughput per day and the number of cars that arrive approximately per station. Now, here in for a very small hydrogen refuelling station, one refuelling point is being considered. Similarly, for small refuelling station, one fueling point for medium to refuelling point and for large hydrogen refuelling station, 4 refuelling points have been considered. Now, these are some of the numbers like the average hydrogen throughput. This is 56 kg per day for a very small refuelling station. It is 168 kg for a smaller, for 336 kg for a medium hydrogen refuelling station and 1000 kg for a large refuelling station. And typically the average number of fuelings per day for a very small hydrogen refuelling station is 10, for a small hydrogen refuelling station is 30, for a medium it is 60 and for a large hydrogen refuelling station is 120. There are several standards that needs to be followed for each of these type of refuelling station. Now, the another major component of a compressed gas hydrogen refuelling station is the dispenser. Now, this dispenser it consists again consists of several components. So, it has a high pressure filling, piping filling lines, then it has a shut off pneumatic valve, then it has a supporting explosion proof solenoid valve, then there are different monitors, temperature and pressure sensors, temperature and pressure regulators, then there are different control mechanism, gas guns, chip controller, complete control panel within the dispenser. So, all these components these are housed into the dispenser. Now, they perform here multiple functions like they prevent from over pressurization. So, these components are integrated together in dispenser and they perform functions like prevention of over pressurization, ambient temperature compensation. It also prevents immediate like shut offs in case of any emergency, host break prevention, then it also provides a sort of sequential gas extraction. So, as to fill into the vehicle tank and all these has to be. So, all the components, all the functioning has to follow all the standards like the typical standard follows is SAEJ 2601, the fueling nozzle has to follow SAE 2799 standard refuelling connector according to SAEJ 2600 standard. Now, the another important component which is in the compressed gas refuelling station is the refrigeration unit. Now, this is very important in the sense that we require a very short fueling time when a car arrives at a refuelling station, we want that it should be fueled in a minimum time with a least waiting time and the filling should be at the maximum allowable. So, it should have a short filling time along with high final state of charge. Now, as per the SAEJ 2601 standard, the hydrogen before filling should be pre-cooled to a temperature of minus 33 to minus 40 degree centigrade. In such a way, this is required such that the maximum temperature during filling which could be reached is 85 degree centigrade. So, that is the maximum restriction on to the achieved temperature during the filling process. And this refrigeration is being achieved through thermal refrigeration cycle. So, there are components like there is a chiller, there is a heat exchanger and then there is associated piping. When hydrogen is extracted from the pressure storage, high pressure buffer storage before it is being dispensed into the vehicle, it has to go through chiller where the coolant circulates through a heat exchanger, extracts heat from the hydrogen and then returns back to the chiller. In the whole process, the temperature of hydrogen reduces in this particular range minus 33 to minus 40 degree centigrade. Now, this pre-cooling unit is cost intensive. So, the total cost of the equipment cost is about 10 percent of the total cost of the entire equipments. And it is essential while designing the hydrogen refueling station that this pre-cooling unit should be in close proximity to the dispenser. This is so as to avoid the energy losses. However, this pre-cooling unit is not required if the filling station is a liquid hydrogen filling station with a cryo pump being used. So, the other option could be a refueling station which operates on liquid hydrogen. Now, similar to that we have seen in the compressed gas hydrogen refueling station, the components involved here are. So, the hydrogen could be transported from the distribution terminal via means of liquid hydrogen trucks and that is used to replenish the storage tank on site onto the refueling station. So, there is a cryogenic super insulated vessel storage that could be either below the ground, underground or above the ground. And at the time of filling through a high pressure cryo pump it can be filled via dispenser into the car tank. Either it could be a cryocompressed filling or it could be a compressed gas filling. Now, for that the liquid hydrogen has to be evaporated, converted into gaseous hydrogen and finally through a dispenser filled onto the vehicle tank. So, the limitation that lies in this liquid hydrogen refueling station is that the maximum hydrogen boil-off rate should be limited to 1.4 percent of the capacity per day in 24 hours and considering that the ambient temperature is at 15 degree centigrade. So, this was about the major components of the compressed and liquid hydrogen refueling station. There are different mechanisms through which this filling can be taken done and like one of the concept is a multi-bank dispensing. Now, in multi-bank dispensing there are multiple storage banks like there are three storage bank in this figure like a low pressure bank, a medium pressure bank and a high pressure bank. Now, this does not mean that they will not go to the highest pressure, however during the filling cycle all the three pressure banks they are filled to the same pressure level. However, while utilizing a pressure bank when the pressure drops in a particular vessel or a pressure storage bank then still the advantage of this method is that can still be utilized to fill the car tank. So, there are three steps in which the filling of the car tank takes place. Initially the hydrogen from a lower pressure bank flows into the on-board tank, so usually the pressure filling with the low pressure bank is in the range of 10 to 15 MPa. So, with the low pressure the filling level is say 10 to 15 MPa. Now, to fill the tank, car tank to 15 MPa the pressure in the low pressure bank should be 16 MPa at least. So, once the required pressure is achieved in the car tank the flow immediately switches automatically switches to the medium pressure bank where the medium pressure bank fills the car tank to a pressure of 20 to 25 MPa. This is considering that the capacity of or the tank in the car is for 35 MPa filling. And finally, once the maximum pressure achievable pressure with the medium pressure bank is achieved in that case the flow switches to the high pressure bank. Now, this high pressure bank finally it delivers a pressure of the required pressure of say 35 MPa when the storage capacity of the tank is 35 MPa or the storage pressure allowable storage pressure is 35 MPa. Now, we need to remember that that this 35 MPa pressure maximum pressure in the car tank that is considering that the filling has been carried out at 15 degrees centigrade. However, we know that when we fill hydrogen the temperature increases. Now, once the temperature increases we have seen that the pre-cooling unit is present so as to restrict the maximum temperature to 85 degrees centigrade as per the standard. Now, once the filling is carried out in the car tank the maximum temperature that reaches is 85 degrees centigrade. Now, at 85 degrees centigrade this 35 MPa corresponds to 43.8 MPa. So, that means when the temperature reduces comes back to normal if we have filled at 35 MPa when we have and the temperature reaches to 85 degree centigrade and when it comes back to normal the it would not be filled to the same level so over pressurization is required. So, that corresponds to filling at 85 degree centigrade to 43.8 MPa. Now, if the car tank pressure is 43.8 MPa that means if it has to be filled through the high pressure bank the high pressure bank should be at a pressure above 43.8 MPa usually it should be at 44.8 MPa. So, this is the high pressure bank pressure. Now, that means roughly it should be around 45 MPa at 85 degrees centigrade. Now, this is when the car tank is meant for 35 MPa. If however the car tank is meant to store at say 70 MPa then the high pressure bank should deliver at a pressure of 88 MPa at a 85 degree centigrade and this is at the 15 degree centigrade. So, this is how the multi-bank dispensing works. Now, the another possibility could be wherein when the hydrogen which is let us say on-site produced using an electrolyzer it is compressed and stored in the hydrogen storage vessel which is present at the hydrogen refuelling station and this is stored at a pressure between say 15 to 30 MPa that is lower than the pressure that is desired for filling onto the car tank. So, there is a primary compressor to raise the pressure from the production point electrolyzer 2 MPa to say 15 in between 15 to 30 MPa for storing into that storage vessel and when required the pressure level is further boosted increased to the filling level to the filling pressure whether depending upon whether it is a 35 MPa tank in the car or a 70 MPa tank. Accordingly the boost second stage the second compressor the booster compressor it increases the pressure to the filling level and then it is filled through the dispenser. Now, the another concept could be single compressor or booster compressor is used to boost the pressure not only to fill to the required pressure level in the car tank, but it is also increasing the pressure from the production point or from the transmission terminal whatever pressure we have achieved this is used to increase the pressure and fill it into the storage vessel. So, both the same compressor it is used for filling into the car tank and also pressurizing to store into the hydrogen storage unit at say 15 to 30 MPa. So, it operates it does both the functions in that case. Now, this is the booster dispensing type of concept. This is a typical picture of a hydrogen filling station it is a hydrogen CNG filling station a blend which is at Faridabad in Haryana and this is being this is by IOCL and the references from the country status report. To summarize this portion to have a hydrogen refuelling station it requires certain space and in the urban areas to have that space is very crucial. So, it will be the requirement will be that the footprint area of such hydrogen refuelling station should be as low as possible. Currently if we see the status there are about 540 hydrogen refuelling stations among them Japan has the highest one with 154 filling stations South Korea 112, Germany 91 and China 85 filling stations. Now, the numbers may slightly vary depending upon the references most of these like since the number of refuelling stations is still less they are custom made. So, there is a requirement of standardization across the globe. It is in terms of safety in terms of gas purity and other requirements. It is also essential that the energy efficiency capacity should improve and the space requirement should reduce or the footprint area should reduce. Now, currently if we see the there is a high capital and operational cost involved with setting up these hydrogen refuelling stations like typically the cost it is mentioned is like 1.9 million dollars and with for a hydrogen refuelling station having a capacity of 1500 kg per day. But definitely with time the economies of scale when the numbers will grow this cost will come down. The quality which is dispensed at these dispensing stations should be as per the standards like ISO 14687 and it is very much essential that the public acceptance is required and for that reliability is going to play a very dominating role. In the sense that the fill the down times of such hydrogen refuelling station should be as low as possible. Because a single trip being not able to fill fuel that may result into lot of annoying into the customer at the same time the acceptability will reduce. Now, currently since we know that the number of hydrogen refuelling stations is very less. So, in that case the trained manpower to do the maintenance at the same time the availability of the components in case of downtime is very limited. So, as such it is required that this non operational periods should be as low as possible. So, as to improve the public acceptance and that can also be taken care of by mobile hydrogen refuelling stations. Thank you.


Let's see what kind of comments we can get this time. Hello everybody, Ian here. Welcome back to another Dean Coons retro review. Today we are talking about the vision. I got one of my favorite negative comments over the past, I think week. Somebody commented on my Twilight Eyes review that it wasn't a review, it was just me talking about semen for however many minutes of the video. That's of course not the truth, but it's funny what people latch onto. Now I do talk about his overuse of semen in the review, but I thought it was funny that they would latch onto it. Like I said, the whole thing is not, I talk about the carnival aspects and all that stuff, but I thought it was funny that the only thing they latched onto was the same thing I latched onto. And today we have the vision. If you're new to my Dean Coons reviews, I used to be a major fan of his, huge fanboy. I've read all of his stuff up until with anything post Ashley Bell, I rage quit Ashley Bell within like the first two or three pages because as soon as the dog was announced I dipped out. I don't even think it was a dog character. I think he just mentioned a dog and I was like, I'm done. I haven't read the Jane Hawks series, I don't plan to. But with the vision, with these retro reviews, I go back and review books that I've read and reread, but I have not recently read them.  But with the vision, I remember a couple things and if you're the type of person who thinks that my Twilight Eyes review is only about semen, you're probably gonna think that this one is only about jazz because that's what we're gonna talk about today. I remember very specifically, I don't remember a thing about this book, not a thing. I went back and read my review, so we'll talk about one or two things in the spoiler section. But I remember, what I do remember about this book is the mood that I was in while I was reading it. I was listening to jazz because he mentions jazz in the book and so I put on jazz records. I'm the same way with the Hauruky Minakami. Anybody else who brings up music, Stephen King, that's why I subscribe to Amazon Music so that I can just pull up that at any point in time that I'm reading somebody mentions music, I can load that music. Pretty awesome. Anyways, so I was listening to a lot of jazz while this was going on. I think Miles Davis' Bitches Brew was on and there's a couple other things. There's a couple things in here that he mentioned that I don't remember now. I know looking up, that I know that I stopped and looked them up. But you know how in movies like back in the 80s and 90s, FX and Lisa Weffin and whatever, they always, even Howard the Duck, they always had a scene where there's like someone ruminating or just kind of zoning out in their soft jazz music playing. Usually it's a dude with no shirt on standing before a big window or something like that. That's the vibe. The entire vibe that this book gave me is a scene like that, just some dude standing in a room with that his shirt on, just kind of sipping some whiskey or sipping or drinking a bit, whatever, and their soft jazz music playing. That's pretty much Dean Coont's period during the down scenes. During the scenes where there's no action happening, that's what it made me feel nostalgic for, where you go and find movies like FX, which I love. It's one of my favorite movies. And FX and Lisa Weffin and those type of flicks, you know? Maybe even a Bruce Willis movie from back then, kind of deal. But with The Vision, other than that, I don't remember anything about this book. Not a single thing. But there is something funny that I will mention in the spoiler section of the book that I don't even remember reading about now, completely blocked out. So maybe I didn't have a right to complain. I'm going to let you guys decide whether or not I had a right to complain in my Goodreads Review, because I forgot all about it. If it was that big of a deal and I forgot about it, maybe the person who had happened to forgot, you know, that kind of thing. I don't know. But so have you read The Vision? I don't know what else to say about this. So I'm trying to get to the spoiler section at the end of the video. Have you read this? What did you think of it? Do you remember it at all whatsoever? I don't know. I've seen some people on my reviews for some odd reason. There's several of you who anytime I post one of these videos, all you do is just comment with the title of the book. I guess I don't know if it's because you want to see it, because you think it's better than, you know, you want to see me review it. You just want to say the name of the title. I have no idea. I have no context. You just going, like me or intentionally doesn't help me at all. I don't know what you're talking about.  Unless you're just trying to be intense and then intensity. Whatever. Anywho. So you read The Vision. If so, let me know down there in the comments below. Let me know what you thought about it. If you hated it, tell me why. If you liked it, tell me why. Don't just go, it was amazing. Or earth shock. I want to know. I want to start a conversation with you, maybe possibly. If you don't want to start a conversation, then of course just put your intensity.  Just spam the chat. Intensity. I didn't got to giggle. So until next time, I have been E, you have been U. This has been another Retro Review. Kind of. I'll talk to you guys later. Bye-bye. Well, I can't very well take my hat off. And I keep seeing people go, oh, your hair looks so nice. Stop covering it up. I'm going to.  The only reason I don't have a beanie on now is because it is super, super hot. It took me like an hour to get my hair to stay down. Because it's not naturally curly, but it's naturally like. You know those like old Southern preachers, the old white dudes, where it looks like they have a fro, but it's literally just a helmet of hair slicked back? Oh, I'm so hot. I got to wrap this up. So the, ah, good lot. I'm just wringing all of a sudden. I hit my peak heat. What? OK. So in my review, the spoilers, spoilers for the vision by Dean Koontz. If you haven't read the vision, GTFO if you have or you don't care about spoilers, hang out with me. I guess there's a scene in here where a woman is abused as a youngster. And she has a bat stuffed up her vagina, her vagina, y'all.  And she just completely forgets about it. Like completely whips from her memory. I said in my review that I don't believe that she would just completely forget about it. You know, it's one thing to block something and bury it and whatnot. But she goes on to continue living with the brother in the same location where it happened. This is what I said in my review. I could be completely wrong. I don't believe that she'd be able to bury it that far or completely forget about it. But to have continued living with him and have buried it. I don't think those are things. Being around your abuser. Oh, Lord Jesus. Sorry, I got the hiccups. But being around your abuser makes it really, really hard to forget anything. I know from experience. So, oddly enough, maybe you do. I don't know. But here, I forgot about the scene completely. So I guess there'd be a lot more emotional impact had it actually happened to me. But I didn't even remember reading about it. So let me know down there. Do you think that someone can bury something like a bat being stuffed up your new-new by your brother if you have continued to live with that brother? Let me know down there in the comments below. That's all I remember about this book. I don't remember anything else. I remember reading it with my good friend Dealey, who I reread all the cool stuff with.  But yeah, I can't wait until somebody comments on this one. This wasn't a book for real. This was just you talking about jazz.


Swiss flood frequencies have been increasing since the 1970s, but these increases are not as significant as those seen during previous centuries. There are several possible explanations for this, including climate change, changes in land use, and changes in atmospheric circulation. This article was authored by P. Schmacher Fackel and F. Nief.