Puccia il biscotto.

Buon #NoCookieDay

amo il web, non ricambiato

Ricordo a navigatori e Garante della Privacy che il rispetto della cosiddetta Cookie Law (provvedimento dell’8 maggio 2014, pubblicato sulla Gazzetta Ufficiale del 3 giugno 2014) per questo sito non è in carico a me medesimo in pirsona pirsonalmente in quanto i cookie sono in gestione diretta da parte del legittimo proprietario della piattaforma, azienda statunitense che a quanto pare non ha alcune intenzione di preoccuparsi degli eccessi burocratico-legal-fintotecnici italici.

Pertanto detengo il solo controllo dei contenuti ma non credo vi siano attivati solamente cookie squisitamente tecnici.
Cookie di profilazione eventualmente presenti sono quindi al di fuori del mio controllo e pertanto non posso (con estremo rammarico) esporre alcun fastidiosissimo banner che tanto avreste cliccato a occhi chiusi senza prestare la minima attenzione se l’accettazione illustrata fosse riferita ai cookie o a eventuali servizi hot.
Ammesso pertanto che qualcuno si prenderà mai la briga di controllare questo modesto spazio vi pregherei di voler far pervenire l’eventuale sanzione a…

View original post 72 more words


9 truths that computer programmers know that most people don’t.

Computer programmers know far more about computers and code than the average person does, and honestly some of it’s scary.

Fact #1

“Under the hood, most critical software you use every day (like Mac OS X, or Facebook) contains a terrifying number of hacks and shortcuts that happen to barely fit together into a working whole. It would be like taking apart a brand-new 747 and discovering that the fuel line is held in place by a coat-hanger and the landing gear is attached with duct tape.” – Ben Cherry

That’s the funny thing about code, the website or program may work beautifully, it may run smoothly, and it may be absolutely beautiful on the front-end side (what the user sees). But, behind everything that makes it work it will have so many errors, and work arounds that barely work and that shouldn’t work, but do for some strange reason.

Fact #2

“That about 25% of the hours spent writing an application are spent figuring out ways the end user will do something wrong.” –Brian Humes

Now, the 25% number may be less, may be more, depends on the developer and what you are doing. Everytime we build something, we have to sit back and think of how the end-user will end up fucking it up. What they will click on, what they will write, the phrasing of questions, the language used, and how what we write could be interpreted differently. If we wrote the code like how we would use the project, well then there will be so many issues because we know how the program works, and the end user doesn’t.

Fact #3

“A programmer is not a PC repair man.” – Ritesh Kumar Gupta

