Choosing the Right Open Source Language for IBM i

Webinar Icons Time

Session Time

60 Minutes

JavaScript, Python, Java, and more. 

Video Transcript

All right, let’s go ahead and do this. Good morning, everyone, or good afternoon, or good evening. Welcome to webinar number two of our open source from the IBM i series. Today we focus on choosing the right open source languages as you open up the potential of this platform. My name is Mitch Hoffman, and I’ll be your moderator. Again, I’m one of the principals here at Eradani, and I’m so excited that so many of you are here. Feedback after the first webinar included, who is Eradani, and what do you guys do? We didn’t have enough of a commercial last time, so we’re going to try to stuff in a short commercial or two throughout the next hour. Speaking of which, today’s webinar is brought to you by Eradani, makers of Eradani Connect. Eradani Connect is a new, powerful, commercial software offering from our company that bridges modern code and tools to the IBM i. Businesses rely on it for website, mobile, IoT, and integration of their Node.js and C-sharp.net and Python code back to the IBM i, or from the IBM i back out to their modern languages, all without custom stored procedures or manual APIs being written. Think of Connect as a framework to open up your platform for the future. Eradani, we help you move on to an open source world. Okay, that’s the commercial. So let’s go on to our speakers. Today we have Dan Magid, known in the IBM i world for his professional achievements, such as presentations at hundreds of webinars, conference speaking globally, a regular published article, and his very popular Dan’s Tip of the Week, all related to IBM i and open source. Dan began his career at IBM working with System 34 a while ago, and eventually worked on, with his father, the Al of Al Don, to take the helm of that company before turning completely to the open source world and becoming CEO of Eradani. Aaron Magid, our second presenter, is our expert in open source technology and has been working with it for over a decade. In fact, he wrote his first open source project for IBM i at 14 years old. He is proud to be a fresh face of IBM i for 2020 and an IBM i champion. He is the third generation Magid carrying on the traditions of our great platform. Aaron is now Director of Open Source Development for IBM i at Eradani. All right, finally, a little housekeeping. Today’s webinar is being recorded and we will email a link to the webinar replay to everyone. Please share that email. Check your spam filters for it. Check your folders and wherever it might have gotten. On our last webinar, we did send out the links, and some people have said they didn’t get it. If you didn’t get it, write to me, write to any of us, and we’ll make sure that you get it. Secondly, please put all questions in the Q&A session. Try to avoid the chat window. That way afterwards, we have a record of all the good questions and we type them up and share them with everyone. The first questions were terrific. If you haven’t read them, go look at the links from the first webinar. All right, I think you’re all going to love this training today. Without further ado, I’ll kick things off by welcoming the CEO of Eradani, Dan Magid. Dan, over to you. Dan, we can’t hear you. How’s that? I bet that’s better. That’s better. All right.

Terrific. Great. Thanks, Mitch. And hi, everyone, and welcome to this webinar on choosing the right open-source languages for the IBM i. You know, IBM and the Rochester Lab has done an amazing job of providing support for a wide variety of open-source languages on the i, so the challenge for developers is deciding which of those languages will be the best for addressing their particular challenges. The reality is that each language has particular strengths and weaknesses, so you’ll probably end up using a combination of languages, but today we’re going to cover a couple of different ways of choosing which are the right technologies to use in adding open-source to your arsenal of development solutions. I’m going to provide some high-level techniques of looking at your options, and then Aaron is going to drill down into technical details regarding the differences between the different open-source languages. So let’s go ahead and get started. So we’re going to take a look at what’s the criteria that you should use in making the decision as to which open-source technology is going to be best for you, how do you start to do the research into the different options, and then analyzing the strengths of each language, and then how do you connect those different technologies to your RPG applications, and then we’ll have some time at the end for Q&A. So first I want to start out with the idea that the IBM i is a great platform for open-source, and again, that’s really thanks to all of the work that the lab has done in supporting open-source now natively on IBM i. So a lot of people think that the IBM i is limited to your RPG, COBOL, CL, DB2 applications, and that’s really all you can do with it, when the reality is you can use a whole variety of open-source technologies on your IBM i, and by doing it, you can take advantage of all of the things the IBM i already does really well. It’s reliability, it’s security, and it’s very, very advanced operating system technology. So you can take advantage of what the IBM i does already and extend it with open-source. Same thing for your RPG applications. There’s no reason to rewrite applications that have been developed over decades that still do a really good job of running the core functions of your business. What you want to be able to do is extend those so that you can expose the functions via the latest technology using open-source. So again, when you’re looking at your application, you want to look at what are the things I’m trying to do, and what are the right technologies for each job? And sometimes RPG is going to be the right answer, sometimes something like JavaScript might be the right answer, sometimes something like PHP or Python might be the right answer, and we’re going to sort of go through how do you decide which are the right things to use. But before we go too much further down that road, I’m going to just do a quick poll here. I’m going to launch a poll here just to ask you a question about what are the objectives that you have in building open-source applications. So I’m going to launch this poll here, so you guys should see a poll that should allow you to just select some options as to why you’re looking at open-source. And again, you can select as many of these options as you would like. All right, I see the answers are coming in fast and furious. Okay. That’s interesting. All right, I’m going to give you just another couple of minutes or another minute to fill in the answers, and then I will go ahead and display it. You all can see what everybody else is saying. All right, it looks like it’s pausing now, so I’m going to go ahead and share the results with you. So you should see what you and your peers are saying.

