Volta de clau a la seguretat digital

El mètode més habitual per securitzar una web, una aplicació o un ordinador acostumen a ser els passwords. És el mètode de seguretat digital nadiu per defecte: es basa en alguna cosa que sabem, en el coneixement. Però per més que els guardem encriptats i en fitxers protegits o es donin consells per crear-los molt segurs, els passwords son la baula més dèbil de la cadena de la seguretat: la gent acostuma a fer-ne servir els mateixos, o no vigila gaire on els posa (phising o tècniques d’enginyeria social per aconseguir-los).

Per intentar solucionar aquests problemes la seguretat evoluciona: el reconeixement òptic, les empremtes per securitzar un dispositiu, els certificats digitals o els mètodes de login en dos passos (enviant un identificador al mòbil que després s’ha d’entrar a la web, per exemple). L’usuari (el seu comportament) no és fiable, com és, el que té, o forçar-lo a fixar l’atenció (dos passos) ja ho és més.

Ara Google, Yahoo o Microsoft comencen a provar mètodes d’identificació sense login i en un sol pas, derivant la identificació directament cap al nostre mòbil: volem entrar en un lloc, aquest ens avisa en el nostre mòbil (mitjançant una app) que validem l’entrada i ale-hop!, ja estem dins de la web al dispositiu inicial. Fàcil, molt fàcil, sembla. I segurament, a nivell general, incrementaran la seguretat (nota: un altre motiu per incrementar la seguretat dels nostres mòbils).

Ara bé,: aquests nous mètodes i dispositius no seran accessibles per tothom, només per aquells que tinguin smartphones capaços d’executar les aplicacions. La resta, o qui ho vulgui, podrà seguir fent servir la identificació amb el password tradicional (fins i tot en la identificació amb doble pas no calia tenir un smartphone, només havies de poder un sms amb el pin).

El temps ens confirmarà la utilitat i la fiabilitat d’aquests mètodes.

Però es constata una tendència a basar la seguretat no en allò que sabem (els passwords), sinó en allò que som (retina, empremta dactilar) o, cada vegada més, en allò que tenim.

Una curiosa volta de clau a la seguretat digital: basar-la cada vegada més en allò que tenim, com en la seguretat de tota la vida: qui no té la clau, no entra – només que la clau sembla, cada vegada més, un smartphone.

Outliner, Markdown i fitxers de text

He fet alguns retocs a la definició de l’outliner que vaig fer per Notepad++:

  • Petits canvis d’edició (números, comentaris)
  • Afegides paraules claus en castellà i anglès
  • Adaptació gràfica al tema Twilight

L’adaptació gràfica a un nou tema vé donada perquè combino l’ús de l’outliner amb fitxers de text fets amb Markdown (uso un mode de Markdown per l’editor que també usa el tema Twilight).

