This blog will contain musings about AI, Software Engineering, plus assorted Science and Technology stuff.
To introduce myself as an author, here is a timeline of my encounters with the above mentioned stuff.
This year, I learned how to develop black&white photos is a darkroom. Unfortunately, my adventure with photography did no last long because in a couple of years there was a Marshal Law in Poland and photographic film became unavailable (the commies were afraid that someone would take photos of them shooting at demonstrations).
When I was 15, I got unrestricted access to my dad’s garage and his tools (my dad was abroad at that time). I built a go-kart that had a 125cc motorcycle engine. I learned to do electric welding by trial and error. Unfortunately, I have no photos of the go-kart.
This year brings my first hands-on encounter with a computer – it was a Sinclair ZX Spectrum. My high school got one as a gift from some foundation and, my mom being a teacher, I was able to bring it home for a few weekends. I remember that around that time some Polish radio stations would broadcast computer programs – you could record them on a tape and load into a computer. ZX Spectrum and Commodore 64 were the most popular then.
1985 – 1987
I studied Mechanical Engineering at Politechnika Wroclawska in Legnica. I wanted to get a Masters degree specializing in something related to cars, combustion engines, etc. I did not get as far as choosing specialization, because I left Poland in summer 1987.
The studies at Politechnika Wroclawska were tough. Mechanical engineering is very difficult and time consuming if you do not have computers to run CAD or other software. All the drawings, and all the calculations had to be done by hand. I would spend whole Saturdays, every week, to some computations, e.g. designing a bridge structure (down to the choice of specific steel profiles and the length of welds). The most difficult course was in Strength of Materials. Our lecturer was an idiot, but unfortunately (for us students) he was member of Communist Party and was on good terms with our Dean (who was also in the Party) so we could not submit anywhere any complaint about that guy. The last exam before the summer was from Strength of Materials. Everyone failed except for me – I got a D.
Computer labs we “strange”. For the lab that we had in Legnica we had 2 or 3 Sinclair ZX Spectrum computers available for about 20 students – we learned Basic. The lab in Wroclaw was more “fun”. We used teletype type terminals on a Polish mainframe Odra to write Fortran programs (other groups used CRT terminals on a Russian built mainframe RIAD). We were lucky, because in year 1984-1985, the group before us used punch cards.
I arrived in Holland in Summer 1987. A friend of a friend of mine had an IBM XT with Hercules Graphic card. I learned how to use WordStar wordprocessor.
These two years, rather then learning about technology, I spent learning about bananas, oranges, flowers and other agricultural stuff in Israel. For about 12 months, out of my 22 month stay there, I was waiting to get a student visa to go to study in Holland (the windmills there are faster than their bureaucracy). Originally, I was planning to study Mechanical Engineering, but eventually I decided to study Computer Science.
During that time I read a lot of Byte magazine. The image above shows the last issue that I bought in Israel, just before coming back to Holland.
I spent 4 months learning Dutch. After that, waiting till start of a school year in September, I had a lot of free time to play with a computer (XT Turbo with 8MHz CPU). I programmed in GW Basic, Fortran, and in Modula-2.
First two years at TU Delft were full of basic computer science and math courses. My first year there was also first year that programming was taught using Modula-2 and not Pascal. Modula-2 was the first affordable object-oriented programming language.
A lab that was a lot of fun was assembly programming on a PDP-11 simulator. Another Interesting lab was Digital Circuits where one got to design and build various LED-flashing gizmos (the Knight Rider bar was among them 🙂 ) — I think the most complicated circuit that we go to build from basic NANDs was an adder circuit.
In my spare time I learned C programming using Quick C. I also stepped up from GW Basic to Quick Basic. A friend of mine bought a 1400 (or was it 2400?) baud modem and I was able to “surf” Bulletin Boards (you had to dial a specific phone number for each BBS – it was no yet Internet).
After two years I chose specialization (major) in Technical Informatics with selection of courses in AI, Computer Graphics and Visualization, CAD/CAM, Real-Time Programing, (Adaptive) Process Control, Fuzzy Logic (the two at the faculty of Electrotechniek), and course in Fourier and Laplace transforms (at the faculty of Physics). I hoped to take some courses in Robotics too, but I could not resolve scheduling conflicts so I had to give up on that.
Of all the labs, the one which was most fun was in Process Control, in particular when we got to control a large scale model of a gantry crane. I implemented an inverse model controller for it. It was fun to see the crane respond correctly on the very first try.
In one of the labs, I think it was in User Interface Design, we got to use the NeXT computer. It was considered pretty cool then.
Around that time was my first contact with Internet. We started downloading software from anonymous FTP. You had to know which IP addresses (no DNS was setup) led to useful FTP sites, as there was no way to do a search.
Around 1993 I started subscribing to c’t magazine ( I kept subscription till end of 2001). In that time it was absolutely the best computer magazine.
At the end of 1993, I got myself a Vobis Laptop with 386SX 25MHz processor. It was pretty mediocre, e.g. it had a 16-gray-shades LCD, but it was all I could afford then. It had Windows 3.1 and 2MB of memory.
This was a year when I worked on my M.Sc. thesis. I had to develop software that would allow you to run simulations of various neural controllers, and then use it to study a special type of inverse ANN controller. I called the software NeuroControl Workbench. I developed it in Borland C++ under MS-DOS. The GUI was character based and used TurboVision.
DOS programming was pain because of the 640KB memory limit. My program needed more than that, so I had to use overlays in expanded memory. Even using this, I had problem with the limitations imposed by the large memory model on the data segment. Large model allowed for multiple code segments but just one data segment. I could not switch to huge memory model because TurboVision did not support it. As result I had to externalize all strings, which was quite tedious.
While working on NCWB, I wasted about two weeks tracking a weird bug. Eventually I found a solution on Internet. I think I found it using Mosaic, but I could have also been using a Gopher. On Borland site, I do not remember if it was a web site or just ftp, I found some patches that fixed a bug in the allocation of object arrays. I remember using Internet also to find new drivers for MediaVision sound card (for my brother’s computer).
Around that time my brother bought an IBM PS1000 desktop PC. That PC had a rare CPU, a 486DLC Blue Lightning – it was basically a glorified 386 with a clock multiplier. It was originally running at 2x25MHz, but I changed the multiplier to 3x25Hz and it ran at that speed without any problems. A year later, I soldered in some wires in place of missing jumpers that controlled the clock frequency and ran it at 2x33MHz which gave better results on some benchmarks. A disadvantage of this CPU, compared to Intel’s 486DX, was that the FPU was external and was just 387DX. I bought a IIT XC87DLC coprocessor for it. This CPU had an extra instruction that could do a multiplication of a 4×4 matrix by a 1×4 vector – this is a common operation in 3-D graphics.