So it looks like extending your RPG applications is one of the top answers. Extending RPG applications with customer and partners, building modern user interfaces, those seem to be the top answers. So we’re going to talk about – yeah, so that’s really where I like to start is what are people trying to do? What exactly is it that – what is the problem you’re trying to solve? And I always think that in any of our projects, we should be starting there. But why open-source? So why in solving these problems, why work with open-source? Well, first of all, because it’s very cost-effective. A lot of open-source is absolutely free. You can just download it and use it to solve the business problem you’re looking to resolve. It can be very, very fast to build applications in open-source, and the reason being is that in open-source, we are now assembling applications from components that have already been built by other people, so we can grab components and integrate them into our environment and build our applications by assembling components rather than writing everything from scratch. And there are literally millions of people out there testing these components and making sure they work and making sure that they are secure. There’s also sophisticated tooling available that IBM has ported to the IBM i for managing all of those open-source components. So as those open-source components get updated, you can always get the latest versions, the latest releases with the latest security patches and the latest functions and capabilities. The other thing is the open-source technologies are very, very popular. Again, millions of developers are working in these environments around the world. It makes it much, much easier to find skilled developers in those technologies. And you can choose between all the open-source technologies to decide which is the right one for the task that you have at hand, for the thing that you’re trying to do at this moment in time. And there’s easy integration with IBM i native applications and data. So you can feel free to adopt the open-source and know that you’ll be able to talk to your existing IBM i applications and data. So again, whenever I go into working on a problem like this, I always want to start with what is the problem I’m trying to solve and for whom? And a lot of what I’ve got here are things that were reflected in what people answered in the poll. So one of the things that people look at for adopting open-source is they’re concerned about what’s going to happen over the years as my RPG developers start to retire. So what’s going to happen as RPG developers start moving on, they’re leaving the companies and that pool of RPG developers shrink? Well, one of the things about adopting open-source is if you start extending your applications in open-source, you have this new pool of young developers who you can bring into your organization who can start building functions and enhancing your applications using open-source. So it’s a way of helping you with that staffing issue. A lot of our customers say they want to build modern UI, UXs for their customers. So they want to be able to build a user experience that matches how people are used to working today in today’s web environment. So how they work on their mobile phones or how they work when they’re shopping online. So they want to be able to create that same kind of experience for their internal applications or for their customer-facing applications that customers are used to using. And one of the big moves we see right now is people want to create self-service dashboards for their customers where customers can go in and see what’s the extent of my relationship with this company? How much do we order from them? What have we ordered recently? What does our business with them look like? So you can go in and actually see information about your relationship. So you can provide a customer with the dashboard to be able to look at that information. And you can also communicate out with them when you have special offers available or things you want them to know about.

