Software systems to innovate and grow

Episode 19

Modernizing Systems with Angular in the Enterprise: Gary Trinklein with BMC Software

Show Details

Today we have Gary Trinklein on the show.

Gary is a product development architect at BMC Software, specifically within the BMC Z Solutions team. He’s here to share with us some of the context about what it is to work with AngularJS helping modernize legacy systems and also the unique set of challenges and wins he’s had through the process. 

Let’s welcome Gary.

Related Links

  1. BMC (careers page)
  2. Angular 2 Router by Victor Savkin (leanpub)
  3. The Art of Computer Programming, Volumes 1-4A Boxed Set (amazon)

Show Transcript

Carlos: Thank you for tuning to Tech People, where real life tech practitioners share their professional experiences.

Hello, and welcome to another episode of Tech People. Today we have Gary Trinklein on the show. Gary is a product development architect at BMC Software, specifically within the BMC Z Solutions team. He’s here to share with us some of the contexts about what it is to work with AngularJS helping modernize legacy systems and also the unique set of challenges and wins he’s had through the process. Without further ado, let’s welcome Gary.

Gary thanks for coming on the show, how are you doing today?

Gary: I’m great.

Carlos: I want to thank you so much for taking the time and coming on the show and sharing with us some of the experiences you’ve had with angular over at BMC.

Gary: I’m looking forward to it.

Carlos: All right. For those who don’t know you, tell me a little bit about yourself and how did you end up in tech?

Gary: That’s a very interesting question. I was in college, and I was pursuing some different majors. I never had anything that really stuck and I had an advisor that said, “You ought to take a computer class because it would be helpful,” and I did. It was an eye-opening experience to me and from then on I went and took more and more classes and changed my major to computer science, and it’s actually been a delight ever since.

Carlos: In our pre-interview, you discussed a little bit about your very long history in the tech world. But today you’re working at BMC Software. But for those who are not familiar, what is BMC, specifically what is the BMC Z Solutions, Team?

Gary: We sell a number of products to enhance and optimize and reduce the cost of running the IBMZ platform, often known as the mainframe. It’s a classic, it’s been around for a while, it’s still the powerhouse for a lot of fortune one thousand companies and even global one thousand companies around the world. It may not be as fashionable as, say, some of the new computer platforms, but it’s the workhorse of the industry, and it offers unparalleled economies of scale and large transaction processing for our customers.

Carlos: What would you describe as you primary role and your main responsibility within the BMC team?

Gary: I have a number of different roles but it comes around the title of architect and I’m working as a technology enabler. I’ve been working in infrastructure and providing new tools and new platforms for us to extend the capabilities of our products or make them available in new areas. I’ve brought in application servers; graphical user interfaces for the desktop. Nowadays with the angular web type applications, I’ve done some work in the past with expert systems as well.

Basically coming up with tools and concepts to help us develop our products faster and make them more relevant to our customers.

Carlos: Part of what’s interesting is given your long career and again, coming from working with mainframe computers … Seeing the difference, what do you say is one of the biggest highlights for you in terms of being able to work with some of the newer generation technologies, such as Angular JS?

Gary: We’re able to solve problems and do things that were just inconceivable before. There’re so many more opportunities, so many different places you can do things. But I think significantly, the user experience, what you can do and how well a computer application can meet a person’s needs is just incredible.

When I started out in this industry thirty-five, thirty-six years ago, CPU time was a very precious resource. You waited for it, and it was accepted that it was going to be difficult for you to use the computer because you didn’t count, the computer counted. Now thirty-five years later, Moore’s Law, all of those different factors have just totally upended it. Everyone has a very high expectation of what their experience should be, and it’s growing all the time. Throw in mobility, all these other things, it’s just incredible the opportunities that are abounding.

Carlos: If you could … That’s probably talking from the technology side of you but there’s a huge difference or a huge progression also in the ways that we work. Especially around UI development and visual design. Building user interface design or human-computer interaction design, how big of a deal has this been in terms of your own career?

Gary: It’s been a big deal. You have the concept of user experience, user design interfaces, and stuff. Thirty years ago that didn’t exist. It started to surface maybe twenty years ago, and now it’s a discipline all unto itself. I can remember days when you just basically had a graph paper grid that you laid out screen designs, and it was all character mode and you had to print things out. Nowadays you have a workflow analysis, you have personas, different things like that that have just made it so much more sophisticated.

Once certainly has to be willing to embrace learning new technologies and new techniques all the time to keep up. But by the same token, it’s gratifying to see the end product that can be produced.

Carlos: So now let’s shift gears in terms of what you guys are doing today. Why was there a need to find a tool, to find a technology such as angular, why did you need to do that? What was the underlying need from a business perspective if we can talk about that? Just to understand some of the motivations behind why would you guys think, “Okay, we need to modernize this legacy system and bring it to market with something like Angular,” or maybe you touched on something such as react? What was the motivation behind that?

