All posts by sin

freelancing

Problema, ca sa zic asa, cu job-ul e ca trebuie sa te duci la birou. Sa vezi oameni, sa interactionezi cu ei, chiar daca-ti place sau nu. Si sa stai la program. Nu peste tot e nevoie, da in mare parte cam asta e regula. Si pe langa chestiile interesante de la job,mai sunt si restul de cacaturi neinteresante si de-a dreptul complet enervante pe care trebuie sa le faci. Pentru ca ai sefi si pula mea, aia au idei. N-am vazut niciodata o fisa de post care sa nu se termine cu “si trebuie sa faci si orice alte lucruri pe care le zice sef’tu”. In caz ca au uitat aia de la HR sa scrie tot ce trebuie sa faci ca sa fie acoperiti legal.

Prin 2015 m-am gandit ca ar fi cazul sa renunt la ideea asta cu statutul de angajat asa in urmatoarea perioada. Mi-a placut in 2013-2014 treaba asta cu rolul de contractor prin desert. Vii, faci treaba, iei banu’ si pleci. Te eneverzi un pic, da la sfarsitul lunii te simti bine cand ai buzunarul greu :)) Cre’ca ce mi-a pus capac asa au fost cele 3 luni de UK cand ma sufocam in “procese si proceduri”. Cu chestiile astea sunt mai din topor asa: vreau sa fac treaba, nu sa ma fut in proceduri si sedinte si celelalte pisaturi corporatiste prin care unii si altii isi justifica existenta.

(poza luata cu nerusinare de pe imgur)

Si uite asa m-am apucat eu de prostitutie intelectuala. Pentru o suma oarecare, clientul are acces la cunostintele mele pentru o ora. Mai vrea o ora, mai baga niste fise. Ca la curve.

Pentru mine a cumva varianta OK de antreprenoriat in oferirea de servicii. Riscul e ca daca nu mai gasesc proiecte mai stau pe bara un pic, insa nu am stresul ala cand ai si angajati si te gandesti ce faci cu ei daca n-ai proiecte.

Uitandu-ma inapoi, e cea mai buna decizie de-am luat-o intr-o lunga perioada de timp. Imi pare rau ca nu m-am apucat sa fac asta cu mult mai mult timp inainte. Da-i prostului mintea cea de pe urma, cum zice proverbul…

Treaba asta e mai motivatoare ca orice bonus de l-ai putea lua ca angajat undeva: cu cat faci treaba mai buna, cu atat ai sanse sa mai ai contracte cu clientii si sa te recomande mai departe si tot asa sa iti faci un portofoliu frumos, sa castigi si mai multa experienta. Si sa faci bani. Ca pana la urma, trecand peste orice vise hippie pe care le mai am eu din cand in cand, fara bani poti s-o arzi romantic doar foarte putin timp. Si dupa o varsta parca dormitul pe jos intr-un sac de dormit sau intr-o masina nu mai e asa amuzat.  O dai de gard, nu faci bani, mori de foame. Cum zic americanii “it keeps me on my toes”.

Exista un singur stres, si ala e sa fii mereu la zi cu cunostintele, ca de aia te ia lumea – ca esti expert, cu ce se intampla in industrie, cine ce mai zice, cam ce se preconizeaza sa se intample in viitorul apropiat si tot asa. Bine, mult spus stres, ca e o asteptare normala sa fii la curent cu diverse chestii de pe langa tine. Noroc ca nu se fac revolutii tehnologice peste noapte.

Pe langa cunostinte, ce conteaza super mult e experienta. Din a mea am invatat ca daca stiu multe lucruri, pot sa iau decizii mai bune in proiecte, pot sa fac inferente mai bune cand ceva se strica si pot elimina repede posibile cauze sau pot gasi solutii creative.

Experienta cel mai bine si mai repede capeti facand lucruri variate si diverse. Intr-o zi o retea, in alta zi un deployment de servere, in alta zi un design sau o implementare de WiFi, mai o arhitectura completa de sisteme. Si bineinteles multa inginerie.

