Abe Voelker's blog Programming stuff, mainly

menosgrande - My First Ruby on Rails App!

4 minute read

I’m proud to announce the release of my first Ruby on Rails app - menosgrande!

It’s not a very complicated application; it’s just a URL shortener. However, I’ve tried to make it the most efficient URL shortener in existence by doing a few things uniquely that I don’t see any other URL shorteners doing:

Cure for the Plague: A Theoretical Progress / OpenEdge ABL Migration Plan

20 minute read

The Triumpth of Death oil painting

I think my opinion on Progress OpenEdge ABL (henceforth known as “the Plague”) as a programming language / DBMS is well known, but here is a short summary in case you missed it:

Longchar sucks. Introducing BigCharacter

4 minute read

Now that I’ve got your attention, let me say this: LONGCHAR doesn’t always suck. But, it definitely does suck sometimes

The Bug

Here’s an example. How long does it take for this code to complete on your system?

DEF VAR lc AS LONGCHAR NO-UNDO.
DEF VAR i  AS INT      NO-UNDO.

DO i=1 TO 1000000:
  lc = lc + STRING(i).
  IF i MOD 100 EQ 0 THEN
    STATUS DEFAULT STRING(i).
END.

OpenEdge ABL Utility: Get Program Parameters (Main Block) from R-code

6 minute read

I have recently been working on a new compiler interface and backend for my workplace. I am pretty much done with it at this point - and the adventure is worthy of it’s own blog post - however, I thought I would share a little script with the world that might be useful to others.

Basically, I wanted to table-ize as much meta information about a program as possible when it gets compiled. One piece of information I wanted is the main block parameters of a program (e.g. DEFINE INPUT PARAMETER ipcString AS CHARACTER. at the top of the program). I mean, how cool would it be to do a simple check on RUN statements to see if they will fail at compile-time (by checking existing compile snapshots of the program referenced by the RUN; assuming of course that the RUN statement can be evaluated at compile-time)?