 Hello everyone, I'm Heather Downing or Coraline on Twitter and I'm here with my esteemed associate Matt Ravel who is also M. Ravel on Twitter and we're going to talk today about what Matt? We're gonna be talking about Jay hipster. Jay hipster stands for Java hipster, or that was original definition Java hipster, okay. Now full disclosure I did touch Java like maybe 10 years ago like back when Android was really like getting started a little bit more and I quickly retreated back to C sharp where I belong so you're gonna have to give me first of all What problem did you see desperately needed solving it in order for you to come up with this idea? So first of all, it's not my idea the fact that I even look like the mascot was purely coincidence or not really coincidence because I chose that so I found the project and I think it was 2013 maybe 2014 somewhere around there and I was working for a client that was like hey we'd like an angular and rest prototype and I basically found Jay hipster and was able to create one in under a day so I was really happy with that and and You know it was originally developed to just make it easy for you to use spring boot or not even spring boot it was spring and Angular on the front end and at the time it was angular jazz So angular to hadn't even been come out hadn't been announced or anything like that And so it just combined like all these things together and that's why they called it hipster Was because it was the latest and greatest now the interesting thing is it was invented by a Julian du Bois in France and in France their hipster definitions a little bit different than ours ours is Someone who like defies the mainstream right in the US and and does things differently well in France It was someone who embraces the latest and greatest kind of stuff. So a little bit of disconnect there But that was the idea is hey, you're a job developer You want to do front-end stuff and you don't really want to learn how to do it as much You kind of just want it generated for you So that's where the angular angle came on from that and since then you know It's been five six years and it's really grown as a project That's awesome. So the reason that I decided to ask you about this today Is because it's like slowly started to kind of infiltrate other languages as well And and now I'm just hearing it all the time naturally because you worked on the project too But I didn't really pay a lot of attention to like Java based You know projects obviously, but now I understand there's like a dot net one so tell me about this So we have a concept called blueprints that is probably about three years old and the whole idea of it is you can write a Blueprint it's hard for me to say that overrides the default behavior. So the default behaviors like spring boot on the back end Angular or react on the front end and our next version will have view as well But if you want to use a different framework or language on the back end you would use a blueprint to do that So it's still all like npm based But someone has written a dot net core blueprint that you can install and when you generate a j hipster app It'll use dot net core instead of spring boot same thing for there's a node.js version There's even quarkus and micronauts. So if you don't like spring boot for some reason you can use those as well So those have really blossomed and it's helped us because there's been people that Write those that aren't part of the core team and it's allowed us to really grow as a team in an ecosystem So they're pretty cool and I started writing one for Ionic but what I found was that You actually wouldn't want to I don't think replace the whole front end and a j hipster app with Ionic You probably want it as a separate app a separate mobile app So I ended up creating a module instead and a module is different from a blueprint because you're not overriding any default behavior You're just like creating something new and so that's why I did it that way Wow, so it actually sounds like it has become the candy land game of like stops along the way to become what it is Right, right. It's largely because I've talked to so many people that are like it seems that if I could get Elastic search in there or something like that that that would be good for marketing, right? And so for me, I started octane 2017 and I remember having an epiphany like that April so I started in February and in April I was like if I just make Jay hipster the thing I talk about when I talk about octa I can work on Jay hipster. I can improve it and I can do my job, right? And so that's why I invested a lot early so I could go around the world and talk about Jay hipster And it would just be my job because it uses octa or works with octa. Oh, that's pretty cool so Is it an all-in-one solution is this something where you have to download it like is it It doesn't have its own site. Maybe we can go to the site like what would people see if they went to is it a github repo? Or does it have its own like big site around it? So I can share my screen if you want to pipe that in Yes, and so if you go to the website It originally said like Jay hipster is a good way to do like spring boot and angular applications But what happened was so many other companies were investing in it that we changed to the tagline of Jay hipster is a development platform to quickly generate develop and deploy modern web applications and microservice Architectures and part of the reason for that. I mean full of buzzwords, right? But if you think that one's good, we got one way down here. That's even more So this is the this is the one with all the buzzwords, right? Angular react view Machina corpus node. Yes, you want to deploy to AWS Azure cloud foundry Google cloud Heroku like we support all that and then we have all these examples down here So it kind of has become that not by intention, but I think because The blueprints and the modules in the way. It's extensible that we just added all these options So we do we do struggle with you know, is there too many options? But that's where the blueprints come in because by default people won't use those They'll just use the regular thing. So I can also Point people to there's a video that I created here But I can just go and do a quick demo of this as well So this is a screen cache that shows how to use Jay hipster 6 which is the current version and we're up to like spring boot 23 I think and Angular 10, but just to show you what it looks like. I'll create a brand new app just real quickly so I'm not in my home directory. Okay, so starting your home directory one of the biggest mistakes that people make is they will type like Jay hipster right here and What'll happen? It's it's based on yeoman and this is what yeoman does it puts everything in your Your home directory right puts it in your current directory So this is not a great thing to do because there's a bunch of small files that get created in there You know dot files and stuff like that. So I usually do like Take Jay hipster that just is a shortcut for doing make there in CD into there And so once you're there you can type Jay hipster and it'll basically prompt you for all these different questions So what type of application would you like to create a monolithic one microservice a microservice gateway or a Jay hipster? You a I'll just do a simple monolith You can make it reactive with spring web flux. I'll just choose the fault and say no the base name We'll just do Jay hipster Default package name is fine. Jay hipster registry. You can use that for microservices architecture to like, you know Make your services talk to each other type of authentication I'll do a lot because I like it and I wrote it sequel we'll just use that for the Database and then Postgres or Mariah or Oracle for your production one So you typically have like an h2 database which is in memory or on disk just for local development and production is that as you know a more robust database and then Development database some caching stuff. I'll just choose the defaults maven or gradle Go with maven and then there's some other options But basically you can see there's a whole lot options here I angular react in view the reason you see view in there is because I'm actually using even though it says 610 5 is a version. I'm using 7 development branch and so then you can choose a boot swatch theme and internationalization I'll just choose English and Let's do another one here. How about Chinese and You can do testing with protractor cucumber or Cyprus I'll just leave those off for now and then we also have a j-hipster marketplace That's where those modules are so if I clicked or typed in yes here would give me all kinds of other options So I'll just choose a default and then it'll go and generate all these files for me right Java on the back end I chose angular so angular on the front end and that's how it all works so that takes a couple minutes right to develop all that and so When when that's finished I can I can go back to it or we can another thing I like to do is just show people like the code But if you have any questions like now is a good time. I have so many questions Okay, so does it do you have to install a command line? Is that the only way can be installed? Is this a new get package? Is it on MPM like how does it work? Right, so great question. So how you would install it is if I open up a new terminal The easiest way is just MPM I dash G Generator J hipster. All right, so that's that's the more traditional way to get started We have an online so if you're familiar with like start.spring.io or other online we have start.jhipster.tech Missing the tee. Oh, yeah, this is why I like pair programming Yes, the best if you're doing a screencast you're like, ah, I gotta edit that out so With J hipster online you can you can sign in I already have an account, but you know You don't need one you can do it without this the reason you do this is so you have various Application definitions that you can use. I'm not sure why that didn't work. Let me try again and we're able sign in That someone broke something recently. So They should be able to sign in but if you go to JDL Studios, so Well, let's debug this we got time, right? Yes So maybe just create a new account that would be easier Wait, I see you now What's that? Well, I now it looks like I saw your other account there. There was there wasn't two before So this one right here. Yeah, I don't see it on on Yeah, see look there's two there Don't have the username. That's probably what I'm missing. I mean it should give me an error, right if it doesn't work I know they just updated this recently. So let's try registering for a new one we'll go ahead and say I'm ravell or try a different math ravell to octa And we'll use that suggestive password now everyone knows that's not gonna be good, huh? We'll create a new one call it to hipster online And Create my account Okay, so we should be able to sign in with this one now Nope someone broke something. So if you go through here just like that wizard I showed you in the browser where From the command line where it gives you those choices the same thing happens here So if you go to start.jhipser.tech you have an account then you can do that and so People like that because one of the things you can do is actually push it right to github and so You could actually go to heroku and Configure heroku to pull from github and you would never even need to put it on your local machine, right? So that makes for a pretty cool demo The other cool thing is this JDL studio What this allows you to do is define your actual application With code so this application configuration right here You say what the name is whether it's reactive and what you're really doing is overriding the default So if you don't have authentication type a lot to here, you'll have JWT by default. Oh, this is really cool I like the way that it shows everything all lead out, right? So you can kind of see the relationship right and all that and so, you know if I was to take this one This has for instance a gateway. That's reactive and then it uses Neo4j It uses protractor for testing and this service discovery as you need it You can use your e-core console and then it's got like a blog application that uses couch base Right. They all use the same authentication type Which is in a microservices architecture is either JWT or OAuth 2 and then here we have a store that uses Mongo And then you define the relationships between your entities So you can see we have entities up here that says, you know All the entities are on the front end right because that's where we want them to you know talk to the back end and then the Back end this one has blog and post and tag and this one just has a simple product entity And then you can create relationships between them So you define them like this just the property name the type Validation rules, you know required minimum length stuff like that and then you define your relationships down here and It generates all the code that's needed for that to work on a UI. So if I was to take this one You know, you can either copy and paste it like that or you can download it with this button over here I'll just download it. It creates this J hipster J DL file and that that basically matches what you see right in this screen Right if we were to open it in I don't know Textmate or something and you would see it's just that same code Okay, so right, but the coolest thing with this is then you can go and create your whole app using that So it's core. So J hipster is like a builder on template generator Right you have all a number of options right for your database for your UI for your back end Traditionally the back end didn't have that many options because it was just like, you know A monolith or a microservice or maybe a gateway for your microservices But it was all spring boot right and there was some options in there like if you want a service class in your web class So you have a web class that like serves up your JSON API, but do you want to have a service class? That's between that like your repositories or not, right? There's there's weird choices like that in there and I rarely use them, but I think a lot of people do Well, so I'm already envisioning like the next three steps So I'm sure you've thought about before when it comes to extensibility of this I'm gonna ask you questions like is there an EPI that can eventually get me to the point where it will generate all that stuff for me And it has to be installed locally in order for me to do it like how how does it work? Well, I wish I could show you this start dot J hipster That tech because it has you know that the web browser based version of how you can create the application But let's look at the blueprints. So J hipster blueprints So this is what gives you that ability to override You know the defaults. So that's kind of the API like the Kotlin blueprint replaces most of the server side code Sample blueprint shows how a client can be overridden and then if we were to look at like J hipster Got net core If we were to go into here, so it has all the code right it shows you how to install it So you would install npm install like this and then you got like this and then what you do is when you run J hipster You do dash dash blueprints So if you want to look at like the files that this creates we could go into probably in generators here Maybe look at the server. There's there's many different points. So there's the app Right, this is what's going to generate the actual app for you But then all the files are either going to be like on the client or the server And so we do support generating like crud right with those entities that you saw earlier So if we were to look at like entity server, it would show what an entity's templates might look like So let's see like controllers here. This is what a Looks like a test would look like so these are these are JavaScript functions everything's written in JavaScript But then you know like the dot net code is in here Right and so It's kind of difficult read but there is this is called EJS. I think it's a ECMAScript something template or whatever and Well, we can find out right EJS. It's embedded JavaScript templates. So that's cool You could get like a plug-in for VS code or for IntelliJ or whatever that would make this look You know like you'd want it to look with your syntax highlighting But if we looked at you know the source like we could see how a project might look I'm not sure Like what the defaults would be because I'm not that But here's like the main services class kind of thing. Oh, so it just replaces a nice That's pretty cool. So like the reason I was asking about whether or not there's an API that will like Generate some of this like without even obviously there is because you have At least locally you can you know Answer all the questions which I love because it's done in a human way like hey, where are you gonna host your database? What are you gonna do with this? I mean in my next, you know Step towards the future I want to be able to just command my computer to do things with my voice So I'm like please tell me I can say like I like to tell Jay hipster that I want an app Don't know that it's this and that in the background and just have her ask the questions and then meet answer And I'll feel very Tony Stark about it. Yes Uh this back end or this front, you know, like that would be awesome and it seems like you've already kind of Gotten like 80% of the way to what I imagined always. That's pretty awesome right and and I thought of that too because it would make for a great demo, right? Maybe not real world, but Why not? Well, Jay hipster is originally based on yeoman, right and the man for yeoman is yo Right, so I'd always make a joke that yo Jay hipster create me an app Right and that would be like so cool if you could do that to your Alexa device or your Google home or whatnot And then it would right. I don't think it would be terribly difficult, right? And it could probably I've done dozens and dozens and dozens of voice stuff Like the real question is the start that Jay hipster tech like support something like that, right? So if you were to use a steepie pie and go start that day hipster Tech I'd like now it's just an HTML page versus if you do like, you know, a steepie start Spring that IO Actually prompt you right and say hey, here's a way to do it. Yeah, and we even have I don't know if you knew this but Is it hot? So there's that one too that you can create, you know new orgs with our API. Yes, I did know that But I think it would be cool like either way I mean, obviously I'm kind of a bleeding-edge nerd and I like that stuff but the more I thought about it, you know, everything is about removing friction in what we're doing, right and Like even though it sounds oh, it's just fun. You're not going to do that all the time Why not like there are there are people that Have harder time typing and it would be easier if things were automated because that's pretty much what we're doing Anyway with like our keyboard shortcuts inside of our ID. I mean, I don't think it's crazy It's starting to take up. So for me, it's more about looking like a magician and just Speaking things into existence, but I love that you can do this. So when it comes to I Don't know is this considered a fork of the J-Hipster.net core fork or is it considered a it's a blueprint Which is like an additional blueprint which just overrides that that default behavior on the back end Okay, so if anything changes in the core project not in.net core But in the back of just a core J-Hipster project Does that break all of the blueprints or and they have to go in and manually update or not? It's a it's a delicate thing What we have I believe is that in here they define what version they work with and then if it's not using that latest version Then it fails, right? So so I do believe you do have to have some version alignment with your J-Hipster install and your blueprint install And you know might like this one If they're working on it blazer as the front end is being developed Which blazer? Don't have blazer right? Never which blazer there's there's two so there's blazer There's called blazer server side and blazer was some but they both can be the front end I know that sounds a little weird Because one of them is It's it's a long story. Then there's also like hay is a net core hosted Blazer app whereas it hosts it separately. So there's lots of like question marks about which version When people say blazer you mean which is why we'll have never-ending content to talk about in the dotnet world Dad and I you can see this hasn't been updated in a while So I don't know if there's any files we could look at that might do it But my guess would be it's a it's a front end Whatever front-end version and what we try to do with J hipsters. We try not to be too fancy, right? So if we have spring boot, we're just gonna use like most of spring boots default So if we find a bug where we want to do something different maybe we'll override that but I would say in the blazer sense We would take the default recommendation and implement that We wouldn't try to get fancy if there's a demand for it And that's another thing that happens a lot because we have so many options Every time we do a major release we look at actually dropping things Because there's no maintainer for it. We have you know, there's like 20 people that maintain the project There's probably another you know, 10 or 15 that work on the blueprints But what we've seen over the years is there's been burnout for many people Because they've done so much work on the project and it affects their family lives and stuff like that So we're constantly getting like new groups of people that kind of step up and do the work It's the nature of open source But you know, we don't we've been done a pretty good job about not having like the original contributors kill themselves Trying to keep people happy, you know, no for sure. So What about CI CD like is there anything that James or can do like for that is it difficult to integrate? So day hipster CI CD we have a what we call a generator for that. And so you can see We have Jenkins Travis get lab Azure Get hub actions and circle CI nice, so We created this project over here All right, and it's up and running now so I can just do a quick demo what that looks like Looks like something the translation is messed up. That's what you get for using the master branch, right? Or it's actually we're good about that. We don't call it master anymore We renamed it to main so we're not doing that but you know, this might be tough to demo If things aren't working so it uses key quote by default which runs in a Docker container and I just must have messed up My choices somehow there, but but we can go back and look at actually implementing CI CD on this so I Wonder if your port is just different when you set this up No, it's because I'm using the main branch. I knew it was a risky move It happens, right? You know, it's a real demo if things don't quite work, right? It's proof that we're live We can do a hipster CI CD right here, and then I can let you make the choices. So which one would you like to use? get have actions Okay So get have actions and I do have a soft spot for Travis That's not me like the best ways it's like like an old ex-boyfriend It's like a nostalgic Yes So you can see it gives you choices here right space to select or a to toggle all so you can deploy your application to an Artifactory or you can analyze it with sonar You can build and publish a Docker image and they can deploy to Heroku, right? Those are all included in Along with just testing so by default this will just run the tests Which actually have like 80 percent test coverage on the default app that's generated Both in the front end and in the back end and so that's pretty unique. So would you like to choose any of these options? sonar Okay And then any other ones? Definitely deployed to her okay if you've got one Well, I don't know. I'm actually gonna demo. I'm just gonna look at the code that's generated And then So in our server so if your company had their own sonar server setup you could do that or you know You want to use sonar cloud? That's a default this is where things might break down we'll just try and Name of our Heroku application. We'll say a hipster Six so it created those two files and if we were to look at you know the get hub Workflows you can see all the coded generates, right? So it's gonna just call it Jay hipster pipeline It's gonna run on push and pull request and then this line right here is just to allow Skipping right running the CI process. So if you have a commit that has CI skip in it Or all these different variations and it won't do it I always end up putting the dash in there So this would actually not catch that I would have to you know refactor that but then you know It has node in there. It's got some spring stuff You know turn off the sequel because we don't want to clutter up the logs, right? And then it just uses actions to check it out to set up node and then that set up Java Install everything because it's got the front end and that's you know MPM install and then the back end just uses maven in this case It could use gradle and that runs all the front end test with the MPM run test And then you have to set up these github tokens right in your github org and then You know it'll run all the tests for the back end or all the package it and deploy it to Heroku So that's all generated for you and and I believe those options are gonna be there for the other CI CD processes as well That's pretty awesome. So It really can be for almost any scripting doesn't just have to be code, right? Right, and there's a for instance another one is a Docker compose, right? So if you were to use Jay hipster Docker compose It would create the Docker files for you. So it would say, you know, what type application would you like to deploy? It's a monolith Usually you do this in a different directory. So rather than in your same directory, you do like a tape Docker and then you'd run it and It'll say What type where is it located? All right, we put it in Jay hipster So what type of application would you like to deploy a non monolithic application? Well, that's in microservices. So I don't know why you use Docker compose for a simple like Monolith right like sure if you had a post that database and maybe a key cloak You didn't want to use octa like it would start up all of those So that does work nicely and getting everything to work together Elastic search might be in there, but really microservices is where that's really gonna come in handy So if we were to do a new like Jay hipster MS for microservices and run Jay hipster The command is JDL now and we point to that downloads JDL Jay hipster JDL that we had they'll actually generate everything for you or I need to update the JDL So yeah master branch again start main branch. There's a lot of moving parts to every step The Eve is this like a like a so this wizard for lack of a better term that asks you all these questions Is there a place that you is that just I mean this is an open source project, right? Is this so that's the blueprint that's asking those questions Well, that's the main generator. So the blueprints can override those questions, right? They might suppress them and be like hey for microknot For instance, it doesn't have microservices support at least the last time I used it I didn't so you'd never see that option to create a microservice application, right? So in the API that we use it can override those choices And so what I'm doing right now is I'm just reverting to the latest release version because I figure that'll work instead of the main branch there Oh, yeah. Yeah, there's so many moving parts. How old is this project? How long have you worked on it? Like six years Because clearly there's a lot of thought that has gone into this Fun a lot of contributors right have done a lot of the hard work I mean if you look at so how yeoman works is it creates a urc.json file that stores all the settings in there So you can basically see all your choices here, right? Like we created a monolith originally We're using this j-hipster version even though it's the version seven But you know, we're not skipping any client or server It's got a whole bunch of stuff in here and what you can do is you can generate your app And then you can go in here and tweak these right you can say actually I don't want to use a lot too. I want to use JWT And you change it and you regenerate your app and now you have the new code So that's one way of kind of playing around with things Okay, so I think I asked this before but is there a way to run this like with a new kit package Or I don't know how much you've ever used me again, but it's very popular at least in the microsoft world So I thought I would ask Um, well, that's it would only be for the dot net blueprint, right? so blueprint j-hipster Um, let's see if they've had any releases so they do have releases Where would I go to find if there's a new get package? So like a site Yeah, it probably would be linked here if it if it was If it was deployed there. I just thought I would ask the question because it so that means that um You'd have to make sure that you installed npm Although if I'm sure that a lot of people in the c-sharp and f-sharp world Also have to sometimes touch javascript stuff and that's why we would have to install npm Uh, that's just good to know that that's just like the preferred method because most of this is command line that I've seen And however, you did say that like the website though you can so how does it work? If you don't want to install npm in order to get all of that stuff going It'll just do it I guess in a cloud somewhere on that website and then do you download the whole project? Is that how it works? It'll push the code to like I think get lab or get hub based on that And then but you still got to like take it from there and build it somehow, right? So if you were to use heroku Heroku has the ability to say here's my github repo like pull from it and deploy Right, so you can do that But it still has to be a build process that happens somewhere to to basically build your front end and your back end I think that that's really powerful though because let's pretend that you are Working somewhere that has really bad internet Or a certain part of the world and all you've got is like one of those chrome books that are like 300 bucks Are you or less and you don't want to pull things down and compile it locally? Is that even possible? Well, it is I guess if it's hooked up to the right um like cscd process and it's Hitting the correct host provider, right that can go ahead and do all that for you The difference is you wouldn't be live debugging, but you would see the results right yep Yeah, that's pretty cool I'm starting to try to do like a whole series of things where I just use a compiler in the browser Which is something that um microsoft has been messing around with for several years and so they're getting better at it Um, but with the size of what chrome is. I mean do you really want to be running something like that in that browser? And in the javascript space we've we've definitely seen a move to more server side rendered Because for the last what 10 years we've been doing all client side rendered, right and it works Okay, because it reduces that load on the server But I don't know if you remember this like in the mid 2000s, right? We're always doing server side rendered pages mvc and stuff like that and they snapped right they were quick and like I think with a lot of the angular and react like you're clicking on a link And you're waiting for a spinner. Yes. Yes And that's the reason why there's two different blazers Like one of them basically just already compiles like and sends just the diff Through a web socket to the browser. So everything's already rendered over here and then pushes it. So it's flat It's very fast Um, it looks like my friend brian demaris found the new get package links I'm going to show that for everybody. So I guess it is up there for dot net core which The dot net world rejoices Because it's that's the first place we look for anything Is it and that's me how it is right for maven's the same way or for any java like you should be able to get it You know using java tools and uh, we don't actually require you do an npm install Um, if you were just to create a project There is a flag where you can say don't install and so you wouldn't need like npm it would actually Do the build process for maven or gradle or whatever build tool you use those are the only two we support those so So it actually I think most of them most of the blueprints try to do the same thing Which is you only need to have your core language installed You don't really need, you know javascript like we will download a plugin to build your javascript and act like npm for you That's how it I mean the less I can put on my machine the better right um I get really spoiled because you know, I built an entire pc here That is a beast and can run br But there's lots of people who can't and so it's good to know that there are options for it Yeah, and especially when you get into docker like uh, the default docker configuration If I tried to run this microservice architecture that i'm building right now like I think it takes like 15 16 minutes to start or something like that But if you tweak docker to give it like 10 megs of ramp or 10 gigs of ramp, then it starts really fast Right, so it's one of those things that um microservices. I think are great um, but if you have to run everything on your local machine like It's a good excuse to get a fast machine. I guess But otherwise it's nice to just run one service and have the other ones like running in a development environment somewhere So, okay. I noticed a couple things way earlier in this process, and I'm sorry. This is an out of turn question You mentioned reactive as a yes or no And is that something that matters with every language that is available with jc hipster or not? Yeah, it's pretty much like does a language or framework supported a lot of times Rather than talking about languages we talk about frameworks, right because in java we have Two or three four big ones, you know, there's uh, there's like micro profile or what used to be java e Now it's jacarta e and someone did actually write a blueprint for that. I just discovered it a few weeks ago Um, there's also corkis which implements micro profile, but still java and they have reactive support um Micro not I think same way But in the core spring boot has spring web flex Which is an alternative to spring mvc that does all the reactive stuff So it's a way different programming model because you're basically streaming data the whole time You're not blocking ever and so it kind of depends on the language or framework whether it's supported Like there's a good chance it's supported in a language and a framework But has anyone taken the time to do that in a j hipster blueprint like that's a lot of work, you know No, that makes sense So if I wanted to get involved which again, this is the first time i'm seeing this or if anybody else is watching wants to get Involved so like How do you even start because it's a lot of different options And is there like a list of things that desperately need to be done more than like creating a brand new framework integration I think the best thing is to go to like, uh, just the main Jay hipster Right here, right? This is our main j hipster org So you can see there's a few highlighted Uh projects here generator j hipster. That's the main one So if you found a simple bug when you're just generating a regular app That's where you might look j hipster.github.io is our j hipster.tech website And so what I've found is like documentation can be Like one of the best ways to get started in contributing to open source like try to develop an application with it You know just a simple one maybe and if you stumble anywhere Like go fix the docs to you know make that better. So for instance, um, If we were to go to j hipster here Our j hipster.tech and we were to go to the here side and you know j hipster in a few minutes and uh Contributing right it's got a contributing guide Doesn't tell you much maybe this one So this is you know, how you do it. So, um, you know, this is a j hipster bug tracker We have issues and bugs and feature requests. So one of the things I would do is go and look at like open issues Some of these are like You know logging redirect doesn't work and a lot to and react and we have a bug bounty on that Um, but I went and tried to reproduce it this morning and at first I was like, no this works fine And then after some further investigation The person didn't report that logging with a lot two doesn't work They reported that if you go to a protected url in your browser Then it doesn't actually redirect you back to like the login page, right? And so I think some of these um, what we should probably do is we need like a Good for beginner kind of tag, right? So you could you could filter by that. Um, but let's say Dot net right you're interested in dot net. So dot net blueprint j hipster. Let's go look and see if there's any issues there So there's 32 open issues There's documentation, right adding auditing documentation. There's uh Changing it to use cypress Improved documentation um, there's adding that uh ability to deploy to horoku Right and so from here what I would say is if you find Something that's interesting. I would almost Uh comment on it right or reach out to the project or whoever entered the issue and be like How can I how can I do this this person here in nicholas 63? I think he's one of the main developers on the uh The blueprint so it'd be a question of you know, can we uh, we talk to him and get some guidance But a lot of times what I found is um, just contributing to open source It's the willingness to try and uh, and then finding like almost a mentor to help you contribute You know because it's really about like if you wanted to contribute to this one And you would fork the repository Clone it locally and then fix something and create a pull request and hope all the tests pass right if we were to look at Some of the existing ones for this you can see You know, this is just uh Updating what we call a needle and a needle allows you to inject behavior into these templates and so You can see They only changed one line of code Right to just change that simple thing But all the tests pass And so Then there's some discussion here That's pretty cool. There's There is a lot of options of where I mean has the community talked about where it's naturally just kind of growing towards Is there like a next like? I don't know. Um, like the next Use for j hipster besides obviously having more and more blueprints for what it already does Right, I think it's uh, I mean we've actually made an effort So we're working on version seven right now and we hope that that's out by the end of the year at least a beta version Because we released version six in june of 2019 right so we're going on almost a year and a half and you know You think maybe we have more time in 2020 because we're at home But there's uh, you know, everyone like it wasn't easy just because we're at home to work more, right? And so uh, and so there's there's been a delay, but it's because we're trying to do Um a lot of refactorings to make it easier to maintain and also dropping stuff So I think uh, you know, what I've learned in my career is uh Is you can have so many options But you don't really want to be overwhelmed with the options. You don't want the paradox of choice So for me and j hipster, I focus on like monolith micro services Java and Kotlin right there's a kotlin blueprint that I like to use But as far as like dot net core Like I'd like to support it. I go and put bump panties on it But I don't see myself using it if if you or someone else on their team want to use it I would certainly help you with that right, but I'd be learning at the same time And so I think uh, you know trying to narrow your options All right is almost a good thing like I've learned that if I use elastic search Um in a lot of my demos they fail. So I stopped using it It's nothing against elastic search. It's just our support of it isn't Like up just enough all the time Well, but that's like the beauty of open source, right? It's the it's the wikipedia Kind of option. It's crowd sourced It's it's not super perfect, but I use I see in here you have some sort of integrated test. Is there a place where the tests live in this? Uh repo like can you add tests? Is there like is like so they probably use like uh github actions, right? So if you were to go to github and look at their workflows, then you could see You know for the main generator, you know, it just runs like mpmci and mpm test All right, so then if you want to write tests you would do that in the appropriate directory And so that would test like uh, you know, these are testing different things, right? So all different app types jw2 with angular with blazer msql mysql And then it has parameterization for how to do that and then all these scripts like run it Right, and so there's there's actually one guy pascal now. He's a lead Um one of the leads on j hipster the other two folks that are leading with him were uh, julien uh julien and then uh And depu and both of those folks did a tremendous amount of work But what pascal originally got into is just c i c d right of the project And making sure things worked and now he's like a lead. So I think it's important to specialize Right if you are going to contribute to j hipster, you know, whether it's blazer or angular or react or something like that Like I specialize in oauth, right? And so um every once in a while like we added the reactive support I had to go in and figure out how to do a reactive gateway with spring cloud gateway And make that work with oauth right and so um a lot of that is just trying to narrowly focus So you aren't overwhelmed with all the work right if you're if you're tracking all the tickets and trying to fix everything You're just going to burn yourself out. I know that's what many times. Yes. Do you have Data around like the use I mean obviously inside a github. I think you can have a little bit. Is that Mostly where you know, you can get some of your Yes, we can look at some things here right insights Um, let's see what they give us here Um, this is just on usage right like how much people are working Um, this is only for a week. So if we were to go to a month I mean, there's there's a lot of commits going on right? There's a lot of work to be done But I think what's more interesting is if we go to start about j hipster that tech v should be um j hipster statistics They should be anonymous so anyone can see them and so you can see this is just the last 24 hours, right? There's been 538,000 projects generated That didn't sound right I think this is This is overall, right? Um, but last month you can see like on particular days. There's 1700 projects generated on the you know 118 um last year there's 25 thousand Yeah So it has nothing not not the one that you install on npm Well, here's what it says so um I think it prompts you when you first install j hipster and you first run it if you want to share your stats And so for all our cd and ci processes we make sure and turn that off All right, we don't want those to influence stats, but like I haven't been prompted to share My statistics with j hipster like in the last year But I think what I'd have to do is completely uninstall it Reinstall it run the command and then it would prompt me So it's like a one-time thing, but you can see like what about angular versus react All right, that's kind of interesting In the last 24 hours someone went big on angular there Um, not as many react But I think a lot of it also has to do with our defaults, right the default choices All right, so you can run j hipster and just hold down your enter key and it'll select all the defaults Right and you don't have to make all those choices if you want So I imagine some people might do that. Um, there's other interesting things like, you know, maven versus gradle Again, a lot of people choose maven, but I don't know that They did it consciously. I think they were just like that's a default. I'll use it Yes I mean I'm not not defaults But it the whole purpose of this is to just like uh dig a little deeper into what you need, right? right I remember being told at one point in time that angular is dead and I laughed No, it's funny because I mean, I think in the general web community Right, it it might be a little bit, but it's only for the bleeding edge folks, right and uh, and the java community Like we're pretty leading edge in the java space But we're not that leading edge in the web framework space, especially for javascript So, um, we might be like two years behind and what I found is a ton of java developers really like Angular because angular jas was one of the first ones that was like put your controllers here Put your services here, you know, put other things here and we were kind of used to that in java land And so people really embraced it and I think um People have learned react and they liked it, but there's still like you said an nostalgic feeling for angular Yes, uh, there's a good Mention here and it looks like statistics can be shared through the cli But a lot of people don't see statistics, especially if they're under a company proxy configuration. That's interesting cool And yeah, I went ahead and put up the link to the the stats on this because I find personally I find it really fascinating um Data supports what we do right and so I actually had no idea how many people use this on a practically daily basis it looks like Right and this is interesting like, you know the cloud deployments, right like kubernetes. It's a quarter of it Um cloud foundry. It's funny because I have a nostalgia for cloud foundry because it's been really easy but they just announced like Two or maybe a month ago that they're shutting down in january And uh, it's funny because julien d'bois like, you know, one of the founders of j hipster has been trying to drop support for it Forever and i'm like the one that's like, oh it works, right and so finally we are dropping support because it's not going to be there anymore Probably one of the easiest ones for me to use was always jankins. Um, like as a cidcd product It's really ugly, but it's like the craigslist of things that just works, you know But it's definitely not the like the sexy one, you know forever So at one point it was like the only one that people used for a while. So I understand the nostalgia No, I still like it Oh, yes. Yes. So of all of the different projects I don't know. Maybe you obviously don't have to people don't have to show you where they're building But is there like a particular project that you saw actually ended up like going live that was generated with j hipster? That's gonna be a tough one. I wouldn't know where to find that. Let's see Um, just maybe heard between like the contributors that have worked on it Now we got a nose shining example. I don't think none. That's like, you know We don't have a yahoo of j hipster anything I think when one of the things that's cool is um, you know with job developers a lot of times They do a lot of things behind the firewall, right? It's not as public facing a lot of times It's b2b between companies and if you look down at the bottom here Oh, where is it? My client side options Uh, who uses j hipster? So you can see right we have a list of 316 companies, right? That's in this all link here But we feature 65 of them. So this is developers that work for these companies and have filled out this form to say, yes We used it to develop an app That's pretty cool. Wow That's not nobody So how many downloads does this have if you just download it through npm, I guess right locally Well, let's look so npmjs.com And then if we look for a generator j hipster Looks like almost 42,000 a week Oh my gosh Congratulations on working on such a successful project Yeah, it's been fun. It's uh It can be like I said overwhelming but you know octa's been great and letting me work on it and doing it as part of my day job Oh, no for sure. I know for me that now I'm going to definitely mess around with a couple of different things So These are you said these are mostly focused on you said microservices monoliths But you really like mean at the end of the day like rest apis Are you talking about that or just microservices in general? Is that like what this tends to go towards? So it's a good point Let me uh, just stop sharing my screen if you wouldn't mind and then we can talk more about this because I think it's an interesting topic How we do microservices right now is we generate the back ends as separate projects, right? And they have rest apis that the front end talks to well the front end is all generated in gateway And so if you think about it the whole purpose of microservices is to make them independently deployable Right and so you can just deploy this uh the store microservice and the back end will be updated And ideally the front ends updated too, right? But how it works with j hipster is you would have to update the front end on that gateway And then you'd have to deploy two of them. So what we end up is with is a monolith UI So even though we're doing microservices on the back end, we have a monolithic UI And so we're not doing Quite the same service there So the thing that's excited me for about a year and it's still not fully baked Is uh micro front ends and so micro front ends allow you to do is put your front end on that microservice Or in that same application and then basically pull it in at runtime into your main gateway application So your gateway would be like a shell But it might have like user management or something like that that's common to the whole architecture But then the actual like product pages or you know, blog pages that ever would be sucked in from the other application So um webpack 5 was just released. I think a couple weeks ago and they have module federation built in So this allows you to do What we're talking about where in your webpack build you can figure it to be like Hey, you're going to talk to this remote server to get your data And render it and have like fallback ability and stuff like that. So we've done a great job on the back end of architecting and using microservices for the last like You know six or seven years But the front end's still like figuring out that oh, we're not doing it like we should be doing So that's where micro front ends come into play and there's issues for j hipster There's bug bounties out there But we've really been waiting for the frameworks to catch up because uh react is not so much a framework As like a ui toolkit, right? And so it's easy for you to say hey webpack do this But angular is more of a full featured framework and people don't even really want to do it without the angular cli And so the angular cli The first time we're going to support it is in j hipster 7 which we're releasing in a month or two And so, you know, there's been a lot of demand for it, but we've we've been kind of ignoring it but now Even if you went to the angular cli and looked there's issues for like module federation and webpack 5 And so it's not fully ready yet But I think it's getting there Yeah, yeah, and I think it will be in angular 11, which is supposed to be released tomorrow So like I think there'll be a lot of things happening shortly on the micro front end Spot into hipster and that's that's what i'm excited about. I've been working on the micro services and the react stuff for the last year and now like the micro front ends might be ready to implement and that's So, I know i'm fascinated by that like I told everybody that was allergic to uis And that's why I wanted to stick to back end stuff, you know, but it's like we really can't it seems like at some point in your career If you touch code, you're gonna have to Mess around with a front end is something right and I think for our jobs like it's tough to be Hip right and talking about the latest and greatest unless it's the latest and greatest right like Well, like I remember last year when there when web assembly like came out, right? And people were talking about that I'm like, oh, there's just yet another thing I have to pay attention to like is it gonna catch on is it not gonna catch on The big joke is um, is this going to be the next silver light or or not, you know Where it just has its time brief moments and it just kind of fizzles out or is it gonna be or it's gonna be more like AR and VR where like the initial excitement was there and then it just kind of went into some like r&d with Regular companies and now they are after about 10 years pushing it now. Do I know it's it's ready for prime time? Let's do it. So if you had invested time back then you were ahead of the curve And that's really exciting though. I now I have to like search How to do some more blueprint stuff for dot net because there's definitely a lot coming here dot net five just got released This week. It's very exciting Finally, we have unification And of course there's all sorts of things coming down in javascript worlds I know python has a lot going on right now Not to mention what's happening in ruby on rails as well So it is really exciting. But my goodness. It's a lot of options. So this is really helpful I think I'm gonna try and see if I can can't use this maybe for a demo in the future because the the less things I have to Create just the basics of the better I would rather focus on my business logic for what I am trying to build unless about just putting the guts together um, I used to be excited about the guts like When I first learned about the guts of a project and then after that it just becomes annoying to constantly have to fill up A json file with a bunch of settings Maybe that's just me if anybody Out there ever wants to drop us Yeah, any questions like about j. Hipster, you can always hit us up on twitter and ask us But also you can email us at devil at octa Dot com and we are happy to forward everything over to matt so that he can answer the questions about the framework um And of course we're gonna things right instead of the samba one feel like I don't know Maybe maybe and of course if you want to see the tree played it will be on our YouTube channel after this So definitely subscribe a little bit there, but um, thank you so much for joining me matt and answering all my seemingly pretty silly questions for somebody who's definitely in the trenches But i'm excited to see how we can automate even more I mean maybe like the next time we come on we can start talking about making it all voice controlled You know blueprints. I'm all for that. Let's experiment with that All right, I've got another funny story that I think it'd be fun to end with so When I first started acta You know I I came up with this mantra that I was going to use j. Hipster and do a lot of demos with it and And what I found was uh, I think it was at devox uk I was doing like a microservices demo and it took like 10 or 15 minutes to generate everything And I was like oh my this is like, you know talking my way through it like showing the code and stuff like that And and I experienced like a whole you know Three or four more months, maybe even a year until I went to a j hipster conference j hipster conf And uh was talking to the fellow people that you know worked on the project And I was like it always takes me like eight nine minutes to generate a project And they were like What it takes me like 30 seconds And so we compared machines and I was on an older MacBook or on a newer macbook pro than they were and uh, and it just generated so much faster So it turns it out octa installs by default software that scans any new files that you would add So an npm install right installs like millions of files and it was scanning everyone I finally got permission to like just ignore one directory Right and that's what I generate all my code in and so I got it down to like 30 seconds And the reason I bring it up is because in these, you know COVID and virtual times what I've noticed is if you're using camtasia or something to record your screen You can get similar kinds of major slowdowns Right, so if you're doing any j hipster screencasts or playing with it like cut that part out Right or do it off screen or something like that because you know it looks slow But it's really fast normally when you're developing on a day-to-day basis Well, I feel you there like there are definitely times I want to throw my computer out the window because of what's going on Especially when you kind of go into a vm inception where you start digging into things on top of booting into that but also going down this route hole and then remoting into another computer from there like it I worked on a lot of major enterprise stuff that still Requires you to just only have the credentials to remote into that machine And then that machine you need to boot into something different And then you go from there and every time that everything just slows and slows and slows I still think it's incredible that get you know anything that runs on I don't know Like azure or anything anything can even remotely be fast enough Depending on the connections that they've got going on what people are doing with the boxes they have up there I still think it's incredible. We've done a lot with hardware acceleration. Luckily. I don't have to own those pieces of hardware They can be in a data center somewhere doing that But I feel yes sometimes it's like the simplest problem causes the most amount of pain Yeah Yeah, thanks again for joining me and Do you want to tell people where they can find you on twitter? That would be awesome Yeah, I'm at mrable. So m r a i b le and uh, if you want to share my screen one more time I have a funny thing that I discovered today Okay So there is this tool that allows you to see your twitter family And I don't know how it works, but my twitter family my parents are josh long and uh j hipster and house is julian who uh, you know was one of the co-founders of j hipster my children are octa dev and uh, a sakali so If you go to this site and uh, and you know go ahead and do it I unchecked this box that said post a tweet with your results and it still did it So just to warn you if you do do that it might Post it even though you never wanted to but I thought it was funny when it did it and somewhat accurate Did you end up tweeting it anyway? Well, that's what i'm saying is I I never tweeted it and it did it anyway Like I unchecked the box as I tweet it and boom it went out there But I also noticed a bunch of friends did it so that was kind of fun They probably unchecked the box too and it just ignores it nice All right, well Thanks so much and I can't wait to do another one of these with you in the future Yeah, thank you, Heather