MacOS Chess app issue solved by accepting Game center terms in settings

Do you have a problem starting Apple Chess app on your Mac? Such as having an empty terms and conditions like page open on top of the chess board and not being able to close it except by force?

The solution is simple, yet very unintuitive: go to settings, Internet accounts, select Game center, and accept terms there and restart Chess. Solution found here.

Advertisements
Posted in Miscellaneous, Computers and Internet | Tagged , , , , , , | Leave a comment

Adaptarea la mediu(l de dezvoltare)

Probabil știam intrinsec, dar nu conștientizam pe deplin cât de adaptabil poate fi omul. Și – din experiența mea recentă – se pare că și programatorul (această specie ciudată din care fac parte) – își poate depăși toate așteptările și poate evolua (sau involua?) mai rapid decât aș fi crezut vreodată:

  1. Am trecut de la notebook PC de 17″ la unul de 15″ acu 2 ani și jumătate, apoi de curând – chiar dacă doar part time, pentru învățat deocamdată – la un Mac de 13″ fără să simt vreo problemă!
  2. Dacă tot veni vorba de Mac, trebuie să zic și că m-am obișnuit extrem de repede cu scroll-ul pe trackbar cu două degete (care la început mi-a dat de furcă). Și și cu restul interfeței grafice, care este – pot spune hotărât după două luni de teste – foarte bine lucrată și cu mare atenție oferită detaliilor. Chiar și dacă am ales o variantă de Mac cu SSD – sau cum i-o zice Apple – mic (128 GB), am reușit să instalez cam tot ce am avut nevoie și a mers și merge totul brici. Totuși, pot reveni fără niciun sentiment complicat la vechiul PC, îl pot utiliza în continuare fără să conștientizez diferențele, deși le subînțeleg, lucrând firesc pe ambele sisteme.
    • Side note: după cum simt eu acum, Mac-ul este față de PC ce este iPhone față de Android sau cum era odată – în anii ’90 – Windows față de Linux. 🙂
  3. Totuși, pentru că programarea necesită – paradoxal pentru un domeniu în care outputul, codul, este în principiu numai text – multe click-uri, m-am gândit că ar fi și mai bine cu un mouse. După cum știți, am fost multă vreme fan captiv Microsoft, așa că am încercat un Surface mouse pe Bluetooth și n-am avut ce comenta din punct de vedere tehnic: a mers totul bine, s-a conectat instant și a funcționat așa cum m-aș fi așteptat; doar că mă obișnuisem cu Designer-ul meu, mai puțin înalt și – pentru mine, cel puțin – mai comod, dar nu-l puteam folosi pe acela întrucât era deja pair-ed cu PC-ul și știți că nu merge să conectezi un singur mouse wireless la două computere. Așa că mi-am luat inima-n dinți și am testat undeva și-un Magic Mouse de la Apple – l-am simțit atât de natural, similar cu Microsoft Designer-ul, încât am făcut-o lată și l-am cumpărat imediat; prețul e ridicol de mare, gen 400 de lei dar funcțiile noi – acelea pe care nu le ai când integrezi hardware din părți diferite – sunt uluitoare: e nemaipomenit suportul pentru mouse touch pe lângă cel obișnuit de move! Și m-am adaptat instant. Pe de altă parte, nu încerc touch-ul (cel puțin nu încă) când folosesc mouse-ul vechi conectat la PC – cumva văzând OS-ul curent în față știi instant și ce poți face cu mouse-ul asociat.
  4. xCode și Swift/Cocoa: față de Visual Studio și C#/WPF sunt foarte multe diferențe – mai multe decât m-am așteptat. Sigur, uneltele Microsoft par mult mai puternice (sunt mult mai mulți ani investiți în ele), dar și Apple oferă unele chestii deosebite (tot amintesc, ca exemplu aici – pentru că mi se par excelente – alias-urile de apel ale numelor parametrilor funcțiilor Swift). Cu toate acestea, din nou, când vezi unul dintre cele două medii de dezvoltare în față, știi imediat ce poți face și ce nu!
    • PS – legat de xCode: încă aștept – deși într-adevăr, poate e devreme, fiind încă la început – să apară “problemele sale majore”, cele cu care m-au tot amenințat unii și alții; poate or veni, dar până acum totul a mers bine, n-am avut niciun crash, nicio problemă majoră. We’ll see what happens later.

