MyGoals 1.3

•2011/07/24 • Leave a Comment

New update availabe for MyGoals. Now it features a Vision Board and improved ergonomics.

Click HERE for download and details.

Pragmatic programmer tips

•2011/05/11 • Leave a Comment

De curand am citit o carte interesanta despre software development – “The Pragmatic Programmer, From Journeyman To Master“. In mare ideile prezentate acolo sunt urmatoarele:

  • Investeste regulat in portofoliu
  • Diversifica-ti cunostintele (cu cat stii mai multe lucruri, cu atat esti mai valoros)
  • Gestioneaza riscul atunci cand investesti in cunostinte (iti sunt de folos acele lucruri?)
  • Invata un limbaj nou in fiecare an
  • Citeste o carte tehnica o data la cateva luni
  • Experimenteaza environment-uri diferite
  • Fii la current cu noutatile
  • Cand ai ceva de comunicat, planifica
  • Trebuie sa stii ce vei spune
  • Trebuie sa cunosti audienta
  • Alege momentul potrivit
  • Daca e cazul, fii atent la partea estetica (daca scrii un document, faci o prezentare)
  • Implica audienta
  • Asculta
  • Ofera raspunsuri
  • Nu duplica (cod, functionalitate, comentarii, nimic)
  • Dezvolta sisteme ortogonale (independente)
  • Dezvolta component inchise (nu lasa alte componente sa-i modifice starea)
  • Foloseste prototipuri pentru a incerca ceva experimental, cum ar fi:
    • Arhitectura
    • Functionalitati noi intr-un sistem existent
    • Structura sau continutul datelor externe
    • Componente sau unelte 3rd party
    • Probleme de performanta
    • Probleme de UI/design
    • Atunci cand faci prototipuri, poti omite
      • Corectitudinea
      • Completitudinea
      • Robustetea (tratarea erorilor)
      • Stilul (comentarii, documentatie, cod scris ordonat etc)
      • Implementeaza propriul mini-limbaj atunci cand ai nevoie
      • Nu te panica
      • Foloseste intotdeauna source control
      • Invata un limbaj de manipulare a textului. Astfel, dintr-o bucata de text poti genera multe altele
      • Foloseste generatoare de cod
      • Scrie cod „timid” – nu descoperi prea multe detalii despre el si nu interaction cu prea multe module
      • Minimezeaza gradul de cuplare
      • Cand scrii metode, foloseste pe cat posibil parametri de tipuri primare
      • Dezvolta sisteme configurabile
      • Gandeste-te la concurenta atunci cand faci un design
  • Nu programa prin coincidenta
  • Tot timpul fii constient de ceea ce faci
  • A programa ceva ce nu ti-e foarte clar sa a lucra cu o tehnologie cu care nu esti familiar este o invitatie pentru a face greseli sau a lua decizii eronate
  • Proneste la lucru cu un plan
  • Bazeaza-te doar pe lucruri clare. Nu face presupuneri. Daca trebuie sa presupui, ia in calcul cel mai rau caz
  • Documenteaza presupunerile si cumunica-le
  • Nu testa doar codul; testeaza si presupunerile
  • Prioritizeaza efortul si sarcinile
  • Nu lasa codul existent sa dicteze codul viitor
  • Complexitatea algoritmilor, in ordinea descrescatoare a performantei:
    • O(1) – access la elementele unui tablou, instructiuni simple
    • O(log(n)) – cautare binara
    • O(n) – bucle simple, cautare maxim intr-un tablou
    • O(n*log(n)) – quick sort, heap sort
    • O(n^2) – doua bucle imbricate, sortarea prin selectie si inserare
    • O(c^n) – probleme combinatorice
    • Intotdeauna testeaza algoritmul pentru cazul cel mai nefavorabil
    • Inainte sa investesti timp in imbunatatirea unui algoritm, verifica daca este absolut necesar (cel existent si-a atins limitele)
  • Ar trebui sa facem refactoring atunci cand:
    • Avem duplicari
    • Avem un design neortogonal (componente dependente)
    • Cod care devine expirat datorita modificarilor survenite la cerinte
    • Performanta nesatisfacatorare
    • Cand descoperi ca ceva are nevoide de refactoring, actioneaza imediat sau cat mai curand posibil
    • Nu incerca sa faci refactoring si sa adaugi functionalitate in acelasi timp
    • Asigura-te ca ai o serie de teste riguroase inainte sa te apuci de refactoring
    • Fa pasi mici si testeaza des intr-un proces de refactoring
  • Scrie cod care sa fie usor de testat. Testele ajuta la un design mai ortogonal
  • Testeaza toate cazurile de input/output posibile
  • Scrie teste inainte de a implementa
  • Unit testele exemplifica modul de folosire a modulului testat
  • Cand adunci cerinte pentru un proiect e bine sa lucrezi cu utilizatorul pentru a observa cum decurge jobul acestuia
  • Foloseste  diagrame use case cand intocmensti documente de cerinte (requirements)
  • Nu supaincarca cerintele
  • Tine evidenta modificarii cerintelor. Astfel vei avea documentate schimbarile/abaterile de la cerintele initiale
  • Foloseste un glosar pentru a identifica in mod clar fiecare termen folosit in proiect
  • In majoritatea cazurilor, o problema pare mai complicata decat este in realitate. Abordeaz-o sistematic. Pune-ti urmatoarele intrebari:
    • Exista o cale mai simpla?
    • Incerci sa rezolvi problema corecta sau te-ai abatut?
    • De ce asta o problema?
    • Ce o face atat de greu de rezolvat?
    • Trebuie facut neaparat asa?
    • Este necesara?
    • Automatizeaza totul. Nu folosi procedee manuale
    • Genereaza documentatia din comentariile din cod
    • Comentariile spun ce anume este implementat, nu explica si cum
    • Asteptarile trebuie comunicare si depasite doar putin.

