It’s alive!

A durat surprinzator mai putin decat ma asteptam, am facut cat de cat functionala instanta de ikiwiki de la http://wiki.technostoic.net/blog. Nu-s foarte incantat de un numar de chestii, incepand cu numele de domeniu (asa ca please nu-mi agregati feedul pe nicaieri ca o sa-l schimb), si terminand cu aspectul (e putin cam prea minimalist template-ul default, dar i-am gasit un css cat de cat suportabil pana una-alta).

Am debutat cu un articol despre ceva ce-am facut ieri, generarea de CSR-uri pentru certificate cu mai multe nume. Probabil o sa mai scriu chestii de SSL-fu, ca de voie de nevoie tot invat chestii despre asta periodic.

buh-bye wordpress

Hello, goodbye.

Habar n-am daca mai citeste cineva feedul asta, n-am mai scris nimic de mai bine de un an (probabil pentru ca mi-am gasit un oarece outlet in contul de Google+. Cu toate astea simt periodic nevoia sa ma exprim pe diverse subiecte putin mai verbose decat e tolerabil pe g+, si in plus ma tot rod degetele sa scriu si ceva cod, asa ca m-am hotarat la urmatoarele (anunt aici semi-public, just to shame myself into actually doing them):

  • opresc wordpress pentru ca e overkill pt. ce-mi trebuie si e bataie de cap de intretinut (postul asta se vrea a fi penultimul);
  • fac o instanta de IkiWiki, cu pagini statice, pe care o intretin via git (m-am mai jucat eu nitel cu ikiwiki, da' nu prea aveam in cap o structura, asa o sa incep prin a face un /blog si pe masura ce apare content "worthy" il structurez cumva;
  • aspectul static al lui ikiwiki rezolva o gramada de probleme si ridica una singura majora: commenturile. Nu e neaparat o problema a lui iki (sunt cateva solutii care sa comita commenturile in git), nu vreau sa-mi bat capul cu git pull, asa ca am de gand sa le tin separat. Lumea vad ca mai face asta pe diverse site-uri via Disqus (care mi se pare jenant de slow) si Facebook (descalificat din start). Ca atare o sa-mi fac eu ceva propriu, la o prima analiza nu pare fenomenal de complicat, nitel JS pt. pus pe pagini si un serviciu web care sa le stocheze, just what the doctor ordered. Asta probabil o sa dureze ceva mai mult pana e functional :D

O sa revin, soon™, cu url-ul feed-ului. Wish me luck!

writing docs for fun and profit – IPv6 edition

Hello, stiu ca n-am mai scris de mult ;)

Prin prisma experientelor din ultimele saptamani de cand mi-am tras IPv6 nativ acasa si il folosesc on a daily basis (spre deosebire de ultimii ani cand era doar ceva in plus pe un server), ma bate gandul sa ma apuc sa fac ceva ghid/howto/faq despre chestiile invatate, nu de alta, dar e o lipsa crasa de documentatie disponibila pe net, rfc-urile sunt ingrozitor de stufoase, iar in romana nu gasesti mai nimic. Btw, am inceput ceva pe wiki.lug.ro si vad ca mai apar contribuitori, dar pagina de acolo o sa fie mentinuta scurta si la obiect ca sa nu plictiseasca lumea.

Nu stiu inca cum o sa fac, fie ceva serial aici, fie pe wiki, fie altfel (de mult voiam sa-mi fac un soi de personal wiki, formatul de blog mi se pare cam aiurea), si inca nu-s mare specialist (de exemplu chestiunea care ma framanta acum e cum fortez reconfigurarea interfetei fara sa o restartez).

First things first: ceva sugestii cu ce sa incep?

mi s-a spart un card (si de ce nu e asa mare branza)

Mai devreme am prins niste tranzactii suspecte de pe cardul "de internet". Doua de cate ~200 EUR catre EUROSTAR, una de vreo 70 EUR catre SNCF (aparent, cineva vrea sa se plimbe cu trenul pe banii mei). M-am dus la cel mai apropiat oficiu ING (de la ei am card), sperand ca gasesc pe cineva, dar cum tocmai inchisese, am sunat la hotline, am blocat cardul si am reclamat tranzactiile.

Motivul pentru care stau relativ linistit e ca "grosul" banilor (valoarea mea, valoarea mea...) stau pe alt cont, cu alt card, pe care stiu SIGUR ca l-am folosit doar in locuri in care am avut perfecta incredere: bancomatele ING si alte bancomate care mi s-au parut suficient de secure (da, eu sunt de-ala care trage de slotul de card sa verifice de skimmere), respectiv amazon si paypal, singurii procesatori online in care am avut incredere; da, inclusiv la ePayment foloseam tot asta "insecure" :P

E foarte posibil ca contul sa fi fost compromis mai de mult, pentru ca de obicei tin sub 100$ pe el, insa luna asta a trebuit sa fac rezervari de hotel si mutasem aici in cazul in care voiau sa blocheze banii.

In plus, banca imi ofera un serviciu de monitorizare SMS a tranzactiilor: pentru orice tranzactie mai mare de un anumit prag (momentan 200 RON), sunt alertat imediat pe SMS. Asa pot sta linistit ca vad imediat ce ies banii din cont.

Ce se intampla mai departe? Maine ma voi duce sa depun plangere oficiala la politie, la Brigada de Combatere a Criminalitatii Organizate, dupa care imi voi emite alt card (tot imi expirau cardurile luna viitoare). Inteleg ca in functie de cat de cooperanta e banca catre care s-a facut plata, pot debloca banii respectivi in maxim 60 de zile.

Ce concluzii personale am tras? In primul rand, practica cardului separat s-a dovedit foarte practica si o sa o aplic mai cu strictete (o sa incerc sa folosesc noul card exclusiv la bancomate ING). In al doilea rand, serviciul ala de monitorizare SMS isi merita pe deplin cei 2-3$ pe care ii platesc suplimentar in fiecare luna. In al treilea rand, va trebui sa fiu mult mai strict cu sumele pe care le tin pe cardul ala (desi daca stau sa ma gandesc, n-ar strica sa tin niste bani "de sacrificiu" ca sa poata fi prinsa tranzactia neautorizata, nu refuzata din lipsa de bani).

Asta dupa o zi in care am rescris niste checkuri de Nagios. Monitoring works!

minecraft lol

Azi a aparut in sfarsit CraftBukkit stable pt. 1.8 (aparent toate serverele de multiplayer au asa ceva, permite sa adaugi pluginuri dintr-o mare puzderie). Dupa ce i-am dat de cap cu instalarea (now with more ram for java!), vad ca a aparut pre-release de 1.9. Lol. Care zice ca vrea regenerated chunks pentru NPC-uri si alte dracii. Lol again.

Anyway, sunt curios daca se poate dezvolta o comunitate de minecraftisti care sa nu arate a adunatura de pustani de 6-7 ani, asa ca daca stiti si pe altii pasionati de dracia asta de joc, ziceti-le sa se dea pe minecraft.ro si sa-si faca de cap. Ne organizam noi cumva.

webapp design

Un gen de problema care imi da tarcoale de ceva vreme este construirea si designul de mini-aplicatii web. Web pentru ca daca vreau sa dau altcuiva acces sa ruleze o bucata de cod, in 99% din cazuri o sa prefere sa fie via web. Oh well, se putea si mai rau.

Pe vremea cand se potcovea puricele cu 99 de oca la picior si invatam eu despre web, asta insemna CGI si presupunea sa iti scrii tu headerele HTTP si sa decodezi query-string si asa mai departe numai ca sa faci o singura pagina. Dupa aia au venit PHP dark ages unde nu mi-am facut problema sa scriu de la zero mai mult de 2-3 formulare si niste rapoarte.

Lately am inceput sa dau de frameworkurile astea post-web2.0 si gasesc o gramada de idei interesante. Recunosc ca nu m-am dat prea tare in vant nici dupa Ruby nici dupa Python, dar Rails, pe de o parte si specificatia WSGI, pe cealalta, fac totusi niste chestii dragute. Suficient de dragute astfel incat sa apara si in Perl niste module care sa promita zero-bullshit webapp development & deployment. unele chestii sunt suficient de cool ca am invatat sa ma joc cu ele practic peste noapte: Plack, Dancer, Mojolicious.

Partea frustranta e ca nu ma pricep sa fac design de aplicatii web. Nu, nu ma refer la designul vizual (stiu mai mult HTML si CSS decat mi-ar face vreodata placere sa recunosc iar nici la capitolul UI nu-s chiar nedus la scoala), ma refer la arhitectura. De exemplu cartile de Catalyst pe care le-am citit (care era copilul minune al Perl in materie de web frameworks pana anul trecut inainte de aparitia PSGI) pleaca de la premisa ca cititorul stie ce e aia MVC si mai ales cum sa-si muleze aplicatia pe patternul cu pricina. Eu sincer sa fiu n-am avut ocazia sa scriu cod in mediu asa structurat, iar problemele cu care am eu cel mai des de-a face (sa parsez, transform si editez datele altora) par a fi straine tuturor howto-urilor.

Si nu e doar problema de backend, ci si de interfata, mai exact cum imi fac layoutul url-urilor. REST e teh shit, foarte frumos, dar cum faci design la un API decent? Tot ce-am gasit pe net e un mare circlejerk cu design patterns si cu singletoane si factories si asa mai departe de ma face sa cred ca le-a luat tuturor Java mintile. Ma rog, so far am gasit ceva, dar e prea putin si se opreste imediat ce devine interesant.

Poate pls cineva sa-mi recomande ceva resurse (web sau print) care sa explice problemele astea asa mai ca pentru ingineri?

new minecraft + server

Ura, a aparut astazi 1.8! Oficial, nu pre-release. Cu ocazia asta am facut update la server si am dat si wipe la harta, ca sa isi faca treaba generatorul asta nou de teren. Serverul e vanilla, cu friendly si unfriendly mobs, cand o sa apara Bukkit compatibil cu 1.8 il instalez si vedem atunci ce si cum. In functie de cine mai apare vedem in ce directie il ducem (survival, creative, etc), pana atunci luati si jucati-va.

A, adresa serverului e "minecraft.ro" :)

webserver shootout

Vineri seara la intalnirea RLUG, amicul meu Vali Palos ne-a aratat AtomWS, un framework web scris de el pentru node.js, pretty interesting stuff. Fiind asta prima ocazie cand am avut ocazia sa vorbesc despre node cu cineva care chiar il foloseste, mi-am zic ca pare sa fie ceva interesant dincolo de hype, asa ca dupa cateva lecturi pe metrou, mi-am instalat aseara node pe laptop si am facut niste teste (in joaca, pentru ca nu sunt calificat sa fac comparatii de-astea foarte serioase).

Ce-am facut: am aranjat sa servesc un "hello world" atat direct cu node.js, cat si via AtomWS (caruia a trebuit sa fac niste mici modificari sa mearga cu node 0.4.8 din Debian), si ca textfile din apache-ul instalat local, cat si ca aplicatie Plack pentru perl, servita fie cu HTTP::Server::PSGI, fie cu Twiggy (un webserver bazat pe AnyEvent). M-a batut gandul sa caut si chestii in Python sau Ruby (cu Tornado respectiv EventMachine), dar am decis ca ma pricep prea putin la astea anyway asa ca m-am oprit aici.

Concluziile au fost ca:

  • apache se tine suficient de bine pe picioare (mi-a dat cei mai mici timpi de raspuns, nu reusesc sa-mi explic de ce), insa la concurenta mare tinde sa dea erori si ramane in urma fata de resul la numarul de requesturi pe secunda (in jur de 1000/s);
  • HTTP::Server:PSGI nu imi da failed requests (desi la concurenta mare crapa ab-ul, poate e laptopul meu de vina), insa e destul de slow raspunsul si ca numar de requesturi pe secunda se invarte pe langa apache. De notat insa ca H::S::P e gandit doar pt. development si teste, nu pentru productie
  • trecand in zona de event-based webservers, node.js e... interesant. Mi-a raspuns cu aceeasi frecventa indiferent de nivelul de concurenta. 10, 100, 1000, 2000 de requesturi simultane, el tot cam cu 6500/s raspundea, se constata doar o usoara crestere a imprastierii rezultatelor
  • folosind AtomWS peste node.js, scade putin rata de raspuns undeva pana pe la 5000/s, curios insa ca se consolideaza rezultatele, sunt mult mai grupati timpii de raspuns decat la versiunea cu barebone node. Habar n-am ce inseamna asta;
  • arma mea secreta, twiggy, s-a comportat foarte bine, scotand cam 3500 req/s si ma pregateam sa inchei acest articol pe o nota impaciuitoare pana mi-a dat prin cap sa ma uit pe plackperl.org dupa alte webservere, asa ca l-am gasit pe
  • Feersum, bazat pe libev (la fel ca node.js), recomandat pentru situatii cu concurenta mare. Feersum a avut nesimtirea sa nu scoata mai putin de 10500 de requesturi pe secunda (concurenta mai mare de 2000 nu pot pe o singura masina din cauza de ulimit -n)

Poate o data reiau problema mai serios, similar cu nenea asta si fac si eu niste poze frumoase.

For now, pot dormi linistit stiind ca nu va trebui sa fac reconversie profesionala pe javascript (asa cum am scapat pana acum si fara sa invat prea mult Erlang).

La modul serios, pare foarte cool node.js si incepe sa-si justifice intrucatva hype-ul (asta fiind, by the way, singurul rezultat concret al testelor de mai sus).

minecraft fever

Am auzit de Minecraft acum aproape an (cred ca la vreo doua zile inainte sa apara seria de pe Penny Arcade), am pierdut cateva nopti uitandu-ma la "Let's Play"-uri pe youtube (seria lui X mi-a facut deosebita placere) si mi-am cumparat jocul imediat dupa aceea. Am mai infectat cativa amici (cum i-am mai infectat si cu World of Goo si alte indies alta-data) si am fost cu totii hooked. Suportul de multiplayer era varza pe vremea aia dar noi am reusit sa ne facem fortarete si navete spatiale si tot soiul de sculpturi abstracte ca doar na, ce pot face niste sysadmini decat sa-si faca server, nu?

La putin timp ne-am cumparat si un domeniu smecher in ideea sa facem serverul mai public dar nu eram nici unul pregatiti sa facem politie cu grieferii, asa ca ar fi fost o activitate extrem de masochista (de notat ca asta era vremea lui alpha, cand mod-urile nu prea erau suportate, bukkit mod inca nu aparuse iar hMod mergea din an in pasti pana aparea alt update cu care nu mai era compatibil), asa ca a ramas putin in staza proiectul. Then Cataclysm happened, real life happened, work happened.

