Want to learn WPF? Get a book

I’ve said it before. In my opinion, WPF is the single contemporary programming technology (disclaimer: among those that I’ve considered myself) that really requires a book to learn it. Otherwise, trying to dig using just hands on testing – as it’s indeed possible in many other cases – you might think you know enough before you do and you’ll get frustrated every day later because things won’t work the way you’d think they should. This StackOverflow question – that triggered this post – is only an example. I personally have been there too (and after the WPF experience, now I decided that I’ll always learn complex new technologies using books, although it may be unnecessary in some cases, as I’ve seen before WPF.)

But don’t get scared. Mastering WPF by starting learning it from the core instead of from the surface will provide many, many benefits that will overcome any initial time spent reading that book. (My personal favorite book on the topic is this: Adam Nathan –  WPF Unleashed, but virtually any high rated WPF book will be OK.) And eventually you’ll know exactly why things work the way they do and you won’t consider this to be wrong anymore. Moreover, you’ll be able to build extraordinary things with WPF so I do still highly recommend it! And not only UI and UX related: sometimes you can use the WPF engines (such as its powerful bindings) for other things too – for example to design some business logic extras that many apps need closer to the UI layer.

Alternatively, you can still use Windows Forms to develop Windows desktop apps – it’s still available. But it will be less interesting and not like HTML/CSS as you might have heared WPF – conceptually – is.

Posted in Computers and Internet | Tagged , | 2 Comments

Funcționalități surprinzătoare dar și câteva (destule) annoyances în macOS

La puțin timp după ce am încercat iOS (pe iPhone), iată că am încercat și macOS (pe un MacBook Pro). Da, săptămâna trecută am atins un Apple computer pentru prima oară în viața mea deși citisem despre ele încă din revista Computer World ce apărea în mileniul trecut! Nu pentru că aveam nevoie de un notebook nou, ci fiind cea mai simplă modalitate de putea a dezvolta (nativ) pentru iOS.

Iată câteva chestiuni care m-au impresionat de la început:

  • La configurare sistemul m-a întrebat dacă doresc criptarea datelor și am acceptat, fiind un computer pentru business și dorind să sporesc, pe cât posibil, securitatea datelor (deși nu știu dacă nu cumva o voi anula ulterior); însă nu mult după ce l-am pornit am văzut că sistemul de operare preinstalat era OS X El Capitain, iar eu doream update la macOS Sierra; zis și făcut, doar că nu mă lăsa să selectez partiția pentru instalare; mi-a explicat însă foarte frumos de ce: pentru că exista o operație de criptare în lucru și că puteam să-i observ starea dacă doresc; o experiență plăcută, nu doar un disabled item fără să fi știut de ce (iar după ce criptarea s-a finalizat, totul a mers strună.)
  • La log out se întreabă dacă se dorește păstrarea sesiunii (starea ferestrelor), ceea ce înseamnă – după cum am observat – un fel de hibernate la nivel de utilizator (spre deosebite de switch user-ul din Windows care nu salvează sesiunea ci o lasă în rulare); foarte interesant și util (plus că nu trebuie să știi ce înseamnă hibernare.)
  • Rulează foarte bine chiar și cu procesor i5 (dar da, e cu SSD, aka flash), deși Mac-ul e subțire și ușor (sub 1.4kg).
  • Efectul vizual la minimizarea ferestrelor e foarte plăcut.
  • Și nu în ultimul rând… da – dictarea în limba română funcționează foarte bine, exact ca pe iOS!