Daca trebuie sa faci treaba la sediul clientului, o sa ai mereu colegi noi, si cum contractele astea nu tin foarte mult, n-au timp sa te enerveze prea tare :)) Si cu unii chiar ajungi sa te intelegi OK si uite asa nici partea cu socializtul nu sufera prea mult.

Daca faci treaba la distanta, atunci si mai bine. Nu trebuie sa vezi pe nimeni in jur si poti sa-ti faci treaba linistit. Asta iarna n-am interactionat cu nimeni vreo 2 luni. Ma uitam pe geam, vedeam mormanul de zapada de afara, bagam repede un “Fuck this shit” si ma intorceam in pat la caldura. Singurele iesiri din casa erau la Mega Image si sa dau zapada jos de pe masina si sa fac curat in jur ca sa pot sa plec repede de acasa in caz de vreo urgenta ceva. Cumva, avand treaba, iarna asta am reusit sa nu ma ingras deloc stand in caz ca o leguma.

Dezavantajul in a lucra la distanta e ca te cam salbaticesti stand prea mult timp prin casa. D’aia in ultima vreme am inceput sa ma campez prin diverse firme, sa mai vad oameni la fata, chiar daca n-am nici un proiect cu respectivele firme.

Acum, cu treaba asta de freelancing, am cateva probleme:

  • Necesita foarte multe disciplina sa te concentezi la lucruri utile cand de exemplu ai de fapt chef sa te uiti la un film. Si nu se uita nimeni urat la tine ca e 11 si te uiti la seriale :))
  • Cateodata n-am chef de facut treaba cu zilele. Si asta ma costa mai mult decat vreau sa recunosc. Cre’ca mi-as da cu ciocanul in degete si cu tesla in coaie in acelasi timp daca as primi banii in avans si dupa aia ar trebui sa-i dau inapoi ca nu i-am muncit.
  • Nu scaleaza. Munca de facut e, dar nu te poti multiplica si nici nu poti munci 24 de ore pe zi. Si dupa 12-14 ore de munca zi de zi in perioadele aglomerate tot ce vrei e sa dormi si sa te mai trezesti peste o saptamana. Si cand esti liber si bagi acolo 3-4 ore pe zi iti doresti sa ai mai mult de munca. Si cand ai vrei mai putin si tot asa. Si piata e dispusa sa plateasca un om un maxim pe ora si nu poti cere mai mult doar ca esti tu super ocupat. Ca mai sunt si altii care stiu sa faca ce faci tu, si sunt mai putini ocupati. Si desi imi place sa cred ca’s super special, sunt la fel de super special ca restul de super speciali. Singura varianta e sa-mi construiesc o reputatie si mai buna, sa imi pun la punct niste procese de a face treaba super-eficient si atunci sa pot sa cer mai mult pe o bucata mai scurta de timp.

Pe langa cele de mai sus, cea mai mare problema pe care o am e ca atunci cand vine vorba de potentiali clienti si de explicat ce stiu sa fac, sunt mega autist. Adica pe scurt, nu stiu sa ma exprim in termeni prin care sa ma fac inteles. La intrebarea “ce stii sa faci”, se pare ca “ce vrei tu boss” nu e raspunsul potrivit… Da’ lucrez intens la asta sa invat sa ma promovez/vand mai bine. Noroc cu ma mai stie unul si altul si ma recomanda :))

Am primit un pic de feedback pe partea asta si se pare ca sunt prea exhaustiv in explicatii si nu sumarizez cum trebuie lucrurile importante. Cumva sunt constient de treaba asta, dar sunt un pic tras din spate de faptul ca eu cred ca daca cineva mai departe trebuie sa ia o decizie pe baza a ce spun eu, e bine sa inteleaga si cum am ajuns eu la concluziile respective. Asta si faptul ca mereu am fost deschis cu toata lumea.

Cel mai mare risc in treaba asta este sa sa se anuleze proiectul din senin si sa te trezesti ca daca aveai planuri, le poti tipari linistit pe hartie moale si dupa aia sa te stergi la cur cu ele. Si sa incepi sa-ti cauti proiecte noi daca nu cumva se anuleaza iarna cand e un moment bun sa te duci in vacanta.

