Roads that change us

           “Je ne comprendre pas,” he said plaintively. “I don't understand.” Does
    n't she have a look? Or do I not understand Russian?
           “No, that's right, Charles,” said Yurkovsky. “She
    certainly has a look .” Just different, understand? When she's on the ceiling,
    she's like a ceiling. When on the sofa - like a sofa ...
           - And when on Gregoire, she is like Gregoire, - said Mollar
    . - You are all kidding.
                                 A. and B. Strugatsky " The Way to Amalthea "
     
     
    I started my programming career at the age of ten. Perhaps earlier, I don’t remember exactly. I only remember how I “helped” my father program the ancient Sparks, on a piece of paper calculating the addresses of conditional and unconditional transitions in machine code and enthusiastically driving brass rings into textolite tablets. Each ring carried information for exactly one bit.

    Then, at once, eight-bit computers appeared. All the magazines that I enthusiastically read, at that time, from Radio to the UT application “For Skillful Hands” (possibly, with the exception of “Young Naturalist”) printed more and more personal computer circuits! Unfortunately, I always handled a soldering iron much worse than my father. My hands were not at all skilled.

    There were no problems with the details; the desk drawers were clogged with them. Once, when I just hinted about what I want to make an oscilloscope, as a course project for the Criminal Procedure Code, my father silently went into the pantry and brought out a cathode ray tube from there. I still don’t understand where he got it from and why he needed it for himself. The fact is that with all this home abundance, radio components were a terrible shortage (like much at that time). Sometimes, at night, I had to make sorties to a radio dump known to the whole city in order to unearth (literally) something interesting.

    In general, I did not assemble my computer. Of course, this does not mean that I did not have access to computers! My friend (by the way, unlike me, he stamped Spectrum and AON on the Z80like pies) was chic, at that time, Vector 06C (C - meant color!), and I myself, on weekends and honestly, were given the legendary BC- piece! Moreover, along with the monitor. I poured all this burden on my hump through the whole area (yes, the times were not calm), and by Monday I returned it back.


    I started with Basic and Focal . However, contrary to Dijkstra’s famous statement, I don’t think that it really ruined me. Perhaps because, in front of them, all the same, were the machine codes of Sparks? I do not know. I read Wirth and Lipsky and translated the algorithms into BASIC. On BASIC of those years, it was terribly difficult to express recursion (mainly because instead of local function arguments I had to use global arrays for myself), but I achieved this.

    When (on that same Vector) I wrote on BASIC my version of the “ Hilbert curve ”, my friend did not believe that this would work. According to him, there were much more entries into the subprograms than exits! Of course, he was wrong. It's not about quantity. Eight queensmade me worry already. The vector did not show any signs of life for too long! However, after a couple of minutes he gave out the first position. Subsequently, it often struck me. That awful and absolutely incomprehensible (incomprehensible to me!) Code that I wrote, contrary to all expectations, always worked exactly as I planned (well, maybe, after a couple of corrections of the dumbest typos).

    We tortured that Vector for a long time. When the games were bored, they wrote in BASIC (the view of the tesseract from the inside probably changed my worldview forever). Or they tried to sort out Fort (yes, he was there too!). Once, we even “broke it”. We simply could not pass by the possibility of setting the base of the number system to zero! On the “supplements” to the cassettes there were sometimes amazing things. It was then that I first saw "Chinese Chess"! Of course, the rules had to be calculated “by touch”, since all the explanations for the game were also in Chinese.

    My games with computers did not affect the choice of a future profession. I was going to become a chemist! Everything changed after a significant trip to Moscow, during which, my parents succumbed to my persuasion and acquired the MK-61, binder of the old numbers of "Quantum" and the puzzle "Crystal". Perhaps this was my most productive trip to Moscow! On the first day, having made all these acquisitions, I locked myself in an apartment with relatives, with my treasures. I no longer reacted to external stimuli.


    I got my own personal computer! With all its YSGOGs , the quirks of a 160-step cycle, and “machine” codes. I tried to make the most of all the possibilities. Reducing the program by one byte led me to ecstasy. PMK has changed everything. It became the reason why I applied to the Aviation Institute (for the 4th faculty), and not to the chemical faculty of Kazan State University, as I was going to. PMK and the fact that I went to KAI out of competition and without entrance exams (I was a medalist, yes).

    KAI met me with the 8000th Pascal and the IVth Fortran . We were also taught Lisp and Prolog. And a lot of different mathematics! However, probably not enough (I still don't know what a tensor is). The entire second floor of the seventh house was occupied by the Exhibition Center. One car! EC-1046 (full-fledged IBM 370 ). And she was at my full disposal! Mine and two dozen people who worked simultaneously in the " Virtual Machine System ". PDP-11 (from the third floor) I remember much worse.

    At KAI, I got in touch with a “bad company” and quickly became a thunderstorm in a data center. Unlike administrators, we enjoyed reading the system documentation (in Russian!) And with equal pleasure applied the acquired knowledge in practice. I was able to do amazing things. Created private disk partitions, changed virtual machine passwords and wrote channel programs for pseudographic animation on an alphanumeric display.

    Just a couple of commands from the console, I could remove my virtual machine from the lists of monitor-controlled virtual machines (machine time continued to be allocated to it). After that, I became completely invulnerable. Such a virtual machine could not even be seen, not to stop! In addition, I could hide files with my art, and hide so that they could not be restored without knowing the name. Of course, the administrators suspected something. After some of our pranks, we had to overload the real car, and this did not please them! Sometimes they tried to catch us, but somehow lazily and not at all inventive. I have never been caught.

    Security tools for CBM, by today's standards, may seem ridiculous. Passwords were encrypted with a double-byte xor, and system privileges were set with a bitmask. Yes, this mask was in real, not virtual memory, but two (out of eight, as far as I remember) privileges provided access to it (in various ways). And both of them were provided to all users of the "default" CC! It was a fun time.

    Then, the first IBM PC clones appeared in the city. XT -shki, followed by ATwith 286th processors were in our department. By the 3rd year, I was already noticed by teachers and involved in their individual work activities. I wrote software on Turbo Pascal and 2nd FoxBase for Compressor Plant. So began my professional career.

    Work "at the department" brought very little money. Its main advantage was that after working in this way for about six months, I “became familiar” and more interesting offers became available to me. One of the teachers of the computer department (I myself was from the department of Applied Mathematics) had my own company and I was offered to work on it.

    The company produced and then sold a variety of things. Mostly security oriented. Video eyes, intercoms, code locks with IR cards (since the intercom cameras worked partly in the IR range, they had a funny incident at one of the exhibitions) and so on. Among other things, there were several "crypto devices" connected to the computer's ISA bus. They offered me a presentation on one of such devices as an introductory task. I did it in one night at the pulpit. Since I was not familiar with PowerPoint in those days, I had to use the same (already Borland) Pascal. In graphic mode and with EGA- video effects. Of course, I got a job.



    It was a time when I became closely acquainted with Borland C ++ and x86 assembler. Subsequently, I was very lucky, because our entire team was taken under its wing by the National Bank of the Republican Center for Information Technologies. An HP-UX server and the 6th Oracle were added to the set of my toys (though, then it was not possible to work with it). Since I was fascinated by Turbo Vision , the first thing I did was to develop a similar library for curses . However, no. Indeed, the first thing I wrote was this:

    int main(int argc,char ** argv) {
       for (;!fork(););
       return 0;
    }
    

    By that time, a diploma arrived. At the university (now university!) I almost did not show up, breaking through my individual schedule through a scientific teacher. Asymmetric cryptography, transporters and robust methods in statistics. RSA and Diffie-Helman - that's all that was left in my memory (and even that didn’t come in handy).

    The end of the university and my subsequent departure to the army were marked by scandal. The RCI did not want to let me go and, especially for me, introduced a position (breaking it through the leadership of the Central Bank), which provided for armor from the army (I successfully flew past graduate school, due to my inborn disorder). Unfortunately, I learned about the reservation already at the moment when I was conducting separate negotiations with the military registration and enlistment office, so that I would not be expelled from Kazan (the profession of a programmer has its advantages). The leadership of the National Bank promised that I will not work in banks anymore. So far, the way it is.

    After serving a year, I returned to another country. It was a terrible time. Fortunately, one of my fellow students worked as the head of the ACS department at the Children's Republican Clinical Hospital. He sheltered me. The salary was not good news, but the work was not very dusty. We wrote software on FoxPro (FoxBase knowledge came in handy) for the needs of the hospital. I have honed my FoxPro technique to perfection! For example, I learned to open an unlimited number of modal windows, in spite of the stupid restrictions on the number of simultaneously executed reads (what was that call called?).

    Another hit for me was the widespread accession of Windows. I wrote a lot in C ++ and assembler, including resident programs and drivers, but I did it under MS DOSin real mode! I did not know how to approach protected mode and Windows. Once, I complained about this fact to my acquaintance (one of the same “bad company”) and heard from him a wonderful answer: “What's the matter? Just take Delphi and write! ” So I did.

    Work in one of the state. organizations allowed me to master Delphi and, most importantly, Oracle. The seventh version, then 8.0 and the divine 8.1.7. I still think this is the best Oracle has done. What can I say, it included the implementation of the database server in the form of an NLM module for Novell Netware ! Having mastered Oracle, Delphi and its BDE (to connect one with the other), I was ready to go to the "free bread".

    A suitable offer was not long in coming. The first cable television company was about to appear in the city! Thanks to the new CEO (I’ll get along without the names again), it was “on the ointment”. What was missing was a little - a billing system. They asked me if I could write a billing and I honestly answered “Yes”, because I had no idea what it was. I wrote a cable television billing (and have been using it for a long time). We went to connect the first subscriber (in the next house) in winter, “on a sled”.

    At this job, there were a lot of different things. Support for Internet billing (this time branded, not self-written), the introduction of payment cards, a voice notification system, digital television ... There wasn’t the main thing, work as a “court programmer” (in my eyes) could not be compared with the place of a seedy junior in a company focused on software development. They again promised me that I could not return (this time, to the TAIF units), but they did not keep their promises. I returned to TVT later, part-time, before the very acquisition of her MTS.

    At a new job, I was met by Delphi (where without it), C ++ (this time, under Windows) and of course Oracle. To begin with, our team (me and another former TBT employee) was engaged in the development of a RADIUS server. Then there was Netflow, SNMP and a small (but very proud and specialized) InMemory database. All this was even introduced (somewhere in the Czech Republic). I was a fan of Richter and Alexandrescu and wrote different Compile Time horrors like this .


    Then (another life, another project) was .Net and XSLT for a system of mass and fully automatic generation of various payments in the formats Word, Excel and PDF. This time, I was already a team leader. In the next project, I had to program tsisk using JavaScript, but that was no longer important. In my group, there were about 10 people from three cities, and 90% of the time was spent on organizational work.

    After this one-year nightmare, I again returned to independent development, finding my niche in the company (for some reason, no one except me agreed to deal with PBXs ). Having mastered Perl in between, I write mainly in Java. The frontend is written on it using GWT. Slowly mastering Postgres. I’m learning JavaScript “for the soul”, for one of my little pet-projects . Recently I received an offer to try my hand at Golang , but so far I refuse. Probably, the point is lack of motivation.

    We are what we write. Today it is Java and JavaScript. I try to make maximum use of their capabilities, but I am not going to dwell on them. I don’t know what I’ll write on tomorrow. I am (almost) 45 years old and open to everything new.

    Also popular now: