sapte tricouri

Anu’ trecut, dupa ce a inceput balamcul, m-a mancat in cur sa ma mut #pafranta pentru un contract. Pentru ca COVID19, am zis ca stau la hotel ca nu era sigura treaba cu cat o sa stau p’acolo si cum evolueaza lucrurile si tot asa.

Long story short, am ajuns sa stau vreo aproape noua luni in hotel.

Am plecat io d’acasa cu doua geamantane cu haine. Bine, 1 jumate, ca aialalta jumate era plina cu masti ca nu stiam cum sa zic masca in franceza si nici unde sa le gasesc si nici daca o sa ramana aia fara cum s-a mai intamplat. Sa fiu sigur cum se duce.

Din cauza de niste cretini cu care trebuia sa interactionez zilnic, am ajuns sa folosesc din geamanatanul ala jumate de haine doar vreo 7 tricouri + sosetele si chilotii aferenti. Si o bluza pentru cand era iarna.

Am avut cre’ca cel mai mare ROI pe niste haine cumparate vreodata, ca le-am purtat de au inceput sa se rupa si sa arate ca alea scumpe deja rupte de prin magazine. Cel mai mandru sunt de bluza aia ca s-a tocit maxim la maneci si arata misto de tot.

Anyway, ideea era ca nu-ti trebuie prea multe sa traiesti si nu-i pasa nimanui ca porti aceleasi haine un an sau oricat le-ai purta, chiar si intr-un mediu din asta de business.

Important e sa nu puti.

mortal kombat

Filmu asta e aproape la fel de prost ca serialul ala din ’96-’98 sau cand a fost si cu Mortal Kombat: Anihillation la un loc. Ba da’ prost rau. La modul ala in care trailerul a fost mai misto decat tot filmul pus cap la cap.

Si futu-i in gura de hoti, incepe bine filmul, cu Hiroyuki Sanda pe post de Hanzo Hasashi, si eram “sa vezi ce jmecherie de film cu asta pe post de Scorpion”. Si cam atat fu misto, ca lupta cu Subzero incepu bine si se termina mega prost si dupa aia tot filmul fu din ce in ce mai prost pana la final.

Astora de au facut filmul ar trebui sa le dea cineva un premiu pentru filme proaste, gen Oscar sau ceva. Ba fu atat de prost ca pana si un film din ala cu Steven Seagal gras si cu paru’ vopsit are un scenariu mai bun.

viva l’italia

SImpatic film, asa pentru o sambata seara de carantina frantuzeasca. Mai ales ca pot sa si pricep un picut asa din ce zic astia fara subtitrare.

E amuzant cu fiecare limba are “Capra crapa piatra’n patru”, si intr-o scena asa au tradus din italiana, si ca nu intelegeam, am dat-o pe engleza subtirarea, si acolo o bagau pe aia cu “sea shells on sea shores” :))

automation

Cateodata mai am si zile din alea in care chiar trebuie sa muncesc, nu doar sa am opinii despre ce ar trebui altii sa faca. Da stiu, maxim de trist, da’ cateodata mai trag paiu’ scurt…

Cand am mult de lucru, mai ales pe implementari, incerc s-o dau pe automatizare cat se poate de mult din vreo doua motive mari si late:

  • sa nu-mi pierd mintile
  • sa nu gresesc prea mult ca mi-am pierdut mintile

Pentru asta ma dau in general cu Python ca mi-e la indemana si so far mi se pare tata’lor la structuri de date. Adica pentru ca pentru un fisier de intrare de genul:

smc3r01-t1,11.12.13.14,tf
snc4l01-t1,15.16.17.18,t
snt3b02-e1,19.20.21.22,f
tmc5o04-c1,23.24.25.26,tf

pot sa scot o structura de date de tip key/value intr-o linie de cod (bine, 3, da’ oricum):

#!/usr/bin/python3
import csv

with open('t.csv', mode='r') as t_infile:
  reader = csv.reader(t_infile)
  t_nodes = {rows[0]: [rows[1], rows[2]] for rows in reader}