The other big move we’re seeing out there is people are looking at this whole idea of how do I take advantage of big data analytics and machine learning? How can I get better insights into my business by using some of these new technologies that are available for analyzing what’s happening in my business? And then integrations between, as we saw in the poll, people want to integrate their RPG programs, their existing applications, with applications with their partners and their customers so that they can trade information machine to machine, and a lot of that is being done through APIs and through open source. So you want to take a look at what are the problems that I want to solve, because different technologies solve these problems in different ways, and some are particularly suited for these different technologies or for these different problems. So we’re going to focus mostly on these, Node, Python,.NET, PHP, and Java today. There are many other languages actually available for the IBM i, but we’re going to take a look at these because we think this is a good representation of what people are using. If you look at the Help Systems 2020 IBM i Marketplace Survey, you can see that after RPG, SQL, and CL, that Java and PHP and.NET are the next most popular languages that people are using. So people have already begun to adopt those languages on the IBM i. And if you look at the popularity of languages, this is the general popularity of these languages. Basically, this is a survey of how many GitHub repositories are in these different languages, and JavaScript is by far and away the number one. It has been the number one language on GitHub, and then you can see where the other languages measure up. Now, the JavaScript one is even bigger if you consider that TypeScript down there at the bottom with the big sort of diagonal lines going upward, that’s actually just a variation of JavaScript. And that’s happening on the IBM i as well. So again, from the Help Systems survey, you can see that Node.js and Python on the IBM i are growing very, very rapidly. So people are beginning to adopt this technology. So that’s why we’re going to focus on those languages. Okay, so let’s talk a little bit about how do you do the research into these things. So what I’m going to do, actually, I’m going to move over here to the browser. So one of the things that I like to do when thinking about how to choose what technology to use, I like to go out and look out on GitHub and see, well, which languages are being used to do the thing that I’m interested in. So for example, if I want to do Maps, I want to put Maps into my application, what languages are people using? And GitHub gives you lots and lots of interesting information about this. So if I look over here under Languages, you can see that there are 40,000 different repositories in JavaScript. So JavaScript is by far and away the most popular thing that people are using to do Maps. So if Maps is something that’s important to you, you probably want to think about, maybe I want to adopt JavaScript for that kind of a problem. If I go in, instead of looking at Maps, I say, gee, I’m interested in machine learning. So I’ll do a search on GitHub and machine learning. Now I look over here and the list of languages changes pretty dramatically. Number one is this thing, Jupyter Network, and the second thing is Python. And you can see that Python, as a language, is by far and away more popular than the other things we’re looking at for doing machine learning. And in fact, when you realize that Jupyter Notebook is actually just a Python project that originally started as IPython, then the dominance of Python in machine learning really becomes very, very clear. And HTML is probably, those are just repositories to talk to Python applications. It’s really not until you get down to MATLAB and R that you’re really talking about other languages. So if you’re going to do machine learning types of functions, you probably want to look at Python, because that’s where you’re going to find the most pre-written components that you can use. If I go in and let’s switch now to say, gee, what I want to do is I want to build an e-commerce application. So let’s flip over to e-commerce, and you know what, I’m going to sort this, and there’s lots and lots of tools. I’m going to say I want to do this by most stars. What has the most stars out there? I can see there’s a bunch of things out here. I’ve got one here in Ruby, I’ve got one in JavaScript, I’ve got one in PHP. So I’ve got a lot of different options, but I’m going to go in here to the PHP one for a second. So here I can see I’ve got this PHP, and there’s a bunch of information here as well. So over on the right side, I can see when were the last commits around this particular thing. So how active is this? Are people actually working on it? And in fact, I can tap over here on the contributors, and I can see who are the people that are actually maintaining it, and how recently are the changes being made. So this gives me some sense of is this thing currently being maintained, because there can be components out there that maybe somebody built them back in 2010 or 2012, and there’s no real current development being done on them. So you can see the information right here to tell you a little bit about how actively are these things being maintained, and who’s maintaining them. A lot of times you’ll find out that almost all the work being done on a particular open source project is being done by the people who work for a particular company. So it’s nice to be able to see is there a wide variety of people who are working on it. So there’s lots and lots of information available just by going out into these repositories and looking to see what’s happening with these components, who’s building them. And again, the reason you want to do that is because the advantage of using open source, or one of the biggest advantages of using open source, is your ability to use pre-built components.

So let me go back over now to the PowerPoint. And so there are lots of different repositories that you can use. So here you can see you’ve got GitHub is one, but if you’re looking particularly for Python components, you can go to PyPy, the NPM stuff, which is for Node, you can go to npmjs.com. And IBM actually has a bunch of repositories too, where you can get components that are built specifically for the IBM i. In fact, in GitHub, they’ve got applications where you can see samples of IBM i applications that are in the IBM i repository. Okay, so that’s a little bit of the high level of actually working with the repositories to do research into what components make sense. So how popular are they for the problem you’re trying to solve? And then how active is the development? How many components are available? That’s all stuff that you can do really quickly by just doing some research in the repositories. So now I’m going to turn things over to Aaron, and Aaron is going to drill down into some of the details of the languages and where their strengths and weaknesses lie. So Aaron. All right. Thank you, Dan, for that great introduction. So as Dan mentioned, what we’re going to do is we’re going to hop in and we’re actually going to talk about some of the most popular languages that we can use for these kinds of applications, and go through some of their strengths and weaknesses to give you some information about how to choose between them for a particular project. So in this particular webinar, we’re going to be looking at five technologies. We’re looking at Node.js, we’re looking at Python, we’re looking at.NET, Java, and PHP. Those are going to be the top ones we’re looking at today, but again, there are so many languages, so many technologies that are available for the IBM i that really there are a lot of open options. These are the ones that are, in our opinion, the most stable and the most promising and popular for IBM i applications. So before I get started, I just want to make a quick note that the slides that we have for this are largely meant to be a reference for everybody after the webinar. We’re going to send these out and there’s a lot of information included in these slides to help you with the decision of what technologies to use, because that question is actually a fairly complex question from an architectural standpoint that relies on a lot of information about your particular needs for your project. So we’re going to go through and we’re going to talk about the strengths and weaknesses, but know that there is also a lot more information included in these slides that you are welcome to use as a reference as you build your own actual applications. So one of the first things that I want to get out of the way here is most of the time, if you look up what language should I use, if you Google what language should I use or you go to a lot of presentations about what language should I use, what people are looking for and what the articles are all structured around, it’s looking for this one magical ultimate language that just can do everything and is perfect for every use case. And the first thing that I want to make completely clear to everyone is that that does not exist. And anybody who says it does is probably trying to sell you something. I mean, it just – there is no one language that can do everything perfectly every time. Each language was built for a particular use case and they were built because of particular problems in the existing tools at the times they were created. And so what you really need to do is use the right tools for the job. And I cannot say this enough. This is – if you take nothing else from this webinar, this is the most important piece of information. Use the right tool for the job rather than trying to hack a tool you have to do a job it wasn’t designed to do. So with that, we’re going to go in and we’re going to talk about some of those strengths and weaknesses. And the way we’re going to do that is we’re going to identify a couple of key metrics. We’re going to measure the languages against those metrics. We’re going to go in and we’re going to talk about – a little bit about the languages and their structure from a community perspective, from a syntax perspective, from a technical perspective. We’re going to go over their best and worst use cases and then we’re going to go over some sample applications and talk about, as an exercise, how you would actually pick the technologies for a real application.

