Programming

Why Not COBOL?

All the recent interest in COBOL due to its use in large financial systems is fascinating. Just because a language is old doesn't mean it is useless or that people aren't using it to engineer important systems. I have fond childhood memories of going to the local university with my mom when she would work on her COBOL programs for school. She would sit at a 3270 terminal in a computer lab typing away and when she was done she would print out her code on 132 column green and white paper to be turned in.

ARM Assembly: Sorting

After taking a hiatus for two years, I've started working with ARM assembly language again. I realized that the code I had been working on before had become a kind of utility library, so I rearranged the git repository to reflect that. While doing so, I noticed that my sorting libraries were in an incomplete state, so I decided to work on finishing them. The result is that I now have four working sort functions that all operate in place on an existing array of 32bit signed integers.

ARM Assembly: Binary Heaps

I got a Raspberry Pi for Christmas and I've been teaching myself ARM assembly. It's my first time working with assembly language, as I didn't take an systems architecture or OS fundamentals class in college. I'm slowly working on a Huffman Encoder, trying to use only native Linux system calls without making calls to other external libraries. This will be the first in a series of posts about this topic.

A MUSH Written in Racket (Scheme)

I've been working on a project for the past couple days to learn the Racket programming language. Racket is based on Scheme, which is in turn based on Lisp. Racket includes a compiler that will produce a native binary on Mac OSX, Linux, or Windows as well. The project I'm working on is a simple MUSH (Multi-User Shared Hallucination). The code is on my GitHub page if you want to take a look at it.

Regular Expression Magic and ViM

Every now and then I have an editing task for which Eclipse is just not up to the job. Usually it involves making a lot of changes all at once. (I realize that Eclipse has regex find/replace, but I feel much better working in ViM in these cases.) Here is an example: I have a block of Java enum code that I want to split out into an enum and two maps.

Editing Percent Values Using Dijit's NumberTextBox

Dijit is a web UI toolkit built on top of the Dojo framework. One of its widgets is called NumberTextBox. This widget allows you to show and edit formatted numbers easily. For example, I can create an instance of CurrencyTextBox (a subclass of NumberTextBox) and call set("value", 2589632). This will display the value as follows (assuming that my locale is set to en_US): If I click in the box to edit the value, it changes back to just numbers and looks like this:

A Simple Esperanto Keyboard for iPhone

Today I wrote a simple Esperanto keyboard for the iPhone. It's really just a little HTML page with some JavaScript and CSS to make it look like an iPhone app when you view it from an iPhone. It looks pretty bad if you view it outside of an iPhone though, because the buttons don't line up right. Maybe I'll make it more fully featured on non-iPhone browsers, but there are better tools out there for that already.

XML Generation in RPG

The company I work for makes heavy use of their IBM Power i midrange servers (previously known as AS/400 or iSeries servers). A lot of their software is written in the RPG programming language, which IBM originally developed back in the 1960s. The language was originally written to generate reports and lacked many “modern” programming features, such as IF statements and subroutines, which were added in RPG III. Since starting at my current company, I've been trying to learn the current version of RPG, which is RPG IV (aka RPGLE or ILE/RPG).

Huffman Coding, Unicode, and CJKV Data

Today I wrote a little utility in Java that compresses a file using Huffman coding. Normally Huffman coding works on 8-bit bytes. However, because of my experience dealing with Chinese, Japanese, Korean, and other non-English text I wondered how well the coding method would work on double byte character sets. Specifically, I was curious about compressing UTF-8 text. UTF-8 is a variable length encoding for Unicode data that stores characters using between one and four bytes per character.

First Release of Japanese Dependency Vectors

At the end of last semester I finished the first version of Japanese Dependency Vectors (jpdv). I had to give up on using Clojure at the last minute because it was taking me too long to make progress and I needed to have some sort of a working system to turn in for my NLP final project. To accomplish this I rewrote jpdv in Java. It took me about 18