From Rosetta Code

I discovered programming in college around 1973. Some of the girls I dated back then were studying "Symbolic Logic," and I was fascinated because I thought the logic problems they were struggling with seemed, well, logical. (At least one of them became a professional programmer.) In the last term of my senior year, I took "Intro to Computing," where we learned some BASIC and some FORTRAN on an IBM 1130 that ran stacks of punchcards. We wrote our final exam (coding an assigned program) in Bluebooks. I enjoyed everything about the class, and started hanging out in the computer center, where I taught myself some 1130 Assembler. When the instructor congratulated me on my final exam, I asked what was special about it. He simply said, "It ran."

In grad school, studying music, I had a friend with a programmable calculator. I would borrow it for hours or days at a time, teaching it to play tic-tac-toe and other silly games. When I learned I had access to the campus mainframe through a teletype terminal in the basement of my dorm, I created a text-based Monopoly game.

For the next few years I was focused on my career, playing and teaching music. I didn't get back to programming until 1984, when I bought a Commodore 64 personal computer. It didn't have any storage medium, but I quickly learned Commodore BASIC, gradually filling the 64k of memory with IFs, FORs, and GOTOs. I lived in fear of a power failure that would have instantly erased all my code. After a week or two, I decided I HAD to spend the bucks for a 5.25" floppy-disk drive so I could save my code.

Having learned some Assembler in college, I began to explore Commodore Assembler. I shortly had a routine that would bypass the Commodore restriction of 80 characters per line of code. Compute's Gazette bought the routine and published it in the magazine, paying me enough that I decided to invest in a Hard Drive, even though I knew I could never come close to filling its 1.1 megabyte of storage!

I programmed a Cribbage game that could beat me about half the time, and a couple other games I no longer recall. Then someone showed me a game called Rack-o, and I decided to program a variant of it on the 64. I explored some sprite techniques that I hadn't seen used much, and when I sold the game to Compute's Gazette, their check was enough to pay for my entire computer system. Later, when the magazine went out of business, they paid me again to include my game on a disk of the fifteen best games they had ever published.

Trying to merge my coding passion with my musical career, I developed a pitch-matching game heavy with graphics, which were not the Commmodore's forte. While I was chasing a couple of remaining bugs, the computer world shifted, and the Commodore was no longer au courante. My masterpiece never saw daylight.

I started moonlighting with a small publishing company that got wind of my computer predilection. There I was introduced to the Macintosh, on which I produced graphics for a magazine which became the first internationally-distributed periodical created and printed 100% digitally. Eventually, I got my own Mac.

The new platform was frighteningly different from the Commodore, filled with concepts like pointers and handles of which I had no idea. I wanted to get back into programming, but despaired of finding a way to do so. I tried several different programming languages, and finally found a good deal on something called Z-Basic, just at the time it was being transformed into FutureBASIC. It had only a little similarity to Commodore BASIC, but came with comprehensive documentation, clever illustrations, and helpful analogies. When I finally joined the FB Programmers' email list, it wasn't to ask questions, but to answer them.

For the next several years, I would teach music lessons, attend rehearsals, and play concerts, but spend every other moment, often late into the wee hours, helping other programmers——some hobbyists like me, but also some professionals——to understand how computers work and how to create efficient code. I gradually gained a reputation for producing code smaller and faster than that of my competitors on the list.

My piece de resistance was in response to a challenge from a list administrator to create code to display every word in a 15k text file with the number of times it occurred, showing a timer while it worked. The code I submitted omitted the timer, because it would sort and count the 500k King James Bible (the largest English text file I could find) in about 1 second, on an old 68000 powermac. A developer in Russia wrote to ask whether my algorithm could scale to work with his commercial database software. I assured him it absolutely could not, given the storage limitations of current computers, and in any case, I was merely a hobbyist. He replied in broken English, "If all hobbyists as smart as you, computers already smarter than humans."

I know that to this day, there is professional software out there that contains bits of code I wrote, enhanced, or optimized. At one point I was even invited by the developer of FutureBasic to help rewrite the FB code editor, which still retains a bit of my design.

Then, at some point, both the Macintosh environment, and FutureBasic in response, started changing more rapidly than I could keep up with. I went on to create websites in HTML, employing some JavaScript and a bit of Python, but left FutureBasic behind for several years. I quickly learned that the help available to a struggling programmer in JS couldn't hold a candle to what had been freely and eagerly available from the FutureBasic Programmers' list I had dropped off of.

One day someone on the list had the strange idea to invite me to rejoin. I started reading the posts again, and eventually saw a question to which I knew the answer! I posted a reply and was welcomed back enthusiastically. By this time, I was retired from playing music and had cut back my teaching, so finally had time to explore the new FB world. Before long I was again producing faster, tighter code than many of the others.

FutureBasic is 100% free! I invite you to install it and play with the ~400 FutureBasic solutions to RosettaCode tasks, and challenge you to improve on them. While FutureBasic is a great place to start learning programming, it is also one of the easiest ways to develop fully professional software.