Artists paint pots and brushes

Colorized SVGs

On to the topic of theming again! I talked about setting theme colors in my post Automatic Theme Colors, but what happens when we also need to change the color of our icons? One solution is to use an icon font. The advantage is that it allows you to change the color simply by changing the font color, but there…
Railroad through the forest

Revert, Revert!

When developing software, it's common to use a version control system. It's a great tool to help your team collaborate on development. Unfortunately, at some point in the course of developing your software, you will probably run into problems. When you do, version control is once again there to help you, this time by providing tools to review and undo…
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…