My Presentations

I am a speaker for user groups, conventions, and webcasts. I currently give the following presentations

Sessions marked with (**) are "retired" sessions. I'm not actively speaking on these topics any longer, so the information in the handouts may not be up-to-date.

RPG and the IFS

Abstract:
How to get started using the Integrated File System from your RPG programs. The IFS is typically used for reading and writing "PC-style" files on the iSeries, and is an important tool for integrating with other computers or business partners.

Click here to download the handout for this presentation.

To download the IFSIO_H and ERRNO_H source members, click here: IfsSources.zip

Also, be sure to visit my on-line IFS Programming Tutorial!

Consuming Web Services from RPG with HTTPAPI

Abstract:
One of the coolest technologies to emerge in the past 15 years are web services. Did you know that you can consume them from RPG programs? Yes! Today's RPG can call any type of web service, including both REST and SOAP, and can handle modern document formats like XML and JSON.In this presentation Scott introduces web services and shows you how to call three different types. He also demonstrates the processing both JSON and XML. The HTTP communications use the (free!) open source HTTPAPI package.

Click here to download the handout for this presentation.

To download the source code for the examples, click here: WebServiceSources.zip

To download the HTTPAPI program and examples, click here: HTTPAPI Web Page

Options for Consuming REST APIs from RPG

Abstract:
REST APIs have become a major part of business programming. We live in a world where virtually everything is connected to the Internet, and REST APIs are how they communicate with each other. In this session, you will learn how to call (or "consume") REST APIs from good ol' RPG. In addition to showing you the basics of how APIs work, this session explains how to use several free tools to consume them. The tools will be compared so that you can determine which one would work best for you.

Click here to download the handout for this presentation.

To download the source code for the examples, visit GitHub: https://github.com/ScottKlement/optionsForConsuming

To download the HTTPAPI program and examples, click here: HTTPAPI Web Page

Providing Web Services on IBM i

Abstract:
In this session, you'll learn how to provide web services using the tools that are included with IBM i. Scott will show you how to configure the HTTP servers so that they will call RPG programs, and how to write RPG code that acts as a web service. Both SOAP and REST web services will be covered.

Click here to download a handout for this presentation

To download the source code for the examples, click here: Code - Providing Web Services.zip

XML From RPG Using Free Tools

Abstract:
XML is quickly becoming the standard format for e-business documents. This session discusses how open source software can be used to read and write XML documents in your RPG programs. Without the need for Java!

Click here to download a handout for this presentation

Click here to download Expat for iSeries, and the sample code that goes with it.

Parameters and Prototypes

Abstract:
We use parameters every day in our code. But do we know how they work? Or why eyey work the way they do? This presentation discusses the reasons why parameters are important, how they work, and why you should be using prototypes.

Click here to download a handout for this presentation

ILE Concepts (for the Impatient RPG Programmer)

Abstract:
Is it about time you learned ILE Concepts? Always wanted to, but never had the time or patience to learn them? With this presentation, you'll be up and running with ILE in no time.

Click here to download a handout for this presentation

Getting Started with APIs from RPG

Abstract:
APIs confuse or intimidate many RPG programmers. The API documentation, when you can find it, is rarely written in a way that's clear to RPG developers. This session covers the basics of what APIs are, how to find them in the Information Center, how to read the API descriptions and some of the common techniques needed to use them.

Click here to download a handout for this presentation

RPG Does TCP/IP

Abstract:
TCP/IP network communications are written using the socket API. This API is available to all ILE languages, including RPG.

You could use this to run interactive programs in batch by writing a program that acts as a 5250 terminal. Or you could transfer files with HTTP or FTP. Or access Web services. Or write your own custom applications that communicate over a TCP/ IP network.

By the end of this session, attendees will be able to:

  1. Write TCP/IP Client programs in RPG
  2. Write TCP/IP Server programs in RPG
  3. Find any needed documentation

Click here to download a handout for this presentation

Click here to download the code sample for this presentation

Excel Spreadsheets from RPG with POI

Abstract:
Your business data is in RPG. Your users want Microsoft Excel. This session discusses how an RPG program can build and modify Excel spreadsheets by calling the POI Java classes.

By the end of this session, attendees will be able to:

  1. Know when to use and when not to use POI to create spreadsheets
  2. Create spreadsheets
  3. Modify existing spreadsheets

Click here to download a handout for this presentation

Accessing External Databases from RPG

