Excel-revolution at Steel Factory in 1989
Updated: Sep 26, 2022
I got my first paid job as software developer at age of 16 in the summer of 1989. This was at the time in history when Personal Computers were appearing on desks of managers at offices and factories, challenging and slowly chipping away the status-quo of mainframes and mini-computers of the era. That provided unlikely niche for some self-taught computer-geeks like me to participate in wild development of real factory production-systems in a way that would be difficult to envision today.
The history of the Billnäs Steel Spring factory in Finland's South-West coastal area goes back all the way to 1641 when Carl Billsten built the first iron factory close to the rapids of river Mustio. The industrial companies that continued the tradition of these initial factories had lots of ups and downs during the centuries that followed, eventually diversifying to various steel products. Steel leaf-spring production was started in Billnäs in 1920s and Billnäs springs become known for their high quality and used in railway cars and trucks by customers like Volvo, Scania, Man and Finnish VR-Railways. During the years the spring-factory changed owner many times in various industrial re-arrangements and its name changed from Billnäs to Fiskars in 1959, to Ovako in 1979, to Ovako Steel in 1986, to Imatra Steel in 1990 and to Styria in 2003.
I got connected to the Ovako Steel factory thanks to Ensio "Enska" Virtanen who was in 1989 working as student counselor at Karjaa Comprehensive School. The Finnish comprehensive school curriculum includes a period of work-training where the students need to find a company that is willing to employ them for a nominal salary for two weeks. Usually such jobs are simple and don't require special skills. But Enska been building extensive set of connections to the local companies and he had keen eye for special skills of his students like my Commodore 64 programming hobby . So when my time for finding work-training come in spring 1989, he was able to "sell" me as a "bit smarter" computer-geek and grandson of industrialist Perh Sommar to Matti Toivonen, the production-planning manager at the Ovako factory.
Pushing Lotus Symphony to the limit
The two-week training at the factory did not yet include any proper programming: the tasks that Matti gave me were mostly involving spreadsheet processing and development with Lotus Symphony spreadsheet (very similar to the more famous Lotus 1-2-3) running on MS DOS. The two-week training went well enough for Ovako and Matti to offer me contract for two-month summer-work in the summer of 1989. I was quite happy of this opportunity - better than the job of picking strawberries that I had been considering if I don't find anything more suitable.
Lotus Symphony continued to be the main tool during the summer months. But this time the tasks become more advanced: writing Lotus macro-programs for more complex spreadsheet applications. While I do like programming in principle, the Lotus Symphony macro-programming capabilities were by far the most limited I have ever encountered - even more restricted than the simple Commodore 64 BASIC -features that I was most familiar with.
The Lotus macros were mainly meant for repeating a fixed static sequence of key-presses that would enter data to the spreadsheet cells or execute menu commands. The key-presses would be stored in a spreadsheet document column and when executed could open and work on another documents. For example, some macro-program sheet cell A25 could have "/WCCS23" which would perform menu-command Worksheet-Config-Column-Set-23 which would set the current column width to 23 characters. (For a taste of how those macros look like, see this website for small examples)
Such keystroke-playback-system can hardly be called a programming language. It has no statements for structure, no statements for loops, no variables, no dynamic behavior. With static sequence of operations, it seems impossible tool for any general processing. But in the absence of better alternatives at that point I discovered a super hacky way to make the system Turing-complete: write code that writes code at runtime. For example the macro cell A24 would contain expression that concatenates string "/WCCS" with the (dynamic) value of some "variable" cell (say F3) and then place the result to cell A25. If the cell F3 contained, say, number 17, when the constructed command string generated to A25 would be "/WCCS17" and then when execution would next proceed to A25 that would be executed to set current column width to 17.
Needless to say, such "dynamic" macro-program is even much less readable (and extremely bug-prone) compared to the already horrific static mess. But I got some spreadsheet automation applications working in this way during the summer and Matti and his colleagues were were able to save some time with the resulting automation in the factory production-planning office. And having started my professional careet with such nightmarishly challenging programming environment, any subsequent improvements since then have felt very delightful 😉
Raising the bar: The ODETTE EDI-project
Towards the end of the summer a plan for a more ambitious project started to take place. This was related to the process of main customers like Volvo and Scania placing orders for springs. In 1989 this order-process still involved customers weekly printing order-listings from their own production-planning systems and sending them to Ovako by mail. These documents contained tens of pages of tables enumerating the order-counts of different spring-products for several weeks to the future. These were then entered (manually, by typing keyboard) to the Ovako factory mini-computer system and formed basis for the scheduling of various production activities like running factory machines, warehouse-operations and ordering of raw-materials.
To replace the use of paper with Electronic Data Interchange (EDI) in this and related processes, several automotive industry members had been creating industry-standards group ODETTE (Organization for Data Exchange by Tele Transmission in Europe) in 1984. In the summer of 1989 the standard for first critically needed electronic document was ready: DELINS-message that customers could use to descibe their orders for various products to various future dates. Furthermore, Ovako main customers Volvo and Scania had been implementing support for this message to their systems and ready to send them to Ovako. Ovako production-planners were also eager to get rid of the mountains of paper-printouts accumulating on their desks every week.
Before summer 1989 was over, a plan had been formulated: I would develop a software-system for (1) reading, processing and merging ODETTE order-messages from X.25 network by Ovako customers into a central Excel order database, (2) export relevant order-data to the factorys mini-computer system for further production-planing tasks, (3) for each shipment of products generate related ODETTE-messages and (4) generate and print standard shipping labels with barcodes for shipment-boxes. More detailed specifications would be provided by Matti Toivonen and Kaj Bredenberg from Ovako IT-department. The project would be started still during my summer-work period and when my school-year started I would continue programming in evenings and weekends. I was paid 50 Finnish Marks per hour (about 20 €/h in today's money adjusted for inflation). I would work mostly from home (Ovako would provide a computer for me), occasionally visiting the office to deliver and test new versions of the application.
MS Excel 2.0 to the rescue
It was clear that this far more ambitious project required more advanced tools than the limited Symphony macros. And that gap was filled with the very first version of Microsoft Excel on the Windows-platform.
While Microsoft made the original Excel 1.0 already in 1985, that version was only for the Apple Macintosh computer. The first version for their own Windows-platform was launched in 1987 and had version-number 2.0. In the fall of 1989 this miracle-software landed at my hands at Ovako and oh-boy what an improvement it was over the Lotus Symphony! It is not wonder that Excel eventually won the spreadsheet wars and the word "Excel" even become synonymous with "spreadsheet".
But in summer of 1989 Excel was still a rare beast and struggling to gain foothold over the established Lotus products. But, making things worse for Microsoft, Windows was also not yet very widely used in its 2.1 incarnation whereas everyone had MS-DOS (with Lotus run on), so the requirement of having Windows in order to use Excel seemed pretty limiting. Microsoft solved this chicken-and-egg problem in a way that sounds quite crazy today: Excel 2.0 come with mini-version of Windows built-in. So, on my Ovako-laptop I could just write "excel" at the DOS-prompt and that would launch Windows and Excel 2.0 on top of that! And although Excel was already very feature-rich in its initial version, it was not bloated in terms of resources: with my 12 MHz 286 PC with 1 MB RAM the total launching of Windows + Excel from MS-DOS prompt took only 8 seconds! With my current PC having 16 000 times more memory and 2 000 times faster processor and 500 times faster hard-drive, the startup-time of this combo is still much slower.
The best thing in Excel over Lotus spreadsheets was vastly more powerful macro-language. While this was not yet the Visual Basic for Applications (which come many years later in Excel 5.0), it was something that actually resembled a real programming-language with variables and structures and programming-oriented statements and functions. These XLM-macros become the cornerstone of the Ovako spring-factory ODETTE-system I developed.
Since this was time before online documentation and tutorials, I had to read the actual paper-manual of Excel to get familiar with the macro-language syntax and functions. After that the project progressed well and I felt I was able to find suitable Excel macro-features for the project features without resorting to significant hacks.
Productivity with the new tools turned out to be good. Matti Toivonen recalled in 2022: "We were surprised that during a single weekend you implemented first working version of the software." Kaj Bredenberg recalled: "At the time we in Ovako IT had estimated that it would take a month at minimum for you to learn Excel for doing significant develoment. We were most surprised that you had essentially completed the application in two weeks."
The system was started to be used for real factory order processing and production planning quite soon in autumn 1989, replacing paper-based orders from Volvo and Scania. The role of the ODETTE Excel-macro in the order processing and production-planning is shown in the diagram that Kai Bredenber had produced (text in Finnish, translated below the diagram):
The diagram shows features of the system:
ODETTE product-order messages (DELINS) being transmitted from customers (Scania and Volvo) to Ovako Billnäs factory via the X.25 network
ODETTE-messages received by 3rd party Odex-software
The ODETTE Excel-macro (yellow box) reading and processing the received order-messages
The Excel-macro produced summary report-tables showing the combined orders from customers by product week (rows) and product type (columns). Another report calculated deltas (differences) of newly received order-message to previous one. Both reports were used by the factory production-planning personnel for adjusting internal production plans and orders for raw-materials.
The Excel-macro also produced export-files for the factorys IBM Mini-computer system running TERTTU-software which was used for later steps in the production planning.
At times the processing power of the 286 PC:s of the time were bit stretched: a typical customer order-message contained 10 000 order-lines and after importing to Excel these had to be sorted before merging to the main order-sheet. Such sorting-task sounds trivial by today's standards, but on those PC:s it could take over a minute. While the processors themselves were slow, the main reason for slowness was that the data would not fit at one time to the 1 MB main memory - or what was free from the memory for spreadsheet data after loading of Windows and Excel - requiring Excel to swap parts of the dataset to disk and back during sorting.
Feature addition continued after the initial implemementation and in addition to Excel I adopted some other tools to the system, like a faster pre-processor for the ODETTE-messages with QuickBasic.
I have no records on how many hours I worked for the project in the end, but after the initial summer work in 1989 I continued to be employed by the company part-time all the way to summer 1990 and then again full-time until autumn 1990 when I left to study to the Atlantic College high-school in Wales. Perhaps 10 hours per week is realistic estimate, making the total hours somewhere around 500 from the part-time period and 300 more from the summer 1990.
During my high-school studies at Atlantic College is was nearly impossible for me to work on the project part-time. The study- and activity-schedule at this boarding-school quite tight. Moreover, this was before the internet, so communicating between Wales and Finland was restricted to slow paper mail (with disks) and prohibitively expensive long-distance phone-calls. We had few attempts to sending some data with disks but it was too clumsy to be really usable.
In my 1991 summer holiday from Atlantic College, I continued worked for the Ovako ODETTE-project. Main main new feature add was support for AVIEXP-messages from Ovako to the customers notifying them of dispatching their ordered products for delivery. This was accompanied by creation of printed shipment-labels that were attached to the delibery pallets. I created these sticker-labels with JetForm-software from data exported from the Excel order-sheets.
Summer 1991 was the last time I worked for Ovako: In summer 1992 I was travelling around the world and then in fall 1992 started in Helsinki University my studies of chemistry, physics, mathematics and computer science.
Kaj Bredenberg started his own company in 1993 and continued to work on various Ovako Steel IT-projects, including ODETTE, as an external consultant. He did contact me once more in 1994 when I was living in Helsinki and asked if I would be interested in continuing ODETTE-processing based consulting / programming work in his company - there would be apparently many possible client companies that could utilize our skills. I declined, noting that I was fully occupied by my studies and work as a chemistry research assistant. At that time, I was still determined to pursue academic career in natural sciences and considered programming a side-track in my career. Perhaps I would have answered differently if I would have known that later in 2000 I would nevertheless leave the academic world for a career in software development.
The fading of the Mini-computer era
It is worth noting that that while the ODETTE Excel-system produced files to be imported to the factorys main minicomputer-system, my tasks ever involved any software development on that system. It was a traditional "closed" system based on a IBM-minicomputer from 1970's running in a separate room and controlled with black-green terminals. It ran customized warehouse inventory and production planning software "TERTTU" developed earlier in a waterfall-process by Finnish Tietotehdas-corporation (predecessor Tieto Oy, then Tietoevry Oyj). It produced long reports in form of printed lists. None of the reports were obtainable in real-time: All the report requests done by Matti during a day were processed and printed during night - a large contrast to the more agile PC-based tools that we eventually developed. Getting new changes of fixes done to the TERTTU-software was both slow and expensive compared to the agile PC-based development.
The minicomputer running TERTTU-software was towards the end of my time at Ovako replaced by IBM AS/400 minicomputer running the OS/400 operating system (AS/400 was launched by IBM August 1988). The ODETTE Excel-macros were subsequently adapted to export the order-data to the AS/400 production planning application. The AS/400 system was somewhat more open than the preceding TERTTU-system: in addition to importing data, it was possible to make queries to its database from other computers. This allowed later even more ways to implement functionality with small, cheap and agile PC-programs outside of the main system, further chipping away from the role of the mini-computer environment.
Factory dies - Software lives
Since my departure, the Billnäs steel-spring factory continued its operation, changing occasionally ownership and name. Until the last owner, Frauenthal Group, decided to close the factory in 2006, just three years after acquiring it from previous owner Wärtsilä in 2003 and renaming it "Styria Springs". At that time the factory was employing about 100 people and annual sales were about 17 million euros. The factory would probably still have been competitive on the market on its own, but Frauenthal was purchasing several steel-spring makers and then proceeding to eliminate their self-created "over-capacity", ending the century of production of high-quality steel-springs at Billnäs.
Matti Toivonen worked at the factory as the production manager all the way to the end and Kai Bredenberg also continued to be involved with various IT-projects including further developments to the ODETTE Excel-macros.
More remarkably, the life of the Excel ODETTE-system continued even after the end of the Billnäs factory. Kaj Bredenberg had already bought the rights to the software from Ovako for his own consultant company. The application turned out to be general enough to be sold and customised by him to several other companies in the automotive industry. Last customer moved away from the Excel-macro-based ODETTE-processing software as late as 2016, giving it an unexpected 27-year lifespan in the industry.
Epilogue: The Old Gang together again
After the initial publication of this blog post I was able to get into contact through Facebook with Kaj Bredenberg, the Ovako IT-colleague from our 1989 ODETTE-project. To my delight, Kaj had also been throughout these years staying in contact with the Ovako production manager Matti Toivonen and knew his current whereabouts. So we were able to arrange a nice long lunch-meeting sharing our memories about the Ovako spring-factory and our ODETTE-project.
Matti and Kaj were in their 40's in 1989 when I was 16, so they were now already pensioners - though Kaj as an entrepeneur had not completely let go of occasional customer cases. They were both able to remember many details about the project that I had forgotten - details which I have now been able to incorporate to the text above. Kaj was even able to dig out from his old backups a version of the Excel ODETTE-macro from 1995 - still very close to my original version - that I can now inspect again. Three minds with hazy old memories can nicely combine into a more clear story - and writing about these memories can serve as a good motivation for a nice get-together that might not otherwise happen 🙂