Aquests dos modes, junt amb la característica d’enllaços clickables del mateix editor em permet tenir un sistema complet d’informació, enllaçat i fàcil de mantenir:

  • Tasques, programació (què faig, objectius, estat)
  • Documentació de suport a les tasques (Markdown facilita la visualització de la informació)
  • Documentació de suport a projectes, plataformes, etc
  • Enllaços entre documents només marcant l’adreça (http://, file://)
  • Fàcil edició: només s’edita en mode text, no cal preocupar-se d’estils
  • Fàcil explotació (cerques, aniuaments)
  • Fàcil exportació: son fitxers de text

Millorar l’ample de banda i els accessos al WordPress

Una de les feines de tenir el blog en un hosting propi és que, de tant en tant, cal fer de sysadmin per tenir-ho tot al dia i que els consums de xarxa no es disparin.

Fa tres mesos va ser això el que em va passar: va començar a augmentar el consum d’ample de banda, arribant de vegades a la quota que tinc contractada… un desastre! Així que va tocar pujar-se de mànigues i entrar a treballar.

Per algun motiu, els consums anaven sense control, i no era pas per un augment de visites… Després de mirar i mirar, he arribat a la conclusió que tot plegat venia donat per més d’un motiu:

  1. Accés de molts robots molt continuat
  2. Intents d’accés a adreces d’administració
  3. Pes de la pagina massa gran

L’accés d’un número de crawlers gran, que fan accessos tothora, incontrolats, multiplicat pel pes excessiu de la plana va fer que el consum augmentés, sense que ho fessin les visites (les estadístiques d’accés marcaven molt tràfic no registrat -el dels robots- i tamanys de pàgina de fins a 180 KB!, i moltes vegades en hores estranyes).

Després d’aplicar un seguit de mesures, he anat vigilant el consum d’ample de banda i els accessos i han baixat espectacularment (no sé quin tant per cent pot tenir cada factor, però han baixat tant els tamanys de la pagina servida com el número d’accessos per robots i fins i tot els accessos -intents- a adreces d’administració, cgi…)

El controls que he aplicat i els llocs on he trobat informació son aquests:

1. Definir un fitxer robots.txt més refinat que el que hi ha per defecte, indicant

2. Tallar l’accés als robots (o intentar mesurar-lo) mitjançant .htaccess.

3. Reduir el tamany de la plana. En el meu cas, no cal que cada plana sigui una landing page i tingui tota la informació del blog i mil i un artefactes per navegar…

  • Escollir un tema que no sigui gràficament molt carregat (per més caches que posem, si eliminem imatges baixem pes, és així de simple)
  • A nivell de disseny, podem carregar el blog amb efectes de desplegables, carrussels, menús i moltes coses més… però cal plantejar-se si la navegació és la que volem o pot ser carregós.
  • Exemple: un canvi en el plugin d’arxiu (l’anterior –Moo Collapsing Archives– generava una llista sencera, ordenada per mesos i anys de tots els posts… no calia. L’actual –Compact Archives– genera una llista molt més compacta). Només això ha aprimat les planes 100 KB.

Un outliner per gestionar tasques

Els diferents mètodes per organitzar tasques pròpies no marquen, normalment, cap eina: és elecció personal de cadascú triar-ne una.

Així, uns usaran outliners (on-line o d’escriptori), altres potser el mateix gestor de correu via carpetes o alguna eina tipus One Note o Lotus, i els més durs usaran emacs amb org-mode).

Després de provar-ne algunes, el que més valoro és:

  • que sigui una eina senzilla
  • ràpida i lleugera (poca càrrega de memòria)
  • facilitat d’instal·lació i gestió
  • que no em tingui lligat per cap format propietari en guardar dades
  • que pugui substituir-lo ràpidament per alguna altra eina
  • que pugui explotar les dades senzillament.

Veient això, finalment m’he decidit per usar un simple fitxer de text, guardant les tasques agrupades per dies i posant una mena d’etiquetes. Tot plegat, com usar un org-mode “sui generis”.

El que faig és guardar les tasques en un document amb aquesta pinta:

13-03-2014 ***
2014-03-13  PDT [CE0371] Ercnffne thv tenpvó qr [rEhoevpn], pbzc
2014-03-13  FET [CE0312] Erivfne rf aúzrebf qr frevr
2014-03-13  FET [CE0022] CZnegn. N sre + cebi nare, dhrqb craqrag
2014-03-13  CUR [CE0357] Pbzcebine shapvbanzrag gf abh freivqbe.
---

14-03-2014 ***
2014-03-14  PDT [CE0371] Ercnff rtenpvó qr [rEhoevpn] v JPP.
2014-03-14  PDT [CE0312] Erivfne  gf, j qr yn GO0071 n yn GO0078
2014-03-14  PDT [CE0312] Raivne er vó ZNPf/IVQZ n Vina. C npvó
2014-03-14  PDT [CE0022] Ervfne fv nzo >>fvtovb/pb  f'raivra ryf< <
2014-03-14  PDT [Frh] Frzof geàzvgf f'rfobeen ha qryf qbf v f'nffvtar
2014-03-14  PDT [Frh] Erivfne credhè f gevtn gnag ra pneertne. 
2014-03-14  PDT [CE0369] Ercnffne qbphzrag q'nedgvyb raivng cre.
---

Setmana ***
2014-03-14  CUR [Setm] Cercn  nygerf [CE0312] (ahzrrf n Vina)
2014-03-14  OK  [Setm] Svanyvgmne ceb cre [CE00222], qrvkn
2014-03-14  CUR [Setm] Qrsvave pbawra cre [CE0352], cebtenzne
2014-03-14  CUR [Setm] Qrvkne gnapnqn ctenqr rEhoevpn [CE0371], nzo
2014-03-14  CUR [Setm] Rayyrfgve freivqbe qr ceegn [CE0357]
---

