 Good morning. Good afternoon. Good evening. Hello, everyone and welcome back to another episode of the developer experience office hours here on OpenShift TV. I am Chris Short, Principal Technical Marketing Manager at Red Hat. I forgot what my job title was over the long weekend. The crew I'm joined by today is a group of wonderful developer advocates and people that are out in the field helping people teach others how to code in today's cloud native world and how to build things in our cloud native world today. You know, it's kind of an interesting week, you know, here in the US, we just had a major holiday, you know, a lot of people will be taking Friday off. So it's a shorter week and we kind of wanted to have the little fun on the show today. So we're going to talk about our favorite stacks and maybe some of our not so favorite stacks. And when we say favorite, we mean like most productive or maybe not the best, but like the things that the folks on the channel appreciate the most. So let's do a round robin kind of intro, you know, for folks that are new on the program or haven't watched us before. Ryan, would you like to kick things off please ensure our regular regular. Sure, you bet. I'm Ryan Jarvan and you could find me online as Ryan Jay developer advocate here on the OpenShift team, and I will send things over we got a couple of new folks new to the to this stream today. Yes, I'm going to hand it off to one of our other stand by folks, Natali. Natali, you want to do an intro next. Yeah, hello, my name is Natali Binto developer advocate same team over Ryan, and you can follow me also Twitter with Natali Binto handle. And today I'm here. We also have our colleague, Madhu, Madhu, you want to introduce yourself. Yes, yes. Hello. Hello guys and everybody. So my name is Madhu. I'm based in France and I'm a space additional architect. So based on OpenShift and all the developer experience that customer could have an OpenShift and basically so I'm travel. So it's what I do before but basically I have a lot of meeting with customer in order to understand to help them to understand all the benefits they could acquire by using and integrating OpenShift in their development and application life cycle. And I'm happy to be there. Awesome. And then last but not least I think is Mr. Jason Dovey. Hey everyone. I'm on the same team with Natali and Ryan, a developer advocate been on this channel a few times now. You've probably seen me floating around at some point and Chris just disappeared. I'll be serious. Hi. You're most known for this book, Kubernetes operators, which I download for free. I will drop a link in chat right now. If you don't get the link, let me know. But yes, you can get this operators book written by Mr. Dobies and the one and only Josh Wood also on his team, their team. But yes, please go download the book and Jason, sorry. I don't have a copy near me. They're kind of about there. So I'm once again dropping the ball in the shameless stuff. Thank you for that. So, yeah, I got your shamelessness for you. All right, so who wants to start about like their favorite most productive stack. I mean Ryan, this is your idea. You want to just like randomly pick somebody or go first. I'm going to maybe I'll kick off. Yeah, how about a little bit of both. I wanted to throw out a suggestion for folks in the audience. Please chime in and chat with your feedback, your thoughts and your favorite, most productive environments, especially if you're using Kubernetes in your development workflow today. I think so. I'll, I'll throw it on over to how about to Jay, Jay, do you have something to share on this topic. Do you want to do the bad to show you both my good and my bad. Do your good one first. Yeah, start with start with a good, make sure the short doesn't go on for too long. I think we're trying to make sure we try to keep today positive. Otherwise, yeah. And it's fine because my bad is actually would be fairly quick and it's all personal preference thing so it's not even absolutely this is 100% your experiences you're, you know, you're, you're I'm the Python guy on our team but not. I say that but it's not like I was pigeonholed into it. I caught my teeth on Java in college and then spent 10 years of my career doing Java work for JBoss and then right have bought them and I moved over to satellite pick that Python and I just enjoy that most. So I haven't put a ton of thought into this so it's not going to be the most organized answer but I can tell you that actually before I can get to that real quick. One thing I do want to give you a shout out to in terms of stacks and this isn't completely fair because I've never done a ground up project but if you've ever installed any of the solid open source PHP application so like your word press your PHP bb Yeah, I set up one of those for to do my own link shortener instead of bitly so I have my DNS and I have my own link shortener now. And it reminded me how awesome those are to work with where I remember the first time I installed WordPress and they're like just basically drop this in enable PHP and go. And then the first time it puts up and it's like hey first time you go to the page say hey looks like you want to do an install and then it guides you through and then you know you set the. It sets the conf PHP for you and it tells you to change permissions and like, I've played with so many of them and that entire. I say PHP I really feel like it's not exclusive to that world obviously but if you get into any of these big projects they all have that similar feel up on zip to your HTML directory, go to this page and then the install guide you through and it is so slick every time and My first WordPress blog was going on 1617 years ago now and at the time it was really badass but like, like I said two weeks ago I set up this URL shortener and I was like, God I missed this whole process. Anyways, it's really slick and smooth and like you know you don't, it was, it's weird because like you don't think of installing a web app per se. You know I do everything through DNF for my Linux desktop I use homebrew for my Mac, but like that prospect of this installations configuration really slick so very cool from a general PHP stack standpoint. Personally though I think these days I've been doing a lot with flask, although I'm going to mention Django a little bit more here because the kind of in particular so we assume most of you guys haven't played with Django it's your what you would expect that of any kind of web based framework that's I have played Django admin is killer. I have played with Django because Ansible tower uses Django yeah. Oh yeah okay I guess you would have from the Ansible background. Yeah what I what are the cooler features of it is it gives you this managed script, and you run everything through that so Python manage and then you do something handles all of your database migrations which is really really awesome that I haven't had to think about it. This is an eight topic for me almost wish I had realized that was this was going to be the topic earlier because I teach at Villanova University and I teach to your projects this semester. And I've been spending the past two weeks prepping all these students who have never touched any of this stuff and I'm like all right well first thing you got to do is pick your stack. And they're like, Well, I have no idea and I just like bombard them with options so I was telling them about Django. And, you know, since this is an open shift and Kubernetes related podcast and podcast what are we on this is a live stream stream stream. Sorry, I'm a little under caffeinated for this. Yeah, so what I think is particularly neat is that you can chain into that managed up high to automate things like the database upgrade. So I have an app that I was playing with where instead of having the image directly call the Python manage have a basic shell script that will run through database upgrade migrations first and then start the server. So it gives me that single container that's going to do everything. I was a little bit in there where I can just try to upgrade the database and it's not there it'll wait a little bit and try again so that free integration standpoint has been neat that you have this script outside the project level utility that does everything you need to do in terms of generating the migrations running the running the server and then being able to call that from the container. And then just have that run the migration script so all that flexibility was really slick. And I just like, you know, this isn't supposed to be a selling thing for Django so I could just talk about how nerdy I get like I still to this day it is 2020. So when I see an RM framework work correctly and like easily I still it's one of those things that still like makes me excited. I was trying to tell my students that sounds like you're like this queen took databases. If you use that if I see writing SQL you've probably done something wrong, because none of your projects are complex enough to need you to go to that level. Make your objects poof they just magically pair the database like that's one of those little things that still kind of makes me excited to be in this industry, even something as simple as SSH into a box across the planet, like in Singapore and a piece out like that I'm like, that is so wild. Like, this is still really cool to me like 20 years and stuff still we sit back and like, that's really bad ass and or I'm frameworks and Django has this kind of support for it. I'll talk about flask real quick I'm starting to get it realized that there's not really a single paradigm for using flask, which I kind of dig like you'll see if you follow tutorial depending on who you get people will approach it and wildly different ways, which is an interesting take on it and it lets you kind of shimmy things based on when you need to load your database when you need to. A lot of these are designed expecting you throw some database credentials to the framework, it's going to start up and immediately connect to the database and native that's not necessarily the case right we have. Unless you have some specific install plan that starts your database container and waits for it to be running before starting your application, you got to understand those timing issues and have it try to reconnect and be a little bit more smart so I think being able to play around with the kind of openness of flask and be able to support that is really cool. So I feel like I've been talking for a while I'm going to shut up on that now but I suspect I'm going to jump back in and comment on all the other topics. You're fine Ryan where we going next. Yeah, I like I like the sentiments you had there I think one thing that I've I've been developing for a long time so I've seen a lot of kind of transitions through different fads and different trends in computing. You know, lamp stack is something that is like a big reference frame in my mind. You know that was the the paradigm for like years and years, whether the P was PHP or Python you can debate but yeah lamp lamp stack definitely is something that's good to know, but it certainly was a lot of a lot of kind of like you'd set up your own my sequel, you'd hope that it was the right version of my sequel and that you were using, you know, you'd probably be locked into a certain Linux distribution because you wanted to make sure you were on that my sequel and and with those patches and, you know, there's a lot of variability to it, especially when you have individual developers choosing their own workstation environments, and then promoting things from maybe a fedora up to an Ubuntu, or, you know, like you had issues with binaries and dependencies that are hard to keep track of. I think one of my most productive environments was possibly I really like Django admin for developing something that I could hand off to teams that needed like a strong admin interface to interact with the database. But Ruby on Rails was probably my fastest point for being able to slam out new web services in a short amount of time. Anyone else here on the chat used Ruby in the past. So I have, you know, I'm an ops guy, you know, traditionally background so pretty much all the languages you're talking about I've touched before so like yes Ruby on Rails I've had a lot of experience with Ruby on Rails shops and they tend to be highly productive, which is really cool to see. This is one of my first full blown MVC frameworks that did everything for me when it's got everything supporting the unit testing and the database connections and now we're looking back. Migrations. Yeah, 9 yards. Yeah. That was one of the first ones I personally played with I don't know enough about the history to say when but I know that I feel like that was one of the beginning ones that there was struts on Java and that kind of stuff but Rails was the first one that felt like it was absolutely everything. And I mean, you say Ruby on Rails like I often have to tell my students that Ruby is a language on Rails is really the way you use it. Yeah, it's two different things but that's the phrase that's what everybody talks about it's just Ruby on Rails that's that's how you do it. Right like people, but yeah like Ruby and Ruby on Rails like it's almost like Kleenex and Xerox right like they're almost anonymous now right like it's just the way there's other ways to do Ruby but it feels like Ruby on Rails has become the default. That way yeah yeah that's a very common way of leveraging Ruby I think from Chris's and the more systems and you're probably just using pure Ruby. But yeah, I don't know that was definitely probably one of my high points for productivity and to quickly contrast it I did a kind of a typical lamp stack at the job I had following right after the Ruby on Rails job. I went to a job where I was more traditional lamp and PHP MySQL. That was a big MySQL database on on that next job. We were really pushing MySQL to the absolute limits of what it could do at that point in time. And so when I was developing as a standard front end developer, I definitely wouldn't have access to the production database. I'd be developing based on kind of a replica stack that didn't fully represent what was available in production. And one of the main differences was my dev stack did not have memcache and production always did, and I'd have there was no clear tool for clearing the cache or deleting bad cache records. And so that was a lot of our day job was like figuring out what was wrong with the cache and how we can work around it instead of using the cache and it was like really kind of fighting the stack in a lot of ways. And our deployment tool at that job was just doing a SVN export right onto some production disks and it was not always reliable. That is so cliche. I learned a lot like that's straight out of like a textbook horror story of all of the issues wrong with why DevOps actually became popular. Right. Exactly. We were doing. Yeah, yeah, we were doing, we were doing some really advanced stuff at that like, I was doing a SVN export onto production disks. But that would all be in a separate folder behind and then in order to pop forward to that deployment, we'd point repoint a sim link. So it was a really quick atomic operation and something that could always be rolled back by repointing the sim link. And we also did traffic shaping using like cookies and stuff. So we were basically like we could have used Istio maybe if we were if we had all the technology. That's maybe what I would do today to reimplement that same stack in a sane way. But I don't know enough about Istio to plug it all, you know, to do it to that level. But interesting. I learned a lot. I learned, you know, that was where I learned how to do traffic diversion and have multiple versions in production at the same time and code in production and don't worry about deploying on Fridays because I don't know. Yeah, I learned a lot at that job. It wasn't easy though. No, bad. Geez. Yeah. Anyone else have a similar transitionary story from lamp to more more modern development that they'd like to review. Natali. So from lamp actually also, you know, from university, you know, studies you become usually used to become a Java developer. So I was a Java engineer. I started the work. Yeah, I started working as a Java engineer working more over, you know, on application content. And then there was the difference between application containers. There were J boss, like what fly or, or glass fish, and we were working also with Tom cat that was an application server. And to be honest, working in an application container with the AJB version three was pretty, pretty easy for us. We were using a hibernate is still in use hibernate for generating the entity mapping. You know, a tool that generates the maps, the table on the database, execute also the immigration on the database, J was mentioning this about the database, it's really important that you have a tool that help you running this migration because your software doesn't change as your that scheme or database change. This is not true, maybe we have no sequels, but you have to figure out also how to create your, even your schema less from from the code, right. So my, I was born with this model job enterprise application container. And to be honest was very easy to work as a back end engineer in this way, even for using JSP maybe for the front end but as back end. As back end was very easy to do this. And you said you were using e jb's. Not now I was using a jb, a jb, a jb, sorry, e jb, sorry, e j. Okay, okay. Yeah enterprise means that's interesting that you had such a good experience with it because like I never, I didn't do a ton, and I thought that, and I don't know how far back you're talking but the general sentiment at that time was it was fairly rough to get build process set up, but could be totally my experience is why these kinds of talks are cool. And that's interesting to hear that that actually worked really well for you that's awesome. It was it was working good. Starting with those glass fish while fly. Then turn it into a boss. And I think today, back ends, developing Java are mostly on those technology yet but maybe Madu can share something about the new technologies in Java. How do we do Java in a cloud native way, you know, right, like. So yes, basically, on the cloud that you weigh so let's start from the beginning so as not only when I finished my study so everything was mostly focused on Java as a Java developer. And yes, on the market, basically everybody were looking for Java developers is what's quite easy to find some jobs like this. So I use Java in the so using Java with different framework and also with different application servers. So I start. So I think my first project was migrating from WebSphere to WebLogic. So basically with all the Java stack that you have to migrate, etc. So now that I'm read out we tried to migrate is both of technology using Jebus EAP. But yes, mainly on my career. So that's my favorite one and my more productive one is Java. But it's because I'm really comfortable with that. And I mean, for sure, if you try to make me some competition so Java against Ruby, for example, or Python. So I think we can have a really, really cool competition on that. On the cloud native way. Right now on the cloud native way. Mainly what I've seen so on the market and I and what I start it's I start with spring boots. Okay, right on the cloud native way because it's micro services. Everybody doing school boot is very, very easy. So just the difference between when you want to deploy something with the application create a rest API, etc, etc. So basically when spring boots come came so it was really, really easy. When I start with spring boot with is was cool spring boot was nice and then so currently I'm trying really to use old container technology with open shift and so on. And we know that sometimes as the performance is really, really important because of course, but was not really designed for container stuff. And the cool things that we have especially though with this project it's about so quarkus because it's really, really, really a pleasure to work with that. So just especially on the developer part because okay, if you are a Python, if you're a Python JavaScript developer, it's something that for you it's completely normal because it's interpretive languages as a Java developer. So there is a developer mode who help you basically to change your code and in real time, you will be able to see automatically what what's happening and to get a change, which means that you don't have to rebuild your application and to wait until your application you just start with one comment and you will be able to to get the same experience that Java or Python or any other kind of language like this as so which is really, really, really, really cool and really, really awesome. Yes, many Java, many quarkus. On the also on the cloud native part, I see and I use a lot of Golang. So, because it's so quite, so it's all about also resources. Of course, so Golang, it's nice so you can do really cool thing about resources, you know, you're not going to consume a lot of resources, but I start go when I learn about operators. And for sure, so I don't know if anyone here has some experience with go but to be able to really learn go for me was really, really, really painful. Not the fact that's to writing the code writing the code is okay I mean a so if you have a developer any languages you just need to understand how it's working but after that the main part of your job is to find the right library the right languages that you have to use and so on. And I in go so I don't know if it's from my side I don't know if I have some problem you know to type in Google to find things, but to be able to find the right libraries that I need to include into my to my go file. It was really, really painful. So basically there is some version you need to so basically I need to go directly and to read code into some git repository on the pkg folder so to read exactly what I need to do to find the right version to play with all the git branch etc etc. So on that part so go was cool, but it was quite as painful on that. And, but I don't know if anyone that any any experience on that part with go. I mean my experience with go is very limited right like I'm on, like I said I'm an office guy but I have spoken at a go for gone before so I do have some go experience right so. Part of my job, and it was my last job in Raleigh before I moved up here to Detroit. I was working for SolarWinds at the time and we had like a lot of cruft right like there's a lot of because we were acquired we were a startup that we were acquired by SolarWinds we had a lot of technical debt. And part of that technical debt was like this one app that somebody had built like three years ago and just hand it off to the company. And it was like the stack of load balancers, a tiny bit of PHP code and a database right like so it was like, okay there's a certificate expiring somewhere in this stack of load balancers and three days. Right, like, and oh yeah by the way here's the standard that you have to adhere to your SolarWinds for you know passing verification and all that stuff. So, I actually wrote an SSL testing tool because the go standard library adheres to the RFC so well. Right, like when it comes to like a cryptography or anything like that that standard library inside go is very very good. But like Madhu pointed out you get outside of that standard library things get a little wonky with go. That's about my experience is that it's because I shouldn't say it this way but like I it's I think you go just hasn't reached the critical mindset yet that you have a billion these external libraries, which is almost it's going to hit a sweet spot soon but you look at Java right now and it's been around so long some popular so long. There's a dozen different libraries to do the same thing. Python starting to run into that too. I was just looking for the hell is it just looking for. Completely forget which library is looking for but there's not just a Python supposed to have just one single obvious way to do things right. You know it's funny haven't succeeded yet. Something else that reduce it so he talked about porting from web sphere to web logic and like that made me think back to like the old days of Java when it was the whole right one to run anywhere and then right price Java took over and it was no it was so siloed Python. There's definitely a variety of libraries out there that do similar things and trying to figure out what the best one it was trying to connect to message buses I was looking for anything rabbit I was looking for a few Artemis a bunch of different things I was playing with and trying to hunt them down was kind of annoying, because there were a bunch and they all were kind of poorly documented. I was going to hit that point soon with its kind of rise where it does have more of this and I just don't think it's there yet. I go though if we're not not that we want to go into the best of but we're talking about stacks that I didn't particularly care working with it is absolutely go from as much as I wanted to like it. And from everything from my own kind of tendencies to organize like I have a code directory in my root in my home directory, and that's got all of my projects, except for go because they've got their own little way of separating things you got to have your go path and your source in your package. Okay. And then, oh, I can't. The other two things I can't get past. I can't. Here we go. We got them started. I know I know the the imports being so heavily tied to the version control system has always bothered me. And then what was it last year Microsoft what GitHub. And whatever they bought, right, Microsoft, right, I'm not convinced. Microsoft bucket up. There was initially this this panic of oh shit, there's going to be people who will move off of it because they were in time Microsoft but guess what all of these go import say github.com slash whatever so what are we going to do about that. And then the error handling I just have not been able to get comfortable with nor their rationale for it so I it's a it's all very personal things you know it's my, maybe if I was new to coding and that's what I first learned all this to feel a little more natural but having come from a background a Java background in Python having played with Ruby having played a couple of other things. Some of these things felt like change almost for the sake of change. And I know they would argue differently and especially, you know it's hard saying any of this stuff on an open shift channel where Kubernetes is so die hard go. I came from open stack before this for I was like yay Python everything. But the flip side is, at the end of the day bad code can be anywhere. I knew a guy on open stack he submitted a patch, and he basically took this this ability in Python to make an object reference callable. So he created a new object whatever and then call it like it was a method. There was no good reason to do this, it made the code look particularly weird because you lose a lot of readability in Python because you don't have the static types. So I looked at this and like why the hell is he calling this method on an object, not like dot something it was just like you know, my variable parentheses, and I looked through the patch and I'm like, I'm like, I, that's cool that you could do it but you kind of never should like do it. There are very few compelling reasons to do it. So my point, my point being, I'm watching chat right now blow up with go modules and and go death and so funny, just go one one one modules alone as a variable name is enough to kind of piss me off I mean I just have this kind of weird mentality going into it. Point being I think a lot of it is I literally just typed I literally just typed when it comes to go the newer versions are more friendly and then you said that. I just think I mean, it's a personal thing to me that just looks particularly wonky the go one one one modules. Yeah, I get it, I get it. And I do like this. Most of this quote this this beautiful is better than blah blah blah the simple is better than complex is the thing like most of the time, clever code no matter what the stack is fine when you're trying to show off and then everyone else is going to hate it because the longer it takes me to parse through your particularly clever line of code the more angry at you I'm going to be this is again a dude has been doing this for 20 years and I so jaded going into all of this so you know it's interesting to see is I see I don't have the gray beard yet I'm not capable of growing it but I get the appeal to that. Now, this is what I learned on stop changing this stuff for the sake of it but um, and I was going to be very good about not bringing this stuff up I do have other complaints about those are my major three so I'm going to like try to diverge a little bit here maybe just to get you a little off topic but like red monk releases I think every six months like a rankings right like a programming language rankings and go is historically been like towards the bottom of that list I think for a lot of the reasons you mentioned it's you know it's widely used on back end systems. There is you know front end frameworks that work with it but like it's it's unique, but like I've never met a programming language that I picked up and learn before. So it's unique in good ways to so it's you know, like, I would never have ever thought to write a line of go code for that project if it weren't for like having experience in the go community and stuff. Right. And like, that was before going to go for con or anything like that right like it was just being adjacent to Kubernetes and in part you know hanging out with, you know, all the Kubernetes devs they all wrote go so you know, this is like is this popularity. So this is their rankings right like so they're an analyst firm, they do you know analyst type things but red monk is traditionally been one of the more, I guess fun, or you know, more, more accurate more authentic. Analyst firms in my opinion and you know we work red hat worse with them were you know one of their customers or whatever and but they've updated this so frequently you can kind of get a good idea of where things are going the direction of the industry so forth so on but this is also based off like a lot of different metrics and they can go in I think they go into that somewhere in here, but like they mentioned CSS right like as a language and it was never designed to be a language right. But here we are, you know, I want to post it and the reason I was asking for like clarification like is it popularity is it favorite is it fun. This went around us. One of our mailing lists. Yeah, not too too long ago and rust ended up showing itself super popular in particular listing. Yeah, I've recently picked up and installed a rush and I'm going to start trying to kick tires on to be honest with you Jason. I want to I haven't yet mostly because I'm like alright I've got too much other stuff I should be doing the same stuff that like alright why what am I ever going to do with rust but it's interesting when you look at it and so particular article. Linkerd proxy actually uses rust now. So if you're doing anything service mesh related or proxy related linkerd is picked up rust and that was yeah that's that was what my thing was right like. All right rust there's a lot of hype around it there's a lot of talk around it there seems to be a lot of growth around it it has that go like community feel so that means I should get involved usually. I was looking for projects and I was like holy smokes there's a CNCF endorsed project though or not endorsed but like CNCF project using rust right now and I was like well I should just help these folks right it's part of day job right like. And so yeah that's kind of how it was going to go about doing that. It's interesting it's interesting because especially when you look at the second one that I linked where I was talking about. I like the phrasing on it it was presented developers who are developing with the language or technology and have expressed interest in continuing to develop that's a very much a popularity test but it goes to say you know people when I first learned Python people like it's fun to program in and like it's like I don't really know what that means. But you start doing it and there are certain things that feel right that feel nice and there's something that you can abuse and feel wrong like at school we talked about should be we teach Java to our freshman. We teach I'm sorry let's do it this way we teach algorithms and data structures using Java to our freshman like we don't specifically teach you Java for your comp side degree. And we talked about using Python I'm like that's going to be a headache because you can make, you can be accidentally correct with Python, so much that I think it kind of hinders learning. But I see in your Kotlin do have you seen anybody actually using Kotlin. No. Okay. I never met any so far any customers but yes it's because also I mean. I mean it's new right. I'm not yes yes but also I'm not. I'm not objective on that so it's always about you know feeling affinity when we talk about Java and basically a lot of people know me as a Java. Because yes it's too bad because I know in my team there is some people who really like so JavaScript and maybe they've got some experience with Kotlin but unfortunately yes I don't have this I haven't seen yet so anyone using Kotlin and yes playing with that. I used Kotlin while developing in Android. And it was much easier. I mean if you are Android developer. You use Java basically and then the byte code get converted so you basically use Java. It came Kotlin support which was much much better in terms of code so if you like this new programming way if you make a functional way if you and you want to stay typed you don't want to have you know ambiguous type. So I think Kotlin it's a good option. I don't know outside the Android word. I know there is also a Kotlin for Quarkus which is pretty exciting but it's in preview mode. So I don't know Kotlin outside Android how it worked out but the programming language itself. But we know that we need a way we today we talked about framework how does framework makes our life easier and I don't at the moment I don't think Kotlin has lots of framework for non Android developing. There isn't a fair a lot of Kotlin's appeal that it runs in the JVM so you can in theory use all of the Java ecosystem or does it not actually pan out that way. Yeah if you remember there was a Scala was having a great momentum now disappear because anyone doesn't want any more Scala so it depends on the moment also but those JVM based languages. I think they are powerful because you the you're the let's say stability or the strongness of the JVM which is pretty solid on the IT market more than 20 years and you can program in such languages if you don't like the classical Java which by the way is also updating itself to become more functional day by day but it is not for sure JavaScript or on a other kind of interpreter code. I would clarify that say year by year instead of day by day it's been taking their sweet as time getting real functional into their partially because Scala gave them a really good game to deal with it. Closure is another one that was a list syntax written on top of the JVM and I'm fascinated that concept. Yeah, but you know we got into a situation on a project many many years ago at Red Hat where we had one QA guy who loved closure and he wrote a whole bunch of automation in it he was the only one who knew closure and wanted to know closure so now we suddenly had all of this QA automation that either only one person can maintain or no one else wanted to bother. But I'm glad you mentioned Scala because I like that was a big shift for me when I started to realize that functional programming is so infinitely easier to test. And that was really before I had to take into account things like scalability cloud native things like that where it's even better or I'm not worrying about all of this state transition and things like that. But I'm glad you mentioned that though because that's I was thinking the same thing it kind of went away and liked what it was doing though with trying to bring functional. But there's been so many of them and then Kotlin like you said it's kind of the flavor of the month, the side flavor of the month for Java that whereas vanilla. So ballerina came up in chat. I think they hang on just a second, I wanted to make a programming note. So due to power outages. We're not going to have our OpenShift Commons briefing today so both the host and speaker having power issues it looks like. So just a heads up there we can run long if we want to. So, you know, Brian we can have all the fun we want. So I mean, ballerina is kind of the first step toward a deep rabbit hole here. They have a massive presence at cube con like they have this gigantic booth, and it's it's always like one of the larger ones and every time I look into it it really and I get where they're going, the fact that, you know, modern programming is a lot of just gluing libraries in to do what you want to do and I was trying to explain this with students I'm like don't be surprised that you do a whole ton of research and then you're right through lines of code and it does something because it's all about kind of learning these and changing the services together and I know that ballerina is attempting to expedite that, but that is the extent of me looking into it I think like three four years ago and I started attending cube con I was like oh this is going to be a big deal and then it never really gained any traction. So yeah they they kind of showed off so that the ballerina team years ago before I even worked at Red Hat was after I started my newsletter so they showed off ballerina to me and I was like this is great but like I don't see any advantages over like any other language right now right so what's the appeal and learning and like they didn't have any answer and I'm not sure if they do still right like there's there's much bigger communities there's much I mean I'm not the bag on them or anything but like starting new languages hard right and and I understand what they were trying to do right like this concept easier but I don't think they went the right way with it if that makes sense right like gluing together services should be as simple as like taking glue and paper right not necessarily going code together right if that makes sense. It isn't all that stuff ends up being so prototypy and like right. It's cool to be able to say oh I did this in a handful lines of code and it came up super fast but like anything sustainable you know you start breaking away from a lot of that kind of stuff and one of the things I like about this dev advocate role is I don't have to think past the initial fast prototype and demo like I haven't productized code in years I'm getting really sloppy for it but it's kind of awesome right. You see it right back in prod yeah. I don't know how to do any real code anymore. I just do demos. Right like I was just recently doing something where I was scaling an app connected to a database and I was like oh shit I've got a transactional race condition here I'm like how do we fix those these days I'm like what are the tools I'm like. I kind of don't care I'm just going to get past my demo would not have to worry about like all of the hard stuff I kind of get to avoid right now and then just focus on the cool flashy stuff for demos. And like I knew life isn't life isn't demo development though sadly. I don't envy those people anymore like I knew one guy is a developer advocate he wants to go back like he sees his career migrating back toward devs he means to have retirement just sitting in a corner like I don't know that I could do that having to focus on one single thing and do it correctly like nah let me just play around with a whole bunch of shit poorly and then move on. I'm interested to see how my career goes as I age because I saw myself getting off the pager. That's a high priority. I don't ever see myself wanting to get back on the pager right like if that makes sense. So to carry carry the code right like I don't necessarily want to have that responsibility if that makes sense. I was going to say an interesting topic for the stream but I don't know if that's kind of dirty laundry we want to air but I would really like for like our two teams to be talking about the stuff that we don't miss or the stuff that we can appreciate was tough earlier in our careers and you know you kind of got to have that 2am page of all I didn't you did is the ob sky I had the you know transaction and the guy would get commit and push on a Friday afternoon and go vacation for a week. And but like some of that stuff like and we're off topic now but like woof I can play with the fun stacks I guess to bring it back to topic. Well yeah I mean last today this next project. Yeah, let's just do it in Ruby because it'll look cooler on a slide when I say this continues running in Ruby. Do I write my code. No God no but it looks cool. So that's fine. Right. Yeah. I have a starting, I think it says this next week, an open shift administrators office hours so similar to this but it's for like the ops and admin track it's starting the 14th look my calendar my whole computer is just being really slow right now for some reason so it's definitely next week. It's definitely a time I forgot so but stay tuned. Ah, got it. 11am on Wednesdays 11am Eastern on Wednesdays 1500 utc the open shift administrators office hour. So yeah come with your ops admin questions. Is that basically just your team are you pulling anyone else for that. I mean we'll pull in some folks here and there yeah I mean if you want to join in reach out to Andrew he's got the programming lead on that one right now. He did a whole series of blog posts that he's just basically turning just cranking into shows so like having you look at that list and interject that might be a good idea so yeah reach out to Andrew on that one for sure. Cool. I have a follow up for Madhu on Madhu you said you mentioned spring boot development, and I was curious if you had like a five minute explanation on what was the big innovation with spring boot. Was it just for faster startup times or is there other advantages. I'm a little bit in the dark as far as Java ecosystem. And then also from spring boot to quarkis. Are there major technical benefits on those two transitionary kind of steps. So basically what we have with quarkis. Quarkis was really designed to be able to run as a container so everything that we run about cloud native stuff so we know that we want to to for example to expose them to develop services so micro services or whatever but services with some rest API for most of them etc. So basically to be able to just expose one services with one services just to expose them to create one services so you are going to write less line of code that you have to do with spring boot. Because with spring boot you need to create first a spring application classes from the speaker application you need to create other class for your resources if you add some database so you have to create another another interface basically you have to create a class based on interface to be able to create stuff. So basically the first improvement that we have between spring boot and quarkis is to be able to write less code in order to get the same results. So saying that of course it's exactly about the discussion that we talked about Java with with go off with Python or JavaScript etc is the fact that Java and spring boot was there first, which means that all the libraries and all the ecosystem that spring boot has is a bit better. That's what we have with quarkus but we need to just keep in mind that quarkus just have one year and a half something like that as a project. So it's very, very, very recent. So and we try to just add more and more libraries basically libraries and all the ecosystem to be able to interact with a lot of current product on this. So cool things and for me what is really important so as a developer so it's not about let's say the startup time or to consume less resources. Even if it's really, really important when you go in production in the cloud native stuff and for guys actually for example Chris will come from the ops for them so it's really, really important. So the developer is really about this dev mode in which that I don't have to build anymore. My, my, my binary my jar file in order to test it. So the demo they're doing basically with maven maven quarkus colon dev. And then after that I just have to guess to code. And then I check directly what's happening. And for me this is the thing what I really like that it's the fact that of course I would be more more productive. But you know, sometimes when you have to you you you write something you change something. Just part of the code then you have to build so you wait one minute for bill to finish then to have to start your service so you wait again one minute. So you can do it like this but the fact that you don't want to do that and to be more productive so you write a lot of codes, a lot of things in once you don't test anything. Code code code code and maybe at the end of the morning, you just say okay, let's build it. Let's check it. If everything it's okay. And I'm sure that everybody are there doing really nice and beautiful working codes at the first time so it's okay. But when you have any problem. If you have to debug everything that you write during the morning so you are going to consume your time with that. So it's what I call the little waterfall of the developer. And it's something that quark is really bright. So for Java developer only for Java developer. If you are I mentioned yes by turns JavaScript for you it's completely normal. So it's a normal life but for Java developer. It's really a big, big, big advantage and the big benefit that we have with the quark is framework. That was so cool when I first saw that. I feel like the first time I really played with it was code one last year so actually about a year ago this point back when we used to travel. And I watched just a booth demo of quarkus and seeing that hot reload I was, it was kind of crazy because I never would have thought Java would get there, like that's not a Java thing to do. And it's one of those ones I started with Python and saw flask and then picking up the hot redeploy syncing with Java and things like that. Seeing Java get to that point is really, really cool. And I totally see what you're saying because you end up getting these bad practices. You know, a slightly different story about an open stack we had this battery of unit test that took about 80 minutes to run. And so I got into these, these kind of Hail Marys where I type a whole bunch of stuff, pray to God, run it and then, you know, you fail at 78 minutes in and you just want to throw something out the window because it's just like some kind of typo or so. And this wasn't even Java this was Python so certainly not faulting the language there is definitely our setup for it but you're right that longer for whatever reason between typing and actually seeing it running is, is huge and seeing the hot. Yeah, it's really bonkers. I mean, this is why like I build on my website is using a tool like Hugo or something like that where it's like, you know, I get that instant feedback I don't have to go out somewhere else to do testing I can do it all locally, you know, it's that that live reload, and Narendra was talking a lot about that chat he's curious what other languages have kind of that dynamic loading capability other than like JS. I mean, it kind of depends on the framework and the language. So things like Python and JavaScript lend themselves very, very easily to without needing this compilation stuff if you've ever built anything in maven it's intimidating and I don't really need that as a knock but I mean like I had bad issues years and years and years ago where we've got problems now it's fine but intimidating the sense that you do a checkout and you run that first maven download and just goes just apeshit and you see all these URLs that flying across the screen I mean npm is not that far different from it but for some reason, maybe feels a little bit heavier. But who the hell is I going with this. Oh, languages so at the end of the day though the framework still has to support it to. So if you're not running flask for instance if you don't run it in dev mode you don't get that. And there's a dozen different ways to put it in dev mode it's an environment variable or you can directly hard coded in or you can do different configurations if you're dev product you a whatever your frameworks got to support it. So, language wise I'm sure Ruby and rails has some kind of option at this point I know react does I'm sure just straight no day jazz development does flask does I think Django does at this point. And then Quarkus though Java is a lot more rare there so I think you're almost to the point of, it's more rare to see a place that doesn't support it or framework that doesn't support it than that does the exception of Java, where Quarkus that's really one of the more awesome selling points for it. So, maybe, maybe in the future, sorry, sorry to interrupt I was thinking maybe in the future to avoid those of flooding of dependencies, like in Mavin or Node.js dependencies can be shared as an container layer right. So, if you have already the same layer you don't have to download the world, like all the 1000 of a jar of dependency of Gradle or Node.js. So if we share the same layer as containers that maybe we can have dependencies that more optimized that this can be an agnostic way to solve this software dependencies issue in the container way. Maybe. Yeah, makes sense. Cool. I mentioned a couple kind of interpreted languages that that I've been very comfortable with in chat here PHP Ruby JavaScript and Python as well. I know Python will compile to bytecode but but it performs pretty interpreted like an interpreted language. I think I can get a lot of fast feedback out of those develop language runtimes. And so I lean towards using those as as a means of getting productivity, because I need to see feedback while I'm working right and so I've kind of avoided Java for that reason, but hearing more about Quarkus and Dev mode, and you know all of those ways of getting quicker feedback with compiled code or out of a compiled language is really compelling, especially if you have a lot of business value around specific library dependencies like you really need Java library dependencies. Great. Keep using it as long as you can maintain that fast feedback loop. Ideally, part of what I want to do better about on this channel is demoing how you would achieve that faster feedback loop with languages that ought to do a great job like NodeJS, because if I have NodeJS running just via NodeMon, someone mentioned using NodeMon to restart your NodeJS server. That's a decent way to reboot the whole server. But there might be smaller pieces that you could reload more easily, or have like a, like usually what I do is have a like a production mode that doesn't do any hot reloading. And then a Dev mode that's like a slightly modified stack that will watch the disk. And anytime there's changes, reload just that one web service or recompile the CSS or minify the tar balls or I don't know, whatever I need to do, redone. It redones that one small piece instead of redoing a full build, like I'd get through a CI system or, you know, not the full full test suite, right? I will say it's one thing I missed about a compile language is just that initial sanity check that I didn't mistype anything. The amount of times I've written things in Python that like live in a nift statement that you're fine, you're fine, and then all of a sudden it just completely shits the bed. Boom, yeah. That's, I would have liked to compile it and say, hey, stupid, don't do that. This is linting part of your stack. You know, like, I think, yeah, right, like that, that should be somehow built into your repo to say, length the code and force two spaces indentation, that's the only way to indent. Right. Earlier when I was talking about the fact that I don't write production level code. Do you really think I went to my demo projects that I'm like, oh shit, I got to talk tomorrow. So when I built that SSL tester tool, yeah, no, I did not do any linting or anything like that and it started out as 37 lines of code and it did, you know, exactly what I wanted to do. And then I realized, right, like, there's all these use cases where people would expect certain behavior. I should probably accommodate that and then just the lines of code group, you know, like that I keep talking about that because I keep, I'm actually trying to write a series of articles right now about like kind of real development practices and containers instead of just hello world and container like what happens when you have a bigger app you're trying to piece together and that's what I'm really interested in showing like, okay, let's see what it looks like in your ID. Let's do it looks like when you're using auto to command line or something like that. And that's where I particularly noticed oh my God, my processes are such crap because I don't really test my God, how do we start again. And it's kind of nice. Yeah, you've got to, you've got to add like your own CI CD pipeline at times. And that's exactly it but I need to like edit while I'm doing development and the problem is I'm like okay I'm going to write it and then I'm going to cram it into pipelines and then do a talk on pipelines but I've never been actively using them at the time and seeing something like I haven't pitched this to my team but like we've really I'd love for us to be working on a big project where we kind of step on each other's toes again and someone breaks the build and all of these things that we've all been able to avoid. Like it would not be a bad idea for us to feel those exact points of working inside of OpenShift just nobody's exactly got the time for it. You are inventing a new programming model from test-driven development to pipeline-driven development. So first you write the pipeline then you code and you change it to step by step. That's cool. It would make a cool talk. I saw, this is forever go to 15 plus years ago, a test-driven development talk where he was talking about building a game for like a system for scoring bowling. And he's like the first thing we do is write a test case and I'm like, we were all like young too. We were not early 20s so we were cocky and didn't believe in tests and stuff like that. We're like no dumbass, you didn't even have a constructor yet. And he's like, and that's the first test is we try to instantiate the object and we watch the test fail and then we fix it. And there's a couple of us are like, okay. And we all tried to open engineer the shit out of it. And he says like, his whole process was write the test, see it fail, write the code to fix it. It's not applicable in all cases. It's never been something I've really bought into, but the talk was very interesting because so much of my argument was like, well, wait, don't put that code there because you're going to have to move it later. And he's like, then I'll move it when I need to move it. I'm like, you're right, but I don't like you for that. You're right, but It's like that meme is like fine. So it was an interest, like I said, I took some principles out of it. I've never gone like a full TDD type of style, but it definitely put a new train of thought on the idea of over engineering or you're not going to need it and all of those types of things that, you know, you see written and they make for like, you know, bulleted lists and stuff like that. But seeing the way that kind of out there, I'm like, all right, I'll come with you on this journey. This was kind of cool. Nice. Cool. Ryan anything else you want to share today. I mean, Yeah, yeah, this is great. Thank you all for contributing and thank you to Narendra in chat as well for keeping the chat going. Yeah, loving our end of thank you so much. Yeah, yeah, we are back every week at this time so join us anytime we'd love to hear your feedback. I think next week Serena is going to be back with Mo hit from our engineering department. We're going to be talking about CRC web view, which nice. I don't even know what that is. So like that'll be exciting for me and you know Serena so like it's a talk from the future so that's always good too. Right. So yeah, so yeah, join us next week for sure. Same bad time same bad channel 11 Eastern 1500 UTC. And yeah, that's, that's the best way to get a hold of the dev experts here on OpenShift TV and they will get you what you need. If you have questions, please bring them next week and we'll get them answered for you. Narendra had a bunch of questions for me apparently the this weekend and the CNCS slack and involves regex. So I'm sure I'm tapping one of y'all. So, not, not that I'm bad at regex is just I don't trust myself at it. You're like everyone else you do it infinitely enough where you don't you have to Google the syntax. Yep, I got all this. Well, it's not necessarily syntax. It's like, does it actually get all the use cases, or is it too expansive? Is it limited enough? Or is it too expansive? Right. Like that's always my problem. But remember, so yeah, later today, or, you know, right after this we were supposed to have the OpenShift Commons briefing I'm very sorry that's not available today due to a power outage. That's life. You know, it's storming here. We're lucky that we didn't lose power here today. So I had battery backup. So yeah, so tomorrow on the channel 0900 Eastern Time 1300 UTC the level up hour with the one and only Langdon White followed by another OpenShift Commons briefing transactions and Kubernetes and OpenShift with Spencer Kimball from Cockroach Labs. So that'll be super, super fun. Narendra has a question for Jason. Hang on. Go ahead. I have not done BDD. I don't even know what behavior driven development. Yeah, based on functional testing expectations, right? You would you'd spec out this is what the service should do externally. Let me use Curl to, I don't know. I think that's what part of it works. Yes. I like it from a contract standpoint. If you know you have other things relying on you. I think that's a really smart approach. It's just, you know, I think I've established in the past hour that my practices days or shit so Do I, I mean, as long as I can keep this job, I can keep writing crappy demo applications that don't crash when I'm on stage and then I can just abandon. So I mean, there may be a point where I got to get those chops back at me. But for now, everyone doesn't pipelines these days, man, just saying. I know. And like I said, I have started down that route. I just, okay, good. It's that warms my heart. Yes, my little DevOps heart. Right. Madhu, Jason, Natali, Ryan, thank you so much for joining me today. They're joining us today. Everybody, you know, as always tune in to open shift that TV for the latest and greatest. We do have a new show starting this week. As a matter of fact, it's called in the clouds with red hat leadership and Joe Fernandez is going to be my first guest. Yes, I'll be interviewing people from red hat leadership. So if you're not familiar with me, my speaking style, my interviewing style head on over to devopsich.com or Chris short.net. You can kind of see that like I don't pull any punches with anybody. Right. So I hope red hat leadership knows that they're getting themselves into. I promise not to throw you too hard of a curve fall, but there's going to be curve balls. So be ready. And hopefully none of them are watching so they won't know what's coming even better. So yeah, tune in for that. That's on Thursdays. It'll be, I think we set up for monthly double checking repeat. I didn't set that up for this event. Anyways, brilliant. So yeah, tune in for that on Thursday and by then I will know the frequency of it I believe is every two weeks. Yes. So yeah, that is Thursday at 11am Eastern 1500 UTC. So when in doubt, subscribe to the calendar and the link is in chat. And thank you all for tuning in and I'll see you all soon. See you next time. Thank you.