Am tot urmarit insa comunitatea Minecraft, in special pe Reddit, si se pare ca lately s-au mai stabilizat lucrurile, nu mai sunt buguri asa jenante in SMP, aparent exista moduri de admin care chiar functioneaza, ba chiar si servicii comerciale, asa ca m-am gandit sa dau cu matura prin server in vederea patchului 1.8 care e pe vine.

Nu m-am obosit inca cu bukkit mod si alte ozn-uri, pentru ca probabil vor trebui updated cand apare 1.8, am zis ca dau drumul free la un server si-i resetez harta din cand in cand in caz de griefing. Nu mica mi-a fost mirarea cand am vazut ca cineva simte nevoia sa-i dea flood de vreo 3-4 zile (aparent au aparut si pe la noi servere cu conturi platite si probabil nu le place concurenta). Am eu ac si de cojocul lor dar mai dureaza, nu de alta, dar am servere mai importante (si mai ales care produc bani) de care sa ma ocup.

Meanwhile, daca printre vasnicii mei cititori (care asa putini cum sunt, sunt mai inteligenti decat media sau macar mai rabdatori) se gasesc pasionati de Minecraft (nu zic amatori pentru ca se pare ca toti cei pe care-i prinde jocul devin maniaci :D ), dati-mi de stire, s-ar putea sa am teren (virtual) de dat.

Google Plus

Vineri am facut rost de invite la google+ (concureaza cu R si windows 7 la cele mai anti-SEO nume de produs din istorie) si m-am apucat sa adaug lume. Zice-se ca e inspirat de Diaspora (pe care nu mi-am facut cont) si in orice caz pare sa concureze cu Facebook (de unde mi-am sters/dezactivat doua conturi diferite dupa doar cateva luni de utilizare).

Inca incerc sa ma lamuresc cam care ar fi patternurile de utilizare, dar pare dragutel pana una alta. Sper sa publice un API (ca si FB sau Twitter) sa poata fi integrat si de catre altii (chestia aia cu +1 mi se pare la fel de naspa ca si like-ul de fb si am dezactivat-o). Cum eu cu organizarea stau cam prost, nu mi-e inca foarte clar ce cercuri sa fac, vedem in functie de cine mai apare.

Ah, alt dezavantaj major ar fi ca se leaga cu profilul de google (da, ala de pe google.com/profiles) si ca desi suporta contacte "mail only", nu e foarte clar de unde le ia, ca nu le vede pe alea aranjate frumos in contacts.

Si sa nu uit, vrea musai-musai-musai sa se lege cu picasa web, asa ca daca aveti galerii non-publice, studiati mai atent ce se intampla cu ele (de exemplu daca taguiesti pe cineva intr-o poza, respectivul are acces la toata galeria).

On the plus side, peste tot sunt controale de limitare a vizibilitatii (inclusiv poti da disable re-share, ceea ce poate fi util pt. cei mai secretosi).

So, daca aveti profil de google si ne cunoastem, dati de stire sa ne conectam.

PS: Desi pe prima pagina zice ca n-au invitatii si nu se foloseste sistemul de la gmail si wave cu X invitatii, poti adauga pe cineva trimitandu-i un mesaj cu audienta limitata (poti da doar la o adresa de mail sa zicem). In mailul primit, respectivul va avea un link cu "add comment" sau asa ceva. Click pe el si apare pagina de join. Have fun!