Abstract:
RPGers often need to access data from 3rd party databases, such as Microsoft SQL Server, Oracle, MySQL and DB2 on other platforms. One way to do this is by using Java database (JDBC) drivers. Scott will share his experience in using this technique and show you how you can access non-i5OS databases from your RPG programs.

Click here to download a handout for this presentation

Pattern to Good ILE with RPG

Abstract:
You've learned all of the concepts of ILE, and this has given you a lot of new options. When you go back to the office, you find it's hard to use them! They just don't fit into the way you're accustomed to writing software. In your mind, you have a pattern for how programs should be written, and to use ILE effectively, you really need to learn a new pattern. This session discusses the new pattern of writing good, reusable ILE code.

Click here to download a handout for this presentation

Choices for Integrating RPG with the Web
(formerly called "RPG and the Web")

Abstract:
I've written some business logic in RPG. Now how do I make it available through a web interface? It seems like there are a million ways to web-enable an RPG program, and choosing the right technology to do so is a daunting task.

The April 2008 issue of System iNEWS magazine provided a service program containing RPG business rules, and showed how to write a web front end and call that service program from three different web development languages (CGIDEV2, PHP, and Java). So readers can get a feel for the differences between them.

This presentation summarizes what you'll find in that issue, and will hopefully help you along the road to deciding on a technology for your own apps.

Click here to download a handout for this presentation

RPG User Defined Functions & Table Functions

Abstract:
RPG is the best language in the world for writing business rules. But what happens when you want to use those business rules from SQL? Or from a web application that accesses your business logic through SQL? DB2 for i lets you write User Defined Functions (UDFs) in high level languages like RPG. UDFs can be called from SQL statements run from anywhere, including ad-hoc queries, SQL run from web applications, and SQL run from the embedded SQL precompilers used by RPG and other languages.

UDFs can even return a table (often called a UDTF, User Defined Table Function) which lets them do the same sort of work that a stored procedure would do -- but unlike stored procedures, they can return result sets to any language, including PHP, Java, .NET and embedded SQL written in ILE RPG.

UDFs are a powerful tool for any programmer's toolbox.

To download the source code for the examples, click here: Code - RPG UDF and UDTF.zip

Click Here For More Information and Code Downloads

Setting up and Scripting the OpenSSH, SFTP and SCP Utilities on IBM i

Abstract:

It seems like everyone today is using the FTP protocol to send files. One problem: It's not very secure!

For security's sake, a lot of companies need to use SSH tools, including SSH itself, as well as the SCP and SFTP utilities. IBM provides the OpenSSH software to IBM i customers free of charge, but it runs in the PASE environment.

If you're not familiar with Unix, how do you set up OpenSSH? How do you use it? How can your RPG or CL programs run SFTP scripts? This session will tell you how.

Click here to download a handout for this presentation

Three Approaches to Web with RPG

Abstract:

The trend in providing an interactive web-based application has changed. Years ago, we would write programs that output HTML, and that HTML would be displayed in a browser. Today, the best practice is to use a JavaScript framework. Frameworks save developers a lot of work, and provide a nicer experience.

In this talk, Scott will demonstrate:

  • How to create an interactive web application in RPG using the open source CGIDEV2 tool.
  • How that CGIDEV2 application can be improved by using a framework
  • How it would work as an Open Access application. Better or worse?

Length: 75 minutes

Click here to download a handout for this session

Working with JSON in RPG with YAJL

Abstract:

JSON (JavaScript Object Notation) is quickly becoming an important document format for business data interchange, so what's the best way to process it from RPG? JSON provides the same benefits as XML, but is smaller (and so transmits over a network more quickly) and is much more efficient than XML to work with in web applications. Naturally, this means that your RPG business applications need to learn how to speak JSON in order to talk to many of the newer web services or exchange data with many tech-savvy business partners.

In this session, Scott will explain how the open source YAJL tool can be used from an RPG program to process or generate JSON in an efficient manner.

Length: 75 minutes

Click here to download a handout for this session

What's New and Exciting in RPG

Abstract:

With each new release of the IBM i operating system and with Technology Refreshes, IBM has given us some new features in RPG. This session tells you about the new and exciting features of RPG and how you might like to use each feature in your own applications.

Length: 75 minutes

Click here to download a handout for this session
Click here to download a chart with the OS release needed for each new feature

The World of Node.js On IBM i

Abstract:

Node.js is just getting started, but it is very hot! Everyone seems interested in getting started with this language today, and it may very well represent the future of Application Development on IBM i. In this session, we'll look at Node.js, discuss how it works and how to write simple applications. Then, we'll take a look at the Node Package Manager (npm) and the power it brings to the Node.js environment.

Length: 75 minutes

Click here to download a handout for this session
Click here to download the code samples from this presentation

Calling Watson from RPG

Abstract:

We're always hearing about the amazing things that you can do with Watson, but did you know that it's available to anyone to use? In fact, you can incorporate Watson's technology directly into your RPG programs.

This session takes a look at some of the various Watson APIs that are available as well as how to call those APIs, which are implemented as web services, from an RPG program.

Length: 75 minutes

Click here to download a handout for this session
Click here to download the code samples from this presentation

Mobile RPG with PhoneGap

Abstract:

Mobile applications have become crucial to businesses. This presentation discusses how to use the open source PhoneGap/Cordova enviroment to create mobile apps, this is the best way for businesses to create them! It will also show you how to integrate your PhoneGap app with an RPG program running on IBM i, and introduces using a PhoneGap plugin to use your phone's camera to scan a barcode.

Length: 75 minutes

Click here to download a handout for this session
Click here to download the code samples from this presentation

A Nerd's Guide to DATA-INTO in RPG

Abstract:

DATA-INTO has the same power and ease of use that RPGers have enjoyed with XML-INTO for years. Unlike XML-INTO, however, DATA-INTO is not limited to XML documents! With DATA-INTO, RPGers can read JSON documents, as well as other structured documents like CSV, or just about any format you can imagine.

This session discusses the basics of DATA-INTO, and how it makes it easy to process structured documents in RPG. Then, it explains the basics of adding support for your own structured documents by writing your own parser.

Length: 75 minutes

Click here to download a handout for this session

Take Advantage of RPGs DATA-GEN

Abstract:

DATA-GEN is an RPG feature that lets you build structured documents. These documents (such as XML and JSON) have become crucial to business applications. They are used with web services, APIs, microservices, and cloud computing among other things. In this session you'll learn how the DATA-GEN feature makes it easier than ever to generate structured documents.

This session introduces the DATA-GEN opcode, its concept and philosphy. It teaches how to use DATA-GEN, with examples of creating JSON and CSV documents. It gives the gist of how to create your own DATA-GEN generator program as well.

Length: 75 minutes

Click here to download a handout for this session

Click here to download the sample code for this session.

Overloading Subprocedures in RPG

Abstract:

One of the coolest new features in ILE RPG is the ability to overload your prototypes! With overloading, you can accept differing parameter types while keeping the same routine name. Overloading can be used with programs, but the biggest value comes when using it with subprocedures.

This session explains the concept of overloading and why it should be used. It provides technical details of how to use RPG's OVERLOAD keyword to implement overloading in RPG.

Length: 60 minutes

Click here to download a handout for this session

Click here to download the sample code for this session.

UNIXCMD- Integrating RPG with Open Source

Abstract:

Applications in the PASE environment (Java, Ruby, PHP, Python, Node.js and more) have taken the IBM i community by storm. Naturally, you'll want to integrate them with your traditional RPG and CL programs... but it's not as easy as it sounds! The model of calling Unix-based programs is very different from the traditional model. The Open Source (free!) UNIXCMD project makes it easy. With UNIXCMD, you can read and write commands the same way you access files.

Learning Objectives:

  1. Understand the difference between Unix and IBM i calling models
  2. Understand how to use UNIXCMD to bridge the two models.
  3. Some examples to get you started

Length: 60 minutes

Click here to download a handout for this session

Overloading Subprocedures in RPG

Abstract:

One of the coolest new features in ILE RPG is the ability to overload your prototypes! With overloading, you can accept differing parameter types while keeping the same routine name. Overloading can be used with programs, but the biggest value comes when using it with subprocedures.

This session explains the concept of overloading and why it should be used. It provides technical details of how to use RPG's OVERLOAD keyword to implement overloading in RPG.

Length: 60 minutes

Click here to download a handout for this session

Click here to download the sample code for this session.

REST APIs and RPG

Abstract:

REST APIs have become the standard for intrasystem communications, which has become especially important in modern programming. They are used to allow integration between different LPARs, computers, locales, Cloud applications, software packages and also a replacement for EDI-type applications between organizations.

