Programming
Ringazio Luca per avermi segnalato l'articolo su Gamasutra. http://www.gamasutra.com/view/feature/3142/scrum_and_long_term_project_.php?page=1 E' interessante perche' descrive bene il rapporto fra i publisher, che vogliono uno schedule dettagliato, e lo sviluppatore che non riesce mai a finire un gioco nel tempo stabilito.
http://discuss.joelonsoftware.com/default.asp?joel.3.219431.12 "And this is the way everyone is doing it now? Everyone is using a general-purpose tool-building factory factory factory now, whenever they need a hammer?""Yes."
I commenti nel codice e' senza dubbio uno dei miei argomenti preferiti: io sono per la zero policy. Nessun commento, a parte cio' che non puo' in alcun modo essere espresso in codice. Oggi guardavo un po' di codice e mi imbatto in: #ifndef _XXXX_MANAGER_HPP_#define _XXXX_MANAGER_HPP_ /// Include guard. A parte l'underscore di fronte ad un identificatore che in C++ e' riservato al compilatore e al comitato di standardizzazione, quindi non deve mai essere usato: il commento e' quanto meno illuminante. Il prossimo entra dritto nella top 10: # define IGNORE_MISSING_DX_FILE // ignore missing file Il commento dice meno di...
... sono arrivati :) PS. I Quad sono i quadrati, non i quad processor.
http://en.wikipedia.org/wiki/Resource_Acquisition_Is_Initialization CWaterRenderingStrategy::~CWaterRenderingStrategy(){ delete m_Geometry; delete m_Shader;} e poi subito dopo: COceanRenderingStrategy::~COceanRenderingStrategy(){ delete m_Geometry;} Boom. Double delete e memory corruption. Qualcuno ha perso due ore per cercarlo. Il mio errore e' stato non seguire il pattern RAII e rilasciare m_Geometry nella classe base, ma la classe base non l'aveva inizializzato quindi non ne aveva l'ownership e non doveva cancellarlo. Nella classe derivata ho correttamente costruito e distrutto l'oggetto, ma l'ho scritta mesi dopo. Per altro... uno strategy pattern in questa situazione era overingegnerizzato. Non mi serviva ed ha offuscato il bug. Altra lezione.
Poi Gianluca mi dice che mi lamento sempre, ma questa proprio non potevo lasciarla scappare :) Oggi il mio sogno e' avere un boss che non mi dice che YAGNI e' un concetto di merda. Il sogno di domani e' averne uno che sappia programmare.
Sto lavorando sull'acqua ed ho bisogno di un task dal tool team per supportare il mio lavoro. Senza entrare nei dettagli, ho bisogno che una regione d'acqua sia divisa in un certo numero di quadrati. Come da mia abitudine, mi mantengo sul semplice e chiedo di generare solo due quadrati, per ora, per un particolare livello sul quale sto testando il mio lavoro. Faccio la mia richiesta un paio di giorni fa e attendo. Oggi vedo un Technical Design Document riguardante il design del tool di editing dell'acqua ed una lunga discussione su come presentare le informazioni, l'algoritmo per generare...
http://thread.gmane.org/gmane.comp.version-control.git/57643/focus=57918 Magari se Linus imparasse anche a programmare un bel giorno non si farebbe ridere dietro da mezzo mondo...
Sembra che faccia male alla salute. Oggi si e' consumata una nuova puntata del dramma: nel branch principale e' vietato fare il commit del codice al pomeriggio, per evitare che la build si rompa la sera, visto che c'e' un ritardo di una o due ore fra il commit e quando il problema e' scoperto. Ovviamente il concetto di automated testing e' del tutto alieno, perche' questo e' l'ultimo chiodo sulla bara della Continuous Integration: un monumento a come non si gestisce un progetto. Poi si domandano perche' non hanno mai finito un gioco con meno di un anno di...
Si', lo e'. L'eterna lotta sui principi cardine della Costruzione del Software fra me e il producer continua in queste calde giornate d'Agosto (e' un modo di dire, qui in UK si crepa dal freddo). Nelle migliori tradizioni, alla mia richiesta di tre giorni per rifattorizzare una parte importante dell'engine caduta un attimo in abbandono, la risposta e' stata un "forse, non lo so, devo vedere con il lead, ma e' davvero essenziale? hai gia' finito il task".Se mi oppongono ulteriori problemi ad allocarmi tempo per i refactoring, usero' la tecnica di Fowler: fallo e non dire nulla a nessuno....
Full Programming Archive