Technology Experience
My daily work

Sono ufficialmente stanco!

Ho sempre un po’ di timore quando mi trovo a dover dire una frase di questo tipo, perchè penso che dicendola, implicitamente il mio interlocutore si metta a confronto con me. E si scatenano riflessioni come…ma cosa vuoi saperne tucosa vuoi che sia, io è tre giorni che vado a dormire alle tre del mattinoma stai zitto, tu blogghi e basta. Oppure, magari parlando con familiari o amici più anziani, salta sempre fuori come loro prima di te (e magari negli anni ’60) si sono ritrovati a lavorare la domenica, oppure fino a tarda sera, oppure facendo la spola tra Lodi e Milano tutti i giorni.

Quando dico che sono stanco, non lo dico per fare un paragone con voi, ma per esprimere una mia sensazione interiore. Sono più stanco rispetto al mio solito. Sono più stanco quando arrivo a casa la sera. Sono più stanco perchè da un paio di giorni mi addormento in macchina, mentre mio fratello o l’altro amico è alla guida. Sono più stanco perchè mi viene mal di testa più facilmente, e non è bello lavorare così.

Per dirla tutta, non credo di essere mai stato così stanco come in questo periodo. Mi è capitato in passato (dieci anni fa?) di lavorare per 11 giorni di fila, ma probabilmente sopportavo meglio ‘sta cosa perchè ero più giovane. Oppure perchè avevo un lavoro molto diverso. Con la parola “stanco” non intendo dire che mi imbambolo o mi assopiglio mentre sono seduto davanti al PC…intendi dire che qualsiasi attività più complicata di prendere la posta diventa (appare?) impossibile.

Non so dire quale sia la causa. E’ più un’escalation che altro: il fatto che molti miei colleghi siano in missione fa ricadere qualche compito in più sulle mie (fragili) spalle, l’aumento del carico di lavoro, un po’ di tensione, di stress, poco tempo libero.

Eppure devo continuare. Devo continuare a modificare files XML, a buttare giù righe di codice, a rispondere al telefono, a dare retta a tutto quello per cui sono pagato. Tieni duro, Igor, ancora oggi e domani (mezza giornata) e poi finalmente potrai avere tutto lo spare time che vuoi e che il mondo saprà offrirti.

Ma fino ad allora…

Send to Kindle
My daily work

Che fine ha fatto Igor Damiani – parte seconda

Ci sono donne che aspettano ad un telefono che non suona mai (cit.), o che hanno le ossa grandi (cit.) o che sono portate a fare le mamme. Ci sono donne che amano le station wagon al punto che quando vanno in vacanza preferiscono poi viaggiare in aereo. Ci sono donne che amano passeggiare allegramente in centro con le borse piene di articoli griffati, o che preferiscono indossare un comodo pigiama.

Ci sono donne che uccidono con lo sguardo, con il modo di camminare e con le parole. Ci sono donne che uccidono con una semi-automatica, con una badilata in faccia, oppure non rispettando la precedenza ad un incrocio.

E ci sono donne – come la mia “collega” – che semplicemente uccidono strangolando.

Ecco che fine ho fatto. Sono stato ucciso. Se non mi vedrete più bloggare, o non mi sentirete più parlare, ora sapete il perchè.

Send to Kindle
My daily work

Domenica in ufficio

Era parecchi anni che non passavo una domenica in ufficio. Forse, se ci penso bene, l’ultima volta risale ad una decina di anni fa, quando lavoravo presso Simcity Network, una minuscola software-house nel mio paesello, la cui attività principale era però un negozio, e quindi nel periodo natalizio rimaneva aperto anche la domenica – appunto.

Come tutti i colleghi con cui mi trovo qui adesso, preferirei essere altrove. Però (c’è sempre un però)…

…non tutti i mali vengono per nuocere!

Send to Kindle
.NET World

Uno UserControl per esprimere url su Sharepoint

Tanto, tanto tempo fa, in un blog lontano lontano, mi è capitato di leggere questo post di Ayende insieme a tutti i suoi 16 commenti. Ayende si dimostra molto critico nei confronti della finestra di dialogo che permette a Visual Studio di connettersi ad un’istanza di TFS.
La riporto qui per chiarezza:

La criticità è dovuta al fatto che vengono utilizzati più controlli per separare quella che in realtà è un’unica informazione. Un’url, in questo caso. Nei vari commenti si ragiona proprio su questo: mentre un utente esperto potrebbe inserire direttamente https://tfs03.codeplex.com:443, oppure qualsiasi altra cosa, una UI come quella riportata sopra permetterebbe anche al più neofita di fare la stessa cosa.

Poi ho pensato al mio tool, UploaderWSS, di cui ho parlato in qualche mio post precedente. Ho dato un’occhiata all’unica Windows Form inserita nel progetto:

Anche qui, ho dovuto (e voluto) adattare la UI perchè mi servespezzettarel’url nelle diverse componenti in cui può essere suddiviso. Quando si parla di una document library di Sharepoint, le componenti che ho identificato sono le seguenti:

  • server Windows Sharepoint Services
  • website
  • document library
  • folder

Prendiamo un url più complesso per chiarire le cose:

enjoy.vivendobyte.net/sample1/sample2/sample3/sample4

La prima parte è sicuramente il server a cui connettersi. Le altre parti dell’url (sample1, sample2 e via dicendo) sono ignote, perchè non possiamo sapere se si tratta di nomi che identificano websites, document library o folder. Ricordo che all’interno di un server Sharepoint, possiamo annidare un website dentro l’altro, quindi è necessario che l’utente dica espressamente come è composto l’url, altrimenti non sappiamo come procedere. Ad esempio, sample1 può essere il nome di un website, oppure il nome di una document library. Stessa cosa per gli altri elementi. sample3 e sample4 potrebbero essere folder dentro la document library sample2: chi lo sa? sample1, sample2 e sample3 potrebbero essere tre websites annidati, e sample4 il nome di una document library: chi lo sa?

Lo sa solo l’utente finale, e quindi ho creato uno UserControl particolare che appare così:

Lo UserControl incorpora una TextBox al di sotto della quale vengono creati tanti Button quante sono le parti in cui può essere suddiviso l’url. Il separatore è chiaramente lo slash (/). Ogni volta che viene aggiunta una parte di url, viene aggiunto un Button. Ogni volta che uno slash viene rimosso, anche il Button sparisce. Premendo il Button compare un ContextMenu che permette all’utente di specificare che tipo è la parte di url su cui si è cliccato.

Siccome è più semplice da far vedere che da spiegare a parole, ne ho fatto un video su YouTube.

Technorati Tags:   

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.04] Il byte promosso ad Int32

Puntata precedente

Un’Ondata Distruttrice a volte può rivelarsi Purificatrice.
(sulla Fatalità degli Eventi – Anonimo)

Quando il byte si risvegliò dal suo breve ma intenso sonno, non ricordava più nulla di quello che era stato fino al giorno prima. Non ricordava più i suoi due amici byte[2] e byte[3], nè la sua fuga dal piccolo esercito di bytes cloni che lo stava braccando, nè dell’offerta del CLR che lo aveva salvato all’ultimo momento.

Quello che il byte sapeva era tutto quello che era in quel momento.
Cioè poco o nulla.
Aveva chiaramente un vago sentore del mondo in cui si trovava, perchè la sua memoria a lungo termine era in qualche modo sopravvissuta, ma non riusciva a dare una spiegazione a molte cose.

Innanzitutto non sentiva il battito del clock di sistema. Non aveva bisogno di sapere che avrebbe dovuto sentirlo. Per un byte l’incessante boom-boom in GigaHertz è una cosa innata, un puro istinto, come respirare per un essere umano o spiccare il volo per un pennuto. Il clock è ciò che detta continuamente il ritmo del lavoro, e come tale è fondamentale poterlo percepire in qualsiasi luogo, così come è essenziale per un essere umano vedere il sole nel cielo per capire se è giorno oppure notte, se è ora di mangiare oppure di andare a dormire. Invece lì non sentiva nulla, come se fosse stato eretto uno strato isolante dal resto del sistema.