Am reușit însă să depistez și câteva mici probleme, deși timpul de când l-am instalat a fost relativ scurt și nici nu am folosit acest computer multe ore pe zi, nefiind notebook-ul meu primar:

  • La pornirea sistemului se redă aiurea un sunet (chimes) – pe care îl pot anula doar dacă înaintea opririi anterioare a computerului nu uit să pun volumul pe mute. Altfel, cică aș putea rula ceva script pentru a anula această funcție dar încă n-am săpat suficient și nu vreau deocamdată să risc vreo stricăciune la “mațe”.
  • Nu-mi place că am parolă diferită pentru utilizatorul de Mac față de iCloud; sigur, pot să setez exact aceeași parolă și sigur că am legat contul de Mac de cel de iCloud, dar nu e unificată complet identitatea (venind dinspre Windows, unde așa eram obișnuit de pe la 8 încoace, mi se pare că parcă m-am întors la local profiles); totuși, se poate că aceasta este doar o problemă imaginară, deci ignorabilă.
  • Dar legat de conturi, există și o problemă mai mare: am putut lega în profilul de mac conturi precum Google, Facebook, Twitter sau chiar Exchange (Office 365), dar nu și Outlook.com (Microsoft account), ceea ce e foarte urât. Pe iPhone Apple ne iubește și pe cei Microsoft service oriented, dar se pare că nu și pe Mac. (Pentru a avea măcar mail @hotmail.com a trebuit să aleg IMAP și a durat o veșnicie să sincronizeze 16k de mesaje!…)
    • Actualizare: Se pare, totuși, că și accounturile Microsoft pot fi sincronizate pe Mac, atât pentru mail cât și pentru calendar, contacte ș.am.d, utilizând Exchange. Instrucțiuni detaliate am găsit aici.
  • Habar n-am avut cum să fac scroll cu două degete cu trackpad-ul până n-am căutat pe net! Hovering pe zona de scroll bar nu face ca acesta să apară, pentru a putea face drag ca în Windows! Dar în tot răul există și un bine: am învățat cum se face și pot folosi acest shortcut și pe PC – merge!… 🙂
  • Când editez text, tastând Ctrl + săgeată stânga sau dreapta nu pot sări peste câte un cuvânt, cum eram obișnuit pe Windows. Există alte comenzi de salt la început sau sfârșit de rând sau de pagină (cu Cmd respectiv Fn și săgeți).
  • Layoutul tastaturii românești Apple e dezastruos, cu tastele Ș și Î în partea stângă, iar Ă și Ț în cea dreaptă; am ales desigur varianta cu tastatura internațională; aceasta nu e o chiar problemă a macOS, de fapt, dar m-am gândit că trebuie menționată…
  • N-am aplicații pentru mai nimic. Sigur, nici nu-mi trebuie, fiind vorba despre un computer doar pentru dezvoltare software, nu unul primar, și am instalat rapid Xcode și chiar Visual Studio (cu Xamarin și Android SDK) just-in-case, putând trece la treabă, dar mă gândesc la sărmanii utilizatori obișnuiți care se gândesc că ar putea da un ban în plus să obțină un Mac fain în loc de vechiul PC, dar care vor fi profund dezamăgiți de ecosistemul lipsă… Sigur, Microsoft oferă Office for Mac cu 365 (eu nu l-am instalat), există de cumpărat aplicațiile Adobe pentru design, și gratuit se pot instala OneDrive, OneNote sau Amazon Kindle, dar nah, speram la mult mai multe. (Nici măcar noul ToDo app de la Microsoft nu e de găsit pe Mac încă.) Înțeleg mai bine acum de ce Mac-ul vs. Windows nu e ca iPhone vs. Android
Posted in Computere și Internet | Tagged , | Leave a comment

Funcționalități surprinzătoare în iOS

După ce am remarcat recent micile probleme și am prezentat (de fapt, indicat) doar una dintre cele mai bune funcții ale iOS din punctul meu de vedere în urma unei prime perioade de utilizare, revin cu un top 3 al inovațiilor – idei simple, dar puse în practită atât de bine – clar diferențiatoare față de alte sisteme de operare, inclusiv Windows:

  • Live Photos: există, se pare, din 2015, dar nu știam de ele; la prima vedere te gândești că e o funcționalitate complet redundantă – la ce-ar folosi atașarea unor scurte video-uri înregistrate automat la declanșarea camerei, fotografiilor; totuși, în special când parcurgem imaginile surprinse cu cei apropiați – familie, copii – apare un efect extraordinar: mintea umană, parcurgând acel scurt video (de aprox. 1 secundă) înaintea afișării fotografiei statice rememorează mult mai bine situația și reproduce emoțiile momentului respectiv cu mai multă acuratețe!
  • Dictarea în limba română: da, speech recognition are și Windows, dar nu pentru limba română! (Poate doar dacă preferați interfața în limba engleză, eventual din motive de Cortana, să permită totuși dictare în alte limbi? N-am încercat.) Revenind: e atât de utilă dictarea încât “scriu” SMS-uri și mesaje text Skype aproape exclusiv vorbind! Suportă diacritice, punctuație (virgulă, punct, două puncte, semnul exclamării, semnul – atenție – interogării – nu întrebării, rând nou, etc.), “romgleză” (!), recalculează semnatic după finalizarea unei propoziții, și m-a surprins desoebit de plăcut. Așa încât acum chiar și când sunt în fața PC-ului folosesc Skype for iPhone ca să pot dicta text în limba română.
  • Notes app (Notițe): suportă free drawing, spre deosebire de OneNote for iOS (iPhone); există, desigur, alternative – precum Sketchbook de la AutoDesk – dar aplicația preinstalată de la Apple e suficientă pentru cele mai multe use case-uri, inclusiv pentru realizarea unei mici scheme și oferă ceva ce nu mai văzusem înainte: o riglă – pe care-o poți muta și roti utilizând gesturi naturale – pentru a trasa linii drepte! O funcție atât de simplă mă ajută atât de mult când seara, din pat, vreau să-mi pregătesc un mini-UI mock pentru ziua următoare de development.
  • Actualizare: îmi place mult și modul în care pot muta cursorul la editarea de text (cu tap, hold, drag); cu Windows Phone 7 trebuia să nimeresc cu un singur tap.
