Message in a bottle

SAML in Progress OpenEdge

SAML is a standard that deals with authorization between identity providers (IdP) and service providers (SP). One of its primary uses is for single sign-on (SSO). OpenEdge has some SAML support built-in, but it doesn't seem to quite handle the scenario I need it to, so why not make our own SAML messages? How hard could it be?! Turns out…
Mirror Cube

XML in Progres OpenEdge

I recently had the need to work with some XML in Progress OpenEdge and found it to be a bit tricky, so I've compiled some of my discoveries here. First off, what is XML anyway? It stands for Extensible Markup Language and it's purpose is for storing and transmitting structured information. It's used quite a lot including file formats and…
Book Shelf

Collections in Progress OpenEdge

Collections are a bit of a sticky subject in Progress. The reason for this is that Progress doesn't currently support Generics. Why does that matter? Generics make it so that you can handle types in a generic way. Without that language feature, you can't easily have typed collections, but not all is lost. Let's take a look at the options…
Stack of Rocks by the Ocean

RTF Writer in Progress OpenEdge

Today we are going to look at creating an RTF writer in OpenEdge. But first, what is an RTF and why would we want to make a writer for it? RTF is a proprietary file format for rich text created by Microsoft in 1987. It is still a standard but is not likely to receive any updates to the specification.…
Circular Ramp

Rounding and TDD in Progress OpenEdge

Have you ever needed to round something up or down to a certain number of decimal places? This is pretty common, especially when dealing with currency. Progress OpenEdge has a built-in arithmetic function called round that can round to the nearest precision. It's used like this: round(45.566, 0). // 46 round(45.566, 2). // 45.57 round(45.565, 2). // 45.57 round(45.564, 2).…
Cellphone

Processing Image Orientation Data

Late last year, I was looking into a reported issue that images were not displaying in the correct orientation on the web. It appeared to only happen when uploading pictures that were taken on certain cellphones. We eventually narrowed down the issue to JPEG orientation data. First, let's look at what's happening here, and then we'll look at ways to…
Cereal

Object Serialization in Progress OpenEdge

Since Progress version 11.7 we have the ability to serialize and deserialize class-based objects. What is serialization? Simply, it's the process of converting an object into a format that can be transmitted or stored and then remade into the object at a later time. As of this writing, json and binary formats are available. So what does this allow us…