Ce-ti da freelancing-ul e libertate. Libertatea de a alege ce vrei sa faci, cand vrei sa faci, cum vrei sa faci (in limite, ca poti sa ai cea mai mega geniala idee, ca daca clientul are buget de un arc cu sageti, n-o sa poti face niciodata un tanc de banii aia, desi tanc e ce-i trebuie). Si daca nu vrei sa faci ceva, iar e bine. Pana ramai fara bani :))

Bine, trebuie sa stii si ce sa faci cu libertatea asta, ca nu e chiar pentru toata lumea. Zic asta pentru ca am futut la timp liber… asa cu nemiluita. Ca nu stiam sa-l apreciez. Si acum nu mai pot sa-l iau inapoi. Ceea ce suge maxim, dar asa capeti experienta…

TL;DR: m-am facut freelancer, imi place, yay me!

PS: Nu mai scrisesem de mult p’aci, si nu, n-am mierlit-o ca am facut glume proaste la momentul nepotrivit, ci am avut super multa treaba si inca mai am. Si visez sa se termine anul o data sa ma duc intr-o vacanta super lunga sa-mi clatesc creierul.

wonder woman

Me likey.

In sfarsit am impresia ca s-au prins si astia de la DC Comics cum sa faca un film cu super eroi care sa nu suga. Sper ca Justice League sa fie la fel de bun sau poate chiar mai bun ca au loc de povesti pe acolo.

ubuntu 16.04 pxe install

De anul trecut am trecut incet, incet spre DevOps. Mai bag si pe security, da mai rar in ultima vreme.

Doar Ops n-am mai facut de ceva vreme si evident, ca m-am mai ramolit un pic pe partea asta. Iar cu Dev-ul din DevOps  o lalai in Python, ca e bun pentru a programa chestii de sistem.

Pentru un client nou, am avut de facut un server de deployment pentru niste servere fizice astfel incat sa bagi serverul poaspat scos din cutie in priza, sa-l conectezi la retea si 15min mai tarziu sa-l ai instalat. Bine, depinde de viteza mirror-ului asta, ca prin unele tari merge intrnetul de zici ca’l aduc cu galeata.

Ca si distro am folosit Ubuntu 16.04 LTS pentru ca $reasons.

Partea usoara e sa instalezi un server de TFTP si un server de DHCP care sa aloce IP-uri si sa spuna la clienti cum se cheama fisierul pentru BOOTP.

Ca si server de deployment am folosit tot un Ubuntu 16.04, sa fie instalarea intre prieteni sa mearga bine si fara probleme :))

Si pentru ca multe servere, evident ceva care sa faca orchestrare si management. Si ca ziceam mai sus ca o lalai cu Python, SaltStack a fost raspunsul.

Asa ca, cum se face sa deployezi multe servere fizice in vremea lui AWS, GCP si Azure:

  1. Se instaleaza atftpd, se modifica  /etc/default/atftpd si se schimba USE_INETD din true in false. Dupa care systemctl enable atftpd si systemctl start atftpd.
  2. Se downloadeaza un ISO de Ubuntu Server 16.04 si se monteaza cu loop pe sistem.
  3. Se copiaza de unde s-a montat ISO continutul directorului netboot in /srv/tftp.
  4. Dupa nevoie se editeaza /srv/tftp/boot-screens/menu.cfg astfel incat sa bata cu realitatea la fata locului. Cateva note la exemplul meu:
    1. installerul e retardat si daca serverul de DNS raspunde cu AAAA RRs, o sa vrea sa se conecteze pe IPv6 la mirror, chiar daca nu are ruta default pe IPv6.
    2. A.B.C.D se inlocuieste cu adresa IP a serverului de TFTP
    3. eno3 e cum stiu eu ca se cheama interfata de retea pe care o foloseste masina ce va fi instalata pentru DHCP, pentru ca in cazul meu aveam mai multe interfete si se blocheaza installer-ul si te pune sa alegi una (chiar si cu optiunea auto tot la fel face).
  5. Se creeza /srv/tftp/preseed/ubuntu-16.04-preseed.cfg unde se va scrie configuratia pentru installer. La fel, cateva note la exemplul meu:
    1. Installer-ul va crea un setup de tip RAID10 din primele patru discuri de pe sistem. Recipe-ul de RAID l-am bunghit cu #mumu help, ca nu prea e documentat cum se face. E un pic de magie in toata treaba aia.
    2. Peste va configura LVM si / va fi un LV de 30GB pe VG-ul nou creat.
    3. In cazul in care masina va avea mai multe interfete de retea, trebuie specificat ce intefata sa foloseasca in mod automat. Altfel va sta ca boul asteptand sa selectezi pe care sa o folosesti.
    4. $magic_postinstall_setup_script poate fi orice script (bash, python, perl etc.) care face chestii pe sistem inainte de reboot dupa instalare. Scriptul asta de obicei se pune pe un server web, se downloadeaza si se executa. O sa revin mai tarziu cu ce si cum.
  6. Se instaleaza isc-dhcp-server si se modifica /etc/dhcp/dhcpd.conf sa dea adrese dintr-un pool la clienti si se adauga urmatoarea optiune in definitia de subnet:
  7. filename "pxelinux.0";

    systemctl enable isc-dhcp-server si systemctl start isc-dhcp-server.

  8. Se buteaza o masina fizica si se asteapta pana termina de instalat. Daca da oroare sa ceva, trebuie fixata in fisierul de preseed, reboot si de la cap cu instalarea pana merge. Nu exista checker pentru fisierul de preseed. Pe mine m-a enervat maxim treaba asta ca instalarea se facea pe niste Dell R430 si pana buteaza alea mori incet.

