(Programmers)Which program are you the most proud of?

  1. I wrote programs in a stat package, a mesher, and a cfd package that did iterative fluid structure interaction by calling instances of each other. The stat programs also used metaprogramming, both ordinary and reflective.

  2. I wrote a short routine that did all the trigonometry for transforming the corners of an arbitrary rectangle between coordinate systems with rotation and translation, and it worked right on the first run. This was after I had taken 35 mg of oxycodone for a spinal injury. For some reason, programs I write while on narcotics often work well right off the bat, unless I fall asleep or forget what they were supposed to do before I finish writing them.

  3. This afternoon I wrote my first PLC program, in “structured text” (which is like Modula-2). Not so much one I’m very proud of - more like a little win that just happened hours ago.

My first real program, written in BASIC 28 years ago always won at Nim if the computer went first.

Back in the mid-80s, I used to work with a blind programmer who had to use a “dumb” terminal to do her work because it had a mode that would echo whatever was displayed on the screen to a serial port. The serial port was connected to a text-to-speech synthesizer. All of her work had to be stored on a mainframe, which she could not access from home, so she had to put in a lot of time at work after hours. Basically, getting files to-or-from her was a real pain.

I spent my lunch hours writing an application that hooked into the operating system of the computer our company used. Took me a couple of weeks, but eventually I had an application that made her compatible with the rest of our company. It would echo each letter typed and then say the whole word when the space was pressed.
It had hot keys to repeat the word or line, position the cursor on the page, say the date and time and directory.

This was on an Intel chip running BTOS, which had a “forms-oriented” command interface, which is not the same type of beast as Linux or Dos.

The best thanks I received was when she told me, with tears running down her face, that she had actually been able to go home and have dinner with her kids for the first time in 6 months.

You’re welcome, Jolie!

BobArrgh wins the thread.

BobArrgh, by a landslide. My complements to Jolie, by the way.

You think that’s hard? Try explaining what a monad is! :slight_smile:

I wrote an implementation of a unification algorithm that my supervisor and I had developed, complete with a mini “programming language” front-end for defining terms, testing alpha-equivalence, calculating free atoms (not as easy as it sounds, as the free atoms of these terms are pretty much always infinite sets), calculating a fresh variable, permuting a term’s variables, calculating mgus etc. etc. in less than a week in Haskell.

Hopefully, I can use my program, and the associated algorithms we developed, as the basis of a new programming language, similar to Maude.

When first learning Java–I barely had the disks out of the box, I wrote a scheduling tool that I was pretty proud of. This was a tool to help schedule a monthly cycle with concurrent weekly cycles involving about 100 jobs a month among which there were various contingencies, dependencies, and blackout times to factor in. Since some of the jobs took over two days to run and there was a database backup every Saturday night, it was a real pain to plan and write everything out manually. With my solution in place, it was still a manually operated and maintained system, and if nobody but my group cared when these jobs got run, it wouldn’t have been of much use. As it was though, our partners on the business side needed to know when the milestones along the way would be reached, so that they could use partially completed data. At the beginning of every month, therefore, I was supposed to plan the schedule and then email it to everyone. If something went wrong during the month and we had to reschedule, I had to redo the schedule by hand.

It was so well suited to an object oriented language, and the relatively static nature of the jobs, that it practically wrote itself. Still I was more than please with it, because I had finally written something that went beyond just spitting out reports from a database or file, or even ones that were more sensitive and critical, like statements and cash application. Even cash app is based on simply looking up a customer, reading AR and applying the incoming payment against the outstanding invoices. This new program, on the other hand, was something that relieved me of a difficult monthly chore; one that actually did some of my work for me. And the data design was rather elegant if I do say so myself. The dependencies among all the jobs in the cycle could be imagined as a directed graph, but I didn’t have to do anything that sophisticated. All I had to do was map this graph to a set of successor relationships embodied in a database table of only two columns. Each record in this table expressed an atomic successor relation, to the effect that job B needed to wait for Job A to finish. The relationship of predecessors to successors could be one to one, many to many, or one to many either way, but that wasn’t a problem at all. I needed only to define a record for each successor relationship; say job “n” has jobs “p”,“q”,and “R” depending on it, then the successor table would have three records as follows

n => p
n => q
n =>r *

where “=>” means "must finish before starting "

Similarly suppose job “r” above was contingent not only on “n” but also on “a” and “b”, this could be expressed by adding

*a=>r
b=>r
*

But because the table is understood to be successors only, what the above records actually look like is simply
*
n , p
n , q
n , r
a , r
b, r
*

At the beginning of each run, the program reads each record, and as it registers the successor relationship expressed by the record, it also registers the implied predecessor relationship. In this way it gathers the knowledge needed to write the schedule.

I didn’t get any reward for this, but I did get kudos from my peers which which meant a lot.