Storie dalla Sala Macchine


Home Page | Commenti | Articoli | Faq | Documenti | Ricerca | Archivio | Storie dalla Sala Macchine | Contribuire | Imposta lingua:en it | Login/Register


Manovre e Novita' ($succhiasangue 5)

(continua dalla volta precedente)

Avevamo lasciato il "nostro eroe", alle prese con le asinine tecniche di gestione degli edifici di $succhiasangue. Dato che le riparazioni al riscaldamento dell'ufficio che io avrei dovuto occupare andavano per le lunghe, UL3297 ed UL9733 si erano "accordati" perche' io risiedessi invece nell'ufficio all'ultimo piano. Ufficio che era la 'tana' dei poveri cristi che si occupavano di sviluppare il famoso "motore" che "propelleva" la polliza autoveicoli, il prodotto principale dell'intera faccenda.

Dopo un po' di ravanamenti nel codice di questo arnese ed un po' di consultazioni con CL3587 e CL6422 che erano i principali manutentori dell'intera cosa, avevo fatto un piano d'azione e, con la collaborazione non proprio entusiasta di CL2 che si era visto "strappare" alla sua principale attivita' (non fare niente), avevamo messo insieme un approccio di applicazione che con la sorpresa di tutti, me incluso, sembrava funzionare.

Dopo un mesetto circa, avevamo raggiunto il punto in cui, prendendo uno di quei "programmi" che il "motore" avrebbe dovuto processare e passandolo al "nostro" programma, questo cominciava ad eseguirlo visualizzando le varie maschere di input, gestendosi l'output eccetera eccetera, il tutto sotto Windows (!). 

I maggiori problemi erano: 1. il "programma" era in formato compresso e quindi doveva essere prima pre-processato da un tool che lo decomprimeva ed aggiustava una serie di cose, questo programma non faceva parte della nostra applicazione perche' era fuori dagli scopi. 2. la nostra applicazione non aveva accesso alle funzioni di stampa perche' queste erano esterne al motore stesso e, dulcis in fundo, 3. l'intera cosa era di una lentezza mostruosa.

Quest'ultimo problema era, purtroppo, il risultato del funzionamento interno del 'motore' stesso. Se non avete mai smandruppato troppo con la programmazione sotto Windows, dovete sapere che ogni "form" di input in Windows e' una risorsa, composta da oggetti individuali (campi di testo, checkbox, dropbox etc.), ognuno dei quali ha una sua posizione in un ordine di inserimento. Premendo 'tab' il 'fuoco' si sposta da un oggetto all'altro seguendo tale ordine.

Quale e' il problema? Semplice, il 'motore' esegue controlli sul valore di ogni informazione inserita e, a seconda di tale valore, potrebbe decidere di saltare ad un altro oggetto sulla stessa form oppure decidere che l'intera form deve essere completamente rifatta in modo diverso. E dato che il numero, il tipo e la posizione dei vari oggetti presenti sulla form non sono noti finche' il "motore" non mi passa l'intera struttura, l'unico modo che ho di gestire la cosa e' DISTRUGGERE la form ogni volta e RICOSTRUIRLA da capo. PER OGNI FOTTUTO CAMPO!

E no, prima che lo domandiate, confrontare la vecchia form con quella nuova non funziona. Mi dice solo che la nuova form e' diversa, non COME e' diversa.

Quindi dopo aver "dimostrato" la funzionalita' a UL9733, abbiamo fatto una mini-analisi per una possibile espansione, che richiedeva pero' il rifacimento del motore e poi... E poi fondamentalmente avevo finito.

A questo punto, dato che ero rimasto impantanato per un certo periodo in quegli uffici, avevo finito con il fare conoscenza con un po' di gente che lavorava nei vari uffici "interni". Ed una di queste conoscenze, chiamiamola CL7397, mi aveva informato che "aveva fatto il corso sul programma che avevo fatto io"...

Io - ...quale programma fatto da me?
CL7397 - Quello per le polizze con i grafici. Bellino, molto ben fatto.
Io - ...ah... graze... corso? 
CL7397 - Bhe si', dato che dovrebbero distribuirlo la settimana prossima noi dovremmo essere in grado di usarlo nel caso ci arrivano delle domande dagli utenti.
Io - DISTRIBUIRLO? LA SETTIMANA PROSSIMA?

Ok, e' ora di fare due chiacchiere con UL3297. Lo vado a scovare nel suo "loculo", lui e CL6422 che apparentemente stanno confabulando.

