Forty Years of Coding

Forty Years of Coding

So here we go today is my birthday. Not one of those special anniversaries, just a normal birthday, but for me it is a very special anniversary. Exactly forty years ago I bought my first computer. From the first day on I started to learn how to talk to the computer, which at that time was through BASIC commands. Nevertheless the interest for computers started a bit earlier than that, one of my classmates Roland – I am again connected with him thanks to Linkedin – brought his ZX Spectrum to school and invited me to the afternoon Computer AG at school. His older brother, who was really the computer geek, already had the flagship Commodore C-64. Couple of month later on my birthday I took all my savings and the money I got for my birthday and visited our local electronics store Berlet, which still exists today. I remember that I stood in the computer isle and had my eye on the smaller Commodore VC-20 (here in the US ViC-20). Almost like a sign from God the price was reduced by a stunning 30.- DM from the earlier price of 399.- DM, which was a lot for a teenager. The decision at that point was clear and after checking out I headed home with a brand new VC-20 plus “Datasette” which was the accompanying cassette player plus an unexpected 30.- DM still in my pocket. (Get a feel what my screen looked like : Play Vic-20 Games Online (commodoregames.net) and I also found a pdf of the manual VIC-20 User's Manual.pdf (classiccmp.org))

I immediately started to learn the BASIC commands, I remember like everyone I started with a print statement. Then I learned that a computer can actually compute so the print statements got a bit more complex. I learned about the for-loop which ended on a NEXT statement. Also I started to buy computer magazines, which still had program listings to be typed. I sat down and started typing, with little understanding what this all meant, and usually the program did not work. Please try to type one page of text of a foreign language you don’t (yet) understand and make no mistake. So going back line by line and trying to find the mistake was a whole other level of achievement. I very well remember that Data Becker had computer magazines. The other publisher for magazines was CBM revue. Once in a while I could afford to buy a computer book which was usually also from Data Becker (Data Becker - Wikipedia). So with lots of typing of other peoples BASIC code I started more and more to write my own little programs. Finally I finished my code for a simple address management software. I sent the code on above mentioned cassette tape to CBM revue and lo and behold they published it. I was on a summer vacation on the island of Borkum when the magazine arrived on the market and I could find it in the local magazine shop. Besides the glory I also earned a stunning 200.- DM giving me half of my investment back. Essentially my first journal publication as a 15 year old teenager. The success as a teenager did not stop there. Computers started to get more powerful. We were the first computer science (Informatik) class in our high-school and learned UCSD PASCAL on Apple II computers. ?Unfortunately this was just an elective class and could not be taken for the Abitur finals. I think that was one of the most useful classes I had in school. I was very much interested then in buying the Atari 520ST, nevertheless when I got serious the sales guy told me: We can extend the memory by an additional 512kB so it becomes the exact same machine as the Atari 1040ST but for less money. So the sales pitch worked and I put over 2000 DM down for an Atari 520ST with 512Kb memory extension giving me a stunning 1 Mb - an almost infinite amount of memory. The TOS already had the mouse and windows system and was pretty much close to what Apple Macintosh had to offer for a much lower price. Interestingly enough PCs were still mostly running their DOS systems and the early versions of Windows PCs really did not come close to the sleek looks and feels of the Atari ST GUI (in my opinion at least). Although I played some games I still was more interested in writing more software. I got my Borland Pascal compiler for Atari ST and continued my programming journey with Pascal. The new challenge now was to write programs for the GUI system and utilize those new features. With drop down menues and windows, I revamped my address manager for the Atari ST using Pascal and a GUI. In hintsight I should have started a company at that point - Address managers were still mostly on DOS with no Window like features – but I didn’t. I just simply was interested in learning the stuff I had no idea that one could earn money with programming. Nevertheless I started to earn some money for my Morse code trainer, which I shipped on then new 3 ? inch floppy disks for Atari ST. The marketing boost came from a small press release in the DARC ham radio journal, which led to the phenomenal sales of 22 copies at 20.- DM each leading to a stunning revenue of 440.- DM. After high school and mandatory military I was accepted at the University of Dortmund, which is now the Technische Universitaet Dortmund, to study Informatik. Nobody in the circles of my family or friends really had a clue about what Informatik or computer science really is. My grandma asked my mother to write the word ‘Informatik’ on a piece of paper so she would not forget it and at least wanted to tell neighbors what the grandchildren were doing with their lives. It seemed much easier for that generation to tell neighbors that the grandchild studies medicine I guess. Since I was on Bafoeg, the government aid grand, which depends on my parents income and is limited to 5 years, I was also under time pressure to finish my studies in the allotted time. Since I already (at least I thought) knew how to write programs, I concentrated more on computer architecture aspects, which also fit to my minor in EE. Nevertheless we still had to take a lot of theoretical, practical and architecture classes. The first semester already taught from the famous Abelson and Sussman book Structure and Interpretation of Computer Programs - Wikipedia, which made us learn Scheme a Lisp dialect and hence we certainly had to understand the lambda concept pretty well. That was an entirely new experience coming from a procedural language like Pascal. The summer practicum was in Modula-2 or Scheme, depending which group you were placed in. I got into the Modula-2 group and hence had to learn the additional Modula-2 features on top of the Pascal core I already knew from high school. Nikolaus Wirth visited the University and talked about the next programming language which was object oriented and was called Oberon. Later all coding was done nevertheless in C++. After learning Scheme in the first semester, there were no other mandatory programming classes. You pretty much had to learn the next programming languages on your own, as that was ‘only’ syntax. Most practical work from then on was oriented around C++. Also lots of math, theoretical computer science, turing machines, predicate logic, complexity theory and advanced algorithms were ingrained in our brains. On the more hardware oriented side, we had to learn things like Moore and Mealey statemachines, processor architecture, all aspects of binary logic circuits, gates etc. On the parallel computing side I was very much interested in the Transputer, which could be programmed by a language called Occam. I had high hopes for that concept but apparently the Transputer never made it big. I also was according to the examiner the second student ever who tested in computer graphics in Dortmund. We did not have a computer graphics department yet and it was taught for the first time by a visiting professor from Australia. The big new thing at that time was computational intelligence, which incorporated Fuzzy Logic, Evolutionary Algorithms and Neural Networks. Nobody really talks about fuzzy logic anymore, but things like the self-balancing Segway are typical inventions based on fuzzy logic.

Nevertheless since I was more interested in the computer architecture aspect I ended up with Professor Marwedel who was one of the main influencers of high level synthesis and compilers at least in Europe. Naturally most of his research was concentrated around his MIMOLA system and I did my Diploma thesis in his department. I think he became a bit grumpy when VHDL took over the world of hardware description languages and his MIMOLA started to die. The diploma thesis was done in about 6 months, and I was absolutely not prepared to leave the University setting. I remember that I thought of writing my first conference paper and sending it to a conference in La Jolla but I was too busy with my finals and I was then too late for the call for paper. I liked academia a lot and now had to leave and look for a job in the real world. The Berlin wall came down in 1989 just months after I started at the TU Dortmund. At the end of my studies the initial boost of the economy through the reunion was over and government funding for universities was concentrating on building up east German Universities. Higher than usual unemployment also hit computer scientists and more stayed as researchers in the Universities pursuing their doctoral studies. Hence staying with the University was as hard as finding a job in the industry. A - smarter than me - fellow student, who technically did not quit his studies but started a small computer business - at that time we build PC ourselves from parts – grew his small business to a headcount of 3. So he put together lots of PCs in his apartment, while I was marching towards finishing my degree. By the time I finished he offered me my first job installing Novell Networks, so I became number 4 in WRD Datentechnik GmbH. It was a part time job and I enjoyed it a lot. We started to build websites and had several webservers – sun stations – in his office. There were no website builders at that time, it was all done by writing html code from scratch. Since it was parttime I now had both time and money. For the first time in my life I had more than Bafoeg. Still living in my parents house life was good. I also met my beautiful wife Tina during that time. I went back to the Universities and started to look into Doctoral programs. It was not easy since mostly students just stayed and since I had officially left the University of Dortmund it was a bit harder to get back in. I visited pretty much every University with a Computer Science program in Germany. Especially those, which did research in anything what sounded like hardware/software codesign, high-level synthesis, processor design and the like. I talked with Professors in Braunschweig, Berlin, Munich, Frankfurt but also sent resumes out of the country to Italy, the UK and certainly USA. Nevertheless after about 6 months of traveling through Germany, which in itself was very interesting, I met the computer architecture professor literally in my home-town University of Hagen. He hired me on a research grant, but also told me that he is moving to Rostock in east Germany, which still felt like another country at that time, and if I wanted to come join him. So another about 6 month later I started my PhD program in Rostock with Professor Tavangarian in the Department of Technical Computer Science, which is basically teaching computer architectures. One of the instructors of that department also started teaching digital telecommunication systems, as they incorporate lots of computer architecture concepts. He used John Proakis Digital Communication “bible” for his lecture. I went back to high level synthesis and implemented a pretty much complete high level synthesis system from scratch. This included the compiler portion with my own intermediate format, lots of typical compiler optimizations, like scheduling, register allocation and the code generation itself. As already mentioned the latest and greatest was computational intelligence with evolutionary or genetic algorithms – depending which camp you are listening to –, neural networks and fuzzy logic. For optimization genetic algorithms were used, for learning and detection it was neural networks and for control systems it was fuzzy logic. This meant that I needed to use and incorporate genetic algorithms in my thesis. I used genetic algorithms pretty much for all the optimization aspects which are register allocation, scheduling, resource allocation. The optimization process of even small circuits took very long, so I let the processes run sometimes overnight. Since we were a well-funded east German university, the computers were all Sun – Sparc 10 Unix machines. I sent processes out to each machine which was available and therefore could run up to 14 machines in parallel overnight. The genetic algorithms spawned tons of solutions and tried to optimize the result. LSF allowed me to send an email to myself every time a process was finished. Usually, I started anywhere between 20 to 100 generations and processes at night and they were distributed across all computers. Yet this time I embedded couple of loops so I probably spawned about 100x100x100 such processes and accordingly got a lot of emails overnight. The IT department, which was essentially part of my department, caught the problem and canceled the processes after the email system was down for parts of the University of Rostock and I guess for some other government functions. They were not amused but also took it with a sense of humor. I had a short temporary position as researcher at the University of Hagen, which is a distant learning University, so there were little to no students on the campus. Although I was there for only 9 months, I really enjoyed being with the department of theoretical computer science. Most students there finished their computer science degree later in life and usually did it part-time. Hence I often was the youngest in the room serving as protocol writer when students came in for their oral exams. In the end I officially finalized my thesis in Hagen with Professor Tavangarian as my first advisor and Dr Damaschke as my second advisor, who was at the department of Professor Verbeek. At that time there were no such things as university rankings in Germany so it really did not matter where a degree was finalized. Since I was at the department for theoretical computer science my second advisor made it almost mandatory that I put some mathematical proof into my thesis, so I have an original NP-completeness proof in my thesis. I did the prove in Moskow in a hotel during a conference. I shared a room with Dr Boehme, who was working on his habilitation in graph theory. We defined the problem and made it a competition, who would find the NP-completeness prove first. I won. I did not publish it outside of my thesis. In my thesis I put the actual C++ code as an addendum. This boosted my thesis by about 100 pages to a commendable 260 page book. Now the real world started again, looking for a job in the industry was now much easier. The dip I experienced after my Diploma had turned around and I literally could pick and choose. I sent out 18 resumes, 17 still printed on paper in an envelope, and only one by email. I got 12 invitations to interviews and then in the end could choose between 6 offers. None of them were in the High-Level Synthesis arena. Synopsis just reduced the office size in Aachen and the ASIC designers also came to the conclusion that High Level Synthesis does not work. Well they did not know my thesis I guess. Therefore, I went to Siemens Mobile Phones Technology and Innovation in Bocholt. Since it was a nice research setting, we had pretty much a lot of freedom what we did and how we conducted our research. 3G telecommunication was just starting and Siemens proposed their TD-CDMA system. The original TD-CDMA prototypes were sitting there in Bocholt in the lab and made known to the world. The managers provided me with said Proakis book to read. Shortly after I started it became clear that the world was voting for WCDMA and hence Siemens started investing there also. We became WCDMA developers and put all the efforts into WCDMA related research. I obviously concentrated on the architectural questions, and we developed the initial pipelined RAKE receiver, which seemed to make it into actual devices eventually. When I started in Siemens someone mentioned that patents were filed there, and patent filing was encouraged. I did not really know how that whole patenting thing worked, in my mind some really important world changing inventions usually are patented. I remembered that Professor Tavangarian had a patent for associative memory structures. Nevertheless it was somewhat expected that on average each engineer in the department should file one to two patents per year. Well, I sent in my first ideas and got hooked. Three years later I was named inventor on more than 30 patents in wireless telecommunication systems. The department became the department with the most patents per person on average and I started to look around what else is there in other companies, Universities and countries. I ended up to transfer to Siemens in San Diego, which was a bit of a disaster for me. I managed a project which was quickly canceled and a group, which was also quickly resolved. Nevertheless though Siemens I also met THE Proakis. I learned about Qualcomm and their history and their relation to CDMA and that was all in front of the door. And also I realized that La Jolla is close by. So I then was demoted from Firmware Manger to Layer 1 software developer. Me being not very wise at that time I found a position as Chief Software Compiler Architect in a local company named Ellipsis Digital Systems. My first day was September 12 (yes that September 12 after that September 11). Only here I finally recognized that the UCSD in front of UCSD Pacal which we learned in high school stands for well UCSD. The company only survived the downturn for about 10 more months and closed. I was on a H1B visa without a job and with a small local network which turned out to be too small. My lengthy resume with a long list of patents and publications apparently was not good enough to survive in a tough American market. This was the first time in my life I felt really scared, angry and pretty shitty about myself and my job. I had to sell my house and move back to Germany involuntarily. Back in Germany I needed to start all over again. The economy was not good either and when I came, I only had a job as a lecturer, which was 3 hours a week teaching Object Oriented Systems. I used Java to illustrate all the object-oriented concepts which were known to me at that time. I did not feel like working for one company, so I started picking up projects. This turned out to be a very good decision. My consulting practice grew every year. I had contracts with Audi/Bang&Olufssen, Rhode & Schwarz, Infineon, Deutsche Post, Thales and Samsung but also, I was called back by a company in Santa Clara, Nulife Technologies, where I again became the Chief Software Architect. I worked remotely out of Germany for Nulife Technologies, which also had offices in Chennai. So, I traveled a lot to Chennai to work with my group. I got in contact with the University of South Wales and into another PhD program. I had so much material and experience in wireless telecommunication systems by now that I was encouraged to apply for a PhD by portfolio. This means that you send in all your patents and papers and a bunch of professors gives you a PhD for it. Cool so I thought and did just that thinking that I can put a second PhD to my name in about three to six months. Nevertheless the University came back and ‘recommended’ that I should write a real thesis, which has a better recognition. So if the professors say they ‘recommend’ something I think it means we won’t give you that other PhD you are asking for. Anyway I was sitting in my hotels due to my traveling and had nothing else to do in the evening than putting everything on paper, what I essentially already had on paper. So about 3 years into it I got my second PhD in telecommunication systems from the University of South Wales. This was another remote exercise since I did do that all from wherever I was. During that time in Germany I did more teaching and became adjunct professor for databases and artificial intelligence. This was when nobody cared about neural networks yet and the term deep learning was not invented to label neural networks. Things looked good, but after 5 years I longed to get back to San Diego. I really missed San Diego. I did not want to get back on another H1B visa, so I moved forward with applying for a greencard. The EB-1 category is the only category where no sponsor is required, but a lot of recommendations and paperwork. Proakis ended up writing me a recommendation for my greencard. Once I had it I was able to move back to San Diego. By that time Nulife had also closed doors and I was looking. Ostendo Technologies gave me the opportunity to exercise my other half of my education. I started the ASIC development there. The CEO Hussein El-Ghoroury showed me his idea on a piece of paper and asked if I can do that. I said yes. There was no ASIC department. The rest of the team was working on a curved screen monitor which incorporated some FPGA code. I was starting on their new microdisplay technology. Starting from scratch I came up with initial architectures and started to build the team, selected external partners for the backend, tools and technology node. Luckily my first hire was also pretty much my best hire ever, I think without Joseph there would not be the ASIC department in Ostendo as what it became. I asked the VP of engineering, who was working on the curved screen that time, what language we use Verilog or VHDL. He basically said after fumbling in his drawer, “well the only dongle I have is a VHDL dongle for Modelsim you can have that”. Since then Ostendo writes VHDL code and all ASIC design was done in VHDL. Of course we have good technical explanations why we used VHDL and not Verilog but this is the real story behind it. With that for about 12 years my coding was pretty much VHDL coding. Of course I did Matlab to try things out, a bit of Python here and there, and C++ but mostly I wrote VHDL during that time and for testing we introduced UVM and System Verlog not because we knew what we were doing, but because UVM and SystemVerilog became buzzwords at that time. The company had its downtimes, which was usually between rounds of funding. I went out and started my consulting business up and won some small contracts, which grew over the years. Since I wanted to learn Python I went ahead and started bidding on Python projects on guru.com. I found it very satisfying when someone paid me to learn something new. The python project evolved into a full backend of a financial calculator website, which is still up and running today. Another customer asked me to develop some sound related products. I ended up developing a full software product in Java for the famous sound healer Dr Jeffrey Tompson, who is featured also in Heal documentary. Not too shabby for a side gig. On my own time I wanted to know what it takes to put an App on the Apple Appstore. Still writing pretty ugly Objective-C I put four very rudimentary apps on the apple store. I took them down by now as I did not maintain them very well either. I am also glad that Objective-C is replace by Swift which seems to be a better language.

On the other hand I also taught couple of wireless telecommunication classes at UCSD extension, which also felt like back to my high school UCSD Pascal roots. This was fun so it also felt like a way to give back to the community. I went to two other companies after Ostendo and did also some more consulting.

Here are some conclusions I have. Over the years I pretty much heard and had it all. In the beginning nobody seemed really to have a clue what a computer scientist does, in many parts this included myself. At that point we were still considered smart. Then ‘everybody’ started to learn coding and ‘everybody’ was able to write for example C++ coding. Companies and individuals were happy to replace my services with a “I can get 2 or 3 students for that price”. Amazingly my brother who is a MD never had that argument that he could be replaced by 2 or 3 medical students. Besides that there was a phase when pretty much every interesting task or project started to get outsourced to another cheaper country. In Germany the candidate countries were close by. How often did I hear : “ Well I am not a software person but it is just coding “. Since often these were employers in some shape or form I did not usually reply with “ Well I don’t know to much about antennas, but it is just a piece of metal “ or something like that. Well everybody from children to Presidents can write code as Obama showed us with his moveForward(100); line. Then it seemed to turn around, big corporations started to pay big bucks for software folks. Investors looked for the software stack as part of what a company is offering. That only happened in more recent years, we started to get spoiled again and taken more serious. I also had my downs, where I was really questioning my capabilities as a ‘coder’. Sometimes I thought maybe I am a 10x coder but never sure on which side of the equation, 10x faster than the average coder or 10x slower. I think I know my answer by now since I met one of those former. In many cases I was wondering what hiring managers are looking for. They never really said overquified, but had excuses like “too academic”, then not enough of ‘this’ or ‘that’ although after looking ‘this’ or ‘that’ up, it came down to different vocabulary, which is also an unfortunate development. Often terminology changed whereas content stayed pretty much the same. ?

Anyway I think I need to leave it at that for now. Below is a picture of a CBM revue, unfortunately I can not find the one I published my code in. I am still enjoying writing code. Today it is more Python, C++ and Java as opposed to my early days in Basic, Pascal, Modula-2 and Scheme. Nevertheless thought-processes are similar and maybe even the same. We make similar mistakes and have a similar style. Things got easier in some ways, things we had to think about simply work now, on the other hand lots of things got more complicated, just due to the sheer amount of data, the size of libraries and features available in any modern programming language. Never stop learning became my motto, maybe more involuntarily than consciously.

With that Thank you and God’s richest blessings to those who walked alongside me for any short or longer period of time,

?Andreas Falkenberg

?May, 11,2023

Khanh Le

Entrepreneur, Chief Executive and Technologist, IEEE Life Member

1 个月

Happy birthday, Andreas and thanks for sharing your story. I also wrote some BASIC and FORTRAN codes on the Osborne 1 circa 1982-83 at Stanford to do some data handling for implantable MEMS-based pressure sensors. We implanted 4 p-type resistors to form a Wheastone bridge on a thin membrane edged anisotropically on a 1mmx1mm silicon sensor. All it took was to sense the change in resistance as the membrane flexed under pressure. Implanted sensors helped sound the alarm when the pressure by the bones on the muscle tissue of stationary quadriplegic patients became too high, potentially obstructing blood flow, killing the tissues and creating deadly infection. The alarm would tell the nursing staff to come and move the patients to reduce the pressure. A hardware person I have been since then...

  • 该图片无替代文字
回复
Roland Melzer

Technical Consultant - Software and Wireless

1 年

Hello Andreas, here is my first computer, a Digi-Comp I (https://en.wikipedia.org/wiki/Digi-Comp_I). A 3-bit programmable mechanical computer that could actually do some minimal logic. It was a gift when I was 12, had no idea what it meant at that time, but I still have it. And here is the first real "computer" i bought after college, the TI-59 (https://en.wikipedia.org/wiki/TI-59_/_TI-58). It was around $200.00 which was the max I could afford. But it had basic control structures (loop, conditionals, etc.), had about 100 memory locations, external storage on magnetic cards. I also bought the thermal printer ($100) which could also print graphs. There were 3rd party computation packs available: aeronautics, chemical engineering, hex calculator. All my professional work was in assembly language at that time so didn't yet need a high level language. And this was complemented by my "hardware bible": "Understanding Digital Electronics". Honestly this book and the TI-59 was all I needed to grasp what computers were all about. And I still have all three, those were really fun times!

  • 该图片无替代文字

要查看或添加评论,请登录

Andreas Falkenberg的更多文章

  • Forty Years of Coding

    Forty Years of Coding

    So here we go: today is my birthday. Not one of those special anniversaries, just a normal birthday, but for me it is a…

    5 条评论

社区洞察

其他会员也浏览了