How I Got To Where I Am Now – Part 1

      1 Comment on How I Got To Where I Am Now – Part 1

This was supposed to be some notes for a possible idea for JCrete this summer. How it became a history of my start as a computer programmer is beyond me but once I started writing I couldn’t stop.

The first programming language course I took was FORTRAN in 1971. I took it in college when code was keyed on punch cards. I was 17 and sex, drugs and alcohol were what interested me most. I couldn’t type and still can’t. FORTRAN did not ignite a passion in me.

Fast forward to 1980 and I’m 26, recently married and working in a mail room. There was so little to do during the work day I started buying magazines and the ones I bought most often were computer magazines such as Byte, Creative Computing, and Micro6502. After about four months I made the decision to buy a computer.

My landlord had a Commodore PET (Personal Electronic Transactor) and while he took every opportunity to show it off to me all I remember is that he had to run the cassette tape two or three times to get it to load. Fascinated none the less I discovered two computer stores in Montreal in addition to Radio Shacks that sold TRS-80s.

Radio Shack was off the table because I could not find an employee who knew more than to tell me it had “beautiful plumage”. The next store, called Future Computers, had a few different machines such as the PET, the TI/99 and the Apple ][+. They were as knowledgeable as they could be and were happy to let me play with the different models. The last store was called Central Distributing. They were primarily a Hi-Fi and TV store but in one corner they sold Apples. The employee was the most knowledgeable one I had met anywhere. More significantly was that there was always a few other people who already owned an Apple or others like myself trying to decide which computer to buy.

There was a community at Central Distributing (still in business but no longer selling computers). It was the community that convinced me to buy an Apple ][+. The base unit had 16K of RAM to which I added, for $380, another 32K of RAM. My last addition was to buy a 5 ¼ floppy disk drive for $700. That floppy drive made me the envy of the other Apple owners who still used a cassette recorder.

MAC Vol2Num3

My wife Cheryl and I, mostly my wife because she had a better job, borrowed $3000 from a bank with $2000 for the Apple and $1000 to remove the rust from our GMC van. Vanning as a means of travelling was big in the seventies and early 80s. I built an RV style interior myself. Good times and good drugs but that’s a story for another blog.

I sold the idea of getting the Apple computer to my wife by describing it as the best toy I could ever want. I called it a jungle gym for my mind that was becoming stagnant by just working in a mail room. We were just married and no kids yet. I changed jobs not long after buying it and getting our van de-rusted. I became a photography technician at the Dawson Institute of Photography of Dawson College. I was responsible for managing the inventory of equipment that the students used and mixing the various chemicals used in black & white and colour photography.

But when I got home after work, I spent all my free time on my Apple. We couldn’t afford a real monitor and with a resolution of just 40 x 25 I could make do with my wife’s old 9 inch black and white TV. I was obsessed and proceeded to type in almost every program from the magazines I bought. I remember typing in a Space Invaders game and I thought it was the coolest thing. I started modifying the programs. They were all written in Apple Basic that was the second programming language for the Apple. It was written by a small company run by Bill Gates. Prior to Apple Basic there was Apple Integer Basic written by Steve Wozniack but when Apple went from Apple 2 to 2+ the Bill Gates version became the standard.

MAC Vol2Num9

One task at the photography school that the faculty worked on three times a year was scheduling. There were three groups of photography students, morning, afternoon and evening that had to follow a 15-week semester schedule. The groups were broken down into sections. There were classroom lectures, photo lab and studio lab courses. The faculty would spend two or three days preparing the schedules. In my arrogance I announced, after only having had a computer for a little over a year, that I would write a scheduling program.

I modeled the data structure inside a multi-dimensional array. I’d begin by randomly assigning courses, teachers, and rooms while verifying that I was meeting all the requirements. For example, a course might need to have so many studio hours a week every week and there were multiple sections in the time block competing for the studios. A piece of cake, I thought. If my algorithm got stuck, I planned to unroll backwards and try another arrangement.

It never worked. I could get to about week 10 or 11 and then I could not get any further. My truly amateurish algorithm would end up unrolling back to week 1 and then proceed to move forward but never past week 11. But boy, did I enjoy the coding even if it was a failure. I was now certain that this was my life’s passion. Now, could I salvage anything from this considering I had made promises I could now no longer fulfill.

MAC Vol2Num9

One component of my system was verification. It contained the rules for a proper schedule and it determined if the schedule could work. As I said, the scheduling process was a two or three day affair plus a day to prepare schedules to be printed for the students. What if the work the faculty did was immediately entered into my program? It could inform the faculty right away of any errors or omissions in their work. Once a schedule was verified it could then print out the schedules for each section. This is what I presented to the faculty. It turned the time from the beginning of manual scheduling to producing error free student schedules to less than two days. I even brought in my own computer and printer to be used as the college did not have any computers at that time, early 1982.

Dawson College, in the early 80s, had decided to set up computer labs with Apple computers. The Dawson Institute of Photography was managed by the Continuing Education department of the college and its managers were aware of what I was doing when I wasn’t mixing chemicals or fixing cameras. I was invited to speak at a general faculty gathering about small computers. Dawson already had a three-year Computer Science Technology program but it was exclusively mainframe. I was one of a handful of employees who were also computer hobbyists and my Schedule Verification System was an example of a useful application of these new small systems.

The presentation was a success. It was the first time I ever did anything like that. Immediately afterwards the chair of the Humanities department asked me if I wanted to teach a Humanities course. I was flattered and puzzled. I had just spoken about my experience with an Apple computer and not philosophy. He told me that what he liked was my style. I could educate, entertain and captivate an audience. He told me that these skills were not common in his faculty.

MAC Vol3Num1

I enjoyed the moment. It was an unexpected offer. Then I had to reveal a truth. After high school, that finishes in grade 11 in Quebec, I went on to a two year college as preparation for a university undergraduate program in Science. Dawson College is one such college although I went to different one. I failed miserably in college. I was expelled after my first semester and then got a job as a shipper at a surgical supply company. I returned to college the following year and while I lasted the whole year, I only passed 3 out of 12 courses. It simply came down to the fact I found other activities rather than schoolwork more fun. Not an original story.

The chair of Humanities said I shouldn’t worry. He’d fix it so I could get hired. He couldn’t. Not long after that the Continuing Education department decided to offer computer courses. As they were non-credit the hiring criteria for regular day courses did not apply. They hired me to teach introductory computer courses.

During this period I became involved with an early users group called the Montreal Apple Core. We met once a month in a church basement. I volunteered to produce the club’s newsletter. I gave some presentations and for a short period of time became the president. If anyone from that period reads this then let me admit that I was a terrible president.

There was a magazine store that carried magazines and books mostly dealing with computers called Le Camelot. They agreed to carry our newsletter that I produced on an old Gestetner copy machine and later with a photocopy machine. You can see images of the magazine throughout this blog.

One day I got a phone call from an engineering firm. They had a contract to build a control system for a water filtration plant in the Montreal area. The plan was to use Apple ][+ computers to control the filtration process and they asked if I could program a graphical user interface. It would show the various stages and readings of the filtration process. As I looked at the palm of my hand I assured them that I knew how to do something like that the same way I knew the back of my hand. I now had my first commercial programming job.

My interest as a photography technician was waning. Truth be told my enthusiasm and the quality of my work was diminishing. When the students met with my supervisor to complain about me I knew it was time to go. With the support of my wife I resigned from the Institute of Photography. By then I was teaching several non-credit courses not only at Dawson but at other colleges. This was enough to cover our household bills as our first child was now a year old.

Between the time I left the photography school in 1983 until 1991 when I became a full-time faculty member in the regular day Computer Science Technology program there was never a time I wasn’t coding for clients. During my first few years as a teacher I continued doing some contract work but I dropped that as I started teaching non-credit evening courses at Concordia University. I even went back to school in the 90s and made up for my failed college time and got as far as two years into an undergraduate computer science program. The need to pay the bills had me doing more evening teaching so I never finished that degree. At least I wasn’t expelled.

If the mood strikes me one day I may write about what I did as a free lancer and that will be part 2. There are some good stories from that period, some I still tell my students. Seven years ago I stuck my head out of my education fox hole and became part of the wider software community by writing, speaking at conferences and even by organizing a conference. I have never regretted the choices I made. I have suffered from impostors syndrome but it never held me back from taking on anything presented to me.

I turned 65 this year. It is now my 30th year at Dawson. After 21 years as chairperson and program coordinator of Computer Science Technology, I stepped aside this year to return to full time teaching. I’ve toyed with looking for new opportunities but I’m not sure I can give up the life style of a teacher. At a luncheon just the other day one of the younger faculty whom I hired gave me a small novelty plaque that stated the 3 reasons for being a teacher; June, July and August. This is what I told him when I convinced him to leave industry and join us.

Ken Fogel, June 10. 2019

OK, Java is still free but which version do I use and recommend to my clients?

There remains significant confusion over the licensing and distribution of Java. I know this because I have contributed to this confusion. There is a debate in my college department over which version to use and how updates will be handled. Donald Smith, Sr. Director of Product Management at Oracle in Ottawa, has been kind enough to clear up these issues, probably for the 100th time. The purpose of this brief article is to summarize what I have learned. Before I begin you should read the following posts:

https://www.oracle.com/technetwork/java/java-se-support-roadmap.html
https://blogs.oracle.com/java-platform-group/oracle-java-se-releases-faq
https://blogs.oracle.com/java-platform-group/oracle-jdk-releases-for-java-11-and-later

Finished, then let’s begin.

Which Java distribution should I use?

The distribution from https://jdk.java.net always has the latest JDK release including quarterly security updates. This is a tck verified, quality tested, production-ready and open source licensed JDK built by Oracle. As of Java 11 this code base is effectively identical to the non open source licensed Oracle JDK. See the links above for the cosmetic, non-functional differences. You can still download Oracle Java from the Oracle Technology Network (OTN) and use it freely for personal use or training. Still, if you have any concerns or plan to distribute a product based on Java get it from https://jdk.java.net. Have your clients use this as well.

There are many other channels for JDK releases as well from various Linux distributions, hardware vendors, software ISVs and other support providers. Depending on your needs, those may be options as well. More on this later in this document.

What does Long Term Support mean?

Oracle will provide paid support for LTS versions, currently this includes Java 7, 8 and 11, for a significant length of time. Java 11 will have extended paid support until at least 2026. Oracle also provides commercial support for non-LTS releases such as Java 12, with the understanding that those releases are superseded by the subsequent release. For more information, see https://www.oracle.com/technetwork/java/java-se-support-roadmap.html

What does the 6-month cadence of Java releases mean?

Every September and every March a new feature release of Java will be available. These new versions replace the similarly timed updates as experienced in the legacy cadence model such as in Java 8. The last version of 8 is 212 though that number is not the number of distributed versions. Still, there were a lot of versions of 8 some even including new features. The six-month release will now be how patches, fixes and updates will be delivered.

In a brief back and forth on Twitter with Brian Goetz, Java Language Architect at Oracle, he confirmed Java’s commitment to backward compatibility. If you have code you developed in Java 8 then you can rest easy that it will run in Java 13. If you are looking for a new developer for a Java 11 project and they tell you they trained on Java 13 then hire them, they also know Java 12, 11, 10, 9, 8, etc. Java will evolve and will change and that is how it should be.

Isn’t the industry reluctant to use anything other than an LTS version?

Initially yes but only because of misunderstandings and simply wrong statements from people like myself. Just as you used to update your Java 8 when you heard that there was an update so will you update to the next version. The difference is that there is now a regular predictable schedule. This aligns with modern application development practices and other platforms that expect more frequent but manageable updates rather than tectonic shifts every 3-4 years. This will help Java as it continues to be the number one development platform for cloud.

I write web code against an application server, don’t they all need Java 8?

Currently the latest versions of IBM’s Open Liberty and RedHat’s Wildfly run on Java 12 as do others. My informal tests running servlet and JSF applications compiled with Java 12 but with the maven settings for the compiler source and target to 1.8 showed no problems even when the server, Payara, was running on the Java 8 JVM.

What about all those other distributions of Java?

Amazon, SAP, Azul, RedHat, Bellsoft and AdoptOpenJDK, just to name a few, are making distributions of Java available now. The only significant difference between them and what is available from https://jdk.java.net is that these come with installers while https://jdk.java.net only supplies zip/gz files. They are built almost completely from the same source code. Java does not need to be installed on any platform. Just unzip the distribution and configure your application, IDE, or OS to know where it is. All an installer does is unzip and write the optional system configuration to the OS for you. These companies simply provide an alternative to Oracle for paid support or provide a JDK for platforms other than Intel/AMD such as for ARM. There have been alternative distributions of Java for some years now, for example with Red Hat providing an OpenJDK release since 2008 on Java 6.

Conclusion

If you are just starting to code in Java then use the most recent version. If you are using Java then update to the most recent version. If you are worried about possibly running afoul of Oracle licensing or prefer to favour open source then download Java from https://jdk.java.net otherwise download from the OTN.

Written with the assistance of Donald Smith