PS2 – legat de PC & Mac: ziceam într-un post anterior că dacă avem două notebook-uri pentru development (un Windows și un macOS) le putem transporta în aceeași geantă, spate în spate ca să nu se julească (cum nu prea există genți duale și cum soluțiile de dual-boot și/sau virtualizare nu sunt, de multe ori, ce ne dorim); până la urmă m-am hotărât totuși că e mai safe în două genți diferite, iar când plecăm în concediu le ducem pe amândouă dar o lăsăm pe cea care conține computerul folosit mai rar în portbagajul mașinii până când apare nevoia reală a utilizării lui. Pretty obvious, I admit. 😉

PS3 – legat de Mac: nu mi-aș fi putut imagina și sunt “auto-uimit” 😮 dar la foarte puțin timp de când l-am testat prima oară, pot spune că aș putea deja trece – ca primary personal & development computer – de la Windows la macOS! (Acceptând, desigur, lipsa unor aplicații PC cu care eram obișnuit, însă nu e vorba de nimic esențial ori mandatory!) Dar nu aș renunța la Office apps – Pages, Numbers, Mail nu sunt suficiente față de puterea Word, Excel și Outlook.

Posted in Computere și Internet | Tagged , , , , , , , , , , , , , | Leave a comment

(Re-)începe școala

Azi/în curând începe un nou an școlar/universitar în România. Succes, dragi elevi/studenți! Dar nu uitați: mare parte din ceea ce învățați la școală/facultate nu vă va fi de folos în mod direct; cel mult va ajuta la formarea deprinderii de învățare în sine și veți învăța (posibil, mai ușor) pe cont propriu detaliile de care veți chiar avea nevoie ulterior; veți reține din școală doar un set minimal de informații util doar pentru a nu reinventa roata și eventual pentru a ști (aproximativ) ce să căutați pe Google când vă trebuie un mecanism ce utilizează asemenea roți. În schimb:

Talentul, entuziasmul și parțial experiența reală vor prima, după părerea mea, mereu.

Așa că acționați inteligent și conștinentizați că nu este necesară atâta repetiție când vine vorba de teme pentru acasă constând în zeci de probleme similare, chiar dacă se zice că asta-i mama învățăturii; rezolvați câteva, depindreți ideea și gata.

Și nu învățați “doar pentru exteu” istoria predată prin metoda dictării: acum aveți la îndemână atâtea unelte pe Internet încât să puteți înțelege subiectele și să vizualizați timeline-ul, respectiv zonele geografice în care s-au desfășurat acțiunile! Chiar dacă luați apoi doar 6 și nu 10! Va conta atât de puțin diferența negativă la notă vs. diferența pozitivă de cultură generală!

Iar dacă deja știți ce vreți să faceți în viață (de ex. freelancer sau antreprenoriat în domeniul X), fiți mai degrabă autodidacți! Veți reuși mult mai multe când țelurile Dvs. nu sunt acelea ale vreunei programe didactice aberante!

Adaug aici o chestiune mai greu de explicat științific, de data aceasta pentru părinți, extrasă din propria experiență: în funcție de cum aveți timp, după – sau poate mai bine, deși pare ciudat, înainte – ce copiii Dvs. își fac temele, fie aceasta și parțial/tangențial așa cum am propus mai sus, alocați-vă 30 min. zilnic pentru a vă juca sau a povesti cu ei (din punctul meu de vedere și online este OK)!

Socializarea de acasă crește atât productivatea copiilor cât și a părinților.

(Explicația cred că are legătură cu selecția naturală: oamenii au atribut social dezvoltat pentru că așa au avut mai multe șanse să reziste în trecut, rezultând că și acum tânjim după afecțiune ori, pur și simplu, după timpii de interacțiune cu apropiații.)

