The Beginning - ABC 80 and BASIC
I started programming in the end of 1982. In the fall of 1982 I started 7th grade, which mean my class moved to a new school. During the fall a computer club was founded. My school had been selected as one of four test schools for Compis, a new computer being developed specifically for the Swedish school system. Initially, before the computer was ready, the school had a number of older ABC 80 and ABC 800 computers.
The computer club got a card reader to regulate the access to the newly established computer room. If I recall correctly it came from a local bank that replaced their system. In order to get a card, you had to be a member of the computer club and take three classes in the fundamentals of BASIC programming. The classes took place in the beginning of 1983, if I remember it right.
What I did was to go to the library and borrow a book about progamming the ABC 80 computer. I read it over the Christmas break 1982, and wrote some simple programs on paper and ran them in my head, just to get a feel for how it all worked.
I took the evening classes, got my pass card and from then on I spent a lot of my free time after school in the computer room at school, much to my parent's dismay. They rather wanted me to come home and do my homework, so I would get good grades and get a good job, instead of sitting in front of the computer every evening.
The Next Step - Compis, CP/M and Pascal
In 1984, we got the first of the new school computers, called Compis. This was short for "Computer in School", but also the Swedish word for friend. It used the 16-bit operating system CP/M-86, and had a number of applications developed for the Swedish schools, including the Harmony suite of programs (word processor, spreadsheet and database), and the programming languages COMAL and Pascal. I never liked COMAL, a mix between BASIC and Pascal. The version of Pascal used on Compis was basically Turbo Pascal 3.1. This became my preferred language for the next 4 or 5 years.
Among the programs I wrote was Atlas. In 12th grade, every student had to do a special project in order to graduate. We were supposed to spend at least 80 hours on it, and it could be in any subject we studied. My best friend Gunnar and I decided to do it combined in geography and computer programming. The result, after many hundreds of hours (we estimated at one time that we actually had exceeded 800 hours in developing this program) was a program contained data of every country and every capital in the world. It had graphic maps where a country was filled out and the student had to enter the name of the country as well as the name of the capital.
Among the challenges were that I first had to write a simple graphics editor to let Gunnar (who was an artistic genius) draw the maps and save them in out own file format, which I then read in the main program. I also had write code that would translate the names entered by the students/users no matter if they were upper case or lower case, had extra spaces, etc. The program also had to recognize all different variations of country names, both common names, official names and names in the native language as well as in Swedish. The data entry was mainly done by Gunnar as well, while I focused on the programming. One problem we ran into was that the program soon exceeded the available memory of the computer. So several times during the development time I had to rewrite code to optimize it. We also had to write a manual.
The program was of course a success, and we ended up selling a couple of copies. We even developed a crude copy protection for it, which disabled the program if for example the name of the customer (school) was changed, which could be done using a hex editor/debugger called DDT86.
The Real World - PC, MS-DOS, Unix and C
In June 1988 I graduated from 12th grade, and I was going to take a 1 year systems programming class, starting in August. It was basically about 2 years of computer science and programming compressed into one year, 8am to 5pm five days a week for two full semesters. The focus would be on C programming and Unix, but also other languages and operating systems, as well as relational database management systems (RDBMS) and general software knowledge.
However, there were too few students so the class was postponed until January. We were told to look for an internship or similar in the IT industry, so I called around for a day or two and then got a job at Microsoft working in their support department. Interesting enough, I had no experience with any of their products. At school the computers used CP/M-86 as operating system, not MS-DOS (even if a later version of Compis actually was able to run DOS), and I had never used Windows. But they trusted me to learn "on my feet", so after a morning learning about the company, how the phone system worked and who my new co-workers were, I was taken to lunch and then put at my desk and asked to start taking calls. It was a tough first few days, but I learned a lot quickly.
In January the class started again, and I spent the next year either studying, programming or working at Microsoft (during the summer break). During this time I also picked up my first paid computer job. I was asked by the social services office in Stockholm to develop a purchase order system using Paradox for DOS.
I still did not have my own PC, just a Compis computer I bought so I could maintain the Atlas program when countries changed names, etc. In the end of 1989 I finally got my first computer, with a 25 MHz 80386 processor, 1 MB memory and 50 MB hard disk. Over the next couple of years it was upgraded with more harddisk (eventually I had a 200 MB SCSI drive in it), better graphics card, and in 1991 I got a new motherboard with a Intel 486 processor at 33 MHz.
Taking a Break - Military Service
Sweden had compulsory military service when I grew up, so after graduation from the systems programming class, I had 3 months until I was to report for 11 months of service with the Air Force. I worked for Microsoft, but also substituted as a teacher at a local school, teaching Unix, C programming as well as some technical English and data communication.
For the next 8-9 months, my only contact with computers were when I was on leave in the weekends and got to go home. I did some programming, including some simple Windows programming using Microsoft C 6.0 and the Windows 3.0 Software Development Kit. It was also about this time I started being active on a Bulletin Board System (BBS) called SKOM.
First Programming Position
Towards the end of 1990, I got every third week off from the military. My unit were having 24 hour readiness for a week, then a week daytime service and then a week off. So through SKOM I got a job, writing software to control interactive voice response (IVR) systems. At first I only worked in my free weeks, but I was offered a full-time position when I left the Air Force. I had intended to go back to Microsoft, but suddenly I was working as a programmer, which is what I was trained to and which also was my passion.
I worked at Esselte Voice (later Voice Equipment) for almost two years. In November 1992 the company went bankrupt, about a year after being purchased by J W Nijholt, a dutch company also working with IVR systems.
A Different Job
So right before Christmas I was out of a job, and on top of that, Sweden was in financial turmoil. That was partially why the company had to declare bankruptcy. The job market did not look good. I started looking around some, and a couple of weeks later my Lieutenant in my Home Guard company gave me a clipping of a job posting he found in his morning paper. It was from IDG, a publishing company who were looking for a tech support person for their IT department. In the same job posting they also looked for a journalist for one of their publications as well as a sales person. I applied, and I was contacted back. Not for the IT position, but for the journalist position!
After a couple of interviews and writing a sample article (a product test of Microsoft Works 3.0 for Windows), I started as a journalist at Computer Sweden in February 1993. Lars Dahmén, the editor-in-chief back then, was looking for a person with a technical background who could learn to write, and obviously I fit the criteria. I had not been writing anything since the essays we did in school, but I think I did learn fairly quickly and did a decent job. I worked at Computer Sweden for just 2 months short of 5 years, until I moved to the US.
While working as a journalist, I also developed some software for the publication. Most of my co-workers were using WordPerfect (version 5.1 or 5.2) to write their articles. The text was then saved and sent to QuarkXpress on Mac for editing/layout. In order for QuarkXpress to identify different parts of the text (headline, sub-headlines, byline, image caption, etc), special control codes were used. As I was used to Microsoft Word for Windows, I quickly built a template where I could type the text without control codes. Instead I applied different styles to the text, making it look just like the final printed version. When I then ran my home-built export macro, the styles were identified, the control codes were added, the special characters used in Sweden (Å, Ä and Ö) were converted to the Mac equivalent (as they differed between DOS/Windows and Mac) and finally the file was uploaded to a network share where it could be access from QuarkXpress.
When the editor-in-chief saw this, and how much faster and easier it was, he requested that everyone started using Word and my template.
In 1994 I started learning web development using HTML, and in early 1995 I had built the first version of a website/homepage for Computer Sweden. I modified the Word macro to also generate HTML, upload it to the web server and modify the homepage to include a link to the new document, all in one click. This system was also used at some computer shows, where the journalists used a laptop fitted with a mobile phone to use as a modem to write and upload articles from the show floor.
Lotus Notes and Domino
In late 1995 or early 1996 I started looking at Lotus Notes development, first mainly assisting a friend with HTML coding when it came to creating websites using Domino, but quickly I started looking at the actual development. One summer I built a Domino-based archive of articles published by Computer Sweden, as well as an importer to read and parse all the old text files stored on a server. This was a bit of a challenge, as they were in several different formats, with or without control codes, etc.
In the summer of 1996 I met my future wife while on a trip to the US. She moved to Sweden and in 1997 we got married. Shortly after we got married she decided that she wanted to move back to the US. I talked to the HR department, and they gave me the name of a IT manager at IDG in Boston who was looking for a Lotus Notes developer. I met with him at COMDEX in Las Vegas in late November 1997, and was offered the job. In January 1998 I was going to start working in Boston.
So I came home and told my boss that I got the job. I had kept them informed of my plans all along, so they already had a plan. I was to stop writing articles at once and focus on building an editorial system to be used by the publication. I had 3 weeks to do this before taking off for Christmas and spending my last week packing up my apartment. The system was delivered on time, and as of 2010, 12 years later, it is still in use, practically unchanged. It was developed using Notes 4.6, and is now running in Notes 8.5. A testament to the backwards compatibility of Lotus Notes.
In this article, my former co-worker Joel Åsblom is testing a pre-release of Windows 7. Among his tests is to run Lotus Notes 8, and you can see the the editorial system visible to the left. Even the colors are unchanged, but it would be easy to modernize the interface some. However, it had all the functionality the writers and editors needed, and it survived several attempts to replace it with commercial CMS products, from what I have been told over the years.
From Journalist to Developer
In January 1998 I moved to Boston to work as a full time Lotus Notes developer at IDG International Publishing Services, mainly working with IDG News Service. One of the applications I worked on was a Domino-based editorial system used by journalists in the news bureaus around the world. They wrote their articles, which were then replicated to the editors in Boston. The articles were then posted to another database, accessible to IDG subsidiaries and licensees around the world using the Notes client as well as web browsers. Images were also attached to the articles, and I developed a new storage system for them. I also developed a number of other applications, and maintained existing applications. I improved the graphics workflow in the News Service as well, by developing image optimization routines.
During my time in Boston, my son Erik was born. After a while, my wife wanted to move to Texas, where she was from and most of her family lived. So I started looking at the job market in the Dallas/Ft Worth area.
Moving to Texas
In April 2002 I was offered a job in Texas, working as a Lotus Notes developer for an insurance company (or actually a Managing General Agent or MGA). I am now a Senior Lotus Notes Developer with the company, mainly developing and maintaining the applications but also aiding the CIO and Operations Manager with any information they need, like server maintenance/configuration and other specialized knowledge about the Notes/Domino platform.
The main application I have been working on is a Notes/Domino based claim system to handle the full claims processing workflow, from receiving losses online or over the phone to assignment, payments and closing. The system interfaces with several applications written in Visual FoxPro, where among other things the policy data is stored. This is done using COM.
Today I mainly work with Bootstrap and jQuery, and in August 2015 I did a presentation at the MWLUG conference in Atlanta on how to connect a modern website to a Domino based database using jQuery, Ajax and JSON.
This website is actually built using Bootstrap and a Domino database to store the content.