Io - (rivolto ad UL) Ho sentito che state per distribuire il mio programma?
UL3297 - Hemmm... "distribuire" e' una parola grossa...
Io - (ignorando) E che il personale interno sta facendo dei corsi?
UL3297 - Hemmm.... "corsi" e' una parola grossa...
Io - E "violazione del contratto" come ti sembra?

Ora, questo era probabilmente eccessivo, dato che io non avevo esattamente idea di quale fosse il contratto tra la mia ditta e $succhiasangue, ma continuo ad essere dell'opinione che avrei dovuto essere informato della cosa. Comunque sia, dato che UL aveva finito con l'ammettere che l'applicazione era formalmente accettata, io avevo sostanzialmente finito la mia parte e dato che la parte "secondaria" con UL9733 era praticamente finita. Finii con il ritornare in ufficio a domandare il da farsi.

DaBoss, dato che al momento non aveva nessun piano e non si aspettava che io finissi cosi' in fretta, decise che, dato che $succhiasangue non aveva ufficialmente chiuso il contratto, e questo conteneva anche un riferimento a "bug fixing" dopo la consegna ufficiale, la cosa migliore era di "pretendere" che io stessi facendo bug fixing e vedere come andavano le cose.

E' a quel punto, piu' o meno, che la Rivoluzione si scatena... E qui ci va una piccola spiegazione.

Come ho spiegato la volta precedente, il modo standard di fare carriera a $succhiasangue era di non fare niente ed aspettare. Ma se siete particolarmente motivati e non vi preoccupate troppo per chi vi circonda, l'alternativa e' di saltare da una posizione all'altra. Con o senza l'assenso di chi "ricopre" la posizione in cui volete saltare. E qui introduciamo SL9543, che era il 'capo' di UL9733 ed UL3297. Costui ricopriva una funzione simile a quella di un CTO, ma, data la struttura "multipla" di $succhisangue, non era il solo ad avere una posizione simile. 

Scena: interno sala riunioni, SL9543 presiede con diversi UL attorno, tra cui UL9733 ed UL3297, UL9733 e' li' che discute la mia "analisi" per lo sviluppo dei prossimi 273 anni... SL9543 fuma il sigaro (era PRIMA delle leggi contro il fumo) e guarda fuori dalla finestra. Ad un certo punto CL3721 entra dalla porta intabarrato in un impearmeabile ed allunga un foglietto ad SL9543, il quale lo apre e comincia a leggere, poi esclama "AH!" e picchia una manata enorme sul tavolo che fa' balzare tutti i presenti ed un enorme tronchese d'acciaio casca dall'impermeabile di CL3271 con un rumore di ferraglia. CL si china a raccogliere il tronchese, ignora il buco sul pavimento provocato dall'impatto e cerca di ricacciarlo sotto all'impermeabile. SL9543 va avanti come se niente fosse.

SL9543 - Finalmente! L'odiato SL5421 ha avuto un incidente durante il giro in bici di questo week-end! A causa di un problema ai freni e' volato fuori dal Curvone della Trattoria! La prognosi e' di 1274 giorni salvo complicazioni! (guarda CL3721 che sta ancora cercando di infilare il tronchese in tasca)
CL3721 - (guardando SL9543) ...complicazioni?
SL9543 - COMPLICAZIONI!!!
CL3721 - (impugna il tronchese come se fosse una mazza e si avvia verso la porta) ...complicazioni...
SL9543 - (riprende a parlare a nessuno in particolare come se fosse tutto normale) Il che significa che SI E' LIBERATO UN POSTO IN MARKETING! VI SALUTO STRONZETTI!
- Si alza ed esce dalla porta a passi lunghi mentre i vari UL si guardano gli uni con gli altri...
UL3297 - Ma... Se ne va?
UL9733 - ODDIO! SIAMO FOTTUTI!!

....Ok, non so se la scena e' stata proprio questa, ma non mi sorprenderebbe.

Comunque sia. Il punto e' che, 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?).

Ed il risultato e' stato che un numero spaventoso di progetti si sono ritrovati di botto in lista per la cancellazione. Il che ha prodotto un improvviso flusso di attivita' dove tutti dovevano sembrare di stare facendo qualche cosa, qualche cosa di produttivo intendo. Tanto per cambiare. Ed uno dei principali cambiamenti e' stato che $succhiasangue si e' accorta dell'esistenza di una piccola cosa che era arrivata nel frattempo. Una cosa insignificante chiamata INTERNET.

