Don't Let the API Economy Leave Your RPG Behind
All right, everybody, we’re going to go ahead and get started. It’s one minute past. Thank you for being here. Good morning, good afternoon, and evening, everyone. Welcome to today’s webinar, Using APIs to Empower Your RPG. By the end of this session, we hope your imagination will be opened up, a whole new world of APIs that can work with your IVMI application. My name is Mitch Hoffman, and I’ll be your moderator. I’m so excited to be hosting over 100 people on the webinar today. Our speakers are Dan Magid, well-known in the world of IVMI because of his long history working in the community. He’s presented at hundreds of webinars, spoken at dozens of conferences globally when that was a thing in person, and is a regular published author of articles around open source, cloud, DevOps, APIs, and, of course, the IVMI. Dan began his career at IBM working with System 34s and went on after his father, Al, of Aldon, to take the helm of the business before becoming CEO of Eradani and moving into the open source world. Aaron, our second presenter, has been working with open source for over a decade. He leads Eradani’s open source team. In fact, he wrote his first open source project for IVMI when he was 14 years old. Aaron is proud to be a fresh face of IVMI and a 2020 IBM champion, and is a third-generation Magid carrying on the traditions of our great platform. Now, before I hand the session over to our speakers, a couple of quick points. Number one, our webinar is being recorded. We’re going to email a link to the replay at the end of everyone’s session. Please feel free to share with your peers. And number two, once again, we’re breaking attendance records, so we’re not going to be able to do live Q&A, but please chat your questions to us. At any time, send your messages to the panelists, and we will go through them at the end of the session. The chat window is on the bottom of your screen in Zoom, and in the bottom right, you can type. We’ll go through as many as we can at the end of the hour. Now, without further ado, I’m going to kick things off by welcoming the chief evangelist of Eradani, Dan Magid. Dan, over to you.
Great. Thanks, Mitch. I appreciate the introduction. All right. We’re going to be going through a whole lot of stuff. We’re going to be moving really quickly today. I know for those of you who are on the East Coast of the United States and in the center of the country, this is kind of lunchtime, so it’s time to wake up because we’re going to really move. Oh, anybody who’s ever heard a presentation that I do knows that I like to start with this slide, and that is the slide of the mythical IBM i versus the real IBM i, and people who think of the IBM i as a green-screen-only system limited to RPG and COBOL and CL and DB2, there’s so many more things you can do, so that’s the mythical IBM i. The real IBM i is I can do just about anything on the IBM i that I can do on any other platform. I can build modern user interfaces. I can do mobile. I can do web, and I can create APIs, so I can use APIs to integrate my IBM i with the greater ecosystems of applications across industries, and that’s what we’re going to talk about today. So, I’m going to talk a little bit about why, why do you want to do APIs, what are the benefits to you, and then we’ll talk about calling IBM i APIs from open source, so calling into the IBM i and then calling out from the IBM i to APIs, talk a little bit about the synchronous world of the IBM i versus the asynchronous world of the API environment, and then we’re going to go through several real-world examples. When I’m done going through the PowerPoint, then Aaron is actually going to give you a demo of doing this, so he’s going to show you how you can quickly create APIs both to call into your IBM i and to call out from your IBM i, and he’ll talk a little bit about how you manage that kind of development. So let’s get into it. So, I always like to start an API presentation with this. This is a memo that Jeff Bezos sent out to everybody at Amazon back in 2002, and what he said was, from this time forward, all development teams will expose all functionality through services interfaces, and there’s some details about technically how to do that, but down at the bottom here, you can see number six, anyone who doesn’t do this will be fired. Thank you, have a nice day. So, that became sort of the mantra of Amazon, and a lot of people point to this as the reason behind Amazon’s success, because by having these services interfaces to all of the components of their applications, they can be extremely agile, they can change their business and simply reuse all of the software that they’ve built for new functions, new capabilities, so they can rearrange the components into new configurations to take advantage quickly of emerging opportunities. So they move very fast, because their technology is so flexible. So that’s part of the reason we want to talk about APIs, is to increase your agility and your flexibility. So there are different kinds of APIs, and again, there are APIs for calling in your IBM i, so that may be your business partners who need to get at your data, or who want to send information to you, or customers who want to find out information about their orders or the business that they’re doing with you, people who have mobile devices that want to be able to access your applications, you know, point of sale systems that need to access your applications, so there are a whole lot of reasons why you might want to expose functions on your IBM i via APIs. And then the same thing going the other direction, as an IBM i developer, you might want to take advantage of all of the information that is available in our increasingly interconnected world. So you can call out to your transportation providers to see where your shipments are, or you can call out to the weather system to find information about the weather, or connect with your suppliers in your supply chain. Integrate your apps together, so call into other enterprise applications to get data into your system, or provide them with information from your application. So a whole variety of reasons why you might want to connect. And these are some of the ones we’ve actually seen in the real world. So we’re seeing customers who are connecting to things like Watson for doing machine learning and analytics, people who are connecting with members of their supply chain so that they can participate in the automated supply chain, people who are adding open source components to their applications so they can assemble applications from open source components, people who are accessing publicly available web services to add function and information to their applications. A big one we’ve seen a lot of lately are people who are adding devices in the Internet of Things that are talking for IBM i, and then, of course, people who are adding the latest in user interfaces.
So let me go through a couple of those examples in the real world. So this is an advanced UI example where we had a customer that had a green screen application for tracking shipments, and their customer said, we’d really like to have a graphical user interface to that. We want our warehouse managers to be able to go down into the warehouse and know exactly when the truck is going to arrive so they can make sure all the right people are at the loading dock at the right time, and they want to be able to do that from a tablet device or a desktop. Originally they tried to do a sort of screen scraping version of that. So they used a screen scraping tool, and they got something like this, which did not make their users happy because it didn’t look like a web or a mobile interface. It looked like a green screen on the web. So instead what they did is they exposed the green screen functions via APIs and then wrote a native Node.js application or a React application that talked to it, and so you get a very advanced looking application, a very modern looking application to access that green screen data, and it’s responsive so that you can look at it from a mobile device, a tablet, a desktop, whichever interface makes the most sense for what you’re trying to do. So by creating APIs, I have a lot of flexibility in how I want to expose that information. This is actually IBM’s Cloud Connector system, their application for connecting the IBM i to the cloud for moving files up and down to the cloud, and it’s a native Angular application talking to the IBM i and to the cloud. So from here, you can move things up to the cloud and just give you a sense of the productivity of doing this in open source versus doing things in the standard green screen way. Our team built this for IBM, and it took us about nine months to build the green screen version of this. To build the Angular application took about four days, and that’s because in the open source world, we simply downloaded components, wired them together to create this user interface. So it was very, very fast to put together. In the Internet of Things, we’re seeing more and more devices that are being connected to the IBM i. So as I talked about before, people working in the warehouse who need to get information directly from the IBM i. So they’re using these handheld like Zebra devices and talking to the IBM i. Smart appliances, we’re seeing customers who have warranty systems, and they’re actually having the appliances in their customers’ homes talking to their system to keep them up to date on the performance of those appliances. We’re seeing people who have field service people who are going out to do inspections or do repair on devices who can enter information directly from the location where they are into the system and get the latest information when they are actually on site. Lots and lots of wearables, especially in the medical field where people are tracking their patient’s health via wearable devices, or you have smart utilities where people are tracking power usage. Here where I am in California, the power company actually is putting all kinds of Internet of Things devices on all their power lines so they can track whether the power lines are breaking so that they can avoid some of the fires that we’ve had out here recently that were caused by downed power lines. And then connected transportation, where people want to get real-time information about where is their shipment on the road right at this time, or where is it on the ocean right at this time, or where is it in the air? They can get that information real-time coming from Internet of Things devices in the transportation carriers. This is just an example of something we just did with a customer where they’ve got the handheld Zebra devices. They’re entering information to the IBM i from those devices. They’re retrieving data from those devices. Now, they used to do this via just a terminal emulator, so they had a green screen interface which limited how much information they could show. It also limited their flexibility in what kind of an interface they could provide their users. Now, it’s an angular application talking to their IBM i. And what’s really interesting is they actually are pulling down spool files from the IBM i and printing them to a locally attached Zebra printer that’s attached via Bluetooth. You get all of that happening just by using these API connections to the IBM i. In doing that, you have to have a way to say, okay, I need to get to the IBM i, so the first thing I’m going to have to do is authenticate you and make sure I know who you are, and so I need to decide what kind of authentication am I going to use for that, and I’m going to talk about that a little bit more in a second. And then I need to figure out what connection technology do I want to use, because there are lots of options about how to connect to the IBM i, you can use ODBC, you can use IDB, which gives you direct IBM i database connections, XML service, which lets you call programs, so there are lots and lots of different connection technologies. And then you have to do the transformation of the data that the handheld device understands into data that the IBM i understands, run the IBM i functions, and then pass back the data and transform that data back into some format that the user interface understands. So that’s calling into the IBM i for web services. Let’s talk a little bit about calling out from the IBM i. So we’re seeing lots and lots of use cases for this, and almost on every phone call I have with a customer, I learn about new things. So these are just a couple of it, I just talked to a customer that is a food distributor, and their concern is they have to know when they’re shipping their food items, do they need to use a refrigerator truck, and that is going to be based on the temperature along the route. So they call out to the weather API, get all the temperatures along the route to make the decision of what kind of a truck are we going to use to ship this order. We have another customer that’s a vacation rental company, and they wanted to provide people who are browsing their website with temperature information around the properties that they were looking at. And again, they’re calling out to the weather service to get that information. We have a lot of customers that are looking to get Google Maps information, so we have an insurance company that in order to give an accurate quote, they need to have the exact latitude and longitude of the property they’re quoting for, but all they had in their database were addresses. So now they send an address down the wire to Google Maps, and they get back the exact latitude and longitude so they can do their quoting process, which is all in RPG. We have other customers that are looking to maximize the efficiency of the routes for their transportation, and so they’re getting directions, distance, as well as traffic information directly from Google. These are some of the other ones that we’ve run across recently. We have customers that call out to public services with vehicle VIN numbers to get information about the vehicles, sales tax inquiries to help me understand what’s the sales tax for a particular place in the country, food, nutritional information, demographic census information. Lots and lots of different things, even including people who call out to the Chuck Norris joke API to get Chuck Norris jokes. So when you’re doing these services, you have a decision to make about how am I going to do the service? How am I going to create the service? Do I create the service in RPG, or do I create them in open source code? What we find is it makes sense to use the right tool for the job, so use the tool as it’s designed to do.
When we work with open source DevOps processes, we can manage things with Git. The traditional limitation has been our build process. And that’s something that we’ve solved using a makefile, using another set of open source tools that we’ve actually described in a couple of our webinars thus far. And the last thing I want to mention is that, again, I did this as a relatively manual process. I actually had to go onto the server and run one command to update my application, which qualifies as relatively manual. We actually just finished working with a customer to automate that entire process through Azure Pipelines. So they have pipelines set up where they write their code, they push it up to the central system, and it then handles the automation for the entire process of rebuilding, restarting, recompiling, doing everything it needs to do to update their applications. So they’re now using modern technology with API calls in and out, with modern DevOps tools, with modern systems that young open source developers can work with, and they’re roping open source technology into their application. Aaron, thank you for the… Yes, yes, that’s what I’ve got for you here in the demonstration. I’m going to turn things back over now to Dan and Mitch to close this up. Well, we have Q&A to go through now. Thank you for the great presentation, Aaron.
Question one, does Connect track the API activity if a process is consuming too much of an API? Does Connect help us throttle this activity, track what processes are using the API, and et cetera? Can one of you talk a little about the difference between Connect and, I guess that would be an ESP, right? Dan, do you want to answer that? So if I understood the question there, we’re talking about tracking the activity in our API calls and tracking the… We’re tracking the API calls and throttling and doing all of the functions that we have around that. Because of the footprint of EradaniConnect, that is something that we can do in our open source application because at the core, what we have is an open source application. So yes, I mean, we can absolutely do that, we can absolutely set that up, and we’d set it up with open source modules to handle that. Right. There are already open source modules available to do all kinds of API management tasks, and you can just simply integrate them into the API that Eradani Connect creates. Thank you. Next question. I don’t even… I don’t know what this means. Can you handle complex data structures, arrays, and results set? Yeah. Yes. So yes, absolutely. And the program I talked about with the 1,147 parameters use all of those things. We just keep this demo simple for the purposes of the demo. Okay. All right. There we go. How do we find the right APIs for what we need? Let’s give Dan a chance to answer a question. Dan, you want to take a turn? Sure. You’ve got to turn on your camera, though. So that’s one of the great things about open sources. You can just go out on the web, and you can find all kinds of sources for any kind of module you can imagine. So when we were building that cloud connector interface for IBM, we found the tree structure components already built. We found the connector to AWS already built. We found the connector to IBM iCloud already built. And we simply did searches on those sites, and what’s really great is the sites also tell you things like, when was the last time this thing was updated? How many people are using it? So that you know if something’s being downloaded a million times a week, it’s very well tested, and it’s very secure. You can see that if it was updated yesterday, it’s being kept up to date. If it wasn’t updated since nine years ago, it’s probably not up to date. So there’s lots and lots of information you can find out about these modules just by looking them up online. Good answer. Thank you. Does anybody want to send in any other Q&A? We have a lot of people on this meeting. Feel free to chat questions. Here’s a private one that was sent to me. Our business process is a step-by-step process. Why can’t do things out of order, so wouldn’t async just complicate things? Our business process is a step-by-step. And totally, absolutely, most business processes or many business processes are like that. So that’s that sort of issue of where the value of async comes in in that situation is not that you would do those steps out of order, but if you have a business process that might be requested by multiple people simultaneously, so where you’ve got a web interface now into whatever that business process is, and each request has to go from step one to two to three to four to five, but I can take multiple requests simultaneously and I can fire off step one for the first request, step one for the second request, step one for the third request. I can do all those simultaneously. I don’t have to wait for the first request to go through step one, two, three, four, five, before I can have step one for the second request. I can send them all simultaneously. So each process will be going through step by step, but I can have multiple processes going on simultaneously. Message me if that didn’t answer your question. Thank you, Dan. Any other questions from anybody? You know what? It’s 8 o’clock. I don’t think we have time. Feel free to email me questions, and I’ll get them to Dan and Erin and get them sent back to everybody. The recording of this event will be emailed and shared with everybody. We appreciate all your questions. We’ve had a record number of people stay the whole time, so great job, Erin and Dan. You gave an exciting presentation, and I hope everybody understands the potential of opening up and bridging your IVMI and connecting it to the world of APIs. Have a great afternoon. Great. Thanks, everybody. Have a great afternoon.