Com funciona?

  • Guardo les tasques agrupades per dies, i em fixo uns objectius setmanals.
  • Una vegada feta la setmana, les tasques diàries es van agrupant per mesos, i el fitxer va per anys.
  • Format: la primera columna és la data, la segona és l'estat, la tercera l'etiqueta principal i després vé la descripció, que pot incloure tags.
  • estat:
    • PDT Pendent
    • CUR En curs
    • FET Fet
    • REV Revisar
    • POS Posposat
    • OK i KO per tasques setmanals
  • [] marquen etiquetes, que es poden fer servir per remarcar projectes, aplicacions...
  • *** i --- marquen inicis/finals d'agrupacions
  • >> i << marquen l'inici/final de blocs destacats

Senzill, no costa res d'omplir i em permet fer una explotació posterior per projectes o per objectius complerts, o cercar dies o feines...

Per exemple:

  • amb
    grep -o -h "\[.*[^{Setm}]\]" Tasques.notes > resultat.txt

    es poden extreure tots els projectes de la primera columna, i tenim una idea de amb què hem estat treballant (podem fer-ho de tot un fitxer, o seleccionar el període que ens interessi, o combinar fitxers de diversos anys...)

  • Es poden fer cerques per tags (etiquetes entre []) i veure com evoluciona aquella feina
  • Es poden fer núvols de tags per veure què ocupa més el nostre temps

També és veritat que un fitxer de text pla costa de llegir si és una llista extensa, i com que les tasques creixen i creixen, el fitxer on es guarden també ho fa, així que per facilitar la visualització i gestió de les tasques, m'he definit un mode outliner per notepad++, que em permet:

  • Identificar per colors l'estat de les tasques
  • Trobar fàcilment projectes, etiquetes, feines
  • Remarcar comentaris o textos importants
  • Agrupar/desagrupar grups de línies (útil per tancar dies, setmanes, mesos, notes).

Amb una captura de pantalla s'entén millor:

captura_outliner

(els blocs s'obren/tanquen per facilitar el desplaçament entre dies, serveixen per crear notes i es poden aniuar)

La definició del mode és a GitHub, i es pot modificar com es vulgui (el mode té associada l'extensió ".notes" i està associat a un tema fosc, si el proveu).

L’art de programar

Quan desenvolupem codi moltes vegades ens centrem en cobrir els requeriments que se’ns estan demanant, en el temps requerit. Ens basem en la potència dels ordinadors actuals, en la interconnexió pseudomàgica dels serveis o de terceres funcions que usem com caixes negres, sense saber com funcionen, apliquem patrons i fem proves, i si funciona, voilà, ja està fet i a per les següent coses.

Tenim mètriques, proves d’unitat, uat’s, diagrames i casos d’ús per preveure, veure, justificar i informar del que fem i com funciona, tenim tota una metodologia científica i tècnica al nostre abast.

Però desenvolupar codi no és només això: tots sabem reconèixer una documentació ben feta, aprenem i gaudim quan veiem un codi elegant, ben documentat, indentat i precís, i ens desesperem quan trobem instruccions incomprensibles, repetitives i sense documentació que donen voltes i més voltes, complicant innecessàriament el producte (de vegades això reflecteix un mal treball, de vegades es dissimula el no saber fer, la incomprensió d’allò que es demana o de l’eina que es fa servir amb un codi extremadament complicat, com en un mal discurs d’un polític).

Així, programar és també copsar el problema o la solució que se’ns requereix, i treballar no només per força bruta si no entenent tot l’entorn que rodejarà al nostre producte: interaccions, sessions, peticions concurrents o voluminosos treballs batch. Hi ha part d’art, d’aprenentatge en la programació, hi ha la part d’elegància que rodeja a un bon codi, la robustesa d’una api ben definida i la documentació, en línia i final, comprensible per tothom, quan s’hagi perdut l’entorn on va sorgir la necessitat d’aquell programa.

Oh, sí, és clar: al final un programa és un programa.

Però internament és una seqüència lògica d’instruccions per resoldre un problema, i aquesta solució pot ser més o menys elegant, pot no només donar solució a una finalitat, si no ensenyar en si a com fer les coses. Heus ací la diferència entre un nyap temporal que faci una funció i en la construcció d’una solució duradora i elegant: en com apliquem aquesta lògica.