Category Archives: diverse

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 :))

mersul pe jos

Anul trecut cand am venit temporar #păfranța, am zis sa-mi cumpar ceva d’aci de la Apple Store si tocmai bine ca se lansase Watch Series 6, si mi l-am luat, sa am metrice cu ce face corpul.

Si al dracu’ ceas are optiune sa-i zici cam cat de mult sa faci exercitii pe zi, are si el idei, uite asa m-am apucat de facut miscare. La inceput ca era distractiv sa-mi zica cati pasi am facut, si dupa vreo 2-3 saptamani eram cu grija sa-mi fac pasii pe zi.

Uite asa, de la couch potato am ajuns sa am dileme daca nu fac cel putin 6km pe zi si vreo 10000 de pasi. Damn OCD.

Anyways, s-a prins ceasul ca de sarbatori mi-am ars-o pe plaiurile mioritice si mi-a dat task ca pana la sfarsitu lunii sa consum 22.900kcal, gen vreo 800kcal/zi in medie.

Practica a fost mai complicata din cauza de pandemia vietii si de faptul ca francezii astia au primit ordin de la seful lor ca pana la 18:00 sa fie in casa. Astia unde ma prostituez eu imi dau drumul la 17 si pana la 18 am fix o ora sa ajung acasa, ca atat imi ia, cam vreo ~54min.

Ca sa-mi fac pasii ma scol dimineata devreme si ma dau jos din tramvai cu vreo 3km inainte, merg pe jos pana la birou, p’acolo sunt 2 etaje intre care trebuie sa ma plimb relativ des si seara mai compensez un pic pana la tramvai si asa scot vreo ~600kcal.

In weekend-uri am tot mers, da am mai avut si treaba si long story short, azi de dimineata m-am trezit si ceasul imi zicea ca daca nu bag ~1500kcal nu-mi da insigna ca am facut treaba buna in Ianuarie.

Acu’ stiu eu cum e cand nu faci ce-ti zice tehnologia, ca toti am vazut Terminator si Matrix, si asa ca la 8 azi, duminica, eram in picioare. Pe la 9 si ceva am iesit din casa si am ajuns inapoi vreo cateva ore mai tarziu si cu insigna de pionier pe ceas.

Ultimele vreo 200kcal asa au fost maxim de greu de produs, cre’ca si din cauza ca nu mai puteam de picioare, dar si din cauza ca parca ma obisnuisem cu mersul si nu mai dadeam asa randament la consumat energie.

January 2021 challenge completed

Si statisticile pe ziua de azi:

Mers non-stop pana in pizdia si inapoi. Adica asa:

Si pentru cine a inventat vorba aia cu “mersul pe jos face piciorul frumos”, sper sa si-l rupa, ca tot ce am facut au fost bataturi.

Daca as putea sa alerg cred ca as rezolva mai repede cu dilemele astea cu facutul de miscare. Din pacate insa genunchii mei au alta parere.

Dar am insgina de pionier. Yey!

Acum ca am scapat de asta, sper sa nu mai am challenge-uri din astea de mers pana sa-mi iasa ochii din cap.

sunburst

Niste unii, pe nume SolarWinds si-au furat-o intr-un mare fel: niste oameni si-au adaugat niste cod nu tocmai prietenos in directoarele cu surse si cand astia au dat build, au dat la clienti si niste malware sa aiba. Ca doar la cati bani costa produsele astora, merita lumea si un pic de bonus. Din toata distractia asta pot sa trag cateva concluzii super rapide:

  • pula proces de code review la aia, probbil scriu cod in notepad pe share-uri de windows sau ceva
  • pula merge request-uri si alte procese din astea minime de bun simt. oare or folosi vreun soft de version control sau e un share undeva si au directoare cu “final_final_version_1_really_final_2_final”?
  • daca se termina “build”-ul il impacheteaza si-l dau la clienti. Cam cum fac toti astia ultimii ani cu codul: if it builds, it ships.

Printre aia de si-au furat-o sunt si FireEye, cu ale caror produse m-am dat si eu si fac o treaba buna sa analizeze malware si sa zica ce si cum. Mi se pare ironica treaba asta, ca astia de la FireEye erau pe cai mari cum cautau ei chinezi cu binoclul pe google maps si scriau zeci si sute de pagini despre APT-uri si alte minuni si acu si-au luat-o intr-un mare fel. Din punctul meu de vedere meritau sa si-o ia si mai grav pentru simplu motiv ca au uitat regula numarul unu din interne: “oricat de jmecher te crezi, tot timpul o sa fie unul mai jmecher ca tine”. Asa e cand te apropii prea tare de soare, o sugi.

Microsoft a sarit de cur in sus ca vai, dar nu se face asa ceva, spionam, spionam, dar ceste este cu atat de mult “collateral damage” si alte abureli din astea. Microsoft care sunt aia cei mai vocali cand vine vorba de publicarea de vulnerabilitati, ca ei vor ca inainte sa le zici direct lor ca scriu cod prost si sa aiba timp sa puna niste scotch pe ici pe colo si abia dupa nustiucat luni in functie de cum au ei chef ca sa nu se faca de cacat, sa scoate un update de Windows sau de ce produse mai au ei, si abia dupa aia sa faci publica vulnerabilitatea, ca asa este “responsabil”. La fel si astia, si-o ard prost ca sa ascunda faptul ca scriu cod cu picioarele.

Mno, s-o suga toti astia de zic ca sunt cu security da’ ii pisa altii in freza de nu se vad.

parlamentare 2020

Asa la cald, un pic despre alegerile parlamentare din 2020.

Partea proasta e ca n-am putut sa votez, ca sunt in pizdia, si domiciliul e in .ro. Kudos la oamenii de la sectia de votare care erau cu “aveti ceva orice sa dovediti ca stati in Europa? Ca doar asa puteti vota in afara tarii”.

Ca au fost 30% oameni la vot nu e de mirare, mai ales c’a fost frig, sperieturile cu pandemia si tot asa.

De rezultate, PSD a luat ce ia de obicei cand voteaza aia 2-3 milioane ai lor.

USR a luat ce e in bula lor, cam aproape un milion de oameni.

PNL-ul a luat si el vreo 2-2.5 milioane de voturi de la “ai lor”. Personal ma bucur ca n-a luat PNL prea mult ca prea prost si-au ars-o in starea de urgenta cand au furat cu doua maini, si dupa cand au facut tot posibilul sa futa cat mai multe firme si indarjirea cu care il tin pe muiul ala de Arafat in brate.

USR-PLUS au luat fix cat e bula lor de hipsteri. Si eu tot cu ei as fi votat, nu neaparat ca am vreo afinitate pentru ideologia lor, da’ nu-s USL.

PRM a reinviat sub forma de partidul AUR neamuzant. Aparent au un meltean pe post de sef de partid, iar co-sef de partid un traficant de carne vie. Nu ma mai mira nimic in 2020.

Ponta si cu Tariceanu au supt pula si nu mai sunt parlamentari. Poate pe Tariceanu reusesc astia sa-l bage la bulau, eventual pe usa din dos ca tot ii place sa intre pe acolo sa nu stea la coada cu pulimea. Tot prin presa citeam ca cica Tariceanu o sa se bage la nusce emisiune la televizor pe post de balega. Mickey Mouse nu stiu ce-o sa faca, dar hei, Muie Ponta – drum bun si cale batuta.