Posted in Sănătate și întreținere | Tagged , , , | 1 Comment

(Habar n-am ce titlu să aleg)

De când am înțeles cum pot fi programate computerele am fost mereu foarte încrezător în forțele proprii; uneori chiar arogant: mi se părea/pare atât de natural să folosești tehnologiile hardware și software pentru a crea programe pentru calculator încât credeam/cred că pot realiza orice în cadrul limitelor fizice!

Ce diferă la mine însă după peste 17 de ani de când m-am angajat în domeniu, respectiv 13 de când lucrez pe cont propriu (și peste 25, în total, de IT hobby), pe lângă faptul că acum scriu puțin mai des cod care merge din prima – avans oarecum așteptat, de altfel, din simpla acumulare a experienței – sunt următoarele:

  • Dacă înainte generalizam și abstractizam (prea) mult – doar pentru că puteam – deși performanța aplicațiilor avea mai mereu de suferit, acum analizez intens dacă e nevoie de acel refactoring (uneori ajungând să accept chiar și duplicarea codului!)
  • Înainte nu prea mă aplecam asupra optimizărilor de cod pentru obținerea de viteză de rulare sau eficiență în utilizarea memoriei. Pur și simplu mă gândeam că hardware-ul oricum se ieftinește și clientul poate să-și cumpere un calculator mai bun, iar asta nu-i problema mea. Dar clienții sunt mereu la curent cu avansul hardware-ului și cerințele sunt destul de bine mapate de obicei pe puterea disponibilă, ceea ce înseamnă că fără optimizări va merge aplicația va si slabă. După ce am înțeles acest lucru n-am mai făcut backtracking recursiv curat aproape deloc, deși este metoda mea preferată din algoritmică. 🙂
  • Piața contează – chiar dacă e bazată uneori pe mult efect de turmă – și iau asta în calcul mult mai mult acum decât înainte. (Millennials rule, pentru că lor le voi vinde în curând produse și servicii!)
  • Accept acum și tehnologiile către care nu m-am orientat inițial/anterior (non-Microsoft), și învăț despre ele cu plăcere (anterior imposibilă), luându-le în seamă chiar dacă la prima vedere par prea slabe, puțin abstracte, incomplete, câteodată chiar inconsistente, ori “prea” native (non-cross platform) – favorizând însă chestiunile indicate la primul punct – sau chiar oarecum… idioate – dar orientate către ceea ce dorește “turma” de la punctul al doilea. Și uneori descopăr lucruri deosebit de interesante (acest tweet e doar un exemplu) pe care altfel le-aș fi ratat cu siguranță!
Posted in Computere și Internet | Leave a comment

Closed source și consecințe

Recunosc: sunt fan closed source!

Cred că inovația are șanse mai mari de apariție și poate fi mai bine canalizată spre succes în echipe de oameni bine aleși, pasionați și remunerați corespunzător.

(E adevărat că și cu open source se pot obține rezultate foarte bune, dar – după părerea mea – mai mult atunci când “deschiderea” are tot scop comercial în final.)

Eram – până de curând – fan Microsoft înfocat. Deși înțeleg și avantajele deschiderii în IT-ul de azi – atât cea a codului sursă în general, cât și cea companiei Microsoft în special (ce are, sigur, tot motive comerciale) – modul în care Redmond-ul se comportă în ultimii ani, permițându-le tuturor orice și colaborând cu ei în toate, devenind clar că nu mai mizează nimic pe Windows și că rămân cu Office 365 și Azure ca singure servicii de termen lung, mergând spre .NET Core și cumpărând Xamarin pentru a le arăta developerilor câte chestii faine au și concurenții, sunt oarecum dezamăgit. Așa e, Nadella n-avea altă șansă după ce mobile first s-a transformat pentru ei în mobile none, dar asta nu mă ajută să mă simt eu mai bine (mai ales că prevăd că transformarea va continua către un dezastruos client none, cel puțin văzând tineretul mobile only din zilele noastre.)