So looking at key metrics – and again, in these slides there are a lot of key metrics. There’s a lot of data. So I’m going to just point out a couple of them. The first one that I want to point out, and it’s really the most important one, and we’re going to go into a lot of data about the languages, but the most important thing, really, is what skills do you have? Again, every one of the languages that we’re going to look at are technically capable of serving every use case. And while each language should be used for the use case it was designed for, you really should push to do that. A really important point here is to look at what skills do you have on your team, what developers are available in your community, and really just what technologies can you actually work with. So looking at availability of skills and the community size, another key metric that we’re going to look at is what are the constraints of our application? What are the kinds of resources we’re going to need? Is this a web API that’s a high I.O. heavy application? Is this a machine learning application that’s very CPU heavy? Is this business logic? What are we actually doing here? Is it a graphically user interface versus an API versus an IOT application? So those are some of our initial key metrics about the project. And looking at the tools, the most important metrics that we want to look at is, first of all, first and foremost, what was the language built to do? Because that’s going to color what it’s really good at and what it’s designed to its core to be good at. It’s not looking at features that are built on top of a language. We’re looking at things that go right down into the heart of the language’s philosophy. So we’re looking at its primary use case. We’re looking at the open source package availability. That’s another huge one in the open source community. Obviously, if you can download trustworthy, reliable, secure code rather than having to write everything from scratch, that’s always a plus. We’re going to look at stability versus innovation. That’s very important. Some languages are more stable. Some languages more try to stay on the cutting edge, and that makes them a little more wild. And then just finally, we’re looking at scalability, platform compatibility, and a couple other things. And again, these are the metrics we’re looking at in the slides, and we’re going to run through the languages. So first language we’re going to look at, which is a very popular and widely known language and one of my favorites is Python. So Python is a wonderful language that’s designed specifically to be readable, lightweight, and easy to learn. So this is a really important thing to understand is that Python was built to be easy to pick up. And so one of the major use cases that we look at is if your team is getting started with these applications, Python is probably the best language that you’re going to find that’s just easiest to get started with. And on top of that, it’s designed to be very, very lightweight. So if you’re looking at automation projects, if you’re looking at systems that are going to be running commands, they start up, they run their job, they shut down, Python is going to be very efficient for those kinds of projects. Taking a look at the community, Python has a massive developer community. It is one of the most popular languages in the world. Depending on the metric, some people call it the most popular language in the world. And I want to draw some attention to this. We’re looking at 8.2 million developers that use Python around the world. So when we’re talking about staffing, when we’re talking about the availability of open-source components, the availability of resources for training, you’re going to find a lot when you’re looking in the Python community. And that’s directly reflected with the stats from the Python Package Index, where you look at 231,000 open-source packages available just on PyPy for your Python projects. And one of the important things to point out here is the Python packages are largely focused around AI and machine learning and automation. So again, lightweight, easy-to-learn, automation-based projects, very, very good. So taking a quick, a little quick dive into the technical, this information here, for every language, we’ve got information on the syntax community and technical resources. Again, I’m not going to go into a lot of detail about this particular, about the technicalities here, but remember that if you’re working on an AI application, if you’re working on automation scripts, if you’re working on embedded systems too, Python is a great choice. And that’s actually, we actually use Python for a lot of our automation, a lot of our automation scripts. And we do that because we can write the scripts very, very quickly. There are a lot of packages that help us do it. And Python also is just, from a technical perspective, it’s built for those kinds of things. I actually, just to point out one technical aspect, because it differs from our next language, Python has a relatively low startup time. And when you’re running an application, when you’re running something like an automation script, it needs to start quickly and then do its job and then shut down and clean itself up. And Python does that very well. So again, AI machine learning, automation, lightweight scripts, embedded systems. And these are the focuses that we’re talking about. Again, you can do anything in Python, but these are the focuses that we’re looking at. 

