Visualizzazione post con etichetta programmazione. Mostra tutti i post
Visualizzazione post con etichetta programmazione. Mostra tutti i post

lunedì, marzo 28, 2011

.NET non e' un MacDonald

Prendo spunto da questo articolo consigliatomi dal Dread per trarre alcuni spunti di risposta

Ho letto il post e non posso nascondere che mi abbia toccato nel
profondo. Ho aspettato un po' di ore (e l'una e quaranta di notte) per
riordinare le idee e mettere giu' due righe con un senso logico, in
modo che non potessero generare flame o discussioni orientate verso
una direzione sbagliata. L'argomento mi piace e ne puo' nascere una
bella discussione. Mi spiacerebbe rovinare tutto. Per di piu' penso di
essere uno dei pochi qui dentro che fa un uso spinto di .NET (WPF,
Silverlight, WCF, LINQ, EDM...) e quindi non vorrei rischiare di
ritrovarmi un coro di persone con idee totalmente diverse dalle mie
con cui e' difficile capirsi, semplicemente perche' si guardano le
cose da due prospettive troppo differenti. In questo caso mi scuso e
mi tolgo dalla discussione.

Perche' il brano mi ha toccato? Mi ha toccato la parte in cui si dice
che lavorare in .Net significa cucinare in una cucina del Mac Donald,
e che ogni giorno passato li' dentro e' un giorno in meno passato a
cucinare in una cucina Francese di alta classe. Mi sono sentito in
difetto e mi sono fatto un bell'esame di coscienza per capire se
stessi facendo una cosa sbagliata o no. Specialmente dopo che
all'inizio del post mi sono immedesimato perfettamente in questo:

"See, experience is cheap. All it takes is time. Skill is harder,
but really only requires hard work — a lot of people can get that.
But attitude. You either have it, or you don’t. The right sort of
person is so passionate about coding, they can’t be stopped from doing
it. They typically started before high school — sometimes before
middle school — and never looked back. They write everything from
assembly to jQuery, on PCs to mobile phones, doing hard core computer
graphics to high level social networking. They’ve tried everything."

Quanto e' vero cavolo. Adoro programmare, esprime totalmente la mia
creativita'. Non so comporre musica, non so disegnare, non so
scolpire. Programmare e' la mia arte, e' il mio io. Do' tutto me
stesso nel codice che produco e spesso lo perfeziono per cercare di
migliorarmi costantemente. Mi trovo a ragionare sul modo di rendere un
algoritmo ancora piu' perfetto, ancora piu' "bello".

E questo secondo me prescinde il linguaggio di programmazione o le
librerie o il framework che si usa.

Amo programmare e mi ritrovo spesso e volentieri alle 9 di sera con la
giornata che mi e' volata alle spalle. Stanco ma felice del mio
lavoro. SI ovvio capitano i giorni in cui hai dovuto fixare bug, in
cui hai dovuto lavorare alla cazzo di cane perche' la scadenza e'
vicina e ho prodotto codice osceno perche' buttato giu' con fretta
senza pensarci troppo. Non ci sono cazzi: quella funzionalita' del
programma va implementata entro domani. Hai solo 10 ore. Poi magari ci
ritorno dopo e la modifico, la miglioro. Lo so che e' un modo
sbagliato di lavorare ma trovatemi un BUON posto di lavoro in cui non
fanno cosi' e in cui io abbia possibilita' di essere assunto (a
GENOVA) e mi ci fiondo.

E questo secondo me prescinde il linguaggio di programmazione o le
librerie o il framework che si usa.

Dicevo che sono rimasto toccato e ho fatto un bell'esame di coscienza
per capire se stessi facendo qualcosa di sbagliato. Mi sono reso conto
che alla fine e' vero, c'e' poco da dire: lavorare con .NET (e ancor
"peggio" con Visual Studio) ti lega profondamente a Microsoft e al
loro modus operandi. Lo dico senza troppa vergogna: se dovessi tornare
ai puntatori e a gestire le cose a basso livello penso avrei non poche
difficolta'. Mi sentirei perso senza il mio LINQ con cui posso trovare
un'oggetto in una lista cosi':

Int32 abdulId = list.Where(p => p.Name ==
"Abdul").Select(p=>p.ID).FirstOrDefault();

e mi sentirei perso senza la fottuta facilita' con cui trovo il nome del mio pc:

String myName = System.Environment.MachineName;

