An Old Programmer Tries New Tricks

This punch card identifies the parts of a Fortran statement. The first five columns contain the line number, unless column 1 is a “C”, which turns the statement into a comment. Column 6, if marked, usually by an “X”, turns it into an extension of the previous statement. Columns 7-72 hold the Fortran statement itself, and the rest are an optional “sequence field” for use by the programmer as desired.

I wrote my first program at the age of 15 using a coding pad provided by my dad, who was managing an early computer installation for his employer, General Mills.  It was 1968, and programs were drafted on these pads, which were basically a grid with 80 columns and maybe two dozen lines.  The program statements on the pad would later be transcribed by a keypunch operator onto punch cards, one line per card, and then fed to the computer by a card reader that could sense the holes in the cards and turn them into bits in the computer’s memory.

I didn’t understand the details of how computers worked, but I was able to figure out how to write a series of statements in a programming language (Fortran) to do something I thought was cool:  print out the coordinates that I could plot on graph paper (yes, that’s how it was done), to create an Archimedes Spiral;  the path traced out by what I imagined to be an insect crawling on a ruler that was rotating around the starting point.

It was an ambitious goal, and I had to think hard about how to do it.  I had to learn about loops, conditional IF statements, and distinguish between integers and floating-point numbers.  And how to format them and print them out.  In the end, I think I was able to do it on one page.  I carefully wrote each line on the coding pad and gave it to my dad, who promised to take it to work and run it on the computer (I later learned it was an early Control Data Cyber 6600 model which occupied a large room).

He returned that evening with the result, a line printer output on “computer paper”, large folded pages with detachable tractor feed sprocket edges.  I looked at it and saw numbers printed along the left edge.  Pairs of numbers, one pair per line on the page.  These were the XY Cartesian coordinates I was looking for!  

I pulled out my pages of graph paper and started plotting them.  I marked a dot at each XY location, and soon I saw that as I connected the dots, a spiral shape was forming!  I was quite excited.  This was the experience I had of writing my first program.

I later learned that writing a program that ran correctly on the first attempt is a rare thing.  And I also heard that my dad teased his staff of professional programmers to try and be as successful as his teenage son.

While I did not go on to become a professional programmer, I did acquire some of those skills as a requirement for the engineering and physics work that I pursued.  They have languished somewhat in my years of retirement, but every so often I find a reason to dust them off to work on some new project.

Sixty years later, computer programming is a very different thing.  Instead of punching holes in cards, we can literally just speak our algorithmic intent.  The landscape has shifted dramatically from lines of Fortran that generate printouts on large folded paper, to a myriad of specialized languages and network protocols that can drive an immersive visual display.

I recently acquired a motive to re-enter this new programming world.  I share some of my photographs on a website hosting service, SmugMug, that caters to professional and serious amateur photographers.  I’m in the amateur category, and serious enough that I was willing to subscribe to their “serious amateur” plan.  When I recently got notice of price increases and the elimination of my plan, I wondered if I could make my own web album displays.

I have a website (you are likely reading this on it), but it does not have the features that make for a pleasing photo album sharing experience.  I sought something that could do so, and found “jAlbum”, an application that generates photo albums and slide shows that can be uploaded to a website.  And it had a bunch of pre-made templates for different looks and presentation styles.  I had actually tried it a few years back, but set it aside when I signed up for the SmugMug hosting.

I decided to move my albums from SmugMug to albums created by jAlbum that I could host myself.  I really liked the SmugMug themes and the look and feel of the albums they created for me–  there was a reason I was willing to subscribe.  But I could not find a similar theme among the jAlbum choices.  I could get close, but there was always something not quite right, or just not as nice, or something that could have been smooth and elegant, but was clunky instead.  

It turns out that the jAlbum “skins” (the album look and feel), can be customized.  There are several levels of customization.  Each skin has settings that are used for things like background colors and fonts, but this was not enough for me.  It is also possible to edit some of the “skin files” to customize them beyond the user settings.  It requires a little knowledge of web technologies: html and css.  I could get closer.  But I really wanted control of the user experience and interactions as they peruse my photos and to recreate the experience that SmugMug had provided.  This meant I would have to change the the skin itself, either making an entirely new one, or modifying an existing skin.  

I would have to become a programmer again.

As I said, my skills have waned since retiring.  But I have contacts that could guide me back into the programmer’s saddle.  My stepson Attiss, who re-invented himself from musician to blockchain programmer, told me about the modern versions of tools that I was once familiar with.  

The tools have become sharper, the editors better, the debugging process more efficient, and the help system– that immense online documentation for everything–is augmented by an AI agent, referred to as “Copilot”.  It’s an apt name, and I found it to be extremely helpful in providing the relevant reference information, mini-tutorials on language syntax, and suggestions for structuring the changes I wanted to make.  

I had a few specific things I wanted that didn’t seem all that complicated, and I thought they would be easy to implement.  They weren’t, but I enjoyed several weeks of figuring out each one as a puzzle to solve.  It would have taken much longer without the AI assist.

In the end, I am very happy with the result.  I can now make web albums that are arguably even nicer than the ones I enjoyed at SmugMug (of course they are nicer, it is my metric).

I never intended to be a programmer, and have never measured up to a professional, but it is satisfying to still be able to follow along and to apply my (updated) old skills to new projects.  

I will be making web albums for the pictures I took on a recent trip to Europe and will provide links to them in upcoming posts. I invite you to look through them and let me know what you think. If you encounter problems or find something confusing, I now know some new programming tricks and have the power to fix it!

Login! render post

Leave a Reply

Your email address will not be published. Required fields are marked *