Winamp remote control

•2011/01/29 • 1 Comment

I just finished a small project for Pocket PC that is controlling Winamp music player remotely using Bluetooth or WiFi. It is free to use, just like my other software and quite useful, at least for me :)

Here is the link to Winamp Remote. Enjoy!

Text User Interface

•2010/07/09 • Leave a Comment

I have a passion for old things. The same is true for computers, software and programming languages. Lately I am nostalgic about the old days of MS-DOS, slow computers and TUIs (Text User Interfaces). I did a quick search on the web for TUI and it seems they are obsolete these days. Modern operating systems do not support it anymore. Linux is probably the only one that still supports it.  On windows platforms I think XP was the last to have support for TUI. Looking at software development tools, TUIs are not supported since a long time ago. Ok there is the option to build a Console Application on the .Net framework, but you can’t do anything more than read or write text.

Personally, I think TUIs could still be used today. It would provide a simple, intuitive and resource friendly way to interact with a system that does not require a very complex user interface. But I presume it’s just like everything else these days, why buy just one item when you can have 10 for the same price.

More Brain Power

•2010/05/03 • 1 Comment

I was reading another “Road to success” article and found something that seems interesting, so I decided to share the info. It’s about brain health and how to improve brain power. Here are 10 easy steps:

  1. Go for a walk with a friend -  This way you talk as you walk.  Social connection, physical exercise and mental stimulation are brain strengtheners.
  2. Add variety to your life -  Do not follow a set routine day after day.  Wake up your brain with something new.  Try a new route to the office.  Memorize a new poem.
  3. Be a Life Long Learner -  Study something in depth.  This is good for your brain and your career.  Learn a new language and begin to speak and write it.
  4. Solve Puzzles/Play games - Try to beat the clock because that inspires quicker thinking.
  5. Clear the mind - Use meditation or a walk in the woods to help clear your mind.  Most of us have very active minds today.  Some of the chatter is noisy and negative.  It is important to regularly take time to clear your mind.  While you are at it take some deep breaths to cleanse your mind and body.
  6. Get 8 hours sleep a night
  7. Be creative - Use your imagination every day.  Take the time to paint, add to your journal, create a new website, write a poem or do anything that uses the right (creative) side of your brain.
  8. Spend time with friends - Staying by yourself all the time can put your brain into slowdown mode. (Solos be aware.) Friends, family and colleagues help keep you engaged in life and that keeps your brain active and working.  Being sociable is good for your brain and your spirit.  People with a strong community of friends and acquaintances live longer and happier lives in general. (Networking is good for your brain!)
  9. Eat a proper diet - Include fruits and vegetables in your diet along with whole grains and fish.
  10. Have regular check ups with the doctor - Blood pressure, blood sugar, weight, cholesterol all are important to proper brain function.  Make sure yours are in the normal range and if not work with your doctor to get them in check.
 
Follow

Get every new post delivered to your Inbox.