A programmer is one who deals with algorithms and design principles, not the one who repairs a computer. We may know how the internal workings of a computer work, how code fits together (or rather hacked together as I explained in Fact #1). But, that does not mean we know how to fix hardware. That does not mean we know how to fix that issue you’re having with chrome that makes it crash everytime you open it, or why your computer is always overheating and the battery dying. Computers programmers, at the least know how to program computers, not fix them.

Fact #4

“Programming is thinking, not typing.” – Casey Patton

Most of programming is spent sleeping, walking around, staring out the window, or doing anything else that helps you relax and think. Relaxing is a major key to programming, its not just sitting down and writing a thousand or more lines or code, and pushing out a program or app. We have to sit down, walk around, and just think. We need to think about how to come up with the concept, fix the issues with it, find a way to make it work, how it’s going to work. Relaxation is the only way we can fix the issues the best way we can.

Fact #5

Counting starts from zero, not one.

This is important in every programmers life. Counting starts at 0, your “1” is my “0”, your “10” is my “9”. The reason why this is because computer programming is all about efficiency, and even small improvements in efficiency can make big differences at scale.

Zero-based numbering or index origin = 0 [1][2] is a way of numbering in which the initial element of a sequence is assigned the index 0, rather than the index 1 as is typical in everyday non-programming circumstances. (source)

Fact #6

“Programming is best done “in the zone” – a (pleasant) state of mind where your focus on the task is absolute and everything seems easy. This is probably much like “the zone” for musicians and athletes.” – Morgan Johansson

Ever wondered why programmers are known as nightbirds? Why we stay up all night? Because it allows us to get into the zone, it allows us to focus on one thing and not have to worry about being interupted by someone – because they are all asleep. It’s a long stretch of the day where no one is up and no one is calling or trying to talk to us. It’s a great time to program, and think.

Fact #7

Sleeping with a problem, can actually solve it.

If you have a problem you are told to sleep on it, forget it, put your mind at rest. But, with programmers its the go to way to solve the problem not because it gets us away from it, but because it for whatever reason helps us solve the problem with our code. Many times I have come across an issue, spent hours and hours of work on it, just trying to fix what should should be a simple problem with a simple fix. But, by going to sleep for 20minutes, an hour, six hours, twelve hours, we can wake up and immediatly know the answer to the problem.

Fact #8

A parent may kill its children if the task assigned to them is no longer needed

Not something you would like to hear someone say while out, now is it? (and if it is, you should seriously check into a mental health facility, or turn yourself into your local police department).

It’s not as gory as one would think, programs are written like a hierarchy. With the parent managing the processes below them.

When a parent no longer needs a child they kill it, meanign when a program no longer needs to do something (say send an email), they kill the connections to the server as its not needed, basically killing the child.

And finally, fact #9

Just as you’re usually not impressed when we brag about how much we know about computers, we’re not impressed when you brag about how little you know about them.

Seriously. Just stop, please it’s annoying. We don’t care. We really really don’t care how proud you are of not wanting to learn new things. Now, its understandable if you are just saying “I don’t know much about computers” or “I’m not really interested in computer programming” but bragging about how much you dont know about computers is just annoying. Stop.

Thanks to http://macleodsawyer.com/2015/03/06/nine-truths-computer-programmers-know-that-most-people-dont/

Featured image took from http://www.wdyl.com/#programming

Featured Image -- 118

EPROM Coffee Table


Either in need of a coffee table or suffering a severe lack of upscaled electronics, [Darren] just finished up a great build for his living room. It’s a huge, scaled up version of a UV erasable EPROM with an infinity mirror in place of the fused quartz window.

[Darren]’s coffee table was inspired by an earlier build by the geniuses at Evil Mad Scientist. A few years ago, they built a 555 footstool that was scaled up about 30 times its normal size. Even at footstool scale, the 555 is still relatively tiny.

[Darren] is using a similar construction technique by forming the legs of the EPROM out of laminated plywood. Since this build is significantly larger, building the entire device out of solid, laminated plywood would result in an unwieldy and expensive piece of furniture. Instead, [Darren] constructed the legs and sides out of plywood laminations, covering…

View original post 98 more words


noooooooooo … non succede solo a me …

amo il web, non ricambiato

Agenzia: Il sito del cliente deve diventare responsive, anche su Explorer 6!

Io: Mah… non riusciamo ad avere gli analytics con uno spaccato dei browser nelle relative versioni? Così capiamo bene quelli effettivamente utilizzati dagli utenti per accedere al sito…

Agenzia: Non possiamo basarci sul traffico reale…

Io: Cioè?

Agenzia: Consideriamo il browser più diffuso tra i dirigenti del cliente: se loro vedono il sito male, il sito va male.

Io: Uh?

Un valido contributo di Digital Chef che Ama il web, non ricambiato. E vorrebbe sviluppare siti non compatibili con IE 6, usatissimo dal Cliente. Come se i siti venissero realizzati per essere navigati dagli utenti reali!

WYSIWYG: What You See Is What You Get

View original post


Sempre così …

amo il web, non ricambiato

Cliente: Eh, sarete anche bravi ma io tutti questi soldi per un sito non li ho…

Io: Possiamo cercare di ridurre qualcosa, magari semplifichiamo qualche parte o togliamo delle sezioni. Ci avete chiesto molte funzionalità che forse non sono così…

Cliente: No, no. Magari metteteci meno a fare la grafica, che ne so… fatelo meno… non si può fare più… sì, insomma ovviamente impegnandosi però… cioè deve funzionare bene ma magari potete.. non mi viene il termine, come si dice in questi casi?

Un sospeso contributo di Amoilweb, che sempre rimpiangerà di non aver risposto come da titolo. Purtroppo sovviene ciò che dice il noto regista Renè Ferretti, profondo conoscitore di questo nostro tempo: “la qualità c’ha rotto il cazzo… “

View original post


Open letter to a possible customer

Dear $client,

I greatly appreciate you are considering my company as a potential partner for your project.

Nevertheless I feel the urge to let you know something about me, and my company.

The big assumption

As an Apple Senior Manager once told me when I was working for a mobile telecomm operator: “We don’t need your money.”. This sentence is the “big assumption” that should regulate our conversation.

When we will meet the first time

If you say to me something like “You know, we like you, but there are a lot of companies out there willing to work with us” you can bet my reply will be: “Yeah, I’m sure about that, and I guess they are as much as the clients willing to work with us. Let’s call it even?”. What you must know is that this is true. I am not bluffing. Lucky us, we can still choose.

Another thing you should not say when talking to me is: “You know, we have our way to do business here.”. Fair enough. I hear you. It will sound strange to you, but we have our way to do business as well. Your statement does not automatically translates to: “You will do everything I ask to close this deal.”.
No, it does not work that way. You should read once again the main assumption, and try a different approach.

I will be very excited to know more about your project and being provided with your brief. Nevertheless I must say that I will not do anything for free. Never. I am sure that I explained in great detail what we do in our company, how we work, and, more importantly, why we work in such a way. If your brief states that I will have to work on something (e.g. creativity proposal, strategy, and so on) that even remotely resemble a program deliverable, you will have to pay for that. Again, we don’t do work for free. If you look at our company, I am sure you have noticed that we are supposed to make money and create value for our shareholders. We are not an NGO.

If you start the meeting talking about money that immediately rings a bell to me. I am already placing you in the list of clients I don’t want to make business with. You should start talking about your business goals and how you think you may hit those goals with the project we are talking about.

The proposal

When I ask you the question “What budget did you allocate for this project?”, and you reply “We have budget for this, but I won’t tell you.”, you are heading directly to the situation where I will fire you as a client.
It is a fair question, and its main purpose is to avoid you and me wasting time. Time is my most precious resource, and I will do whatever is needed to preserve this scarce resource.
You are not answering my question because:

  • you think that whatever the budget is I will make a proposal that will exactly match your budget whatever the scope of the project is.
  • you have no idea of what you need.
  • you don’t have the budget.

No matter what is the case, I’m going to fire you as a client.

The pitch

I think it’s fair enough to ask you who will be attending the pitch meeting. I don’t see any reason you should not give me this information.

As a good professional would do, I have mapped your organization, and I know who is going to be the decision maker, the roles of the different stakeholders and the name of the “boss”.
Everybody will need to be on time, especially the boss. I will not start my pitch since everybody in the attendee list will be in the room. Again, both of us don’t want to waste their time, and mine is as valuable as yours. Now a few words for you, boss. I understand that joining a meeting fifteen minutes after it has started. That’s one of your way to let people know you are the boss. Well, “that doesn’t impresses me much.”. It makes me angry. I know how my reptilian brain works and I have learnt to control it.

I love the work the architects have done on your offices, and the interior design is looking great. That said, I will not wait for you for more than fifteen minutes. I am a very polite guy, and the case is that I may have been standing out of your building the last thirty minutes or so since I hate to be late. You must as polite as I am. There are only few things that will make me accept you are late on your schedule (e.g. a meteorite has hit your house, our country is being invaded and a few more other things). If you are late, I will leave, and I will try to reschedule the meeting. If you feel offended by this, I suggest you go back to the main assumptions.

The negotiation

I like to negotiate, and I can negotiate for ages without starving.

Please note that the meaning of the word negotiation is not a synonym of blackmailing or threatening. If I feel that you are trying to blackmail or threaten me, I will fire you as a client right away.

I know the value of what we do, and I am not keen to give our products and services away for less than they are worth.

You can ask for a discount, but you should not take it for a given. Usually things become more difficult when procurement is involved. More often than you can imagine procurement does not understand what you are trying to buy from me. Your help here is greatly appreciated. The sentence “OK. We are all set. I will now leave you to the procurement for negotiation” is not the right way to deal with it. The procurement guy and myself are playing a comedy, and you are part of the plot!

I welcome compliments and appreciation for our work, but that’s not a shortcut for a discount.

Saying to me that the program we are negotiating is part of a bigger initiative that may be awarded to my company if this first program will be a success will not have any effect on my behavior or my pricing. On the contrary, I will probably increase the pricing since I am sure you will ask for a discount on next programs since you are a recurring client.

Honest. I hate when you put the word “investment” close to something that is related to the work we should do for you. Let me be clear on this. In this relationship, you are supposed to make the investment to reach your business goal. I am here to sell the products and services you need to accomplish that result. Not the other way round.

Actually I have something against the word “partner” for the vast majority of occasions in which you will use it as well. Refer to the previous paragraph for more informations.

Finally, you should know that even if you read on my business card that I am a Chief Strategist I am a smarty pants sales guy. I have seen, studied and managed the most complex sales already. This one is no different. Showing muscles does not impress me much. Chances are you will make me walk away without regret.

The execution of the program

I am very excited you decided to work with us and that you are eager to start the program. I am, as well. Unfortunately, I must decline your request to start the program before the Statement of Work sign off. You have to put some ink on paper before we can actively engage with you. Come on. Show me some commitment.

As you may have noticed from the paperwork, we have signed a Statement of Work that is binding for both of us. We have mutually agreed on the content. Surprise, surprise! You have to stick with that, and I have to do the same. I understand that something may change during the execution of a program, and we can manage that efficiently using what we have already written in the Statement of Work (i.e. Change Order). Please notice that everything you will change in the shape of the program will have a direct impact on one of the three variables that govern the program: scope, price, and time.

We have signed a contract, and I can bet that there isn’t something stating that I have sold you slaves. We banned slavery in Europe since 1500.

During the execution of the program, we detailed the schedule of deliveries, and we will stick to that. I kindly ask you to the same with payments. You may find it strange but people, and companies, like to be paid for the work they do. I am sure you ask the same thing to your clients, and I do not see any reason you should behave differently with me. I would also remind you that we have kick ass lawyers that are eager to take money from our pockets to bring you to court. And yes, they do look like sharks.

Please do not hesitate to contact me any question should arise. I am looking forward to working with you.

Yours sincerely,

Obviously this is a joke, and you should take these words as that. It’s just a list of things I really hate to hear during my everyday job.

Took from this blog post
Thank you Alessandro Galetto

Photo took from http://blog.reachlocal.com/


Perché non ci sono più tanti programmatori?

Linkback: http://www.gardainformatica.it/blog/sviluppo-software/perche-non-ci-tanti-programmatori

Diventare un buon programmatore è incredibilmente difficile e non accade rapidamente.

Non possiamo aspettarci di piantare alcuni alberi e ottenere la crescita di sequoie di 2000 anni in una notte, indipendentemente dalla richiesta per esse.

I tratti della personalità

  • In sostanza bisogna essere degli autodidatti per imparare la programmazione. Ci vogliono anni di pratica per imparare tutto il necessario per andare oltre un semplice livello base dove puoi scrivere piccoli programmi che funzionano. Nessuno è mai diventato un grande programmatore semplicemente seguendo corsi o leggendo libri. Ci vogliono ore di pratica. E contrariamente alle credenze popolari, i programmi dell’università non insegnano a programmare. I programmi dell’università insegnano la teoria.
  • Come programmatore, hai bisogno di avere una tenacia quasi illimitata per poter continuare a provare a risolvere problemi, correggere e sviluppare cose. C’è bisogno di una persona speciale per perseverare così tanto, specialmente quando spesso sembra che non si stia facendo alcun progresso. Questo è più o meno un tratto della personalità e non avere questo livello di perseveranza è sufficiente per spegnere la maggioranza delle persone che non lo possono avere dalla professione.
  • Devi essere eccezionale in matematica e nella risoluzione di problemi. La programmazione ha un sacco di problem solving.
  • Devi avere un memoria eccellente a breve e a lungo termine, in modo che tu possa manipolare più cose nella tua testa contemporaneamente e ricordare quello che hai scritto un mese fa.
  • Devi avere una vasta comprensione di come le cose interagiscano tra loro e come progettare una buona architettura. Se cambio questa piccola cosa qui, cosa potrei rompere da qualche altra parte?
  • Devi avere un’incredibile attenzione ai dettagli. Vicino non è sufficiente nella programmazione. Dimentichi un punto e virgola? Il programma non compilerà! Sbagli il nome di una funzione? Il programma potrebbe fare qualcosa di completamente differente da quello che avevi previsto.
  • Non avere questi tratti della personalità è sufficiente per escludere la maggior parte delle persone.

La materia conta

  • Devi avere una profonda comprensione delle strutture dati e delle classi e devi sapere quando e come usarle.
  • Devi avere familiarità con librerie che sono già state sviluppate in modo che tu non debba reinventare la ruota.
  • Devi avere familiarità con un sacco di algoritmi base e avanzati, di nuovo, in modo che tu non debba reinventare la ruota.
  • Spesso devi conoscere i limiti dell’hardware su cui sta lavorando in modo da poter fare cose come gestire la memoria correttamente ed evitare di consumarla tutta, o utilizzarla opportunamente in modo da eliminare lo spreco di dati nei trasferimenti all’interno del processore e velocizzare così l’esecuzione.
  • Quindi sai programmare. Grande! Ma sai nulla della struttura dei pacchetti, di TCP/IP, HTML, CSS, progettazione di interfacce utente o database? I programmi non girano isolati.
  • Ci sono tonnellate di roba che devi sapere e che continua a cambiare! Non è qualcosa in cui puoi essere veramente grande a meno che non sia il tuo obbiettivo principale. Non puoi essere un “programmatore della domenica”.

Ambiente di lavoro

  • Hai bisogno di avere lunghi periodi di tempo ininterrotto in modo da non perdere la concentrazione quando stai programmando o imparando a programmare. Molti ambienti di lavoro lottano per offrire questo. Il telefono squilla? Grande, serviranno 15 minuti per recuperare il filo logico.
  • Spesso devi prendere delle decisioni al volo su compromessi. Certo, potresti scrivere un programma che possa gestire ogni singolo caso, ma quanto spesso qualcuno inserirà davvero “zero” come input? Inoltre, siamo in ritardo ed è più importante avere qualcosa di funzionante adesso.
  • Sopra a tutto ciò, il linguaggio di programmazione che pensavi sarebbe stato la prossima grande cosa si è rivelato una moda passeggera e nessuno lo sta più usando 5 anni più tardi. Adesso sei sul prossimo linguaggio fico che potrebbe non essere utilizzato prima dei prossimi 5 anni. Devi costantemente rimanere aggiornato.

Oltre a ciò ci sono gli aspetti manageriali.

I Programmatori vengono spesso trattati come operai. Le persone senza talento nella programmazione (e meno senso degli affari) sono spesso responsabili di progetti. Loro pensano che i programmatori siano ingranaggi all’interno di macchine. La verità è che i programmatori sono artigiani e per ottenere i migliori risultati da un progetto la cosa più saggia da fare sarebbe quella di chiedere a chi è esperto nella programmazione come le cose andrebbero fatte! Praticamente tutti i progetti finiscono per sforare il budget e in ritardo, obbligando i programmatori a lavorare tonnellate di ore più del necessario per consegnare un prodotto progettato e testato male. I grandi programmatori si accorgono che non vengono pagati più di quelli mediocri perché il management non sa capire la differenza e, oltre a ciò, devono fare lavoro extra per compensare il basso livello dei colleghi. E i grandi programmatori che parlano e cercano di migliorare le cose vengono spesso intimiditi dai managers i quali tentano spesso di sbarazzarsene. Questo è sufficiente per capire come mai le buone persone lascino perdere la professione, specialmente da quando ci sono un sacco di altre opportunità. Anche solo i programmatori medi, posto che siano abbastanza bravi a interagire con le persone, hanno sufficienti capacità per avere successo in molte altre professioni. La programmazione è qualcosa che può essere facilmente trasferita al di fuori, ma non all’interno.

E’ meno probabile che i bravi programmatori siano casualmente in cerca di lavoro.

E’ facie trovare programmatori. E’ difficile trovare programmatori bravi. I programmatori mediocri sono probabilmente alla costante ricerca di lavoro. I programmatori bravi, se l’azienda si accorge che sono bravi, lo sono probabilmente molto meno poiché l’azienda fa qualsiasi cosa per aggrapparsi a loro. E quando lo fanno sono esigenti su dove vogliono lavorare – il che spiegherebbe perché molte aziende si lamentano che “non ci sono bravi programmatori disponibili, tutto quello che riusciamo a trovare sono programmatori mediocri”. Come è stato detto altrove, un buon programmatore può certamente valere molte volte quello che un programmatore medio vale e un programmatore mediocre può in realtà avere un valore negativo. Ed è veramente dura (se non impossibile) per i programmatori medi e mediocri diventare dei buoni programmatori – e certamente il rischio non vale l’investimento per nessuna startup quando si suppone che sia concentrata su sviluppare qualcosa rapidamente per averlo fuori dalla porta.


Quoto in pieno quanto ho trovato in questa introduzione -> http://roots.io/an-introduction-to-the-roots-theme-wrapper/ poiché mi sono trovato diverse volte ad affrontare questo argomento, spesso, a mie spese.

DRY simply means Don’t Repeat Yourself and conforming to the DRY Principle means:

Every piece of knowledge must have a single, unambiguous, authoritative representation within a system. [1]

So whilst we have a base format for our pages, this “knowledge” is written countless times, spread across numerous files and has no authoritative representation. This is the opposite of DRY code and it’s usually described as being WET, meaning that you WriteEverything Twice.

As you can see from the wrapperless template, WordPress goes beyond writing everything just twice, which is why I prefer the termCRY or Continously Repeating Yourself [2]. Whatever you want to call it, it wastes your time when creating the code, when reading the code and when editing the code; it’s a lose-lose-lose situation (plus repetition is only fun in rhetoric) but it’s easy enough to avoid.

  1. [1]: Coined in The Pragmatic Programmer by Andy Hunt and Dave Thomas.
  2. [2]: Cry => Tears => Wet. Coined by Nick Fox, in this article, it won’t catch on, but sometimes it’s nice to be a footnote.

Super computer


Io: Sai, hanno costruito un nuovo supercomputer che batte il primo in classifica.

(rif. http://www.hwupgrade.it/news/sistemi/milky-way-2-48000-intel-xeon-phi-e-32000-cpu-intel-xeon-per-il-pc-piu-potente-del-mondo_47441.html )

Amico: caspita! è davvero potentissimo … chissà che ci faranno …

Io: com’è scritto nell’articolo, cose tipo analisi di dati immensi, mappatura del genoma umano, calcoli costosissimi

Amico: …chissà se ci mettono eMule a quanto scarica …

Io: si si il ciuccio con il jetpack ..