Ziceam mai sus ca inainte de reboot, pot da comenzi in sistemul nou instalat sa-l configurez cumva inainte sa porneasca prima oara.

d-i preseed/late_command string \
 in-target wget -P /tmp/ -t 0 -c http://A.B.C.D/myscript.sh; \
 in-target chmod +x /tmp/myscript.sh; \
 in-target /tmp/myscript.sh; \
 in-target wget -P /tmp/ https://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest/SALTSTACK-GPG-KEY.pub; \
 in-target apt-key add /tmp/SALTSTACK-GPG-KEY.pub; \
 /bin/echo "dev.raid.speed_limit_max = 1000000" >> /target/etc/sysctl.conf; \
 /bin/echo "deb http://repo.saltstack.com/apt/ubuntu/16.04/amd64/latest xenial main" > /target/etc/apt/sources.list.d/saltstack.list; \
 in-target apt-get update; \
 in-target apt-get install -y salt-minion

Se pot da comenzi succesive in late_command. Ce trebuie stiut:

  1. Cuvantul in-target ii zice installer-ului sa faca chroot() in noul sistem si sa execute comanda de acolo.
  2. Comenzile date fara in-target se ruleaza de pe mediul de instalare (din installer cum s-ar zice).
  3. Se foloseste combinatia normala + in-target ca unele comenzi nu merg in chroot, ca de exemplu echo $stuff merge doar din installer, in chroot nu merge. Poate imi scapa mi ceva, dar sa stau sa debughez asta dura prea mult.

Ziceam ca pentru orchestrare si configurare am mers pe SaltStack. Eu pentru ca are minioni, colegul de proiect ca i s-a luat de Puppet. Bine, nici eu nu m-am omorat dupa Puppet ca e scris in Ruby.

Cine a facut SaltStack asta a fost inteligent si minionii daca n-au nici o configuratie, o sa incerce sa se lege la salt.domain.name. Si asta inseamna ca tot ce trebuie sa am este un salt-master instalat si configurat acolo un pic, configurat DNS-ul atfel incat salt.domain.com sa bata la un serverul pe care ruleaza salt-master si, dupa ce fiecare masina fizica se rebuteaza, minionul se va conecta automat la salt-master. Magie adevarata.

salt-key –accept-all este raspunsul la intrebarea cum confirm ca minionii inregistrati sunt ai mei :)

monkey see, monkey do

De candva de dinainte de Craciun nu m-am mai dus la coafor. Sau cam asa. Si evident ca mi-au crescut toate cele in toate directiile, mai ales barba.

Si aici incepe distractia. La frontiera se uita lumea la mine de parca urmatoarele cuvinte pe care le asteapta sa le zic sunt Allahu Akbar.