Il byte si rese conto in effetti di aver perso molti dettagli di basso livello che – questo lo sapeva bene – in altri tempi gli sarebbero apparsi normali. La struttura della RAM in sè – solitamente ben visibile nel delineare celle ed array in una griglia sconfinata – adesso era lievemente opaca, come se non fosse suo diritto sapere dove si trovasse esattamente. Stessa cosa per le sue capacità motorie: da dove si trovava non capiva come poter raggiungere bus ad alta velocità, e non riusciva nemmeno a capire se il sistema disponesse di AGP o di PCI Express. Fronti di salita, registri di sistema, istruzioni estese MMX2, pipeline di esecuzione, cache L2, conduzione Dual Channel…tutto sparito nel nulla. Tutto ciò che poteva utilizzare per orientarsi era stato letteralmente spazzato via, ed adesso non aveva più alcun punto di riferimento.

Sembrava quasi…ma no, non era possibile. Eppure era l’unica soluzione.
Ma sì, certo…vuoi vedere che…

Alla fine ci sei arrivato da solo, vedo.” – disse una voce alle sue spalle.
Il byte sussultò e si girò di scatto. Aveva di fronte un ammasso di codice IL, e stava comunicando proprio con lui.
Il CLR è un micromondo nel quale viene nascosto l’hardware sottostante. In questo modo, il codice eseguibile si trova in uno strato software, una Virtual Machine, che fa vivere codice e dati in un contesto di esecuzione riservato e protetto.” – spiegò IL.
Cos’è ‘sta cosa che ho attaccato al braccio?” – chiese il byte, mostrando il braccio sinistro al quale era stato appicciato – non ricordava come – una label con una sorta di firma.
Quella è una evidence, e ti è stata assegnata nell’istante stesso in cui sei entrato nel CLR.“.
Grazie a questa evidence, hai permessi di esecuzione più o meno elevati. Ed il tutto è controllato dalla CAS, che controlla e stronca qualsiasi tentativo di intrusione. Tu provieni da codice unmanaged, in questo momento, e sei stato gestito dal CLR tramite complesse operazioni di P/Invoke.“.
L’IL decretò il tutto con estrema chiarezza e semplicità, come se tutte quelle cose dovessero sembrargli ovvie.

Permessi, controlli, gestioni e limitazioni. Al solo sentire quelle parole al byte venne la pelle d’oca. Non ricordava la sua vita precedente al di fuori del CLR, ma aveva la forte sensazione di aver barattato la sua piccola libertà precedente con una specie di nuova tirannia.

Me ne voglio andare. Questo posto non fa per me.” – dichiarò il byte.
Tu non capisci. Qui dentro hai abilità straordinarie, abilità che prima non avevi.
Di che diavolo stai parlando?” – dichiarò il byte forse un pochino incuriosito.
Qui sei un oggetto, non sei un banale byte. Qui hai proprietà e metodi, partecipi attivamente all’architettura, fondi pattern e sottostai ai più suadenti principi della OOP.” – dichiarò IL.
Ma il byte non capì quasi nulla di quelle parole.
Qualcuno potrebbe eseguire su di te il metodo ToString(), non ti interesserebbe provare?” – domandò.
Veramente…no!” – rispose il byte senza pensarci due volte.
Mi spiace, ma ora ci sei dentro fino al collo.” – rispose IL come se lui non c’entrasse niente.

Al byte sembrò che tutto il mondo collassasse, come se tutti volessero mettergli i bastoni tra le ruote per rovinargli la sessione di lavoro. Le cose sarebbero cambiate. Voleva solo un po’ di tranquillità e nulla di più. Fece un passo in avanti, fino a piantare i suoi occhi in quelli dell’IL, che non fece una piega. Il byte era infuriato di quella rabbia in qualche modo sopìta, ma pronta ad esplodere.

Ora tu mi condurrai fuori di qui!” – ordinò all’entità IL.
Non dipende da me, non puoi chiedermi una cosa simile.” – osservò IL pacatamente.
Non te lo sto chiedendo, te lo sto ordinando.” – ribadì il byte.
Hai due modi per andartene: o aspetti l’operazione inversa rispetto alla quale sei entrato, oppure aspetti che il garbage collector ti deallochi. Ma in entrambi i casi devi farti trovare pronto“.
Ok, dimmi cosa devo fare allora.“.
Oh beh, in questo momento devi solo stare fermo“.
Sturati le orecchie: non ci penso nem…” – chiese il byte.