Ebbene si', nel corso dell'anno (piu' o meno), si erano verificati diversi cambiamenti al panorama tecnologico. Ed anche il mio vecchio amico che gestiva una BBS aveva finito con il fare il salto ed era diventato un ISP, con connessione ad Internet (no, non "globalnet" come pensavo io). Ed una delle prime cose che molte delle concorrenti di $succhiasangue avevano pensato di fare era... Ottimizzare la vendita delle polizze.

E qui arrivano i problemi.

UL9733 entra in ufficio con un paio di fogli di carta in mano e si rivolge a CL3587

UL - Guarda qui'!
CL - Che roba e'?
UL - Questo e' quello che $concorrente fa adesso, tu metti il tuo nome, la tua citta' di residenza ed il tipo di auto che hai e lui ti da' il costo della polizza!
CL - Figata!
UL - NO FIGATA! DISASTRO!
CL - (un po' confuso) ...perche'?
UL - Lo sai cosa ci mettiamo noi per dare il costo di una polizza a qualcuno?
CL - Hummm... considerando il processo... direi dalle 3 alle 7 ore.
UL - ESATTO! Questi lo fanno al telefono mentre tu aspetti!
CL - ...e non e' una figata?
UL - Non secondo SL1234! Vuole che anche noi siamo in grado di farlo.
CL - Hummm... quello e' un problema...
UL - Lo vuole per oggi pomeriggio. Massimo domani mattina. Ha gia' mandato l'annuncio ai giornali.
CL - CHEEE??
UL - Si', blah blah, nuove tecnologia, blah blah, pronti alla sfida del futuro, blah blah, la interDet, yada yada...
CL - No, tu non hai capito! Noi NON POSSIAMO farlo, non come le cose sono costruite in questo momento!
UL - Oggi pomeriggio. Domani mattina al massimo. Forza su, lavorare!

La scena che e' seguita e' degna di una opera di Shakespeare, o magari di una commedia di Fantozzi, io non sapevo bene se mettermi a ridere oppure no... 

Dopo una lunga discussione durante la quale UL voleva semplicemente "capovolgere" il processo e dare prima il prezzo e poi fare le domande mentre CL cercava di spiegare che no, il software non funziona cosi', ed anche se fosse, il prezzo fornito sarebbe completamente astruso, CL ha proposto una "soluzione di emergenza" in cui una specie di "inizializzazione" riempiva tutte le informazioni con defaults e poi consentiva all'utente di schiacciare semplicemente "invio" a ripetizione per accettare tutti i valori gia' inseriti ed arrivare in fondo.

A questo punto CL si e' messo all'opera per implementare tale "inizializzatore" mentre UL si e' avviato per dare ad SL la sciagurata notizia che il "nuovo" software non sarebbe stato pronto prima del giorno dopo... Un paio d'ore dopo le bestemmie di CL mi hanno risvegliato...

CL - Pork...mign... vacc... fank...
Io - Che succede?
CL - Questo cazzo di programma non si compila piu'!

Allungo il collo per guardare il problema e scopro che il software che costituisce il 99.99% degli introiti di $succhiasangue e' tutt'ora scritto in Microsoft C, no, non VISUAL C, la versione vecchia, quella che e' solo per Ms-DOS ed e' limitata a funzionare nella "normale" memoria di 640Kb (vi ricordate? quella che sarebbe stata piu' che sufficiente per tutti, almeno secondo certa gente), ma con le ultime aggiunte al codice, il codice ed il compilatore non stanno piu' in memoria ed il compilatore si rifiuta di procedere.

CL continua a madonnare, dopo un po' si arrende all'evidenza e va' a riportare la cosa ad UL. Sento un po' di ululati provenire dal fondo del corridoio. Poi una decisione viene presa: occorre spezzare il programma in moduli isolati in modo da poterlo compilare.

Ora, se non avete mai provato a prendere quello che era progettato e costruito come un unico programma mastodontico e ri-fattorizzarlo per essere un insieme di funzioni isolate, non avete idea della massa di problemi che puo' comportare. A questo punto UL sta' preparando la lista dei nomi di gente da buttare davanti al treno che SL guidera' giu' dal corridoio probabilmente la mattina dopo quando sara' chiaro che niente puo' essere rilasciato durante la giornata, mentre lui prenota il volo di sola andata verso Cuba.

A questo punto, dato che CL non ha piu' capelli da strapparsi, mi appropinquo...

Io - Senti, posso dare un'occhiata a quel coso?
CL - Come no, se hai qualche idea... 

Con la locazione del codice mi collego al server (Novell) e guardo un attimo. Ok, il codice e' un macello illeggibile ed ingestibile. Ma io sono piu' interessato al compilatore. Perche' questo coso poteva essere compilato fino a poche ore prima, e dubito seriamente che CL abbia scritto cosi' tanto codice in cosi' poco tempo... quindi... 

Ah! Trovato. Il "compilatore" in realta' e' un file .bat che setta alcuni parametri e poi chiama... Un altro file .bat. Che chiama il compilatore... Hummm Hummm Hummm...

Vediamo un po', per prima cosa rimuoviamo il secondo .bat e chiamiamo direttamente il compilatore da qui poi... 

Negli anni '90, quando i primi computers con piu' di 640Kb cominciarono a comparire, esisteva questa distinzione tra memoria "normale" (primi 640Kb), memoria "alta" (tra 640Kb ed 1 Mb) e memoria "estesa" (al di la' del primo Mb). Quest'ultima poteva essere gestita solo da programmi che erano predisposti e con l'uso di un particolare driver. Ma... la memoria "alta"... era (piu' o meno) "free-for-all". Con le ultime versioni di DOS era possibile caricare un programma in quella zona specificando "lh" (load high) prima del programma. 

Il compilatore tanto grande non e'... Se anche usa la memoria normale per le sue variabili... Vale la pena provare. LH compilatore... programma...

Yep. Il programma viene compilato. Poi si schianta perche' mi mancano tutte le librerie necessarie ed il linker non gradisce, ma il primo ostacolo e' superato.

Comunico la cosa a CL che balza dalla sedia e corre a vedere se lo prendo per il culo oppure no. Poi scopre un paio di bug nel codice e si mette a correggerli, a questo punto UL arriva.

UL - Allora, questa divisione del codice?
CL - (visibilmente soddisfatto e sollevato) Non c'e' ne' piu' bisogno! (indica me) Ho domandato al nostro genio e lui mi ha tirato fuori dal cappello un trucco... 

Dopo un po' di spiegazioni UL se ne ritorna in ufficio ed io decido che, dopo tanto lavoro, mi merito un caffe'. Mi avvio verso la macchina del caffe' e passando davanti all'ufficio di UL lo sento parlare al telefono...

UL - Si, HO risolto tutto con un colpo di genio fantastico, una cosa che nessuno avrebbe mai pensato... Ma le pare direttore, sono qui per questo...

...He.. Si'... LUI e' li' per quello...

(continua)

Davide
14/09/2020 13:06

Precedente Successivo

I commenti sono aggiunti quando e soprattutto se ho il tempo di guardarli e dopo aver eliminato le cagate, spam, tentativi di phishing et similia. Quindi non trattenete il respiro.

7 messaggi this document does not accept new posts

Antonio Pennino

Di Antonio Pennino postato il 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

Messer Franz

Di Messer Franz postato il 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

Jurghen

Di Jurghen postato il 30/11/2020 21:03

Il classico manager.

YOUR fault.

MY success.

-- Jurghen

Messer Franz

Di Messer Franz postato il 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

Guido

Di Guido postato il 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

gabriel

Di gabriel postato il 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.

 

 

-- gabriel

Anonymous coward

Di Anonymous coward postato il 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

7 messaggi this document does not accept new posts

Precedente Successivo


Il presente sito e' frutto del sudore della mia fronte (e delle mie dita), se siete interessati a ripubblicare uno degli articoli, documenti o qualunque altra cosa presente in questo sito per cortesia datemene comunicazione (o all'autore dell'articolo se non sono io), cosi' il giorno che faccio delle aggiunte potro' avvisarvi e magari mandarvi il testo aggiornato.


Questo sito era composto con VIM, ora e' composto con VIM ed il famosissimo CMS FdT.

Questo sito non e' ottimizzato per la visione con nessun browser particolare, ne' richiede l'uso di font particolari o risoluzioni speciali. Siete liberi di vederlo come vi pare e piace, o come disse qualcuno: "Finalmente uno dei POCHI siti che ancora funzionano con IE5 dentro Windows 3.1".

Web Interoperability Pleadge Support This Project
Powered By Gojira