Prin Ianuarie-Februarie stateam linistit la terminalul de plecari din aeroportul autogara Otopeni cand vin sa ma ia la intrebari niste smardoi de la SRI de la antitero. Degetul pe tragaci, pozitie tactica, cum i-au antrenat cine i-o fi antrenat. Ca asa au vazut ei in filme si probabil pe pozele de la antrenamente: teroristii au barba si rucsac.

Si probabil le-a mai zis cineva ca nu poti sa astepti pe cineva la plecari. Ca erau maxim de mirati. Zici ca descoperisera painea feliata. M-au lasat in pace. Si acum regret ca nu m-am dus sa le fac plangere la politie pentru hartuire.

La pasapoarte nu mai zic, ca trebuie sa zambesc ca prostul sa trec, ca altfel trebuie sa scot toate actele de le am sa, sort of, dovedesc ca sunt eu si mai ales ca pozele din acte nu seamana nici una intre ele.

De vreo saptamana asa, au zis aia din SUA si urmati imediat de lacheii din UK, ca daca vii in Orientul mijlociu spre ei, nu mai ai voie cu laptop in bagajul de mana. Sau cu tablete. Ca au gasit ei pe cineva de vroia sa puna bomba in iPad.

Ce face SRI-ul, care mai nou (de cel putin un an asa) si-a arogat si functiile politiei de frontiera pe OTP? Imi verifica laptop-ul de explozivi. Ca vorba ceea: barba, laptop => terorist. Potential. Ca poate n-au anulat cu de la sine putere si ideea de nevinovat pana la proba contrarie.

Ajung la retardatii de polonezi, trec de detectorul de metale care fix atunci, exact aleator, a bipait pentru verificare suplimentara de explozivi. Vorba ceea: barba, par mare => potential terorist. Cum au vazut ei in filme. Cred ca se uita la aceleasi filme cu romanasii.

Prin .pl am ajuns din cauza de LOT, nu ca as vrea sa ma duc acolo. Cand ajungi in civilizatie nu se mai uita lumea la tine ca la felul 14 ca ai barba. Nici la sosire, nici la plecare.

La intoarcere in .ro, unde la pasapoate nu’s securisti (sper ca nu’s infiltrati) care te verifica, e OK, mai zambeste lumea. Probabil asa… ca nici un terorist n-ar veni de buna voie in .ro, au grija politicienii sa nu fie nevoie de bombe aduse din afara.

Asa ca da, sa stam linistiti, daca o fi sa se intample ceva, o s-o mierlim ca la carte cu din astia de profileaza pe motiv ca ai barba mare si par valvoi. Fix ca in filme.

#slack

De prin Noiembrie asa de cand sunt intr-un contract nou lucrez intr-o echipa distribuita, fiecare de pe unde apuca. Pentru comunicatie si sincronizare la ce facem folosim Slack.

Slack, pentru comunicatie e asa… “the next best thing since sliced bread”. Poti sa te uiti sa vezi ce au discutat oamenii inainte sa intri pe un canal, ca de exemplu ce zicea lumea inainte sa vii in corporatie. Sa pornesti clientul si sa te lase acolo unde a inceput convorbirea de cand te-ai logat ultima oara.

Se integreaza cu tot felul de aplicatii (gen Dropbox pentru link-uri la poze/documente). Eu sunt mare fan ca pot sa uploadez poze cu diverse chestii, pot sa fac highlight pe text, pot sa editez ce-am scris (in mare parte pentru a corecta typo-uri), pot sa fac echivalentul a preformatted cand am snippet-uri de configuratie sau cod.

Si arata super bine. Fontul la scris, temele, cum sunt aranjate discutiile. Poate nu parea important, da pentru mine conteaza sa nu folosesc aplicatii care-mi displac cum arata.

Ce suge la Slack sunt thread-urile, da ii dau asa doar juma de bila neagra ca abia au fost introduse si probabil o sa le mai schimbe de cateva multe ori pana o sa gaseasca formula sa arate si alea normal si decent.

Nu e Slack o noutate, da voiam de mai demult sa scriu despre un el ca pur si simplu este foarte misto si pentru cine n-o fi auzit de el, recomand cu cea mai mare caldura.