Si dupa aia sa fac chestii cu t_nodes gen:

for n in t_nodes:
  print(n,t_nodes[n][0],t_nodes[n][1])

Pentru ca de fapt t_nodes arata de fapt asa:

{'smc3r01-t1': ['11.12.13.14', 'tf'],'snc4l01-t1': ['15.16.17.18', 't'], 'snt3b02-e1': ['19.20.21.22', 'f'], 'tmc5o04-c1': ['23.24.25.26', 'tf']}

Pai sa ai un key/value store (sau dictionary cum ii zice de fapt) in 3 linii de cod in care valorile sa fie o lista, genius. Sa nu mai zic ca poti avea un dictionare de dictionare pentru cand lucrurile chiar sunt complicate.

Exemplul asta l-am dat ca ca mi-a dat clientul un Excel cu cateva mii de linii si un alt Excel cu doar cateva sute de linii si mi-a zis sa fac sa fie bine :)

Varianta aia indiana era sa zic ca mai am nevoie de cativa oameni care sa utilizeze un GUI, unde dureaza minim 30-40 de secunde de dat click-uri, introdus date si validat sumar pentru fiecare linie din aia din fisier, si asta dupa ce intri intr-un ritm cat de cat decent de lucru.

Varianta mea dureaza 2 secunde pe linie ca e API-ul un pic incet. Si nici nu face greseli. Scriptul meu adica, ca API-ul nu e scris de mine sa fie perfect =)))

Alteori lucrurile sunt mai complicate decat a citi stuff dintr-un CSV, dar alea’s povesti pentru alte alta data.

O alta chestie de vreau sa zic, ca tot am adus vorba de Python, ala de a inventat f” string sa aiba noroc de-un harem de tinere si sa dea la buci pana o sa-i cada pula, ca e absolut geniala functionalitatea asta.

def mkgeneric(what, element):
  if element == '':
      return f' {what} "Any"'
  if len(element.split(',')) == 1:
      return f' {what} "{element.strip()}"'
  if len(element.split(',')) > 1:
      element = element.split(',')
      el = []
      for i in range(len(element)):
          el.append(f'{what}.{i+1} "{element[i].strip()}"')
      return ' '.join(el)

Fara asta scriam la .format() de-mi ieseau ochii, asa il bag direct pe unde trebuie fara nici o treaba, si asta e un exemplu simplu…

Tot pentru automatizare, dar mai mult pentru prototipare (da’ gay mai e cuvantul asta in romana) folosesc Postman, care este genial – mai ales ca poate sa iti zica si cam cum ar trebui sa arate codul intr-un limbaj de programare, gen Python, pentru ce incerci sa faci.


Pe langa treaba de mai sus, cu Postman poti face super debugging cand vrei sa vorbesti cu un API. M-a scos de cateva ori cand vorbeam cu API-uri necunoscute si cu documentatie scrisa de autisti…

Si e bun si cand iti faci singur API si vrei sa-l validezi ca si merge :))

Long story short, lucrurile devin un pic mai usoare daca le faci programatic.

force multiplication

Ma screm la postul asta de vreo luna si ceva. Nu ca ar fi greu, da’ nu pleacau cuvintele din degete spre taste sa ajunga pe ecran.

La fizica e un capitol in care te invata de scripeti si parghii, gen cum sa depui mai putin efort ca sa obtii ceva. Un sistem destept de scripeti sau parghii iti dau posibilitatea sa obtii foarte mult depunand cat mai putin efort.

Cateodata e filosofica asa fizica asta. Si nu, nu baui nimic de scriu asta. M-am mai desteptat un pic pe masura ce am mai imbatranit.

Din comunism am ramas cu punga cu pungi si sertarul in care pui chestii pe principiul ca niciodata nu stii cand iti trebuie o tubulara e 13 sudata intr-o cheie de 16.