Si' e' vero. Probabilmente con questo livello di astrazione rischio di
perdere di vista cosa succede nel sottobosco, e di non avere la
capacita' di portare a compimento tasks che richiedono di fare cose
non previste dal framework .NET (chesso'.. fare una scansione a basso
livello dei bit sulla COM2 ad esempio... anche se secondo me si puo'
fare in .NET... non riesco a trovare cose che non si possano fare
oggettivamente, ma e' proprio di questo che stiamo parlando: io uso
.NET e il resto non esiste, e sono io a essere coscientemente in
difetto. Scusate la parentesi lunga).

Quindi mi rendo conto che certe cose non le so fare, anzi non mi rendo
proprio conto di cosa siano queste cose, che forse e' anche peggio.
Pero' per fortuna non ho lavorato solo con .NET nella mia vita. E
posso dire per esperienza che mi diverto molto di piu' a lavorare con
.NET che con PHP. Riesco a esprimere maggiormente la mia creativita'
con .NET che con JAVA. Negli anni la mia esperienza mi ha permesso di
crescere e di conoscere .NET in maniera molto ampia, e di spremerne le
potenzialita' fino al midollo. Questo mi permette di usare tutti gli
strumenti possibili per fare quello che voglio fare, nel miglior modo
possibile. Sto diventando molto bravo (e lo dico senza superbia, ma
con una punta di orgoglio per i risultati ottenuti dopo tante fatiche)
e alla fine dei conti il mio software viene utilizzato da tantissime
persone che lo usano, lo apprezzano e/o lo criticano. Personalmente
non mi sento minimamente in difetto. Sono contento, sono creativo,
sono pagato, e sono felice. Molte volte mi dico che se avessi dovuto
fare le stesse cose in Javascript sarei diventato scemo e ci avrei
messo 100 giorni invece che 1.

Ci sarebbe tutto un capitolo sui paragoni che io non ho condiviso.
Sono un po' troppo forzati. Non mi sento davvero un lavoratore di Mac
Donald (e non perche' non puzzo di olio). Proprio per il fatto che
riesco a esprimere la mia creativita' mi sento molto piu' vicino a una
casalinga italiana che a un povero cuoco del mac donald. Si magari gli
chef francesi sanno fare i piatti piu' artistici ed estrosi del mondo,
ma io con il mio tiramisu' fatto in casa spacco il culo ai passeri

E poi per quanto a volte ci siano solo scoiattoli, e che una volta
cucinati debbano essere comunque buoni mi viene solo da dire che io ho
la (s)fortuna di avere sempre un supermercato ben fornito sotto casa,
e se ho bisogno di qualcosa faccio la spesa. Mai e poi mai mi
ritroverei solamente con uno scoiattolo. Ne' mai mi vorrei trovare in
quella condizione. E se mi ci ritrovassi.. beh sara' la volta che
moriro' di fame.... Senza contare il fatto che uno scoiattolo per quanto sia ottimo, non e' nemmeno paragonabile alle lasagne, al tiramisu, ai ravioli al cinghiale.

Cazzo mi e' venuta fame. Buon appetito a tutti

domenica, gennaio 16, 2011

if you can't beat them join them

Prima la MS decide di supportare anche architetture ARM, perchè si vede che il mercato di tutto quello che può stare in tasca inizia a far veramente gola.
Poi ti rilascia WebMatrix ed il Progetto Orchard (CMS open)

Ma la cosa che mi ha appena fatto capire che non ce la fanno più col passato è questa pagina che giuro, se l'avessi vista solo un anno fa, mi avrebbe fatto gridare al Fake clamoroso:



Non vedo l'ora di creare pagine che mischino PHP e ASP.NET!!!
PSP? No. AHP forse?!?


Procede il progetto Lutris, un tool per facilitare il gaming sotto GNU/Linux. Per lo più in lista sono presenti emulatori vecchi e nuovi.
The project is in early stages of development and a lot of work has to be done. The project also aims to provide a system where users can rate the games, invite friends or join in a online game much like Steam.

lunedì, luglio 12, 2010

Nokia Share Online: bizzarrie

Tanto per cercare di dimostrare a me stesso che il mio Nokia 5800 basato su Symbian S60v5 è ancora rilevante in questo mondo di app store pieni di cose bellissime (tranne l'Ovi Store, chiaro), mi sono sbattuto e ho implementato un backend per il servizio Share Online sui nostri Beta Labs.

E' una funzionalità mezza nascosta a nelle profondità della galleria di immagini che consente, di default, di inviare foto e video ai soliti Flickr, Ovi e ad un certo Vox.
Il bello del sistema è che si possono aggiungere altre destinazioni senza passare attraverso il sistema tritapalle dei certificati delle applicazioni Symbian.

Per chi vuole la vita semplice c'è roba tipo Pixelpipe, ma in pratica fanno da proxy e devi donargli le password a tutti i servizi che vuoi usare. Poi fai anche cose carine, ma non sono il tipo che vuole postare foto su dieci blog diversi contemporaneamente, fare un FTP e magari anche "twittare" il fatto per buona misura, tutto in una volta sola.

Per chi fa le cose serie, invece, c'è un po' di codice da scrivere. Il sistema vuole un file di configurazione in xml per crare il servizio di upload sul cellulare. Questo basta farglielo scaricare dal browser di Symbian e lui, pafff, si crea il nuovo servizio.
Dopo c'è una fase si autenticazione, in cui il cellulare chiede se le credenziali che ha sono giuste.
E poi si può iniziare a inviare foto. Per pubblicare la Nokia ha deciso di usare il dialetto SixApart di Atom, con un twist che non so se è originale Sixapart o idea Nokia, che prevede due scambi http per ciascun upload, nel primo si manda il file e nel secondo si manda il titolo e chiede se è andato tutto bene.
In un protocollo senza stato come http, chi l'ha pensato è un genio.

Nokia fornisce anche, in modo molto trasparente, una guida -semplice semplice- -copia e incolla- per farsi il backend in casa e mandarsi le proprie foto dove si vuole. Peccato che i sorgenti pubblicati contengano un paio di bachetti bastardi...
Ripulirò un po' le mie versioni funzionanti e le metterò a disposizione, per chi vuole giocare un po' col servizio, anche se temo di essere rimasto l'unico ad avere un Symbian, qui dentro...

giovedì, giugno 05, 2008

Il mondo ha bisogno di programmatori esperti

Oggi vado sul sito della Macrom... ehm Adobe, e provo a scaricare la mia versione trial di Flash3. Mi dicono che non posso fino a Luglio 2008... EH?????????

Vado nelle FAQ e quanto leggo ha del surreale:

"During the month of June 2008, certain product trials that are launched for the first time (regardless of when they were installed) will function for only one day instead of 30 days, due to an error in a line of code that counts down the remaining days in a trial. You will not experience this issue if you have launched your trial before June 1, 2008, or do not launch it until July 1 or thereafter. We understand that trials are an important tool to experience the new features of a product. However, this issue would have resulted in a frustrating situation for a large number of customers — an experience that just does not meet the high standards we have set for all of our products and solutions. We invite you to explore the other resources available on Adobe.com in order to experience the products in action."

CAPITO? Hanno tolto le demo per un mese perche' c'e' un bug in UNA riga di codice...
Minchia ma solo a me suona di PALLA mostruosa? Ha lo stesso sapore di Berlusconi che dice che Biagi se ne e' andato dalla RAI perche' voleva i soldi della liquidazione.

Ma se fosse vero, siamo in una situazione davvero davvero brutta. Altro che global warming, qua si sta perdendo il senso del codice ben fatto. Super Cerioli dove sei???

venerdì, marzo 07, 2008

Robotic Liberation

Capolavori sul Vic20


Robotic Liberation, released at Assembly 2003, is still my finest show-off regarding what can be made with an unexpanded VIC-20 (and a standard disk drive). The demo is designed around an apocalyptic concept similar to that in Robotic Warrior and contains refined versions of many of the ideas introduced in my earlier work.
...
Despite continuous loading, Robotic Liberation is no larger than about 17 kilobytes. It could fit in the memory of a 16K-expanded VIC-20 all at once, and it has actually even been run in such a way.





nel sottobosco underground si celano molte versioni custom di prodotti Microsoft: questa versione ottimizzata (e ristretta) di Vista mi ha incuriosito. Qualcuno ha voglia di provarla prima di me?

un fenomeno della ginnastica artistica

martedì, febbraio 26, 2008

"Hello World" e il Web

In molti conosceranno la pagina di Wikipedia con la lista di tutte le implementazioni di quello che volgarmente è lo "stampare la stringa 'Ciao, mondo!"

Come non citare la versione in Unlambda

`r```````````.H.e.l.l.o. .w.o.r.l.di
linguaggio noto per la sua semplicità:

Mathematically, the core of the language can be described as an implementation of the lambda-calculus without the lambda operation, relying entirely on the K and S combinators. Hence the name “Unlambda”. It uses head (“eager”, “by value”, “strict”) evaluation. I cannot claim originality there. However, as far as I know, I am the first to have taken this theoretical concept and made it into an actual (deliberately obfuscated) programming language. I added a couple of functions (chosen for their obscurity) to the language so as to make output (and, in version 2, input) possible, or just to make things even more obscure (delay and call/cc are such).

E' nota anche la pagina parodica in cui un varia l'età, l'esperienza e la mansione di chi scrive il codice

Successivamente ne è stata creata una versione relativa al web

Caso anomalo è però JavaScript, negli anni infatti non è stato modificato sostanzialmente il core del linguaggio (beh in qualcosa si ). La cosa più evidente da quello che si vede in questi esempi è il come il linguaggio sia usato diversamente (in un formato JSON-like sostanzialmente) dal passato.



2000

var myText = "Hello World";
var _textNodeParent;
var docNodes = document.childNodes[1].lastChild.childNodes;
for(var j=0; j<document .childNodes.length; j++){
if(document.childNodes[j].lastChild){
for(var i=0; i<docNodes.length; i++){
if('div' == docNodes.item(i).nodeName.toLowerCase()){
if('layer_main' == docNodes.item(i).id.toLowerCase()){
if (null != document.getElementById('bparent')) { document.getElementById('bparent').parentNode.removeChild(document.getElementById('bparent'));
}
_textNodeParent = document.
createElementNS("http://www.w3.org/1999/xhtml", "html:b");
_textNodeParent.
id = 'bparent';
docNodes.
item(i).appendChild(_textNodeParent);
_textNodeParent.
appendChild(document.createTextNode(myText));
}
}
}
}
}
2008(oggi con Ext)

myVp = new Ext.Viewport({
layout:'fit',
autoHeight:true,
id:'myVPid',
items:[
new Ext.XTemplate('',
'{text1}{text2}{text3}',
'').overwrite(Ext.get('layer_main'),{text1:'Hello',text2:' ',text3:'World'})
]
});

Update chiarificante:

L'articolo json-for-the-masses di DustinDiaz spiega quali siano i benefici nell'utilizzare rispetto al tradizionale stile funzionale lo stile "ad oggetti" in JavaScript.
(On Functional Programming) The role of a function becomes globalized and yet becomes vague as to what its purpose is. Give it scope, then we’re in business
esempio funzionale:
var a = '';
var b = null;
var c = document.getElementById('c');
function init() {
// ...
}
function doThis() {
// ...
}
function doThat() {
// ...
}
function tweakThis() {
// ...
}
function runThat() {
// ...
}
function wrapThis() {
// ...
}
function stringifyThat() {
// ...
}
function calculateThis() {
// ...
}

window.onload = init;
No doubt we can fill in the gaps as to what this possibly might mean. The problem is that this may be okay for some small project where you’re the developer and the boss, but for any project of a respectably large size, you’ll find out that this is going to cause problems fast.
Esempio a oggetti

var behavior = {
a : '',
b : null,
c : Object,
init : function() {
// ...
this.c = document.getElementById('c');
},
doThis : function() {
// ...
},
doThat : function() {
// ...
},
tweakThis : function() {
// ...
}
}
var behavior2 = {
runThat : function() {
// ...
},
wrapThis : function() {
// ...
},
stringifyThat : function() {
// ...
},
calculateThis : function() {
// ...
}
}




Altro:

domenica, febbraio 24, 2008

do i fix computer?

Un post di Jonathan Wise che è ricco di riflessioni che personalmente condivido

Chi è veramente uno sviluppatore? Che cosa fa di preciso?
A software developer must be part writer and poet, part salesperson and public speaker, part artist and designer, and always equal parts logic and empathy.
Il software deve essere comprensibile
Once you know how the solution is going to work, or sometimes even before then, you need to figure out how people are going to work with your solution. Software that can’t be understood can’t be used, so no matter how brilliant your design, if your interface isn’t elegant and beautiful and intuitive, your project is a failure.
Ma anche il dettaglio è importante
The attention to detail required of a good interface developer is on par with that of a good painter. Every dot, every stroke, every color choice is significant.

Lo sviluppatore è in parte artigiano...
Only, unlike a salesperson selling someone else’s product, you are selling your own work, and are inevitably emotionally-attached to it. Still, you know criticism is good, because it makes the results better, so you force yourself to be logical about it.
...ed in parte artista

The purpose of code is to express a solution. A project consists of small stanzas, called “Methods” or “Functions” depending on what language you use. Each of these verses must be constructed in such a way that it is efficient, tightly-crafted, and effective. And like a poem, there are rules that dictate how it should be shaped.

Il software vive se viene pubblicato

Its been said that a scientist or researcher must “publish or perish.” The same is true of a software developer. A brilliant piece of code, if not used, is lost. Within months it will become obsolete, or replaced, or usurped, and your efforts will become meaningless, save for the satisfaction of having solved a problem on your own.

Chi programma solo quando DEVE farlo (lavoro o studio) è alla stregua di un mercenario o di un impiegato statale. Lo sviluppo, a programmazione, o meglio il seguire tutte le fasi di vita di un progetto, sono come la musica: sia scienza che arte.

mercoledì, febbraio 20, 2008

abandonware e liberated software

Chi si ricorda di Cadaver, Lure Of The Temptress , Defender of the crown oppure di pietre preziose come Nippon Safe Inc. (made in italy) e SuperHero League of Hoboken?

Il vecchio gioco

Come perdere peso con photoshop

Corso su come imparare a parlare (video in quicktime e lingua inglese, sorry)

Lista di editor di testo per la cronaca E editor, la risposta per Windows al Textmate del Mac fa schifo: per quanto possa essere utile, un editor non si deve permettere di installare cygwin per facilitarsi il lavoro!

Applicazioni gratuite per il multimedia: le conoscerete quasi tutte ma non si sa mai, repetita iuvant casomai qualcuno usasse ancora Windows Media Player...

Il partito dei pirati italiani


sabato, giugno 30, 2007

editoria

Aptana è un ide per il web, sembra il fratello magro di Eclipse e gira abbastanza bene sotto tutte le piattaforme. Prima di scaricarlo ed installarlo, magari date un' occhiata ai tutorial video
Comprende un set di librerie note ai più
Manca purtroppo un'interfaccia wysiwyg per le pagine HTML in stile dreamweaver.

PyScripter mi sembra al momento il migliore editor di Python per Windows: autocompletamento, syntax highlighting e supporto per diverse versioni di Python (2.3-4-5)
Dicevo che è distribuito per Windows e scritto in Delphi, dicono che con wine funziona

In ambito python qualcuno di voi avrà sicuramente provato Plone, il cms basato su Zope, il web server pitonico/pitonale.
E' decisamente curato, sia nella parte di presentazione che nella gestione contenuti. C'è un po' da picchiarsi per applicare personalizzazioni e temi, che sono raggruppati in cosiddetti products.
Diciamo che come alternativa a Joomla per creare un blog od una sorta di wiki va più che bene (e non richiede un db)
In ogni caso Zope sembra bello robusto, purtroppo le soluzioni di hosting lo supportano poco o se lo fanno pagare caro.

Si è da poco svolto il primo PyCon Uno a Firenze e a breve per chi è interessato a Postgres si svolgerà il PgDay

mercoledì, giugno 06, 2007

Eccomi, infedeli!

Per tentare di ridurre un pochino il contributo, ormai continuo e lascivo, dell'Abdul che sente la primavera, eccomi a voi col mio divertentissimo (certo) post settimanale (sicuramente).

Un paio di link estremamente culturali:
Uno screenshot del desktop di Knuth. Secondo me ha scelto dei comandi che dessero un po' di output incomprensibile ai più.
Una presentazione da parte di uno di Google su come fare le API. Un po' troppo orientata sul Java (argghhhhhhh), ma in generale tutta roba sacrosanta.

La prima foto ci rappresenta un'auto modificata con un kit "condizionatore fai da te". Notare le linee aerodinamiche del generatore elettrico inchiodato al cofano.

La seconda sarebbe considerata anti patriottica se fossi americano.

mercoledì, aprile 11, 2007

Codice pericoloso

Il caro vecchio Robs mi ha inviato questa immagine in modo che nessuno possa piu' correre il pericolo di fare codice cosi' pericoloso.. Signori e signore il cast piu' terribile della storia!

mercoledì, marzo 14, 2007

Calcola dadi

Sono sempre qui in Svevia, e in questi giorni mi accingerò a fare un succulento post riguardante il cibo con tanto di foto.

Nel frattempo programmo il mio web-giochino, come pochi di voi sapranno.

Tra una cosa e l'altra, mi è capitato di aver la necessità di sbirciare le probabilità sul tiro di N dadi a TOT faccie, e mi è venuto lo sfizio di scrivere un programmino che le calcolasse.

Fattolo, per quanto semplice, magari risparmio minuti/ore di lavoro a qualcuno piazzandolo qua. Non si sa mai.

edit: fanculo blogger merdoso che parsa le tag html anceh all'interno dei "pre", che coglione. Lo piazzo sul foro e bona, uffa.

venerdì, gennaio 07, 2005

TinyP2P p2p in 15 righe

TinyP2P

Da un progetto universitario, ecco il primo client P2P in Python della lunghezza di 15 righe



Segnalato da quel pigro di Shadow