Non fece in tempo a terminare la sua domanda. Nel settore di memoria controllato dal CLR, un Large Object Heap come tanti altri, transitò un allocamento di un Dictionary<string, string> che spazzò via tutto come uno tsunami. Il byte venne travolto e perse il suo valore corrente di cui nemmeno aveva coscienza. La forza d’urto lo spinse altrove, mischiandosi in una baraonda di oggetti locali dentro un metodo privato scritto in VB.Net.

L’area di memoria venne riorganizzata e deframmentata in pochissimi cicli di clock. Tutte le variabili assunsero il loro valore di default pronte per partecipare all’esecuzione del metodo invocato dall’assembly .NET attualmente caricato. Già in lontananza si scorgeva un ciclo do…while con la sua tipica struttura condizionale; un ciclo, così pareva ad una prima occhiata, che avrebbe riempito il Dictionary con oggetti da inserire in cache per velocizzare l’esecuzione del blocco di codice successivo.

Fu in questo frangente che il byte divenne un Int32.
E come tale rimase per lungo tempo.

Send to Kindle
My personal life

Se c’è una cosa buona che mi ha passato la mia ex!

Beh, le cose sono tante, buone e cattive. E credo di aver fatto altrettanto io con lei. Almeno lo spero.

Una delle cose che mi è rimasta dentro è senza dubbio una passione per La Torre Nera, saga fantasy/western di Stephen King. Sette libri che ho letto tutto d’un fiato.

L’altra cosa è l’amore per Diana Krall, cantante e pianista jazz di origine canadese.

Ok, ascolto Ligabue e mentre sono in ufficio canticchio La Morte Nera di Star Wars e tante altre canzoni stupide italiane e non, ma quasi quasi un salto a Brescia il 19 Luglio 2008 per sentire Diana Krall lo faccio molto più che volentieri.

Ho alcuni suoi CD (originali, chiaramente) e mi piace tutto di questa donna: il carisma, il fascino, la voce, il suono del suo piano ed il modo di sussurrare. Credo di esserne innamorato.

Technorati Tags:   

Send to Kindle
Software

Piccoli database crescono

Ecco uno screenshot fresco fresco dall’MSSQL Admin del mio hosting su WebHosting4Life:

Spero di aver cancellato per bene le informazioni sensibili.

In poco più di un anno, il database di SubText ha raggiunto i 75Mb di dimensioni per i dati, e 3Mb per il log. Per la cronaca, esso comprende 614 post e 904 commenti e un po’ di altra roba.

Dopo aver fatto il backup tramite la console di WH4L, l’ho scaricato in locale accedendo al db server tramite protocollo ftp, poi l’ho restorato sulla mia istanza di SQL Server in locale sul mio PC. Un bel backup (purtroppo manuale, per cui devo essere io a ricordarmi di farlo) fa sempre bene!

Technorati Tags:  

Send to Kindle
VivendoByte.ByteAdventure

[Adventure.03] Il sistema, il sogno ed il grande incubo

Puntata precedente

Hal 9000: “Sognerò?”
Chandra: “Certo Hal. Tutte le creature intelligenti sognano.”
(sulla capacità di Sognare, “2001 Odissea nello Spazio”, di Stanley Kubrick)

Il byte era in fuga. Non era a conoscenza dell’esito della funzione temporale invocata dal sistema operativo, non sapeva nemmeno che l’OS l’avesse eseguita. Sapeva però che qualsiasi byte indipendente era perseguitato dall’intero ambiente operativo, e quindi non poteva permettersi un solo attimo di pausa.

Correva, saltava tra una cella e l’altra, incurante di dove fosse e di dove stesse per andare, concentrandosi solo sulla sua velocità. Desiderava solo far perdere le proprie tracce, rendersi irraggiungibile, allontanarsi il più possibile dall’area di memoria corrente. Non capiva il perchè, ma si sentiva braccato e con il fiato sul collo. Forse aveva preso parte all’esecuzione della predizione, ma senza averne piena coscienza, come fosse un ricordo lontano, o – forse – solo un sogno fatto quando il sonno è più profondo.

Chi sei tu? Dove vai così di fretta?” – esclamò un’entità che lo bloccò tutto ad un tratto.
Il byte rimase senza parole. Aveva il fiato rotto, per cui da un certo punto di vista era lieto di quello inatteso incontro. Ma aveva fretta, doveva scappare.
Se hai bisogno di aiuto, io posso dartelo.” – lo incalzò l’entità.
Accetterei volentieri, se solo sapessi chi sei.” – rispose freddo il byte.
Io sono uno dei confini del CLR, Common Language Runtime. So che posso aiutarti, perchè sono un processo che gira ad un livello di priorità particolare. Sono anche io controllato dall’OS, ma lui si fida di me perchè gli garantisco qualità, affidabilità e sicurezza nel codice che eseguo. Se entrassi nell’area di memoria di mia competenza, avresti sonni tranquilli.” – spiegò.
Il byte, inizialmente scettico, osservò meglio l’entità che si era presentata come CLR. Di fronte a lui si stagliava un muro di bytes compatti, nei quali era impossibile trovare il minimo spiraglio. La porta di accesso al CLR era una cancello sorvegliato costantemente da bytes armati: i bytes che entravano venivano marcati con una evidence, una sorta di passaporto; ai bytes che uscivano quella evidence veniva tolta.

Ti conviene decidere alla svelta. Li vedi quelli alle tue spalle?” – chiese il CLR al byte.
Quest’ultimo si girò di spalle, e quello che vide lo terrorizzò. C’era una guarnigione di bytes che avanzano feroci verso di lui: quelli più lontani era di un pallido color ciano, mentre quelli più vicini era di un azzurro intenso, che ricordavano – semmai il byte l’avesse mai visto – il colore del cielo estivo, brillante e luminoso. Il byte non riuscì a contarli tutti. In ogni caso, sembravano davvero troppi.

Cosa mi chiedi in cambio? Se entrassi, cosa mi obbligherai a fare?” – domandò impaurito il byte al CLR.
Questo non te lo posso dire adesso. I miei addetti devono prima marcarti con la evidence, altrimenti…nisba!” – rispose risoluto il CLR. Allo stesso tempo fece un gesto indicando i suoi inservienti che si occupavano in modo sistematico di un byte alla volta in ingresso ed in uscita, senza particolare fretta, ma senza alcun intoppo.
Al byte quella risposta non piacque proprio. Se fosse entrato nel regno del CLR, cosa gli sarebbe accaduto? D’altro canto, il prezzo da pagare era alto, perchè rischiava di cadere prigioniero dell’armata di bytes che ad ogni ciclo di clock era sempre più vicina.

Alla fine si decise. Senza dire una parola, il byte saltò tutta la fila in attesa, finendo davanti al gate 0x04 del CLR, il quale gli stampò in fronte una evidence che gli assegnava i permessi di esecuzione più bassi in assoluto. Il byte fece un passo in avanti. Non appena entrò nei confini di stato del Common Language Runtime, si accorse di non poter più vedere al di fuori di esso, perciò non riuscì a capire quanto fosse andato vicino alla cattura.

Fece in tempo a vedere un mondo diverso. C’erano palazzi altissimi, con milioni e milioni di piccole finestre, con striscioni con scritte codificate in Unicode che dicevano System.Data, System.Windows.Forms, System.Reflection e System.Collections. La cosa che più lo colpì fu…il pinning che il gargabe collector gli appioppò sulla nuca. Il byte svenne, cadendo immediatamente. Venne prelevato dal GC e spostato in un heap sicuro e ben protetto, in attesa di essere allocato per qualcosa di produttivo.

Fu lì che il byte sognò per la sua prima volta.

Sognò di volteggiare su un prato verde, in un volo onirico fatto di lampi di luce che si abbattevano sui fili d’erba annerendoli. La velocità gli faceva perdere il controllo, sbalzandolo a destra e a sinistra, facendogli perdere quota o facendolo impennare in alto. Le nuvole, che un attimo prima sembravano irraggiungibili, ora potevano essere toccate con la punta dei suoi bit. Dopo un tempo indefinito, potevano essere 0x000A cicli di clock o 0xA000, il prato verde assunse una pendenza man mano sempre più ripida. All’inizio appariva come un territorio scosceso, poi una dolce collina dal terreno ondulato, poi una montagna ricoperta dal verde più intenso che il byte avesse mai visto. Nonostante il terreno si facesse sempre più impervio, il byte non rallentava la sua corsa verso la vetta della montagna, una punta aguzza, che – ne era certo – rappresentava la sua tanto agognata libertà. Quando la raggiunse, vide che l’aspetto appuntito era conferito da una piramide ricoperta da una texture che sembrava pietra, una roccia di qualche tipo, che il byte non riconobbe. Sulla cima c’era un cratere, come se la piramide fosse in realtà una sorta di vulcano artificiale. Vulcano…calore, energia esposiva ed incontrollabile. Il byte provò l’irrefrenabile impulso di tuffarcisi dentro. E così tento di fare. Non appena entrò nella bocca della vulcanopiramide, un’ondata di calore lo avvolse facendolo sentire vivo. Urlò, ma non di dolore. Urlò di gioia, come se dovesse scaricare una tensione che teneva dentro da molto tempo, forse troppo. Urlò per la grinta, come se dovesse affrontare da solo tutti quelli che lo braccavano dentro il sistema.

Urlò, e basta.

Send to Kindle
My daily work

La mia giornata tipo è cambiata

E’ ormai più di un anno che lavoro come consulente in ObjectWay (abbreviato OW). Ho iniziato nei primi giorni di Aprile 2007. Rispetto al modo di lavorare che avevo nel biennio prima ancora (Aprile 2005 – Aprile 2007), periodo nel quale facevo consulenza per un’altra società (abbreviato ME), ci sono molte differenze che voglio riassumere per fare una piccola riflessione fra me e me.

  1. Il cliente di OW nel quale lavoro mi fa lavorare in team di sviluppatori. Il cliente di ME faceva lavorare in team con persone molto più diverse fra loro (developer, ingegneri gestionali, analisti, matematici, etc.)
  2. Con l’incarico attuale mi sento più responsabilizzato. Il mio lavoro qua non è solo scrivere codice, ma anche quello di coordinarmi con gli altri, di assicurarmi che il repository sia sempre aggiornato ed allineato fra i membri del team, di analizzare problemi, di fare demo con il cliente e di partecipare attivamente a riunioni dove si prendono decisioni concrete
  3. Rispetto ad una volta, oggi lavoro e vedo lavorare con le più disparate tecnologie: .NET, Java, web-server, servlet, etc.
  4. Ho molto meno tempo libero durante la giornata, tempo libero che io all’epoca traducevo in tempo per bloggare e per studiare. Oggi, come dicevo a Mauro durante il ritorno dalla Valtellina, faccio molta più fatica a bloggare, che si traduce alla fin fine in minor costanza nel farlo
  5. Oggi per lavorare capita che debba usare la voce. La mia parlantina ogni tanto mi torna utile. Al termine di una demo che ho tenuto un po’ di tempo fa ad un cliente (pubblico pagante: una decina di persone), mi si è avvicinato un tizio che mi fa: “Complimenti! Mentre parlava del suo prodotto, sembrava che stesse parlando di suo figlio! Ci ha messo passione!“. Solo dopo mi han detto che quel tizio era l’amministratore delegato del cliente! Son sempre soddisfazioni!…Quel giorno ho camminato…ehm…tre metri sopra al cielo. Puntualizzazione: se mai un giorno dovessi avere un figlio/a, vorrei che assomigliasse a chiunque tranne che ad un Windows Mobile (sì, Lorenzo, anche se fosse un HTC Touch Diamond P3700).
  6. Oggi scrivo molto meno codice SQL. Sto meglio.
  7. Oggi scrivo molta meno documentazione. Sto meglio. Per me il codice è documentazione. Più il codice è parlante e meglio è.

Chissà quante altre cose troverei da dire, ma adesso non mi viene in mente altro.

Technorati Tags:   

Send to Kindle
My personal life

E con l’uscita dell’Italia perdo anche…

…i circa 60 euro che avrei vinto con l’offerta Mediaworld (quando ho comprato la videocamera) se l’Italia avesse vinto gli Europei di Calcio.

Peccato, ma sono contento per il popolo spagnolo perchè mi è simpatico e soprattutto perchè ha meritato più di noi. A questo punto…spero che vincano loro ‘sto campionato, così potremo dire di aver perso contro i migliori!

Olà, Spagna!

Technorati Tags:  

Send to Kindle