Posted in Computere și Internet | Tagged , , , , , , | Leave a comment

Choosing a surface

This article compares the new Surface Pro to the very recently unveiled Surface Laptop. I kinda agree with the findings.

But I would also add Surface Book to the list of compared items, as although there isn’t a newly released version, it is still very, very powerful, and does even support Dial if needed (although not for me; and I analyzed myself and I’m not a pen fan either).

Finally, I need to mention that I don’t see any 15″ device available from Microsoft, and for me personally that’s the main issue. I’m a developer but I don’t like extra screens, and I want mobility and power. Moreover, I would like tech support for the device available in my city (or at least country, part of the EU!), where Surface items are not available directly. So for me the winner would still be Dell XPS 15.

(I’m looking to MacBooks too as I’d need one for iOS development, but as Windows is still the king of desktop screens that couldn’t become my primary device any time soon.)

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

iOS: annoyances + best feature

Am iPhone de mai bine de o lună. L-am utilizat cât de intens am putut. Iată ce mă enervează:

  • Ștergerea se face în mod diferit în diferite aplicații, chiar și între cele de la Apple. Unele aplicații necesită swipe prealabil, altele au buton Edit ș.a.m.d.
  • De ce trebuie să fac sincronizare (fie ea și wireless, dar necesitând aceeași rețea și pus la încărcat), atunci când cumpăr un cântec de pe iTunes pe un dispozitiv și vreau să-l ascult pe celălalt dispozitiv având în vedere că folosesc același cont de iCloud? Menționez că nu folosesc Apple Music.
  • Sincronizarea favoritelor din browserul Edge al Windows 10 nu este suportată direct de aplicația iCloud. E necesar să le import în Chrome manual pentru că aceasta aplicație să le facă disponibile și pe Safari în iPhone.
  • Sunt un fanatic al aranjării aplicațiilor pe ecran. Apple nu-mi permite să nu afișez toate aplicațiile pe ecranele principale, dar mă lasă să creez oricâte ecrane doresc putând, cel mult, să grupez anumite aplicații. Dacă însă am un grup în ultima poziție de pe un ecran mi-e greu să mut acolo o aplicație venind de pe un alt ecran.
  • Când mi-am setat aplicațiile Office 365 am avut nevoie neapărat de autentificare în doi pași și de Authenticator; apoi, după câteva săptămâni/după unele update-uri am putut anula această verificare dublă (probabil exista chiar atunci un bug în aplicațiile Microsoft, eliminat ulterior; actualizare: într-adevăr, un tap pe lângă la introducerea parolei pare că deschide resetarea de cont și generează confuzie; vina este a celor de la Microsoft.)
  • La un moment dat un update de aplicație a generat o eroare la instalare, probabil pentru că aveam în acea zonă doar internet cu lățime de bandă mai mică și/sau a fost o problemă la download. Aplicația respectivă a rămas cu iconul disabled pe ecran până am restartat telefonul.
  • Se pare că Apple nu permite aplicațiilor să ducă utilizatorul de pe un link direct în App Store pentru a specifica un rating. De fiecare dată când o aplicație încearcă asta, trebuie să mai apăs eu pe butonul Scrie o recenzie. Mai mult, odată mi s-a întâmplat că acest buton nu mai apărea. A trebuit să restartez telefonul. Actualizare: Booking app a reușit să deschidă direct scrierea recenziei; unele aplicații se pare că nu deschid “URL”-ul de feedback cu tot cu “hashtag”; vina nu este deci a iOS.
  • iMessage și FaceTime nu au știut să recitească numărul de telefon după portare, până când am schimbat SIM-ul cu o clonă! (A necesitat vizită la Orange.)
  • La un moment dat o aplicație îmi tot afișa că are o notificare pe bulină roșie. Dacă o deschideam însă nu afișa nicio notificare. A trebuit să o reinstalez. (Nu știu dacă nu cumva era o problemă cu aplicația însăși, deci nu cu sistemul de operare.)
  • Actualizare: pentru copiii (definiți ca fiu) din contactul meu se afișează relații incorecte în aplicația Contacte (deși în iCloud apar corecte): director, asistent. 🙂

