Another part of the mini series "ILEastic Tutorial : Tour of Champions" is available: Thread Local Storage.
This part will cover what Thread Local Storage is and how it can be used. It will open up a whole new load of
This is a little update on the mini series "ILEastic Tutorial : Tour of Champions". Last time
I covered plugins, those "special" procedures which are executed on the exit points of the
ILEastic request handling workflow.
There is another little...
This is the second part of my mini series "ILEastic Tutorial : Tour of Champions". Today I will
cover ILEastic plugins. In Java you would call them "Servlet Filter". They intercept a request
before any routing to an endpoint/servlet has been done....
This will be a series of little articles which show how to implement a microservice project on IBM i.
I will start from a blank (or template) project and work my way through the different parts of the
application. I will be using tools like git,...
I have been developing web services with ILEastic
for some time now and the framework is really great in what it does and provides. It handles
all the HTTP protocol stuff for you. It supports things like a plugin system, Basic Auth,
I think this is a difficult topic and many people will
obviously have their own solution to this problem. And this is not really an RPG
only topic. This problem exists in every programming language (I have encountered
What to do when...
The message project has been extended by some procedures. Now you can also
use messages from message files.
You can get the message service program from the save file in the download section
of the project or fetch the source from the git...
I think there is not one topic in the IBM i community which has been talked so
much about as modernization. And here I am also talking about it :) .
The modernization drum has been beaten for as long as I can think of and every
time I hear about...
There are many web sites which discuss the technical parts of RPG covering the
latest bifs and opcodes and they are great for looking up specific things about RPG.
But when you are new to RPG and perhaps programming in general you actually might...
Thread Local Storage (TLS) is a widely used programming method that uses static
or global memory local to a thread. — Thread Local Storage on Wikipedia.
So TLS is all about having a storage area per thread. This is not much of a...
Probably not many of you have heard of validation lists on IBM i. So from the IBM
Validation list objects provide a method for applications to securely store user authentication information.
Validation lists can store any data...
I have written some articles about writing web services with ILEastic and
it is really as simple as already shown. And most of the time it is not any
easier in other languages. You have to do/check/consider the same things regardless
My last post was about sharing configuration in an ILEastic web service. This is
especially handy when you split your web service application into multiple modules.
This is not necessary but may be a good idea if you have many end points / routes...
I stumbled upon a little problem I first had some trouble to wrap my head around.
My situation was the following:
I had an ILEastic web service with multiple modules
I wanted to share the configuration data with all modules
So for this kind of...
... and also provide those packages to others.
But you probably know this expression much better as "I can read it all by myself".
I have read those books from Dr. Seuss very often and with pleasure. Some were
real tongue twisters.
But what I...
For those of you who cannot associate anything with streams in programming:
A stream consists of an emitter (provider) of data and a sequence of one or
more consumers of data whereas the consumer may pass the data further to the
ILEDocs has moved or at least part of it. More specifically the backend of ILEDocs
has moved from a private VServer to an AWS EC2 instance. And it was super easy.
create an AWS account on the free tier
create an EC2 instance on the...
The next beta is out with some new features.
First a simple but important one: VERSION action. Now you can see which iPKG client version you got.
Currently the version is stored in the user defined attribute of the object. But this can...
I am in the midst of developing an open source package management system for IBM i. Now many people may say: "We already have yum for managing packages on IBM i. I should get up-to-date." Yes ... and no.
Yes: yum manages...
As most people know the Unix timestamp is an integer value which represents
the seconds from 1970-01-01.
There is currently no built-in function for it but you can easily calculate
it by yourself.
ctl-opt dftactgrp(*no) actgrp(*caller);...
In most contexts this is not true : Global = Local
But in the case of iPKG there is no difference between a global , for all users,
installation of packages or a local installation (scoped to a single user) from
the perspective of the package...
During my journey through the Node.js universe I have missed a good template for what I wanted to do. I searched for a simple template for a REST service on which I can build on.
You can start with this by following the next couple of steps and are...
libxlsxwriter is a great library for creating documents in the
Open Document spreadsheet format.
Even so its code is very strict (and good) ANSI C code some things does not
work out-of-the-box for integration in RPG and must be tweaked a little...
the project libxlsxwriter lets your programmatically create spreadsheets
in the Open Document format which is also used by OpenOffice, Microsoft Office, ... .
Sometimes you need to add a special sign to some cell, f. e. the Euro currency...
as some of you have definitely some programs or service programs in production
in different/multiple versions it can become tricky to manage and provide the
documentation for each version of the code.
ILEDocs has now built-in support for...
at the moment I have the opportunity to work on the ILEDocs project. There has
been some smaller fixes and features and some bigger ones.
The biggest new feature is the search functionality. You have now an input box
in the navigation bar...
A little memory leak has crept into the code.
The arraylist_dispose() method did not deallocate all the memory which has
been previously allocated. This has been fixed now in the current version.
Every user of the JSON service program also needs...
For those of you who don't know yet: BlueDroplet is a native REST framework
for all ILE languages on IBM i. BlueDroplet consists of multiple ILE modules
which are bound to an ILE program. Here is an overview of the structure of
such a program....
The Linked List service program has been a very stable service program with a
The only thing that was a little bit clumsy was the sort function. The API
design of the function offered great flexibility. You could implement your
ILEDocs has some fresh additions, namely the API documentation of the projects
JSON Utilities, Linked List and Linked Map.
We have almost all of the projects on board which are currently on the old
documentation site at Sourceforge.net.
I had to work with a remote Oracle database lately and the choice was made to use
Scott's wrapper around the Java JDBC API.
The solution worked. Everything is fine. Is it? No it isn't.
I had to insert some thousand records into the...
Slowly but steadily the ILEDocs project is growing. Today with the new version
of the MESSAGE service program the API documentation has been uploaded to the
ILEDocs database, making the API publicly available without having to search through
For sure everybody heard about the Open Source PTFs with the git client and node
package, etc. But if you just want to use git to pull some code from a repository
you could have had that feature for years without installing any extra PTF.
A short while ago I stumbled over the C library libxlsxwriter from John McNamara
on github. It is a C library for creating XLSX documents. More specifically it creates
files in the Open Document spreadsheet format. Which can be used by Microsoft...
At the moment I have access to an RDi installation and use it on a daily
basis (besides using MiWorkplace =) ).
Some people have written about the new hover support for RDi which is quite
nice (and MiWorkplace has also a nice hover support to some...
Sometimes you have a block of code and just want to know how long it took the
machine to execute it.
The Java developers have some really cool metric libraries like the
Dropwizard subproject Metrics.
But for the quick and dirty case there is...
At the time I still developed the RPG Next Gen Editor I have received some requests regarding
offline support. It was not as much about editing the code but more about being able to view
the code (perhaps for some reviewing and later...
Modular programming is a software design technique that emphasizes separating the
functionality of a program into independent, interchangeable modules, such that
each contains everything necessary to execute only one aspect of the desired...
For some time now I had the idea to port a REST service of mine from Java to
RPG. Mostly just out of curiosity because the REST service was running well
enough. The REST service was about serving the geo coordinates of the boundaries
IBM i stands for integration. But it is most of the time very troublesome to connect to and integrate anything outside the IBM family. In the open world (outside the IBM i box) there are numerous ways to integrate and communicate between systems and...
Ever wanted a normal (blocking) socket connection to listen for data but also
wanted to check for a condition if it should stop listening?
Problem is that the default BSD 4.3 version of the socket API (which is the
default API to bind to) does not...
as you may have already read on the MiWorkplace release info I also have been
busy working on ILEDocs.
First: Some REST APIs have different paths now which renders it incompatible
with the previous version.
The good thing is that we now also...
First of all I want to make it clear that I have nothing against XMLSERVICE. I
think it is a nice tool though I never had to work with it due to my current
job and thus have no real life experience with it.
And this ranting is not really...
as some may have noticed I am moving some of my projects to the
OSSILE project. One of those projects
is Arraylist. As the OSSILE project now uses git submodules to manage
sub projects I have moved the source of Arraylist to its own...
continuous integration has been a topic on any other platform for some years
now. But on IBM i I never heard that term in any discussion.
There is a myriad of open source tooling support on any platform but not for IBM i ...
or rather there...
I am just moving my service program
Linked List to the OSSILE project
and I am again wondering if people know why there are two list implementations
and when to use which implemenation or when to use a list at all.
I am doing most of my...
As there is now a functioning ILEDocs site
available at rpgnextgen.com I added some real content to it.
The BlueDroplet project is now
in an alpha stage and can already be used for some REST services. The ILEDocs
documentation of the BlueDroplet...
BlueDroplet now supports changing the library list on startup. You can either
add library list entries to the user portion of the library list or replace the
whole user portion of the library list.
creating documentation has always been a major PITA in software development.
Tools try to ease the process of creating good documentation. There are
different kind of documentations (mostly different by the scope and/or detail