Tales from the Machine Room
Home Page | Comments | Articles | Faq | Documents | Search | Archive | Tales from the Machine Room | Contribute | Set language to:en it | Login/Register
(continues from the previous part)
We left "our hero" trying to make a sense of $leeches' building management. Since fixing the heating system of the office that I was supposed to occupy was very low in priority, UL3297 and UL9733 had decided that I could sit in the office at the top floor, office that was the "home" of the peoples that were working at that famous "engine" that was running the insurance that was the primary source of income for $leeches.
After some messing around in that code and some discussion with CL3587 and CL6422 that were the primary developers, I had an action plan and, with the not-so-entusiastic cooperation of CL2 that had to actually do some work, we had put together an application that, surprising everybody (me included) seemed to work.
After a month or so we go to a point where I could grab one of those 'programs' and pass it to 'our' application and it would have been executed, showing the various input forms, output etc. All under Windows (!).
A few problems remained: 1. the 'program' was compressed so had first to be decompressed and pre-processed by a tool that... not sure what it did... 2. the application had no access to printing because of the way it was configured in the 'engine' and lastly, 3. the whole thing was fucking slow!
The last point was, unfortunately, a result of how the 'engine' was working. If you've never dabbled in Windows development, you must know that each 'input form' is actually a 'resource', composed by multiple objects (text field, drop box... whatever) each one of which has its position in an 'select order'. Pressing on the TAB key you can cycle through all the object following the order.
And where is the problem? Simple: the 'engine' check the value of each information that has been inserted (or selected) and, depending on that value, it will decide what to do next, it could move to a different object on the same form, create a brand new form or decide to completely delete the whole form and start a new one. And since the number, type, content and position of each object present in the 'new' form is not known until the 'engine' give me the control back, the only way to handle this is to simply DESTROY the whole form and create a new one every time. This for EACH FUCKING FIELD!
And no, before you ask, checking the old and the new form doesn't work. I only know that the form is different, not HOW it is different.
So, after having 'shown' the application to UL9733, we made a mini-analysis and proposal for a new application but that required a complete re-haul of the engine. And then... And then I basically was done.
At this point I had been a "guest" of the offices for several months, and I had ended up meeting and knowing a few of the peoples that were working there. One of these was somebody, let's call her CL7397 and during lunch she informed me that she was in a course for the "program that I made"...
Me - ...program that I made?
CL7397 - Yes, the one with the graphs? Nice, very nice.
Me - ...ah... thanks... course?
CL7397 - Yes, they are going to distribute it nation-wide next week and we are supposed to answer questions if we get some.
Me - Distribute ? Next week ??
I think is time to go have a chat with UL3297. I get to his "office" while he and CL6422 are having a talk.
Me - (to UL3297) I've heard that you are going to distribute my program?
UL3297 - Hemmm... "distribute" is a big word...
Me - And the personnel is having courses on that?
UL3297 - ..."courses" is also a big word..
Me - And what do you think about 'breach of contract'?
Now, this probably was incorrect, since I didn't know exactly what was in the contract, but I still think I was supposed to be informed about that. Anyhow, since UL3297 had confirmed that the software had been approved, and the 'secondary' project with UL9733 was also done, I had finished with $leeches. So I decided to go back to the office and ask DaBoss about it.
DaBoss, at the moment had no plan and wasn't expecting the project to end so fast, so he decided that the best thing to do, since $leeches hadn't officially closed the contract, was to keep going to the office and wait.
Is at that point, more or less, that the Revolution happened. And here we need a little explanation.
As I explained last time, the standard procedure to get a "career" at $leeches was to do nothing and wait. But if you were particularly motivated and had not too much concern for anybody else, the alternative was to jump from one position to another, without too much of a worry for the person you jumped into. And here we introduce SL954 that was the "boss" of UL9733 and UL3297. This guy was the equivalent of a CTO, but given the structure of $leeches there were multiple peoples that could be called like that.
Scene: large meeting room, SL9543 sits at the head of the table smoking a cigar (it was before the anti-smoking-laws), lots of ULs sits around, UL3297 is presenting my analysis with a development plan for the next 247 years. Suddenly, CL3721, dressed in a black coat and black hat, enters the door and give SL9543 a small piece of paper. SL9543 begin reading and then yell "AH!" and slam the hand on the table, everybody jumps, a huge steel bolt cutter drop from the inside of CL3721 coat and klang on the floor leaving a huge dent in the marble. CL3721 pick it up and try to hide it back under the coat...
SL9543 - Finally! The hated SL5421 had a terrible incident during the bicycle ride this week-end! A problem with the brakes made him lose the control of the bike and veer out of the big turnpin in the mountain! Is going to be out of work for 1276 days, without complication (he look at CL3721)
CL3721 - (looking at SL9543) ... complications?
SL9543 - COMPLICATIONS!
CL3721 - (brandishing the bolt cutter like a club) ...complications... (he walks out the door)
SL9543 - (continuing like nothing happened) and this means that THERE IS A FREE SPOT IN MARKETING! SEE YOU SUCKERS!
He walks out the door. The various ULs look at each others...
UL3297 - But... is he leaving?
UL9733 - OHMYGOD! We're screwed!!!
...ok, I don't know if this is exactly like it went, but I wouldn't be too surprised.
Anyhow, the point is that one SL moved from IT to Marketing ('cause they are the same, right?) while another one moved from Accounting to IT ('cause they are the same, right?).
And the end result was that a number of projects ended up on the list of "things that should be dropped". That led to a huge amount of activity where everyone had to look busy doing something useful. And one of the change was that $leeches discovered the existence of something new. That small thing called 'the internet'.
Well yeah, in around a year something had changed in the world, and even my friend had to move from managing an BBS to managing an ISP, with Internet connection. And one of the first thing that all $leeches' concurrents thought to do, was to optimize how to sell insurances...
And here comes the problems.
UL9733 walk in the office with some paper and show them to CL3587.
UL - Look!
CL - What's that?
UL - This is what $concurrent does now, you enter your name, your city, the type of car and this thing gives you a quote for the insurance.
CL - Cool!
UL - NO COOL! DISASTER!
CL - (confused) ...why?
UL - Do you know how long does it take us to give a quote for an insurance?
CL - Hummm... considering the process... I'd say between 5 and 7 hours.
UL - Correct! They can do it at the phone while you wait!
CL - ...and that is not cool?
UL - Non according to SL1234! He wants us to do the same.
CL - Hummm... that's not that easy...
UL - He wants it done for this afternoon, tomorrow morning max. He already sent out word to the agencies and newspapers.
CL - WHAAAAAT??
UL - Yes, blah blah, new technologies, blah blah, ready for the challanges of the future, blah blah, the interDet, yada yada...
CL - No, you don't get it! We CANNOT do it, not with how the software is built at the moment!
UL - Release this afternoon. Tomorrow morning max. Get cranking.
The following scene was like a Shakespeare's drama, or maybe a Jerry Lewis' comedy, I wasn't sure if to laugh or not...
After discussing for a while, where UL wanted to simply take the current process and put it "upside down" so first get the price and then put the answers in and CL was trying to explain that no, it doesn't work like that, CL ended up proposing an emergency change to add an "hat" to the current software that simply filled all the values with defaults and then allowed the user to press 'enter' all the time to accept the defaults to get to the end.
At this point CL started to build that thing while UL was going to give SL the sad news that the software wouldn't have been ready before the next day. After a couple of hours CL's cursing wake me up.
CL - Fuck... shit... fuck...
Me - What's the problem?
CL - This fucking program doesn't want to compile anymore!
I stretch my neck to have a look and discover that the software that provide 99.99% of the whole profit is still written with Microsoft C. Not 'visual' C mind you, the old version, under Dos. And of course, the compiler is restricted to use only the 'normal' 640Kb of memory (remember? the amount that was "enough for everybody"), however, with the latest addition, now the whole thing doesn't fit in memory anymore.
CL keep cursing but after a while, he accept the evidence and goes to report to UL, after severl high-pitched screams a decision is taken: split the software into several modules so it can get compiled.
Now, if you've never tried to get what was built and developed as a single, gigantic, monolithic piece of code and refactor it into several quasi-independent modules, you've no idea what size of can of worm that is (a very large one). At this point UL is probably preparing the list of people to toss in front of the train that SL will drive down the corridor next morning while buying a one way ticket to Cuba.
Since CL hasn't got any hair to pull anymore already, I go have a look...
Me - Do you mind if I have a look at that thing?
CL - Sure, go ahead, if you've got an idea...
Grab the location of the code, login to the server (Novell) and check it out a moment. Ok, the code is a fucking mess (what did you expected?), but I'm more interested in the compiler, because this thing did compile until a few hours ago, and CL can't have written that much code in such a short time so....
Ah, found it. The 'compiler' is actually a .bat file that sets some parameter and then call... another .bat file, which call the compiler. Nice. So...
Let's start by removing the second call and so remove one copy of command.com to load in memory, then...
In the middle-to-late '90s, when the first computers with more than 640Kb started showing up, there was this distinction between 'normal' memory (first 640Kb), 'high memory' (between 640 and 1Mb) and then 'extended' memory (everything else). The latter could only be used by software that were compiled with the ability and used a driver for it, but the 'high' memory... it was kind of a "free-for-all" space. You could, theoretically, load every software in that space by using the "lh" (load high) command from DOS.
So... the compiler isn't that big, even if it uses normal memory... Is worth a try. Let's see... lh compiler source.c
Yep, it works. It compiles. Then the linker doesn't find the libraries and start chocking but the first step seems to work.
I communicate the thing to CL that spring out of his chair like a jack-in-the-box. After a couple of minutes he discovers a bug in the code and start fixing it. At this point UL shows up.
UL - So, this splitting of the code?
CL - (visibly relieved) No need anymore. We asked our genius (point at me) and he pulled a rabbit from the hat and it works.
After a couple of useless explanation (UL had no idea about memory or compiler or anything anyway) UL decide to get back to his office and I decided that after so much work I deserved a coffee, so I walked past UL's office to the coffee machine, while I was passing by I heard UL talking at the phone...
UL - Yes I fixed everything with a stroke of genius, something that not even our best developers had considered... Yes Sir, of course, this is why I am here and not UL3297...
Yeah, that's why HE is there...
(to be continued)
Comments are added when and more important if I have the time to review them and after removing Spam, Crap, Phishing and the like. So don't hold your breath. And if your comment doesn't appear, is probably becuase it wasn't worth it.
By Antonio Pennino posted 30/11/2020 11:36
eh si i boss sono nastri trasportatori, ordini in basso e responsabilita' in alto e se qualcosa putacvaso va bene il merito e' loro.-- Antonio Pennino
By Messer Franz posted 30/11/2020 15:11
> Premendo 'tab' il 'fuoco' si sposta da un oggetto all'altro seguendo tale ordine.
aah..il magico tab...e il suo parente figo, l'alt-tab, che ha salvato milioni di alunni dalle ire dei prof...(ma non gli UL il cui quasi-ex-BOFH incolla con l'attack il tab che si veda che gioca a unreal tournament...)...e il ctrl-tab, che nessuno bada che esiste perchè oggi nessuno conosce nemmeno più a cosa serve un tab...
> un SL e' passato da IT a Marketing (perche' sono esattamente la stessa cosa no?) mentre un altro e' passato dalla Contabilita' ad IT (perche' sono esattamente la stessa cosa no?).
...sì...perchè le conoscenze settoriali servono per fare il lavoro nel settore, ma se il tuo lavoro è aspettare e schivare lavoro in qualsiasi reparto tu sia, direi che dove sei vai bene comunque...se poi te non ti specializzi seguiendo lo spirito aziendale, quello sei te che non lavori sinergicamente coi tuoi colleghi!
(dove il lavoro consiste nell'emettere anidride carbonica per aiutare la foresta amazzonica e salvare il pianeta...mica cotiche!)
ps: le memorie estese, alte, i far pointer...qui è dove ringrazio che sono arrivato nell'informatica nel '97 e queste cose le ho studiate (e rimosse subito) e non mi ci sono mai dovuto scontrare...
pps: BigD, gradito il filmato che ti ho mandato un po' di tempo fa di "trust me, I'm an engineer?"
-- Messer Franz
By Jurghen posted 30/11/2020 21:03
Il classico manager.
MY success.-- Jurghen
By Messer Franz posted 01/12/2020 06:24
> l'unico modo che ho di gestire la cosa e' DISTRUGGERE la form ogni volta e RICOSTRUIRLA da capo. PER OGNI FOTTUTO CAMPO!
mi è tornato in mente il secondo posto dove ho lavorato, nel lontano 2001...il "tecnico" (un contabile che aveva studiato informatica su internet) aveva fatto un programma in Delphi che AVREBBE DOVUTO fare delle cose ma, guarda caso, non ne faceva nessuna.
Per avere le form coi dovuti oggetti (ma non sapendo come gestirsi un interfaccia visuale) aveva messo TUTTO in una sola finestra, e poi rendeva visibile/invisibile i vari oggetti, secondo il principio che "così non perde tempo a crearli" e "tanto un pulsante "ok" serve in tutte le schermate, anche se magari con un testo diverso...".
Non vi dico la gioia di chi se n'è dovuto occupare...io grazie al cielo ho dovuto solo pensare al sito relativo...-- Messer Franz
By Guido posted 01/12/2020 08:45
In un'azienda dove ho lavorato, avevano un mega accrocchione multilinguaggio (cobol & co) sviluppati negli anni 80.
Quando si resero conto che esistenva questa cosa chiamata "internet" (no negli anni 90... nel 2000 pieno) decisero che era una cosa buona riscrivere l'applicativo per poter essere usato da questa cosa magica interconnessa.
Se l'avessero riscritto. Invece con una pletora di batch agganciati a pagine html statiche invocavano le varie funzioni del programma come se ci fosse stato un utente li' davanti.
Su questo coso io avrei dovuto sviluppare una "gallery" multimediale in java (nel 201*) gia' sapendo che la versione 2.0 di questa gallery sarebbe stata un prodotto esistente open-source (e allora perche' non passiamo direttamente alla 2 che e' gia' fatta? mah mistero).
La goccia e' stata quando ho saputo che stavano pagando solo me perche' ero in prova...-- who uses Debian learns Debian but who uses Slackware learns Linux
By gabriel posted 02/12/2020 21:13
ed è in questi casi, con queste persone, che vorrei avere una bomba nucleare a danni limitati da lanciare sul palazzo della società in questione e sterminare tutti questi idioti e nullafacienti.
ma mi riferisco alle puntate in generale, della gente così io la licenzierei allistante.
By Anonymous coward posted 08/12/2020 15:20
Il finale mi ricorda quando, anni fa, lavoravo nell' IT di un azienza che produceva macchinari, tra le mie mansioni il mio incubo era un mostro di stampante con il fascicolatore che ogni giorno si inceppava.
Decisi di prendere il toro per le corne e fare due chiacchere con il resposansabile della produzione: "senti ma perchè stampi tutta sta roba?" lui: "sai com'è, dobbiamo fornire i manuali dei nostri apparecchi quando li vendiamo" io:"mi vengono al volo 3 soluzioni migliori che farlo noi in casa con quel mostro, 1- metterli su un FTP e dare al cliente l' accesso, così se esce una nuova revisione se la può scaricare in autonomia, 2- metterli su CD o PenDrive, 3- esternalizzare la stampa fuori" lui: " no no, non è fattibile"
Qualche mese dopo alla riunione plenaria il mega direttore lo ringrazia pubblicamente per aver avuto un' idea geniale, abbattere i costi e risparmiare carta mettendo i manuali su PenDrive
Sì, anche mia mamma diceva sempre che ero un coglione-- Anonymous coward
This site is made by me with blood, sweat and gunpowder, if you want to republish or redistribute any part of it, please drop me (or the author of the article if is not me) a mail.
This site was composed with VIM, now is composed with VIM and the (in)famous CMS FdT.
This site isn't optimized for vision with any specific browser, nor
it requires special fonts or resolution.
You're free to see it as you wish.