I just realized that I haven't written any new blog entry for some months now. It is not that there
was nothing interesting to write about but most things were either not a topic for the blog or was
too complex/big for the blog.
This blog entry is...
I am using noxDB for some time now and I always stumbled upon some API calls where
I just couldn't remember either the exact function name, parameters or return value.
Now it is not only all readily available in my ILEDocs instance at...
In most IBM i shops SQL is the primary way of accessing data or is at least on its way to be it.
And this is a good thing. But as ILEastic is a multi threaded framework we need to be aware of
the fact that multiple threads may be using SQL...
Most people have probably assumed that the next blog post will again be about
"ILEastic Tutorial : Tour of Champions". I will definitely continue this series but I had some time
to work on the STOMP client again. And this time I have working STOMP...
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
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);...
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...
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...
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...