Gary: First of all, I want to make it easier for our customers, and we wanted to be able to reach out to more platforms. As we hooked up more user interfaces and things, we went through sort of a progression. We had a history as we went through our first round of modernization of having Java desktop applications or Microsoft desktop application which were big and robust and very, very capable, but as a consequence they had to be installed, they required certain privileges and for some of our customers, they had their PCs locked down by the systems department, they weren’t allowed to install things … Mid you, we have a lot of customers that are big financial institutions with huge security concerns. Even the act of installing things was problematic.

We wanted to approach more of the thin client type approach. We had played around with HTML in the past and done some prototype applications. But they weren’t quite robust enough. There were some other solutions that came along but with the advent of HTML5 and they ascendancy of JavaScript, we saw some new opportunities. Hand in hand with that, though, we realized that the PC desktop is not the only way to reach our customers, and they’ve got other desires too. One of the reasons this is appealing for us is it will open the doors for us to extend our user interfaces and functionality to other platforms besides just the desktop.

Carlos: Was there ever a consideration of extending or redoing the existing systems without measuring the comparison between redoing this from scratch in a different way versus just being to expose the necessary APIs and build a brand new front end? Was that consideration made and that’s why you went into this route?

Gary: Yeah, we really didn’t have a choice. Mind you we have islands of different hardware platforms too. We had a stable base on one platform that was very mature, very capable but we didn’t want to rock the boat and it had a lot of low-level functionality. I think I mentioned this to you before; we looked at the concept of the middle ware layer to bring things in and to basically work as a transport and not quite but facility are to feed data to the user interfaces.

Carlos: Actually, I was about to get into that. Can you speak a bit about the middle ware you had to develop to bridge the gap between the legacy software and some of the modern interfaces? How did you come up with that idea? Tell us a little bit in depth in terms of … From a technical perspective, I think the biggest value of this conversation is for other people who might be in a similar situation to say, “Oh, I hadn’t thought of that.” What can you say to those things?

Gary: You know, this is kind of a flip answer, but I joke that part of my job is being a plumber and being able to lay pipes of data and make things available for people. We’ve had two instances where middle ware really paid off … Or the investment in middle ware has really paid off for our company. We had one example, this was the first case that we went through where we had existing products that were robust, they were functional, they were well, but there were two problems. They were independent silos; they didn’t work together very well. In fact they were developed at a time where they didn’t have to play together well, and they also lacked any kind of modern communication capabilities.

It was assumed then that all the user interfaces would be on a single platform. You would use the native binary APIs to communicate with those products. Well times change, and we had other needs and so what we did was we developed an application server that ran on ZOS, on the Z platform and it taught TCPIP, HTTP and a flavor of XMO, our PC to our Java desktop applications. Then using the Apache loadable module from the Apache web server as a model if you will, we developed what we call product code handlers that would basically host functionality in this application server but at their backend, they would invoke the binary APIs to the existing products that we already had.

The existing products, very complicated but very stable didn’t have to change. We were able to do the conversion work bringing it from the data and marshaling it from a native binary API into XML and back and forth inside this middle ware layer that was not as a sensitive environment to run in, and we weren’t disrupting the existing products code. Then we would have families of these handlers for the different products and they would the present a unified network API, if you will, to this Java desktop. This Java desktop application was able to talk to a number of different products not really caring about how that product back there on the IBM mainframe was actually installed or what the details were but the user was able to invoke the functionality, see the data, make things happen from product to product without having to do as much shifting gears and changing user interfaces, et cetera.

Carlos: If you could pin point, which previous technology or which previous experience do you think led you to this solution, specifically around the technology like picking that as a technology to do this?

Gary: Well, in previous jobs or roles both at BMC and before BMC, I had developed some web applications. Some of those were CGI, some of those were more NSAPI with the Netscape API when we had a Netscape web server. That opened up the possibility to me because we were doing web applications from the browser and we were talking HTTP and getting the data, and that was nice, and we were doing stuff in the background to get some data but I thought, “You know, why can’t we take this concept and extend a little bit more?” Instead of presenting with HTML, which mind you eighteen years ago was kind of cumbersome thing to do. It could be done but it wasn’t easy.

Instead of doing that, let’s jst use the same HTTP protocol and send XML request up to the server and get responses back and then do whatever kind of presentation we wanted in the Java or in some cases Microsoft desktop environment. Then take the idea of the CGI server or better yet the NSAPI where we can actually have application type code running on this application server and let’s extend it to go ahead and talk to our existing products with the native API. It was really kind of based on experiences I’d had in previous roles.

Carlos: Now let’s talk a little bit about your development cycle looks like. As you guys have adopted Angular JS, how … I guess what I’m trying to ask is how has it changed … I don’t know if it’s changed a lot but has it made a big difference in your own engineering?