So our next language, which if you’ve been to any presentation on open source technology, I’m sure you’ve heard about, is Node.js, which provides a great contrast to Python in terms of what it’s good at. Now, we are going to be talking about this particularly in the context of Node.js. Technically, it is the JavaScript programming language. But we’re picking Node.js because that is typically the use case that we’re looking at for JavaScript in the IBM i world. And also, honestly, because I think the Node.js logo is a lot prettier than the JavaScript logo. JavaScript is basically just a bland yellow square with a big JS on it. So anyway, we’re looking at Node.js. First thing I want to point out, Node.js is designed to be evented. It is entirely built around event-based systems. If you’re working in a system where you’re getting, for example, API call, different API call, another API call, a user click, a message from an IoT device, when you’re getting those kinds of rapid-fire events coming in, you will not find a better language for that kind of use case anywhere because this language was designed specifically to handle those environments. Now, on the flip side, in contrast to Python, if you’re talking about lightweight scripts, if you’re talking about CPU-bound operations doing things like AI machine learning, definitely not the language you want to work with. So that’s one of the things that I want to point out is this is its use case. When you’re building APIs, this is probably going to be the one you want to work with. I also want to make a quick note, JavaScript is not Java. This is something I hear a lot in a lot of presentations when I talk to a lot of developers. They talk about JavaScript as Java. They are actually completely unrelated. The only reason they share a name is actually because of an old marketing deal between Netscape and Sun back when JavaScript was first created. It’s entirely for marketing. That’s basically where the similarity ends. So different languages. So looking at the JavaScript community, I just want to give a couple of stats because this is the largest development community in the world. I mean, by a significant margin. And I just I love some of these numbers here. So the JavaScript community, you’ve got 11.7 million developers around the world. You have 1.27 million open source packages available just on NPM. Right, that’s 1.27 million packages that you can pull into your applications, which are downloaded 20 billion times a week. I mean, the activity of this community is insane. And what that does when you’re building an application is you have incredibly wide options for what you want to build in your application. And really, JavaScript gets closest, I think, of all the languages in the open source philosophy of you spend a lot less time writing code versus wiring components together because most of what you need is already written. And that means that you will build applications in JavaScript faster than in any other language by a fair margin because of the availability of those components. And again, the activity is why you can trust it. Those 20 billion downloads a week, if you look at a particular package, if I’m looking at like Express, the most popular API framework for Node.js, Express alone has 13 million downloads a week. That means that that module is being used in applications all around the world by probably over a million developers. And so that means if there’s a problem, if there’s a security vulnerability, if there’s a bug, it is going to be found very quickly and fixed very quickly. And so this software is going to be some of the most robust software that you will find in the world because it is subjected to insane levels of testing. Just taking a quick look at JavaScript, because I want to point something else out, JavaScript differs from Python in a couple of ways. But one of the most significant is that while Python is designed to be very easy to learn, it’s designed to be very English-like, very easy to read, JavaScript is built to be as flexible and permissive as possible. You can do basically anything with the JavaScript language. And that is an extremely powerful feature, but also a very dangerous feature. JavaScript is one of those languages that is always on the cutting edge. It is always constantly getting new movements that are coming and going, new features that are coming and going, new practices that are coming and going. And so you have to be – you do have to be a bit careful when you work with this language because it will not save you from yourself. And so that’s a very important thing to understand. Now, in the hands of an expert, it is an incredibly powerful tool, but again, just something to be aware of, especially if you’re getting started with these systems. And there are tools that will help you with that. Like, if you see the note at the bottom, TypeScript, TS, is a variation of JavaScript that’s very popular that brings strict type structures and compiled checking to JavaScript to make it just a little safer to work with and a little more maintainable. So there’s a lot of work in the community that can help with it, but again, just looking at the strengths and weaknesses of the language itself, these are some of the points to be looking at. So all of that comes together to say, when you are building a user interface application, when you’re building an application that’s getting a large number of small tasks that can be run in parallel, that are asynchronous tasks, that are I.O. heavy, things like API calls, things like I.O.T. devices, getting messages from I.O.T. devices, things like, honestly, even calling R.P.G. programs or running database calls and waiting for results, that’s what this language excels at, and it really is incredible at handling those kinds of environments. On the flip side, when you’re looking at CPU-bound operations like A.I. machine learning or often a lot of business logic processes, that’s not what it’s designed to work with, and it’s not what it’s good at. So again, just things to know about this. And again, please go ahead and look at this slide after the webinar and take a look at the other information here, because there’s a lot here. All right, so, Python, JavaScript, PHP, when we’re looking at big web languages, these are – or big, lightweight web languages, these are really, I think, the three biggest that people look at. So PHP, there’s a couple of important things I want to point out here. PHP was designed to do quick server-side rendering of webpages, and what that means, as opposed to other languages, is that it’s designed to be a quick script that runs on your server that generates the webpage output of your system. You go to a webpage, the PHP script is parsed by your web server, and it returns a webpage to you so that you can view the page. And that yields very, very efficient, very fast-loading webpages. Now, before I go on about PHP, I want to point out a really important note about IBM i. Now, PHP is one of the biggest languages on IBM i, it’s very popular, largely because of the free Zend offering, the free one-year of service. I want to point out that this has been announced to be discontinued. There is no longer a free year of Zend PHP, and in the next year, it is no longer going to be supported in that free way. 

