I am a Mainframer: Jordan Cain

By December 18, 2019 Blog, I Am A Mainframer

In today’s episode of the “I Am A Mainframer” podcast, Jeff Bisti sits down with Jordan Cain. Jordan is a Software Developer at IBM and a committer on the Zowe web UI squad. Jordan tells Jeff about his journey with the Linux on the mainframe and Zowe, his internship with IBM and where he sees the Mainframe going in the future.

Jeff Bisti: Hi, my name is Jeff Bisti and I’m the host of the I’m a Mainframer podcast from the Open Mainframe Project. The open mainframe project is a Linux Foundation collaborative project that was put in place to promote the open-source and Linux adoption on top of the mainframe platform. I’m joined today by Jordan Cain who works for IBM as a committer on the Zowe web UI squad. Thanks for joining us, Jordan.

Jordan Cain: Hi Jeff. Thanks for having me.

Jeff Bisti: So we had a bit of time to talk before we started recording and tell us a bit about the Zowe web UI squad, kind of what that entails.

Jordan Cain: Yeah, web UI squad as you would expect, looks after everything that is in the web UI space. So that includes the Zowe desktop environment and the apps that live within that. It also looks after the zLux server, which runs the Zowe desktop and also a bit of the backend services, which is known as ZSS, which handles authentication and some crud lifecycle for files and datasets.

Jeff Bisti: So something people might not be entirely familiar with right away is phenomenon of zLux?, can you kind of talk about how that fits into Zowe?

Jordan Cain: Yeah, so it’s kind of a code word that came about, it did originally kind of stand for Z lightweight user experience, but that name is no longer used. So it’s just a code name that refers to the modern desktop environment that we serve in a web browser, which is like it behaves other desktop you would traditionally expect to behave. It has applications, it has a notification manager and everything you expect in like windows or Mac, iOS, that kind of thing.

Jeff Bisti: So is there a kind of model that you’re going after for the zLux interface? like a type of Linux or Mac or anything like that.

Jordan Cain: It’s a bit of a hybrid and we’re taking the best practices from all operating systems and trying to make the easiest user experience possible.

Jeff Bisti: But this is like the first thing people see when they start using Zowe. So like no pressure, right?

Jordan Cain: Yeah, exactly. No pressure. We’re trying to make it look as modern and as intuitive as possible and I think we’ve done a really good job with that so far.

Jeff Bisti: Do you get to work with people who were like brand new to the platform and see what their reaction is to seeing this type of environment for the first time?

Jordan Cain: Yeah, definitely. All the time. I’m fortunate enough to go to a lot of conferences as well where I get to speak to people who are seeing this for the first time and maybe they’ve joined some financial industry and then just used to seeing a green screen and they’ve seen a green screen for the past six months with the graduate life. And now they see this at a conference and they’re like, why wasn’t I showing this six months ago? Yeah, it’s a really nice feeling when you get people running up to you after a conference telling you that sort of thing. Especially when you kind of get the feedback coming from people my own age as I’m 25 years old, not too long out of university. I’m trying to help the people who are my peer group.

Jeff Bisti: So are these mostly Sysprogs or developers or what kind of roles do you primarily target and talk to?

Jordan Cain: So I primarily get to see sysprogs and people that are in more administration roles. I would like to speak to more application developers, but unfortunately we don’t get many of those coming to the conferences that I go to and a lot of the interfaces that we’ve produced so far for Zowe have been targeted at more systems programmers, type of roles.

Jeff Bisti: That’s fantastic. I want to talk a bit about your history within IBM. You kind of took an interesting course in here, which it’s kind of similar to my roadmap getting into IBM. But did you start with the internship or was it the master of the mainframe contests.

Jordan Cain: So, well in the middle of my second year of university I was always expecting to go on an internship and we IBM come in and do a recruitment fair type event and one of the things that they mentioned is they run a master mainframe contest. 

Jordan Cain: So that was my first sort of like, Oh, maybe I should have a look at this. And there’s prizes if you complete challenges of course, as the poor student I wanted free stuff.

Jeff Bisti: Absolutely. Yes. So was that a year when you could win a shirt?

Jordan Cain: So I actually won a hoodie, better than a shirt. But you could also win trips too, I think there was a trip to Poughkeepsie. Yes. Which would if you won the final prize but didn’t quite get that one. Just a hoodie for me unfortunately. And that’s pretty good. I mean I work on the contest that I don’t have a hoodie yet. I still have the hoodie film with so it doesn’t quite fit me anymore.

Jeff Bisti: So do you remember like what like the key highlights of, of master the mainframe were for you?

Jordan Cain: So the biggest highlight, obviously being seeing a green screen for the first time, it’s like, wow, I didn’t think this existed anymore. But then obviously over the past seven or so years you realize how powerful that green screen and all the green screen applications actually are. And one of the really interesting things I notice now that I go into like your big retail stores, you’ll occasionally see a terminal boost, there’s got a mystical green screen on it and you know, Oh, there’s something pretty cool running behind that.

Jeff Bisti: That’s, that’s a company that’s looking to scale basically.

Jordan Cain: Yes. Yeah, exactly.

Jeff Bisti: So you did the master the mainframe contest and then your first internship, you’ve got in pretty deep right in the beginning. What were you working on there?

Jordan Cain: Yeah, so when I joined I was looking at, well at the time when I joined it was called message broker, but very quickly had a name change to IBM integration bus, which is an application but it kind of sits on top of MQ and I was in sort of what was nerve, it’s a verification team. So I was responsible for making sure when we shipped GA code everything really was GA ready. And even during that internship year I was able to contribute production code that made it into releases of IBM integration bus, which was a pretty proud moment for me.

Jeff Bisti: Can you explain that to people who might not be familiar with the deep infrastructure, this system, like how IIB and message queue and all that fits together a message bus?

Jordan Cain: Yes. So IIB is an enterprise service bus. So it’s essentially responsible for taking a message that’s produced from anything essentially. And it has a way of rooting that to something else that needs to receive and respond to that message. So like you think of warehouse applications with weird stuff, orders come in and they have to weave their way through the system triggering multiple different things.

Jordan Cain: Yeah, that’s kind of the meat of it.

Jeff Bisti: It sounds like there’s a lot that can hook into something like that.

Jordan Cain: Yeah, I can’t quite remember the total number of nodes or different interfaces that IIB supported, but it was in the high 10 like 20, 30, 40 different nodes, maybe even more. And then you think about the scale of all of this with MQ lying underneath it. How many messages actually get sent through is phenomenal.

Jeff Bisti: And did you focus on any key or any single or small set of components or end points for it?

Jordan Cain: So even at that time I actually got focused quite a bit on what was called their web sort of nodes. So a lot of HTTP messaging I was dealing with and I dealt with a lot of TLS security set up. Moving over from SSLV3 to TLS 1.2 and that kind of thing. And they were some big items that I worked on.

Jeff Bisti: I mean you started on something that’s kind of deeply rooted into specifics of mainframe. This is not something that can really easily be implemented on like a distributed type thing. Was it threatening or scary diving into something that deep so quickly?

Jordan Cain: So I think when I started my internship I wasn’t really aware of how big of a thing I was diving into. So initially I wasn’t scared at all. But as I slowly realized how much this actually means, it’s then all of a sudden dawns on you. Yeah. All of these code reviews are definitely necessary and I’m glad they were all there.

Jeff Bisti: So you didn’t feel encumbered by like this is the way it’s been done. Like you got to work at a good clip.

Jordan Cain: Yeah, I think I joined at a good time. IBM clouds sort of division was really starting to form the messaging side of things with really getting involved in that. And so it was a transition point, which meant that things were changing and people were happy to see change and the change to sort of like the development life cycle moving into sort of like a squad model and that kind of thing and being just more agile. It was more exciting than like feeling like I was being trapped or held back.

Jeff Bisti: It is kind of amazing how even in like 2019, core good infrastructure solutions like universal messaging bus types, messaging services as in general apply to things like the mobile to cloud and hybrid cloud and public cloud type environments. I get that. Good stuff never goes out of style.

Jordan Cain: Yeah, definitely.it’s infrastructure that is essential just to run the world. If you think about it, it’s like you just can’t have a world that doesn’t have these scalable applications, especially in a global economy like we are in now.

Jeff Bisti: Absolutely. So how did you make the transition from working on that over to the Zowe web UI stuff?