Privind în altă direcție, Google pare și mai open, chiar dacă la fel de orientat comercial (vezi ads). Dar în afara succesului Android – care are totuși hibe complicat de rezolvat tocmai din motivul largii deschideri (vezi parcursul greoi al inovației dar și update-urile lente de la parteneri) – din punct de vedere tehnic mie îmi pare mai mult orientat spre Web, pe când lumea tinde iar spre native apps, rămânând HTTP-ul doar pentru API-uri, așa încât nu vreau s-o iau nici într-acolo – n-aș mai paria pe JavaScript, chiar dacă într-o vreme mi se părea soluția adevăratei multi-platformă…

Rămâne așadar să-mi placă Apple, singura companie really closed și care și-a păstrat această caracteristică peste ani, chiar și atunci când le-a fost greu-greu.

Într-adevăr, ei nu au de oferit de toate (cum avea Microsoft în 2010 – de la search engine-ul Bing și ASP .NET WebApi în Azure pe server, la WPF, Surface și răposatul Windows Phone pe client side), dar au un subset de tehnologii consistent și – am testat – puternic. Orientați mai degrabă spre user și UI integrat (hardware-software), preponderent mobile focused, bine angrenați pe piață și nu doar ca fashion & style în pofida celor crezute de unii (și poate promovate chiar de reprezentanții lor), prevăd că – pe termen lung – vor crește (iar) încet dar sigur și – cine știe? – poate va apărea și un server side iAzure cloud cu WebApi development support bazat pe Swift!

(Dar nu, nu parteneriat cu IBM sau alte chestii third party, ce observ că se dezvoltă chiar acum – trebuie ceva… închis… și bun! Că altfel, mai bine folosim în continuare doar server side-ul Microsoft – pe partea aia poate rămâne deocamdată cum am stabilit: nu-i așa important full stack technology-ul, și de obicei one size doesn’t fit well all anyway.)

Așa că vrând-nevrând, entuziast și visător, mai prin alegere proprie, mai prin eliminare, la nici un an de când am asemenea gânduri, am devenit (n-aș fi crezut vreodată), iată-că [mare] fan Apple – prezent și, probabil, viitor!… 🙂

Posted in Computere și Internet | Tagged , , , , | 1 Comment

Waze

Dacă sunteți șofer, trebuie neapărat să știți: aplicația aceasta este extraordinară! Este pentru condus precum e Facebook pentru socializare!

Probabil o uitilizați de mult – în acel caz ignorați acest mesaj – dar am vrut neapărat să postez exclamațiile de mai sus pentru cei care, poate, încă n-au auzit de ea sau nu și-au instalat-o.

Posted in Călătorie | Tagged , , , , | 4 Comments

Abstract vs. general

V-ați întrebat vreodată dacă există o diferență majoră între generalizare și abstractizare? Conform definițiilor din Dex nu pare a fi una semnificativă. Totuși, prin prisma programatorului, ea devine clară: abstractizarea este o generalizare mai adâncă, necesitând clarificări suplimentare la concretizarea obiectelor cercetate (la aplicarea operației inverse.)

De exemplu:

  • Vasile Popescu și Gheorghe Ionescu pot fi generalizați de clasa PersoanăFizică, definită prin NumeDeFamilie și Prenume, cu un Nume de afișat rezultând prin concatenarea prenumelor cu numele de familie;
  • La fel, Contoso SRL și Demo SA pot fi generalizate prin tipul PersoanăJuridică, cu Denumire și FormăDeAdministrare și cu un Nume de afișat obținut concatenând denumirea cu tipul societății.
  • În schimb atunci când introducem clasa abstractă Persoană (ori interfața IPersoană), modul prin care se calculează valoarea Nume de afișat este încă necunoscut, putând fi stabilit doar de clase concrete, precum PersoanăFizică și PersoanăJuridică, definite ca mai sus.

Pot exista ierarhii complexe de generalizări și abstractizări, dar mergând dinspre concret spre rădăcina arborelui de tipuri treci cel mult o dată de la general la abstract.

Posted in Divertisment | Tagged , | Leave a comment