So there’s a very important point here, you can still use PHP, you just have to get it through the open PHP via YUM, or you need to purchase a Zend license. So I just want to be, I want to make sure everyone is aware of that. If you’re using PHP, this is coming up, and there’s a transition that you’re going to need to go through just to get that set up. So again, PHP, wonderful quick scripting language for building web applications. It does have a large community, it’s not as large as JavaScript and Python, but I mean it’s still in the multi-millions of developers, and has about a quarter million open source packages available for the language. So again, very, very widely used language, very powerful language, and also, this is one of the most important things, it’s very popular on IBM i. PHP was one of the first big open languages to be brought to the IBM i, and so it’s very popular among IBM i developers, and there are great vendor solutions in the community for it. So that’s a really important thing to understand about it, because, right, we talked about at the beginning, staffing and resources and finding skills for these languages, PHP is one of the easiest languages to find people for on IBM i, and so that cannot be overlooked when you’re looking at these languages. I do want to point out, just really quickly, because I hear this in a lot of presentations, and it bugs me a little bit, there are stats about PHP that go around, one of the most popular ones is 80% of the web runs PHP, and that is true, and what I want to make sure that we’re aware of as a community is that that statistic gets twisted a lot, and twisted into suggesting that 80% of web applications across the world are written in PHP. Not to bash PHP, not to suggest that it’s not a popular language, it’s an extremely popular, extremely powerful language, but the truth is that when you look at that 80%, a significant portion of it is marketing websites written in things like WordPress, which are graphical website builders that happen to be written in PHP, we’re talking about a lot of management consoles, right? One of the critical things to understand is 80% of the web runs PHP in some way, means they have some kind of PHP script running, and that is absolutely true, but I just want to make sure that we’re upfront about, you need the second part of that sentence, is all I’m trying to say about that. Now, when we look at PHP, PHP has a really interesting feature here in that it is the only language of all the ones we’re looking at that can embed in this way around a web page, so when you’re trying to render a web page, it’s really an incredible tool for that, so again, just, you know, it’s really designed for making those quick server-side rendered web pages, and so that’s something that you really need to look at when you’re looking at PHP. All right, next up, I don’t think there is a person on this planet who has not heard of Java or has not worked in a shop that uses it in some capacity. Java is an incredible language in a word, or in a term, I guess, because it’s really two words. Java is the enterprise-grade language, right, I mean, what Java was built to do is create robust applications with enormous development teams, and that’s really what it excels at. I mean, it’s really, you know, every other language, when you get into, you know, hundreds of developers, they start to get very, very difficult to work with. Java handles that better than any language that I’ve ever seen, and so really just wonderful, wonderful language when you’re working with those kinds of teams, those kinds of systems. Java also has a great point going for it in that IBM has heavily invested in Java and building a lot of their tools in Java, and so that means that when you’re on the IBM i, you can be certain that there’s going to be great support for this language on the IBM i because IBM is using it internally for so many of their applications, and again, as with all of these other languages, 7 million developers worldwide, you know, a third of a million packages available for the language, and extremely, extremely popular, extremely stable. Looking at the language, it’s very similar to a lot of other languages. A lot of other languages are inspired by it, so it’s very recognizable. It’s easy to find people for it, and it really, really works hard to keep you organized, and I want to point this out, and I want to take a moment to mention this, that it is one of the most opinionated languages, I mean, opinionated is even a weak word for it, on the planet. This is a very strict language, if you haven’t worked with it, as opposed to something like JavaScript, which allows you to basically do anything you want, Java really will protect you from yourself, and so it’s a really important point of the language because it’s one of its main selling points. Again, really, really good for heavyweight, extremely robust enterprise applications. The resource requirements of running Java, this is the only note I’m going to make about the technical side. Java requires a lot of resources to run even a small application, so if you’re writing like a very small automation script, you’re writing something lightweight, Java is absolutely not the language for you, but if you’re building a big, robust enterprise application with a large team, you really can’t beat it, so that’s one of the major comparisons that you’re going to want to look at with this language. All right, and our last language, and then we’ll go through a quick overview, our last language, we’re going to look at C-sharp.net. We’ve got them both listed here because.net is technically a framework, C-sharp is the underlying programming language, but they’re often used interchangeably because outside of the gaming world,.net is pretty much the main use case of C-sharp. So when we look at this system,.net is a framework built by Microsoft, it’s designed for making cross-platform enterprise UI applications, it is a little less opinionated than Java, but still an opinionated language, still helps you do what you need to do, still helps make sure you’re using good standards, and it’s really designed to help you build UI applications very quickly and then generate the support that you need for other platforms around it because it comes packaged, the framework itself comes packaged with the support you need for other platforms. So if you’re building enterprise UI applications that serve every platform,.net is a wonderful tool.