Gary: Yes, and it would be really easy to say, “Okay, well mainframes are really slow, and PCs are really fast, and that’s why we can do it.” But the real answer is a little bit more nuanced that. I think that the closer you are to infrastructure and operating systems and soft operating systems, internals, you have to step very, very carefully, and you have to have lots of testing and lots of regression. As you step further and further away, and you’re not in that area, you’ve got some more opportunities. If you have a layered approach where you might have let’s say a base here where you have very mission critical type software, it’s very dangerous to change it because we don’t want to do anything.

Remember our product code can sometimes run at very low levels and do all kind of wonderful things with the operating system for our customers. You’ve got to be very, very careful in that environment, so that called for a very measure, very studied … A lot of QA intensive work. Then you step away from that to say a middle ware layer and at that point you’re starting to move the data around. You’ve got to make sure you’re doing the data and doing that right. But you’re not going to break anything back there unless you send the wrong command or something like that. That brings you one degree.

Then you go another level, and you’ve got a user interface, and you’re not going to be able to break anything no matter what you do really badly in the user interface. That lends itself towards more rapid cycles. We can play things. We can do things very quickly and turn them around and see what it play like. The different platforms, the different things, they do give us different opportunities. But it’s much more than just what platforms you’re on; it’s also what kind of software and what’s it’s doing in the backend.

Carlos: Have you … This is a question coming from an unknown perspective. In the way that we are working with current systems, we usually have again maybe staging server and production environments; they can quit separately. How do you do that? How do you replicate production environment in a mainframe production environment in a staging environment? I’m just curious about how you guys do that.

Gary: We actually end up have like four or five different environments if you will. You’ll have like a developer sandbox are where they’re doing things, and then you’ll have a team environment where you’ll have … You’ll bring the different code together for the different teams, and they will work for the release of a product and once the product reaches the code completion and it’s turned over … There’ll be a QA effort and then from there we go to yet another system we call our “interop,” and that’s where we have a production environment and we have a ll of our products and mind you we have I think about a hundred and fifty some mainframe products in the Z Solutions unit where they were all coexisting.

This is where we exercise them to find out if not only is each product doing what it’s supposed to but are they being well behaved with the other products and how is that all getting along. Then we have that. Then we have yet another level of testing, and this is a little bit harder for us because we have customers with huge transaction loads like three hundred thousand transactions a minute, things like that. We will actually sometimes use our customer’s data or use our customer’s facilities to be able to drive these huge loads.

Carlos: Going specifically into Angular 2.0. Why Angular 2.0 and not some of the other options?

Gary: We thought, since in this space we were staring off with a new project, and we were looking towards the future, we thought Angular 2 offered the most for us. We did a pilot with Angular 1 I think 1.4, 1.5 or something like that. We liked the way it worked. We had some reservations about its ability to scale for a very large complex application, and we saw in Angular 2 some advantages or some things that would open up for us to have that kind of an application.

Carlos: Given that some of the projects that you’re working as you said are very … They’re in production and there’s a certain degree of importance, and also you can’t be touching or messing with things that are working fine. Angular 2.0, I think we talked about this in our pre-interview, is still in RSC, right?

You guys made a huge bet on it from that perspective. What’s your gut feeling about that?

Gary: We think that that’s going to pay off. We are fortunate that in what we’re developing right now the delivery date is about a year and a half away. We have time as we mature our product development, we’re anticipating that Angular 2 will mature along the way with us and give us what we want. We’re all ready heartened by some of the developments we’ve seen. Like for instance a couple of months ago, we really wanted dynamic routing, and we now see that that’s a capability.

Some of the reservations are deficiencies that we’ve seen/ I shouldn’t say deficiencies, but not quite all the boxes check if you would that we’ve seen are starting to get checked. We’ve got one or two more areas that we’re holding out for that we think will work for us. The ones we’re holding for, we think they’re on the horizon, and when they’re delivered, we think that will work out for us.

If you don’t mind me just giving an example of what I mean by very complex application, imagine your standard user interface which you’ve got a tab folder and one tab you’ve got a data table with all kinds of recorded incidents and so forth like that. You can click on a row there, and it takes you to the other tab where it launches in context, and you see all kinds of detailed information about that. You can click on that next one and it takes you to another tab with even more information and then you can navigate back and forth seamlessly and all that data is there. That’s the kind of experience that we’re trying to replicate with the Angular 2 environment, and that’s why things like routing and object persistence are very important to us.

Carlos: Aside from routing and object persistence … Dynamic routing … What else makes you excited about Angular 2 versus your pilot with 1.4?

Gary: TypeScript.

Carlos: That’s a big one.

Gary: TypeScript makes everyone’s life easier. Now we’re really starting to get excited about modules and what we can do with module loading and the secondary routing and the children and stuff like that. We think that opens up some doors for us as well.