Jordan Cain: So interestingly when I was meant to come back with the graduate to IBM, I was originally intended to go into the CICS level 3 service team. But about a couple of weeks before I was due start, I got an email, a quite obscure email saying, “Oh that plan’s changed now”. Someone else filled that role and you’re going to be working on this new initiative. I had no idea what it was. So day one coming in, I had no idea what I was working on and first call with my manager. It’s like my eyes light up. It’s this Greenfield project, it’s all new stuff, it’s all web, it’s or I’m creating a rest API and that kind of thing. So the graduate coming back, like my eyes just lit up so much and I was deep in writing code from day one.

Jeff Bisti: Were you able to use a lot of what you learned during your internship to carry it forward or was it mostly stuff you picked up during your years in university? 

Jordan Cain: And so a lot of it was on the job training. Essentially this was Greenfield and building essentially z/OS Explorer from scratch, but for the web and rather than eclipse, which people are more familiar with. So there was a lot on the job, just quickly learning stuff. I completely learned the react framework in the space of about a month. And then over the next year also managed to become kind of the go to guy for react questions, which was quite rewarding.

Jeff Bisti: Well let’s talk about learning for a minute. What was your method for teaching yourself react? Was it web stuff or books or, just a man.

Jordan Cain: Yeah, so I think it’s a huge combination of stuff nowadays. So obviously the first thing everyone does now is they go straight to Google technology tutorial. So react tutorials and react comes from Facebook and Facebook do a good job of building a developer community. And we’ve reacted to being one of the largest, web UI frameworks. There’s a huge amount of material out there. There’s a huge amount of YouTube videos and series and that’s kind of what I use the most YouTube series. And then reading the actual official documentation and just trying things out. One of the best things to do when you’re learning a new technology is to just think of something that you’d like to have and just make it even if they already exist, just make it anyway and see how you’d go about tackling that problem.

Jeff Bisti: Did you have a project in mind that was just a throw away or just for fun project when you were learning it?

Jordan Cain: I’ve created a photo managing website with a simple database backend. Not too fancy, but it taught me the basics and I wouldn’t want to show you that interface now cause I’m not too proud of it now. But at the time I was happy that I got there.

Jeff Bisti: How do you think obviously you came into learning this and as you’re learning react and I’m assuming it’s like a noSQL database backend on it.

Jordan Cain: Yeah. At the time that would have been, yeah. But in Zowe, now we don’t you well and what I do, we don’t use any database of any kind.

Jeff Bisti: What is it using then?

Jordan Cain: There is a persistent storage system, which is kind of acts like a database for you that use the settings, but it’s very limited in what we actually store there. Most of the data that we’re accessing is actually z/OS assets. So getting to Datasets and Unix file system clearing jams for job and that kind of things. And they kind of already exist in their own data storage system and we use z/OSMF to get access to those or we use custom written API in ZSS to get at those.

Jeff Bisti: Makes no sense to reinvent the wheel I guess.

Jordan Cain: Yeah, exactly.

Jeff Bisti: So how would you go about training somebody new coming into your area on how to build like their reactive website that they need and that type of user interface while still keeping in mind that kind of enterprise scalability that needs to be there. Would you start one and then feather in the other or how would you train someone?

Jordan Cain: So yeah, I would start with just the basics of getting a front end that actually looks kind of okay and then it’s all about getting it back then that can scale and unfortunately I have not had the biggest opportunities to work on the back end, but it’s all about just having a really good sort of like dev ops experience where you’ve got all your automated testing ready to go that can do scale testing and all that kind of thing as well.

Jeff Bisti: Oh that’s kind of a good area to get into, when it comes to DevOps and like the modern kind of DevOps environment. Is that something that was already in place when you started or were you able to like help in the architecture of that?

Jordan Cain: So I definitely helped initially in the architecture of all of that, starting from scratch, we had nothing. So originally It was myself and one colleague was setting up all of like the Jenkins jobs to build all of that code together and to do the packaging and stuff. Now we’re fortunate enough to actually have a team within Zowe, the CICD squad who takes care of all of that for us. And the amount that’s grown is just phenomenal. There’s from a point of code checked and there’s any number of builds that get spun off because of that, they all go and use like SonarQube to do code analysis and they check for code smells and all the unit tests are obviously ran. The code coverage data’s collected, it’s all published to dashboards and we have like. Even if you’re building like a low end component that needs to make it into the final packaging and they can be something like seven or eight different builds that happened before that actually makes it into that final package. And we’re so lucky to have a team that lookes after all of that for us now.