And again, up with all the other languages, 6.7 million developers, 200,000 open source packages at 761 million installations a week, this is a very large, very active community. And it’s also very popular among IBM i shops, I see it all the time in the shops that I work with and that my teams work with. We’re constantly running into.net, so there’s great support for it, there’s great tooling for it around the IBM i. Again, just less opinionated than Java, this is all I’m going to say about the syntax, great for building cross-platform UI applications, really what it’s built to do. And so that’s the most important thing to remember when you’re looking at the language. And from a technical standpoint, it’s more in the Java vein than it is in the JavaScript vein or the Python vein. It does require some significant resources designed for longer-running applications. So when you’re talking about UI applications, you’re talking about web servers, great, great language for that. Talking about small automation scripts, not so much. So these are the kinds of things that we want to be keeping in mind. Or if you’re talking about a small device that has very restricted resources, not necessarily the tool that you want to go with. So these are the things that we want to keep in mind when we look at this. So to give an overview, and I titled this slide the verdict, because people at the end of these presentations often try to say, and the winner is Python, Node.js, whatever they want to tell. Here’s the verdict. Use Python when you are building an AI for machine learning application, when you need lightweight code that’s easy to learn, when you’re doing automation or embedded systems, Python is the language you want to go with. When you are building an event-driven application, a web UI, when you are building web APIs that are very I.O. heavy, that don’t have a lot of business logic, but are primarily about reading from a database, running an RPG program, getting an API call, getting data from an enterprise, all those different asynchronous operations, you will not find a better language. If you’re building a server-side rendered application, you need it to load really quickly and you need good support on IBM i for your language that has been around for a very long time, go with PHP. If you need a massive, robust enterprise application that has a huge team that you need to bring together and you need to stay organized, Java is your tool. And last, but certainly not least, if you need a robust, large cross-platform UI application, go with.NET. These are the strengths of these languages and the times that you’re going to want to use them. And again, as we said at the beginning, any of these languages can do all of these things. They’re all capable of each one of the – of all the other use cases, but that doesn’t necessarily mean that that’s what they’re built for or what they should be used for. So now, just to illustrate this, we’re going to hop in and we’re going to take a look at a quick example. And this example is actually a real example. This is a project that I worked on before I – before I came to Eradani. This was – this was a project I was working on. So this is an actual application. It’s a little slimmed down in terms of the description to keep it a little simpler. But basically what we’re looking at is an IoT application, right? So let’s say that we’ve got an IoT application. What we want is to deploy an IoT device to the field. We want it to be sending us back status reports every minute to our central server on our IBM i. Our IBM i is going to process that data, store it in DB2, make sure there’s no – if there’s any actionable information, take action on the system. We’re going to provide a web app – or actually, I shouldn’t jump the gun on web app. We can provide a UI application for viewing the status of the device and issuing commands to it. And then we want to have some kind of algorithm running on the back end, periodically checking in on our data to see if we can generate insights and potentially even predict device failures before they happen based on those – on those status reports, right? So this is a fairly standard use case for an IoT application. And again, any of JavaScript, Python, C, C++, or Java could handle this entire application on their own. That doesn’t mean that that’s what we should do, and that’s what I want to be very clear about. Each language has a specialty, and we should use them. So the architecture for this system that we actually ended up going with in our team in that project was the IoT device used embedded C for its system because we wanted to keep the requirements very low, and we wanted to make sure that we could do this on a small chip. We actually originally also had a version in Python but ended up switching to keep the resource requirements even lower. The IoT device would – is going to, in this design, send out its messages to an active MQ broker via MQTT, which is a system that’s written in Java. Our UI application is written in Node.js to keep our API extremely agile and scalable as the application grows, makes it very, very easy to increase our capacity or decrease it if necessary, makes it very easy to add new functions and just adapt the application as it grows. And our UI is written in React, which allows us to – which is a JavaScript framework allows us to serve it as a webpage for desktop and mobile, package it for native applications and desktop applications, get everything we need. And then our machine learning system, as you remember from Dan’s part of the presentation, written in Python because that is where we could find the most resources, the most support, the most modules for machine learning. It really is – really is the language that should be used for that.

