31-X-1994.

Horgoš.

In upitig2.prg, "At Gemenc, since it sometimes managed to calculate different ckv, the initial call is now replaced with a new one which has only one parameter, ckv, which is a string with digits, and then it knows it need not generate anything, just needs to do a routine whose name (without the "up" prefix) is passed. Solved along the way the case when the fifth parameter was a call to a function with parameters, either with a "with" or in parentheses. Furthermore, in case it is called multiple times within a procedure, it recognizes the previously processed calls and finds its own* call. Also solved the case from the previous version (4.8) when it reported &underscore;upnnnnn=.t., that line is automatically commented out and a space is inserted so it now reads &underscore;up nnnnn=.t. as of v5.0" (so the string "upnnnnn" is not found).

Which means this was almost routine, it worked and was just spruced up. The base mechanism was already battle tested, it's now just being oiled to work smoothly. For no matter how the tools to draw forms may be up to task, it's still a touchy job to line things up and measure the widths every time something's changed, such routine jobs are better left to software, even if I had to write it myself (and yes, I remembered Todor again). The philosophy of generators, and using the computers in general, was to (as I think) let them do the 90% of the grunt work, and then dedicate the 90% of so freed time to solving the nasty 10% of the problems.

On 2nd of november a new form, logio and logkar, both for writing down who's at a session - not just the doctor, but the assistant and up to five nurses (the other one was for doctor only, I can't remember what it was for). I don't remember seeing more than two nurses in the same room, unless it was a coffee break when the traffic was low. There were some really sweet ones, this is Gemenc, but also a few nasty hags, all kinds. Upstairs there was some Ukrainian granny, who once attacked Joška and me, ranting (in russian) "I'll kill you, or better, I'll cut off that thing of yours and you won't be men anymore"... all because of some bug that surfaced that day. I saw what was happening, the fix was simple and I promised it'll all be fine tomorrow. The whole morning before that I was reading some documentation in english, talked to Joška and Vanji in serbian, hungarian with everybody else, and now russian with her... which went fine, not that it didn't. But as we were leaving, two sweet nurses from surgery almost run into us at the door, and start nattering in rapid hungarian something about... I don't remember what, perhaps that same bug. They just wouldn't stop and I had a kind of blockade. Mental. I didn't know which tongue to stick out. Took me at least ten seconds to remember that it was hungarian that I should speak now, and to plug my mouth into that.

On third I translated slovima to include codepage 852, amazingly we didn't have that yet. It seems the business at home was gaining some momentum, Avai was making first steps. I don't know when exactly we hired Brlja, but it must have been some time before the end of this year. He practically held the fort while we were in Hungary. Added a check for num lock key to setkey.prg.

On fourth, extrupu.prg, which extracts the *+ - *- delimited comments, now inserts them into genhelp.dbf, which is then used for building documentation for GenerAll. This will help later, when Avai starts hiring programmers.

One big thing got solved this week, and it wasn't a problem, but Joška solved it... The app's appearance. Under Dos all the apps look the same. You can fiddle with colors, but the letters look always the same, as defined in the video card. Except it's not so anymore, on VGA you can define your own, which then nobody does and won't fuck with it. Joška found a font editor somewhere and made something really elegant. First and foremost, the characters used to draw frames he moved so they weren't two bars one pixel off the center of the character block, he made them two pixels wide along the outer edge. And the characters he drew from scratch - removed the serifs, made them longer - a pixel narrower or a pixel taller, don't remember, but the result was impressive. Then we adjusted the color scheme a bit (most of it was done before) and our apps looked so much better than anyone else's, even on blackwhite monitors. Next year, on ifabo, many people were convinced that we ran them under a Windows, and even when we explained that it's just a wee program which sets the screen font, that runs ahead of the app, no use, they'd still think it was a Windows. The explanation contained word font, which exists only in a Windows. Szoftex sold a bunch of monitors then...

We had to adjust gen_hlp, so it would generate instructions in multiple languages, and draw the block around the headline in double width lines, which was the kind that Joška did so nicely in his new font.

In PolC the patients form became too tight, because someone stuffed** a bunch of fields which will never be filled, except sometimes - family anamnesis, chronical ills, alergies etc. For big majority of patients only the base fields were enough. So the patients table was huge and 98% empty. And as altos kept crashing, that table became prone to corruption. So I split it in two. The second table got all the fields which are almost never used, and for the patients where it is so, it will have no record. To enter those fields, I had four pages, which would overlay the main screen when called. I practically invented pages before I ever saw them (and won't, until next year).

Now at the hospital it would develop a "parity error" (which the guy from Szoftex would pronounce as "porić", the hungarian way) and freeze. We fought the error best we could, specially I, because it would randomly crash indexes, and sometimes the tables too, so I split the big transactional tables into one-per-year-of-birth (while each would be opened only when needed, closed asap, etc) and I even split the big patient table - this time vertically. On the left side there was the most frequently used set of data (first last dob blood group address etc) while all the stuff from additional screens (allergies, family medical history etc), which was mostly never entered, was delegated to the right side, with record there existing only if data were entered.

Still this helped only reduce the damage. One evening we were summoned to the hospital because the crash was more serious than usual, and when our guy rebooted the server I was to assess the damage and fix it asap. The whole consilium (Vanji, Mihály, Béla) was nervously shuffling their feet behind my back, I was in deep concentration, trying things out and looking for a way to write a script which would save the best of currently crashed table and the last good backup (which was, of course, just a tad too old). Vanji started pressing the importance and criticality of the issue on me, probably trying to push me into some panic mode, or turbo mode, or just plain asserting his middle boss position, whichever. Which was very unnerving, and broke my concentration - and was superfluous, he didn't say anything that I didn't already know. And that was knowledge I had intentionally put aside, because I pride myself in not having a panic mode: a programmer in panic mode will make mistakes and more causes for panic. Cool head is needed. So I just turned around and sent him, in my best professor shouting mode, to three mothers' cunts and asked him whether he will let me work or not. Luckily, this was the little server room in the basement, so nobody outside heard anything.

The whole scene lasted perhaps ten seconds. The silence which followed restored my concentration and I fixed the thing, at least for the day, within the next fifteen minutes.

-----

* "call" here means "call to upitig2.prg" - so if a routine calls multiple dialogs, the generator should know from which line is the current call made, and generate its code immediately under this line, and the same should apply to the 2nd and 3rd call when they are made.

** "stuffed" here means that the person convinced Vanji that these fields are mandatory, a must, you can't treat a patient without knowing these values, and bla bla bla, and he ate it as if he once worked in erc, took it for granted and added it all into the project. These make sense for regular patients or when diagnose is unclear, but those are few and they go up the hill into the hospital anyway. This is a polyclinic, here the huuuuge majority are the transient and one-time patients.


Mentions: 22-II-1995., altos, Avai, Béla Pelikán, erc, Gemenc, GenerAll, Goran Staković (Brlja), ifabo, Joška Apro, Mihály Weisz, PolC, setkey.prg, slovima, Szoftex, Todor Čkrebović, upitig2.prg, Vilmoš Baranji (Vanji), in serbian