How to use Cache Headers to speed up your website with Django and CloudFlare

Since I started working at bigger startups, like MinbilDinbil, I had to face the problem of providing pages to a larger amount of users every day. For this reason, it is really important to use a CDN service like CloudFlare, in order to provide a good user experience on our website: we don’t want our clients wait too much to load the homepage! How do we do that? The author of GNU grep once said:

The key to making programs fast is to make them
 do practically nothing

Mike Haertel, Sat Aug 21 2010. Source

So I decided to integrate our django servers with CloudFlare, improving the cache. According to their documentation, to enable the cache, the backend needs to provide specific headers in the HTTP response, like Cache-Control, Expires and others: by using these headers both the browsers and the CloudFlare servers will cache the file for a specific amount of time.

cf-logo-v-rgb

For this purpose, I created an open source customizable middleware to provide cache headers in a smart way. It is called django-smartcc (standing for “smart cache control”). Once installed, it will start considering not authenticated requests as public and disabling the cache when the user is logged in. You can read here the instructions to install it too:

pip install -U django-smartcc

Continue reading How to use Cache Headers to speed up your website with Django and CloudFlare

Communication techniques for lovers.

During the last months, I fell in love with different people. My real problem was that my mind was “acting like a child”, dividing work from loving affairs as two magnets with the same poles attract themselves (hint: they don’t). That’s good, but what happens if you bring “communication techniques” into love affairs? So I realized that, when I am in love, I was not that good in communicating as I am doing while working every day… then I decided to write down some suggestion about the “communication techniques for lovers“.

Communication for lovers (Photo by MartinodF)

I decided to write some simple suggestions based on what happened to me, to remind me to communicate better. I want to apply some communication techniques that I’ve learned from the experience of working in teams, to my future love story, just because I failed in the past.

The fact that we pretend other people to read our needs is really stupid. Is really important that we understand that nobody will ever be able to read clearly what we are thinking, our needs or our interests. Nobody is called Steve Jobs or Jeff Bezos, and only few people are able to understand or create needs in other people. I believe this is the basic problem that brings us to communicate with other people in the wrong way. Continue reading Communication techniques for lovers.

500$ di Soddisfazioni

Circa 6 mesi fa lavoravo ad un progetto abbastanza grosso, che tecnicamente parlando, aveva bisogno di scalare in modo del tutto automatico. Per questo motivo ho creato una libreria Python per interagire con le API di DigitalOcean, e così riuscire a soddisfare questa mia esigenza.  Nonostante la libreria fosse semplice, tramite GitHub in poco tempo ho avuto un riscontro positivo e diverse persone mi hanno aiutato a migliorare la libreria.

Quando ho letto questo tweet, ho pensato ci fosse un errore. Poi ho capito e sono scoppiato in un balletto isterico pieno di gioia 😀

Non mi aspettavo minimamente una cosa del genere: ho fatto qualche cosa di diverso, di utile e Digital Ocean, come già Telecom Italia, ha deciso di aiutarmi a continuare questo mio percorso.

Per me è molto importante avere un riscontro da parte degli altri. Quello che faccio ha più importanza di quello che dico… Anche se ci sono persone che preferiscono una frase o un titolo d’effetto, piuttosto che agire e cambiare veramente tutto.

…e poi non dover pagare i server per almeno 4-5 anni è molto utile per chi, come me, vuole contribuire e fare le cose. Sfrutterò al meglio questi soldi per i miei progetti personali, soprattutto quelli con licenze OpenSource 🙂

Perché adoro l’OpenSource: python-digitalocean

Oggi è successa una cosa che mi ha fatto felice. Da qualche mese mi sono spostato su Digital Ocean. Non ho scritto nulla su questo blog perché prima di dare un giudizio complessivo ho preferito aspettare qualche mese.

Digital Ocean, anche se non è avanzato come la concorrenza, si può considerare come una valida ed economica alternativa ad Amazon EC2. Una delle cose che ho più apprezzato è la piattaforma di FeedBack con la quale molti clienti suggeriscono features. Io ho proposto il pagamento in bitcoin. Dopo un po’ di tempo di utilizzo ho ricevuto questa email:

Digital Ocean Email
Digital Ocean Email

Dato che mi stavano coccolando per bene, ho deciso di ricambiare creando un semplice modulo python per gestire le macchine sulla loro piattaforma tramite API: python-digitalocean( il codice è  su GitHub ).

Poi la magia! Questa mattina, mi sono svegliato con il buon umore in quanto avevo ricevuto una pull request per delle migliorie che D. Yu aveva fatto al codice.

Adoro l’open source proprio per questo motivo, perché altre persone possono migliorare il codice e far crescere il progetto. Da quando ho abbandonato il mio progetto del sistema operativo, nessuno più mi ha fatto pull request. 🙂

Credo che sia la cosa più bella che mi sia capitata oggi! Credo che rimarrò su Digital Ocean per molto tempo 🙂

Meglio sviluppare per iOS, Android o Windows Phone?

Grazie al programma DreamSpark di Microsoft, finalmente posso dire di aver provato le piattaforme di sviluppo per mobile, più di moda in questi ultimi tempi! Ho provato tutto: ho realizzato delle applicazioni native per Android, altre per iOS e ne sto ultimando alcune per Windows Phone 7!

La scelta può essere difficile!

Tuttavia, per chi vuole realizzare applicazioni e non sa quale sistema scegliere, la scelta può essere difficile. Bene o male ho saputo apprezzare tutte le piattaforme di sviluppo ed i servizi offerti ai developers, per cui posso esprimere un parere e dare una serie di consigli per chi proprio non sa cosa scegliere! 🙂

Continue reading Meglio sviluppare per iOS, Android o Windows Phone?

Torino Startup Weekend: Momsquare

Una professoressa e mamma super impegnata, 60 secondi di tempo, l’idea e uno startupweekend: ecco come è nato Momsquare, un progetto che ha attirato l’attenzione della giuria al punto tale da meritarsi il primo posto! Sono orgoglioso di essere nel team di Momsquare!

il logo di Momsquare

11 marzo. Arrivo all’evento, mi registro e mostro il biglietto. Saluto tutti i presenti, mi siedo e ascolto i vari talk. 15 minuti solo per Qurami e poi i pitch degli startupper… e qui viene il bello: mi accorgo che, questa volta, le idee proposte sono poco innovative, mentre quelle poche che in 60 secondi ti hanno acceso il fuoco dentro, si sono rivelate poi deludenti. Tutte tranne due. La prima è un gioco per le coppie innamorate, che si scambiano regalini dolci dolci… peccato che cercavano solo dei tester! La seconda invece brillava subito come idea innovativa perché quando si tratta di risolvere un problema, quando si tratta di venire incontro ad una necessità, invece di crearne una nuova, si parla di pura innovazioneContinue reading Torino Startup Weekend: Momsquare

Resoconto di 4 anni

Come se fossi un anziano in punto di morte, ripenso a tutte le cose che ho organizzato negli ultimi anni. Tra queste c’è quello che chiamavo progetto Siderus che, vista la situazione, credo sarò costretto a chiudere.

Siderus, più che un progetto era una religione: vedere e fare le cose in modo Facile, Semplice, Veloce, Elegante e Libero. Unendo questi 5 aggettivi ho sviluppato una serie di strumenti e applicazioni per realizzare un Sistema Operativo. Riuscendoci anche!

Purtroppo però la realtà è diversa da quello che immaginiamo: Dato che a lavorare con passione e costanza ero solamente io, mi sono reso conto di aver realizzato qualche cosa di troppo grande… o troppo folle!

Continue reading Resoconto di 4 anni