Eu am dat sertarul de tubulare pe sertarul cu cunostinte. Punga cu pungi inca e acolo, si la modul ala de “cum recunosti un roman in strainatate”, am punga cu pungi in hotelul unde stau de ceva vreme. Pe principiul ca poti sa scoti romanul din romania, da’ nu poti sa scoti romania din roman.

Dar sa revenim la sertar. Scriam pe la inceputul lui 2019 despre lucrurile de baza. Si nu s-a schimbat nimic de atunci, doar ca am realizat ca nu toate problemele le poti rezolva cu cheia de 13, cateodata trebuie s-o prinzi de aia de 22 sa poti aplica mai multa forta sa insurubezi cum trebuie ceva sau sa desurubezi ceva strans bine. La fel cum cum 2-3 scripeti si un pic de sfoara face anumite lucruri sa fie mai usoare de cat sunt.

Anyways, cu cat ai mai multe cunostinte din cat mai multe domenii sau subdomenii, cu atat poti sa faci mai repede inferinte si sa iti dai seama cum poti rezolva o problema complexa. Asa cum o forta poti s-o desparti in vectorii componenti, asa si o problema complexa o desparti in problemele mai mici si le rezolvi pe toate alea si cand o rezolvi pe ultima mica ai rezolvat si problema mare :) Gen ca atunci cand rezolvi un sistem de necunoscute multiple la algebra.

Cumva ce incerc sa zic e ca cu cat stii mai mult, cu atat poti sa-ti faci treaba mai bine si fara sa ai nevoie de prea mult ajutor din exterior. Problema e ca toata distractia asta nu scaleaza nici vertical si nici orizontal, adica nici nu pot tasta mai repde si nici nu ma pot clona.

Mi-a venit sa scriu asta cumva legat de un proiect in care m-a mancat in cur anul trecut sa ma bag unde toata lumea si-o arde foarte enterprise si corporatist, unde sunt echipe si echipe care stiu doar anumite lucruri si nu e treaba lor sa stie si altceva si gen sunt singurul care nu are nevoie de nimic – independent si autonom ca ungurii, si mai am timp sa le explic si la altii una alta, ca specializarile astea nasc monstri si monstrii cand se imperecheaza nasc nu neparat fotomodele… ca sa termin asa asa pe un ton filosofic subtil.

Pe scurt, cu cat stii mai multe, cu atat lucrurile devin mai usoare si mai simple si au mai multa logica ;)

remarkable 2

Anul trecut am prins o reclama la Remarkable 2 si m-a facut din filmuletul de prezentare. Am pus comanda si pe undeva pe la sfarsitul lui Noiembrie mi-a venit. Cat am fost eu prin .ro prin decembrie nu m-a incantat s-o folosesc ca nu aveam chef de scris si inca eram obisnuit cu agenda mea de la Muji si cu pixul de la Muji care scrie perfect pe agenda de la Muji.

Anyways, fast-forward in Ianuarie 2021 si ii bag cat sunt la client cu Remarkable de n-am aer. Pana acu’ le-am dat cu “mama ce misto scrie, mi-as lua si eu” la aproape toti care au vazut tableta.

Ce e misto:

  • creionul ala zici ca e creion si “guma” merge sa stergi aproape la precizie
  • super responsive si are un fel de “document cloud” pe undeva si salveaza mereu acolo cand inchizi un caiet
  • tine bateria cateva zile la utilizare normala

Ce nu e chiar asa misto:

  • formatul, mi se pare un mic cam mare, dar poate mi se pare mie ca am venit de pe un B5
  • nu stie sa faca scaling si reflow la PDF-uri cand faci zoom, gen cum ar face un ebook reader

Acum folosesc agenda de la Muji sa “trec pe curat” notitele – poate in felul asta o sa am si eu agenda care arata asa… sort of profi, fara mazgaleli.

Cu ocazia asta mi-am pus pe lista de “lucruri de invatat in 2021” si cum sa fac poze care sa nu para ca’s facute cu telefonul fix :))