Dar sunt și lucruri care îmi plac foarte mult. Despre cele mai multe probabil știți și voi: de aceea iPhone este unul dintre cele mai dorite dispozitive din lume. Știam și eu de dinainte că sistemul de operare iOS se mișcă foarte bine, din punct de vedere al interfeței fiind foarte bine lucrat, responsive și plăcut la atingere și utilizare, în general.

Însă ceva m-a impresionat în mod deosebit:

  • Live photos: aici doream să explic ce sunt, dar mai bine vă las pe voi să căutați despre ele dacă nu știți. Pe mine m-au “lovit” când le-am folosit acasă, în familie! (La primele teste tehnice le subestimasem mult și le consideram nenecesare…)

P.S.: Am scris acest articol aproape în întregime dictând telefonului textul în limba română! Am avut nevoie doar de foarte puține corecturi. Singurele lucruri pe care nu le-a înțeles deloc au fost ghilimele și parantezele. Fapt divers: pentru semnul exclamării pot rosti chiar așa, dar pentru semnul întrebării trebuie să zic “semnul interogării”. 🙂

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

Cum să alegem ce aplicație să dezvoltăm

Da, știm toți: e greu să găsim o idee de aplicație care să prindă. Iată două posibilități pentru a găsi mai ușor ceva de făcut:

  1. Oferim servicii de dezvoltare software la comandă. Astfel vom afla ce caută clienții. Aceasta merge în special dacă dorim să dezvoltăm și apoi să vindem componente. Putem observa așa, de exemplu, că pentru un anumit proiect este nevoie de o anume componentă care nu există pe piață sau este prea scumpă. Dezvoltând-o pe cont propriu o putem vinde altor programatori care caută același lucru. Chiar și dezvoltând aplicații de sine stătătoare putem descoperi că unele părți ar putea fi transformate în componente posibil utile și separat.
  2. Analizăm ce facem în fiecare zi. Determinăm care anume dintre sarcinile noastre ar putea fi făcute mai ușor utilizând un telefon sau un computer. Mai ales dacă e ceva repetitiv. Apoi dezvoltăm o soluție care rezolvă această problemă. O vom putea vinde tuturor celor care au aceeași treabă de rezolvat. Aceasta merge bine în special dacă este vorba de aplicații pentru dispozitive mobile.
Posted in Computere și Internet | Tagged , , , | Leave a comment

iOS, then Android, but Android also in the meantime

I asked (more to myself) earlier: What should I learn first: iOS or Android development?

Eventually, I think I would better start with iOS, myself. Because of these reasons:

  • Even that the market share of iOS is not as high as Android worldwide, and that iOS apps are not the most profitable anymore when you do the math (despite that iPhone remains the most desirable device) – see the stats presented in this article – I personally think it’s better to consider the rich countries first and in those regions one would rather release software for iOS first;
  • Usually iOS app development takes less time; moreover, I personally prefer doing the easier thing first in a pair, assuming that I would be able to reuse some knowledge obtained during the first phase in the second one;
  • Although I will need to purchase a Mac to develop for iOS using XCode, while Android Studio is available also on Windows and I could just run it on my primary notebook, I think that it would be easier for me to have all mobile development done using the same desktop machine, and it would better be the same machine from the start.
  • I’m new to Swift (but not to Java) so it’s more interesting for me to start with that.

Update: Due to some external constraints, and although I started to study about iOS development (got a good book), I eventually also considered and installed Android Studio on my primary Windows machine (I’ll see if I’d need to put it on a Mac too), and therefore I couldn’t help starting to learn a little – at least the basics – about Android app development. Microsoft helped much as it offers a free Android emulator – Visual Studio Emulator for Android – that can be used without disabling Hyper-V as required by the standard Android SDK emulator. 🙂

Posted in Computers and Internet | Tagged , , , , , | 1 Comment