Carlos: All right. This is really interesting from my perspective because everybody has their thing with Angular 2.0 especially. It’s interesting to hear what are some of the strengths and so forth. But you said you still had some reservations or maybe some things you were not a hundred percent clear of. What are you not excited about?

Gary: Well I think object persistence is right now our biggest concern. As you go forward with a project, and you’re using a new technology, you identify potential problems or shortcomings that you see, and you keep those on your radar as you progress to see how those attract. For us, object persistence is probably the single most thing … Worry that we have. We saw some comments in a blog that might be addressed once the router is in final release and so we’re hoping that’s the case. We do have some backup plans where we could take of things and take that load on ourselves but we feel a better all around solution is if Angular would take that responsibility.

Carlos: How about … I think we touched on this in our first conversation … I asked about Angular material. Is this something in your roadmap? Have you considered it? What are some solutions you’re using now to solve for that?

Gary: We have looked at Angular material, we’ve considered it. We have to make some evaluations because we also have our own in-house UX team that works on other business areas. We have to incorporate their work as well so that we can conform to our corporate branding standards and presentation. We have material, we’ve looked at it, we’ve done some tests with it. We’re not sure about our total direction with material yet.

Carlos: Understood. Well, Gary, I have three last questions for you, and they’re now towards a little bit about your own … They’re more personal if you would from a … They’re personal but in a professional perspective. What advice would you give to say your younger, less experienced self? What’s something that you’ve treasured that you’ve learned along the years that you would tell a junior engineer to keep and eye on?

Gary: Well, there’s a couple of things I do. First of all is to keep your eyes and ears open to new technologies and new ways of doing things. I can flash back to thirty years ago when I was talking about some new language with a senior developer that I worked with, and he said, “I know Assembler, and I know COBOL, why should I have to learn any other language?” I think history speaks for itself in that case there.

Keep open to new ideas and new technologies and be realistic. But another thing, another piece of advice I give and this is really more for personal development, is when you’re in a company and this in the context of being in a software profession, every company is facing problems and challenges and so forth, especially in today’s market with higher competition and so many different things, and I say, look for problems. Identify some problems in your organization where you see people struggling and see if you take those and fix them.

It’s a tremendous opportunity for you to make your company better, to learn some new experience, to build skills and working with people and problem determination. Sometimes you can be successful, sometimes you can’t but every time it’s an incredible learning experience and whether or not you’re successful or not, people are still grateful for it, and when you are successful you make a big difference in your company and your career. It’s been my personal mantra for the last thirty-five years.

Carlos: Are there any books you recommend on the subjects we discussed today?

Gary: Oh, my gosh, I just don’t know where I’d start. Donald R. Knuth “Programming Fundamentals.” Certainly, we’ve appreciated the NG2 book. We’re also really interested in Mr. Slaven’s book on routing. I’ve read a couple chapters on his free version, and I’m probably going to go ahead and get myself a copy. But gosh, I used to buy three or four books every year, sometimes more, just to learn about what’s new and what’s going on. I would be hesitant to single out and single one.

Carlos: All right. If anyone listening has any questions or might be interesting in calling at BMC.

Gary: Probably email would be the best thing.

Carlos: All right. I don’t want to share your email with thirty something thousand people, but maybe we’ll put together a link on the show notes in case anybody wants to get in touch, and they’ll do that.

Gary: Okay.

Carlos: Well Gary once again, I want to thank you so much, I think this has been an amazing interview. The goal of our interviews here is to see what you are experiencing within the realm of your job, of what it is to do what you do at work, hence the name of our podcast. It’s a little bit of not only a technical perspective in which you are implementing JavaScript and Angular specifically. You’ve given us a lot of advice, a lot of good stuff to look in to because not a lot of people are working with mainframes. A lot of the people I know at least don’t understand what a mainframe is anymore. It’s really interesting to see how you guys at BMC software are making an evolution of mainframes. You’re making this big jump into some of these latest trends and technologies and I’m really excited about what you’re doing and I think we’re going to get a lot of people asking for more out of this episode.

Gary: Great, it’s been a delight talking to you. Just a couple of closing things. People may not be aware of the mainframe, buy every time you’re using your credit card or you’re shipping something with a shipping company or buying a plane ticket, there’re three or four mainframes that are involved. There may be layers and layers of web applications and servers. But they’re very much the infrastructure and backbone of global business.

One last note, too, if someone is interested on our BMC.com website we have a career section and they can see about job opportunities at BMC.
Carlos: Absolutely, we’ll have that linked on the show notes and make sure that we also send it out to our newsletter. Gary, I want to thank you once again for taking the time coming on the show, and I’ll see you soon.

Gary: You’re very welcome, and I appreciate the opportunity. Thank you.

Carlos: Thank you so much.