And so, the final tally, when we look at this application, I’m not just going to put this entire application into Node.js. With this application, we’ve got C++, we’ve got Java, we’ve got Node.js, we’ve got TypeScript and JavaScript, and we’ve got Python. We’ve got all of these languages coming together, working in harmony on one application so that they can all do what they were designed to do. And that is how you get the most performant, the most secure, the best application, by building hybrids with technologies the way they were meant to be used. So that’s it for my use case, and I’m going to turn it back to Dan to wrap things up. Great. Thanks, Aaron. That was a great overview and a great drill down into the application technology. Now one of the things you can do if you want to start looking into this is that you can go to GitHub. IBM has some repositories on GitHub with great examples of building applications in these different technologies. So you can get some Python examples, you can get some JavaScript examples, you can get some PHP examples. So they’ve got lots of examples, and they’re here at this link. And again, we’re going to be providing this slide set to you after the webinar so you can get all of these links. Now the other thing that you need to think about in using any of this technology is how do I connect my Python, my Java, my.NET, my JavaScript? How do I connect that, or PHP, to the IBM i? And so what you need is a layer in between that says, okay, I’m going to take open source, which is going to hand me a function call, and it’s going to give me JSON data. I need to then convert that into something the IBM i can understand, so call an RPG program with parameters, or go at the database with SQL, or call a stored procedure. And then on the way back, I need to take the parameter data that comes back from the IBM i and translate that into JSON XML or something, again, that open source can understand. And so that’s part of what we – what Eradani provides is we provide that connection layer, and we do it in a secure way so that we make sure that you’re not sending IBM i credentials up and down the wire, and you’re not storing credentials in your browser. It’s all done using token-based security, so we’re passing tokens back and forth rather than your actual credentials, and it allows you to connect any of those technologies to your IBM i backend. And then you can also go the other direction. You can say, as an RPG programmer, I want to call something in open source, but I want to do it the way I do things in RPG, so I’m going to write an RPG program that does a call and it passes parameters, but I need something to do the translation. So, again, we have a translation layer that says, okay, I’m going to take that RPG program call, I’m going to translate that into some kind of an open source call, whether it’s Python or PHP or whatever, I’m going to translate that open source call, and then I’m going to run the open source stuff, I’m going to get a result back, and I’m going to then translate that back to something that the RPG program can deal with, so the RPG program will get back parameter data. So, as an RPG programmer, all I did was write a call and got a response the way I expect to. All of the other stuff was handled for me automatically.

And if you need any help with any of this technology, the Eradani experts are available. We have people, like Aaron, people who are IBM i champions on staff who understand the open source environment who can help you get started with these different technologies. And, in fact, our next webinar, we’re going to drill into exactly how to use these languages. So, we’re going to start with JavaScript. Our next webinar on May 21st is going to be JavaScript 101, which is an introduction to actually how do you write JavaScript applications that talk to the IBM i. So, if you’re interested in getting into that level of detail, you can register for this webinar, and we will be sending out the link in our follow-up along with the presentation slides. And I know that, Mitch, we’ve gone pretty deep into our time here, so I don’t know if we have time for any questions or what, but I will turn it back to you. Yeah. Dan, Aaron, let’s go ahead and pick at least one or two of these questions. Matt asks, how is accessing BB2 from the PACE environment different than accessing it from off the i through ODBC? Okay. So, I’m going to give a really quick answer here because we are running low on time, but this is something that really has a lot of information about it. What’s really cool about what IBM has done recently is actually ported the open-source methods of accessing the IBM i to the IBM i itself. So, I can actually access my Node.js code running on the IBM i, can access BB2 using the same connectors that it uses when it’s running off of the IBM i. And so, if I’m developing on my development machine, connecting the IBM i where I have another application, I can actually move it to the IBM i Connect in the same way. So, first of all, all those connectors are available. There’s more that’s available on the IBM i when we’re talking about BB2. There’s a BB2 CLI connector that, in our experience, has been more performant than the ODBC connectors, but that’s only available locally on the IBM i, just something to be aware of. The Connection is very powerful. Great answer. Great. Thank you, Aaron. Sorry, Mitch. Let me just add a couple things. So, one is that Jesse Borzynski likes to point out in his presentations that PACE is not an emulator. It is a native operating system, operating environment on the IBM i where you have native access to all the IBM i resources, so you can get right at the IBM i resources rather than going through some kind of Connection technology. And you can also – there’s a security advantage where you can say, I am only going to allow Connections into my IBM i native resources from the I, and I’m not going to allow them to come from anywhere else. So, if you have all this in your PACE environment, it’s a local Connection, and you can limit your Connections to your native core IBM i stuff from only that local environment. Great. Another question from Carla, do you find that IBM i users are replacing their RPG code with open source code?