This half-day seminar explains the architecture of REST APIs, and details how to call and provide them in RPG, showing you multiple methods that can be used to do so.

Length: 4 hours

Click here to download a handout for this session

Click here to download the sample code for this session.

Quick 20 Minute Sessions (COMMON NAViGATE/PowerUp)

Abstract:

These are 20 minute long sessions from COMMON NAViGATE in May 2021 and PowerUp in October 2021

Length: 20 minutes each

Click here for the code from the Physical Computing With Raspberry Pi Session

Handling JSON with DATA-INTO and DATA-GEN in ILE RPG

Abstract:

Two of the most significant features added to ILE RPG recently are the DATA-INTO and DATA-GEN opcodes. The most common use case is to read and/or create JSON files. Since JSON has become crucial to IBM i businesses, these are must-know features!

Learning Objectives:

  1. Learn the basics of the JSON format.
  2. Learn about DATA-INTO and how to use it.
  3. Learn about DATA-GEN and how to use it.

Download the handout for this session: Handling JSON with DATA-INTO and DATA-GEN in ILE RPG.pdf

Length: 60 minutes

IoT: Open My Garage Door with RPG

Abstract:

Maybe you've heard about the Internet of Things (IoT) - where programs interact with things in the physical world - even RPG Programs.

In this session, Scott shows some simple examples of controlling physical devices with a Raspberry Pi communitying to an IBM i program (RPG or Node.js) so that it can be integrated into a business application.

Maybe you don't really want to open or close a garage door with RPG, but there may be other things in your business that you could control from RPG with IoT. This will help you get started.

Learning Objectives:

  1. What is Raspberry Pi?
  2. Communicating from an RPG Program
  3. Use OPEN/CLOSE opcodes to open and close a Garage Door

Download the handout for this session: IoT- Open My Garage Door with RPG.pdf

Click here for the code from the Physical Computing With Raspberry Pi Session

Length: 75 minutes

How Refactoring Helps Bulletproof Your Application
(with Yvonne Enselman)

Abstract:

Do you (or does your manager) doubt the value of refactoring your code into a modular design? This session goes in-depth about how you save time and create higher quality programs by refactoring into small, independent routines. We will discuss how this improves your ability to test and maintain your application over time, saving you tons of time in the long run.

This session is co-presented by expert developer, Scott Klement, and expert tester, Yvonne Enselman to help you see it from both perspectives.

Learning Objectives:

  1. How refactoring into a modular design saves you time in maintenance.
  2. How refactoring into a modular designed simplifies and expedites the testing process.

Download the handout for this session: How Refactoring Helps Bulletproof Your Application

Click here for the sample code

Length: 60 minutes

Improving Software Quality via Development and Testing
(with Yvonne Enselman)

Abstract:

Every programmer wants to do the best job. How do you test your program and ensure that you aren't missing anything? From the simplest bug fix to large complex projects, there are key concepts that you can use to ensure that your program is properly tested.

This session is co-presented by expert developer, Scott Klement, and expert tester, Yvonne Enselman so that you can see things from both a developer and tester's perspective.

Learning Objectives:

  1. What are the key points in the development process where testing should be considered?
  2. How developers can identify the need for support from a tester or project manager
  3. How to minimize risk from software errors.

Download the handout for this session: Improving Software Quality via Development and Testing

Click here for the sample code

Length: 60 minutes

Getting Started with RPG

Abstract:

Is the RPG programming langauge new to you? Want to hear what it's all about, and get some information about how to get started? This session gives a basic overview of why we use RPG, along with some basic syntax information, and what makes it a great language for business.

At the end are links to recommended resources for learning the details of the language.

Learning Objectives:

  1. What is RPG?
  2. What does RPG syntax look like?
  3. What features make it great for business applications?
  4. Where can you learn more about it?

Download the handout for this session: Getting Started with RPG

Length: 60 minutes

To Contact Scott Klement

If you'd like Scott to speak for your user group or convention, or if you have any question for him, please use the Comment Form

If you have a question about HTTPAPI itself, please do not contact Scott directly, but instead use the FTPAPI mailing list. This list is the official place to ask questions about both the FTPAPI and HTTPAPI open source projects.

Click here to sign up for the FTPAPI mailing list.

Click here to read or search the FTPAPI mailing list archives.

I have prepared a Speaker's Bio for Local User Groups to put on their web sites or in their newsletters if they'd like. Click here for that bio.