Jeff Bisti: Oh yeah, definitely. But what was that on the job training for you? Like learning about Jenkins?

Jordan Cain: It was, yeah. And obviously there are the huge amount of support from the huge amount of intelligent IBM is that I’m surrounded by every day. 

Jeff Bisti: And he’s in a soundproof room so no one can hear him saying that. He say anything that’s true that there’s nobody with a gun to my head. I keep saying this and no one’s corrected me yet. So I’m going to go ahead and assume it’s true, but like z/OS and the mainframe, you know IBMZ in general has really not advanced as much as it has like in the last five years. The changes have been incredible and I’m saying that in a great way because this platform is just continuing to grow but, but continuing to be scalable and everything like that. With the addition of having all the API’s that you’ve been working on building in with like z/OS Explorer and all that. Like where do you see the platform going, in the short term and long term

Jordan Cain: In the short term, it is really interesting right now with the announcement of z/CX or the container extension. So we can have essentially Docker containers running on z/OS. so you can have any application that you would previously have deployed on distributed that was having to make calls to your mainframe and now live in the same box, which is really exciting. It’s huge. It is huge. That latency just disappears almost entirely. So I think that’s the next big boom thing that I’m looking at.

Jordan Cain: In longer term, I feel like the more we do with Zowe and all of the other modernization projects, all of the IBM and the other business partner, they’ve all got going on. It’s like there’s so much investment and it’s so exciting to see when new things are going to happen. So one of the big things that I keep seeing a lot around is cloud development environments. So a few years ago, eclipse launch them, they got eclipse Che, which was a fully, and if we can do a similar experience cause EOS and it really starts pulling more and younger people into the platform cause they get used to that same interface rather than being thrown into an ISP and even freed up for editor to change stuff around. And that’s still a nightmare for me but I cope.

Jeff Bisti: Well, the thing that always comes up is there’s a certain hesitation of if someone’s learning mainframe and they don’t learn it the same way that I did, or there’s this fear of them not knowing what’s happening behind the covers. Is that something that you kind of keep in mind when deciding what the experience will be like?

Jordan Cain: Well, I kind of think everybody has their own way of doing something. And so if I taught someone how to do something, there’s no reason why in a week’s time they haven’t found another way to do it. And that might be a better way to do it because I’m so stuck in my way of doing it. I just never change. Yeah. So I didn’t see it as a problem at all that people might start doing things in a new way. Because it’s probably a more efficient way. I’m just starting to get old, which is scary.

Jeff Bisti: Yeah. And new is a relative thing, you know?

Jordan Cain: Yes, yes. Very relative.

Jeff Bisti: I think we’re coming, coming up right about to our time here, but your personal wishlist. What would you like to see happening like either in the ecosystem or our physical hardware or OS? Like what are the things you’re holding out for?

Jordan Cain: That’s quite a dangerous question really.

Jeff Bisti: Well, we’ll nest it in five layers of waving my hands in the air saying we’re just talking.

Jordan Cain: Yeah. So would it be really interesting is if we can get to the point where we have all of like there are such rich functionalities that are trapped in green-screen interfaces. If we can pull all of that out and finally like someone’s entire day job from nine o’clock in the morning to five PM when they clock off or hopefully clock off, they don’t have to touch a green screen. That would be what I would want. I think how we achieve that, I’m not too sure there’s a huge amount of tools that exist that you need that are still trapped in green screen.

Jeff Bisti: Right. But yeah, I think we are, we are moving that way and the only way to get there is to start moving in that direction. And you know, thanks to the work that you and your team are putting in. I know we are moving in that direction.

Jordan Cain: Yeah. Thanks for saying that.

Jeff Bisti: Absolutely. I can send that out on a plaque if you’d like to.

Jordan Cain: And I’d love a golden plaque.

Jeff Bisti: Well, thank you so much for spending your time with us. I’ve really learned a lot and I know that our listeners will as well, so thank you.

Jordan Cain: Yeah, thank you very much for having me, Jeff. It’s been a pleasure.

Jeff Bisti: Absolutely. My name is Jeff Bisti and you’ve been listening to the I am a Mainframer podcast from the open mainframe project. Please click and subscribe and tell all your friends on all the social media platforms and we’ll be with you again soon. Thank you very much.