Co twój język programowania o tobie mówi?

Już trochę czasu siedzę w świecie programistów i zdążyłem zauważyć pewne wzorce, to, że decyzja o wyborze języka w jakim się specjalizujesz, często wpływa na to z kim się zadajesz, a to bezpośrednio wpływa na to jaki masz charakter. Poniższy tekst jest oczywiście przebarwiony, dlatego jeśli bardzo mocno utożsamiasz się ze swoim językiem programowania nie czytaj tego.

1. Entuzjaści Open Source (Ruby)

Kiedy pytasz się ich jakiego IDE używają to patrzą na Ciebie dziwnym wzrokiem, jakby pierwszy raz słyszeli takie słowo. Do pełni szczęścia potrzebny jest im tylko dobrze skonfigurowany VIM. Z racji tego, że nie ogranicza ich system operacyjny, gdyż VIM jest dostępny na każdy system, najczęściej siedzą na iOSie albo Ubuntu. Często swoją pracę wrzucają na github-a i nierzadko biorą udział w jakichś projektach opensource-owych. Przez to, że programują nawet po pracy to mają raczej mało czasu dla rodziny i znajomych.

2. Freelanserzy (JavaScript)

Ludzie, którzy kiedyś byli zmuszeni przez szefa do użycia javascriptu w kilku projektach przez co wyżywali się pewnie na wszystkich w około. Od chwili jednak kiedy javascript stał się modny już nie narzekają (albo nie mówią tego głośno), a wychwalają brak ograniczeń w JSie.

Prawdopodobnie jedyne projekty które mają logikę w javascripcie to przykłady z których się uczą albo mały projekt dla niewielkiej sieci pizzerii. Większość programistów tworzących w javascripcie to jednak frontendowcy.

3. Apple Fanboys (objective-c)

Apple wszystko robi na przekór innym, dlatego język programowania w jakim pisane są ich aplikacje też musiał być zrobiony inaczej. Osoby, które programują w tym języku nie ruszają się nigdzie bez swojego służbowego IPhone, IPada czy MacBooka. W końcu co 5 min trzeba wrzucać info na twittera, 4square i jakieś zdjęcie na instagrama. Podświadomie mają też coś z masochistów, bo jak bardzo trzeba kochać markę, żeby zgodzić się na programowanie w języku w którym składnia jest tak bardzo powalona.

4. Korporacyjne sprzedawczyki (C#)

Uzależnienie od Microsoftu zaczyna się już w czasach studiów, kiedy to przyszli pracownicy dostają za darmo wszystko co dusza zapragnie (Visual Studio, Windows Server, SQL Servery). Darmowe wersje są idealne do małych projektów na studia. Kiedy jednak już opuszczają mury akademii są tak uzależnieni od technologii Microsoftu, że jedynym miejscem gdzie mogą nasycić swój głód są duże korporacje, które stać na zakup licencji.

Dlatego zatrudniają się w takich firmach przymykając oko nawet na to, że od czasu do czasu ktoś każe im założyć krawat. Po kilku latach spędzonych w korporacji coraz mniej programują a coraz częściej noszą krawat, aż przestają programować i nie wiedzieć kiedy budzą się jako managerowie, albo team leaderzy.

5. Jedyni prawdziwi programiści (Java)

Uważają się za jedynych prawdziwych programistów, akceptują jedynie jeszcze programistów C++. Najchętniej używają produktów, które można konfigurować edytując dane w pliku. Zwykłe checkboksy i przełączniki są zbyt ograniczające. Ponieważ uwielbiają konfigurować wszystko pod siebie nie rozumieją często użytkowników końcowych i sami od siebie dodają milion możliwości konfiguracji swoich produktów.

Większość z nich uważa Microsoft za centrum zła, dlatego kompilują 3 razy w miesiącu swoje Gentoo, tylko dlatego żeby pośmiać się na forach z lamerów używających Windowsy albo Ubuntu. Ach i cały czas pamiętają, że Microsoft okradł ich tworząc C#.

6. Hakerzy (C++)

Niewielu nowych programistów wybiera  C++, przede wszystkim dlatego, że aby napisać w nim jakiś program trzeba napisać średnio 3 razy więcej kodu niż w językach wyższego poziomu. Dla tych którzy jednak wytrwają czeka nagroda. Mogą zaliczyć się do grona prawdziwych hakerów i wyśmiewać się z tych wysokopoziomowych lamerów.  Jedyni programiści jakich akceptują to programiści C i assemblera.

Jako, że napisanie programu w C++ zajmuje również więcej czasu, firmy używają go głównie w aplikacjach, które muszą wykorzystywać specyficzne właściwości sprzętu bądź systemu. Dlatego pasja do C++ często łączy się z pasją do elektroniki i czytaniem 1000 stronicowych manuali.

7. Naukowcy (MATLAB, Clojure)

Przeważnie są to osoby, które bardziej niż programowaniem pasjonują się matematyką, a komputery uważają jedynie za duże konfigurowalne kalkulatory. Najczęściej siedzą na uczelni i piszą kolejne książki o tym jak w nowatorski sposób obliczyć transformatę furiera. Niestety ponieważ zostają na uczelni, studenci informatyki również muszą dowiedzieć się tego jak obliczać problemy matematyczne za pomocą komputera, mimo, że późniejsza praca polega jedynie na stosowaniu wzorców i nigdzie poza uczelnią nie rozwiązuje się problemów matematycznych większych niż odejmowanie od siebie dwóch dat.

Zdaje sobie sprawę z tego, że opis tych grup jest czysto subiektywny i wynika z moich spostrzeżeń w kontaktach z innymi programistami. Niemniej miałem niezłą frajdę pisząc ten artykuł :)

Przepełnienie stosu

Pomijając to, że zaczyna się sesja, więc liczba rzeczy do zrobienia, która nie jest związana z nauką przybrała maksymalny poziom, to już od dość dawna zaczynam być przytłoczony rzeczami do zrobienia (technologiami do nauczenia). Niestety przez to nie udaje mi się wziąć jednej technologii i nauczyć jej się dobrze. Zauważyłem, że liczba rzeczy, które pasowałoby umieć, wzrasta wykładniczo wraz z rzeczami, które już umiesz. Początkowo było fajnie, ale teraz moja lista to-do pęka w szwach, a na moim kindle już prawie brakuje miejsca na nowe książki. Czuje jakbym miał ciągle coś do zrobienia i to uczucie właśnie nie pozwala mi ruszyć nic nowego.

Wcześniej stałem na rozdrożu, uczyć się technologii dekstopowych/mobilnych (WPF, Silverlight), czy lepiej webowych (ASP.NET). Wybrałem webowe, więc odrzuciłem trochę na bok XAML’a, chociaż miałem w nim dużo większe doświadczenie niż w ASP. Po zrobieniu kilku projektów w ASP, nadszedł czas na naukę JavaScriptu, bo przecież aplikacje webowe w dzisiejszych czasach bez js’a wyglądają raczej blado. Po nauczeniu się JS’a nastąpił wielki wybuch nowych technologii z którym nie potrafię sobie poradzić do dziś. Skoro umiem JS’a, to trzeba się nauczyć jQuery, może coffescript, bo każdy tak chwali, nie zapomnijmy o node.jsunderscoreknockout, może też dart, o którym było głośno na Google IO.

Jeśli chodzi o JavaScript, to na pewno coś by się jeszcze znalazło, bo nowych bibliotek ostatnio wyrasta jak grzybów po deszczu, ale co z C#, w którym to przecież programuje od dawna. Wydawać by się mogło, że to technologia rozwijana głównie przez Microsoft i wielu nowych rzeczy nie ma. A jednak na mojej liście pojawiło się 8 zadań związanych z .NET-em.

– ASP .NET (do certyfikatu)
– WCF
– Azure
– RavenDB
– Windows Phone 8
– CLR via C# (książka)
– Reactive Extensions
– Powershell

Nawet po odrzuceniu technologii nie webowych, zostaje mi 5 zadań (powershell bardzo przydaje się przy aplikacjach webowych, z resztą nie tylko).  Większość z nich wymaga ok 2-3 tygodni, aby nauczyć się jak używać danej technologii, nie wspominając już o tym, żeby dowiedzieć się jak dokładnie działa.

Pamiętam jak dziś prezentacje Martina Mazura, na DevDay 2012, mówił on wtedy, że warto poznawać nowe języki, technologie, które rozwijają sposób rozwiązywania problemów. Sam widzę, że nauczenie się JavaScriptu zmieniło trochę moje podejście do tworzenia oprogramowania, tylko boje się, że będę musiał wybrać między nauczeniem się bardzo dobrze jednej wybranej ścieżki, a poznaniem podstaw z kilku różnych technologii. Na dzień dzisiejszy zostaje mi ponowne rozpatrzenie mojej listy i wyrzucenie kilku niepotrzebnych rzeczy.

TypeScript, czyli pomoc w okiełznaniu JavaScript

Jak większość programistów, która wychowała się na tworzeniu aplikacji okienkowych nie jestem wielkim fanem JavaScirpt’u. Niemniej jednak język ten zyskuje coraz większą popularność, nie tylko wśród Web Developerów. Nie można zignorować tego jak bardzo największe firmy (takie jak Microsoft) zachęcają do tworzenia aplikacji mobilnych za pomocą HTML i JavaScript, dlatego myślę, że w niedługim czasie o ile już nie są, programiści tego języka będą bardzo cenni.

In JavaScript, arrays are objects, functions are objects, regular expressions are objects, and, of course, objects are objects.

Sam JavaScript jest językiem dla mnie językiem dziwnym. Można w nim zrobić rzeczy, o jakich nie śniło się nawet zwykłym programistom języków C – podobnych. Niestety zbyt duże możliwości jakie daje ten język nakładają się na to, że o wiele ciężej wykryć błąd w programie, bo tak na prawdę kompilator nie wie czy to błąd, czy użyliśmy tego specjalnie.

Programiści języków statycznie typowanych przyzwyczajeni są, że kompilator im krzyknie kiedy będą chcieli przesłać stringa, zamiast inta. Stety/niestety w JavaScripcie nie było takich możliwości. Ostatnio jednak coraz większą popularność zyskują biblioteki pozwalające na okiełznanie trochę samego JavaScript. Jedną z tych bibliotek, jest rozwijana przez Microsoft, TypeScript.

TypeScirpt

TypeScript w żaden sposób nie zastępuje kodu JS, jest bardziej rozszerzeniem jego składni. Edytor TypeScript wyświetla na raz zarówno kod TS jak i JS, dzięki czemu wiemy, czy na pewno chodzi nam o to co piszemy. Na stronie typescriptlang.org jest dostępnadokumentacja, z której możemy dowiedzieć się jakie funkcjonalności posiada biblioteka. W niniejszym poście postaram się przedstawić tylko największe zalety tego rozszerzenia.

Sprawdzanie typów

selekcja
JavaScript nie jest językiem silnie typowanym, więc zmienna, która jest napisem, za chwilę może być liczbą, lub funkcją. Tak samo zmienne przesyłane do funkcji nie mają w żaden sposób sprawdzanych typów. Tak więc jeśli chcemy być 100% pewni, że przesłana zmienna jest odpowiedniego typu musimy sprawdzać za każdym razem typy argumentów. Na szczęście TypeScript wprowadza możliwość określenia jakiego typu argumentu oczekujemy w funkcji. Nie pozwala to jednak korzystać z przesilania funkcji, bo koniec końców i tak cały kod jest konwertowany na JS.

function add(a: number, b : number){
   return a + b;
}
var sum = add(2, 3);    //OK
sum = add(2.1, 2.3e3);  //OK
sum = add(2, "Ola");    //ERR

Jest to najprostszy przykład sprawdzania argumentów przesłanych do funkcji, Warto jednak zauważyć, że błąd, który wyskoczy przy ostatnim wywołaniu funkcji, wyskakuje jedynie w edytorze TypeScript, więc jeśli ktoś chciałby użyć tej funkcji z poziomu zwykłego JavaScript operacja byłaby w pełni dozwolona, co więcej funkcja zwróciłaby wynik: “2Ola”.

Sprawdzanie typów nie ogranicza się tylko do wartości przychodzących do funkcji, można również określić jakiego typu zmienną, funkcja zwróci. Jeśli tego nie zadeklarujemy, kompilator sam sprawdzi jaki typ zwracamy i zmienną zadeklarowaną z wartości zwróconej będzie traktować jako właśnie takiego typu.

function add(a: number, b : number) : string{
   //return a + b;             //ERR
   return (a + b).toString();  //OK
}

Ostatnią rzeczą, odnośnie sprawdzania typów, którą zamierzam opisać to sprawdzanie jaką funkcję przesyłamy jako argument. Jak było wspomniane na początku w JS nawet funkcje są obiektami, więc często funkcje przesyła się jako parametr innej funkcji. Dzięki określeniu interfejsu funkcji możemy zadeklarować, że oczekujemy funkcji, która przyjmuje liczbę i zwraca liczbę. Jest to coś na kształt delegatów w języku C#.

function doSomething (arg : string, foo : (a : number) => number){
   return arg + " : " + foo(2).toString();
}
var foo2 = function (x : number){
   return "-" + x;
}
/*
Supplied parameters do not match any signature of call target: Call signatures of types
'(x: number) => string' and '(a: number) => number' are incompatible
*/
var res = doSomething("Jan", foo2);     //ERR

Klasy

u have no class
JavaScript jest językiem, w którym klasy określamy poprzez prototyp. Każdy obiekt, posiada swój prototyp, do którego możemy dodawać funkcje, przez co zyskujemy coś na kształt klas. Dziedzicznie natomiast jest tak zawiłe, że trzeba się sporo napisać, żeby osiągnąć wymagany efekt. Na szczęście TypeScript pomoże nam również z tym. Dzięki dobrze znanej z języków C-podobnych składni można definiować klasy, prywatne bądź publiczne zmienne, oraz metody. Poniższy przykład posiada: prywatną zmienną, konstruktor, publiczną metodę oraz prywatną metodę. Podobnie jak we wcześniejszym przypadkach, prywatne zmienne oraz metody są tylko umowne w kodzie TypeScript. Więc z poziomu kodu JavaScript można zarówno się odwołać do zmiennej name jak i wywołać metodę setName.

class MyClass {
   private name : string;

   constructor (nam : string){
      this.setName(nam);
   }
   getName() {
      return this.name;
   }
   private setName(value){
      this.name = value;
   }
}
var ob = new MyClass("Ala");
document.writeln(ob.getName());  
//Alaob.setName("Ola");  //ERR
ob.name = "Ola";    //ERR

Dziedziczenie

Dziedziczenie obiektów jest banalnie proste i oszczędza pisania bardzo wielu linijek kodu. Przykład ze strony typescriptlang.org świetnie pokazuje wszystkie zalety dziedziczenia.

class Animal {
   constructor(public name: string) { }
   move(meters: number) {
      alert(this.name + " moved " + meters + "m.");
   }
}
class Snake extends Animal {
   constructor(name: string) { super(name); }
   move() {
      alert("Slithering...");
      super.move(5);
   }
}
class Horse extends Animal {
   constructor(name: string) { super(name); }
   move() {
      alert("Galloping...");
      super.move(45);
   }
}

var sam = new Snake("Sammy the Python");
var tom: Animal = new Horse("Tommy the Palomino");
sam.move();
tom.move(34);

W obu przypadkach zostaną wywołane funkcje przeciążające.

Intefejsy

Implementowanie interfejsów, chociaż podobne jest do dziedziczenia po klasach, to używane jest do trochę innych rzeczy. Dlatego twórcy TypeScript również pozwolili na tworzenie interfejsów w JavaScripcie. W interfejsach możemy deklarować zmienne bądź metody publiczne. Klasy implementujące te interfejsy muszą zagwarantować obsługę wszystkich metod oraz stworzenie zmiennych przedstawionych w interfejsie. Implementacja odbywa się za pomocą słówka implements, czyli po Javovemu.

interface SayHello {
   hello ();
}
class Animal {
   name : string;
   constructor (name : string){
      this.name = name;
   }
}
class Snake extends Animal implements SayHello{
   hello(){
      return ("ssss " + this.name + " ssss");
   }
}
class Duck extends Animal implements SayHello {
   hello (){
      return ("quack " + this.name + " quack");
   }
}

function echo (soundSource : SayHello){
   alert(soundSource.hello());
   alert(soundSource.hello());
}

var tom = new Snake ("Tom");
var james = new Duck("James");
echo(tom);
echo(james);

Dodatkowe linki
Aby móc korzystać z TypeScript w Visual Studio, trzeba najpierw pobrać plugin. Polecam również zainstalować dodatek do Visual Studio – Web Essentials 2012, który pozwoli na kompilacje kodu TS na JS z poziomu Visual Studio. Poza tym świetny edytor do nauki TypeScript można znaleźć na stronie domowej TypeScript.

Programista jest jak pisarz.

Myślałem już o tym, już wcześniej. Natomiast dopiero cytat przeczytany ostatnio w jednej z książek Stephena Kinga dotknął mnie tak mocno, że zrozumiałem jak bardzo jesteśmy do siebie podobni.

Tylko… nie wiem… no… siedzenie i klepanie w klawisze jakoś przestaje cię bawić. Tracisz ostrość widzenia. Nie kręci ci się w głowie z radości, kiedy opowiadasz tę historię sam sobie.
A potem przychodzi najgorsze: pojawia się nowy pomysł, czyściuteńki, świeżutki i lśniący, jak z jakiegoś salonu pomysłów. Żadnej rysy, żadnego, choćby najmniejszego zadrapania. I niespieprzony przez ciebie… przynajmniej na razie…

Co ciekawe wypowiada je sam Stephen King, jako bohater książki i jako jej twórca. Chcecie dowiedzieć się jak to możliwe? Zachęcam do lektury cyklu “Mroczna wieża”, zaczynając oczywiście od tomu “Roland”.

Wracając do tematu… Tacy ludzie jak programiści, pisarze, malarze (może już troszkę mniej) mają świetną pracę, którą mogą wykonywać zarówno w pracy jak i w domu, do jej wykonywania nie potrzebne są żadne drogie i skomplikowane (dla nich) narzędzia. Tak na prawdę zarabiają, wymyślając historie. Pisarz wymyśla opowiadanie i zapisuje je w swoim edytorze tekstowym, malarz wymyśla historie i uwiecznia ją na płótnie, programista wymyśla historie i za pomocą linijek kodu sprawia, że ta historia ożywa, tak właśnie jest zaczyna ona żyć własnym życiem. Mało tego historia może opowiedzieć się na kilka różnych sposobów w zależności od tego co zrobi użytkownik. Tutaj wchodzimy już w trochę inną ścieżkę, mianowicie tworzenie gier komputerowych, ale nawet pisząc prosty program robiący notatki, wymyślamy jakieś historie.

  1. Użytkownik kliknie w przycisk nowa notatka, wtedy pojawi się nowa strona umożliwiająca tworzenie notatek.
  2. Data wykonania zadania jest starsza niż data teraźniejsza, notatka zmieni kolor na czerwony.

Przedstawiłem tu szczegółowy zapis naszych pomysłów (tak zwane user stories), ale przypomnijcie sobie, kiedy ostatnio wpadliście na genialny pomysł zrobienia jakiegoś programu i opowiadaliście o tym komuś. U mnie przeważnie wygląda to tak, że siedzimy w pubie po drugim albo trzecim piwie i wtedy zaczynają się opowieści o tym jakie to wspaniałe pomysły wpadły nam do głowy przez ostatni miesiąc…

Stary i wtedy wpadłem na ten genialny pomysł… Pomyśl tylko, program będzie łączył OneNote, z zadaniami w Outlooku. Dodatkowo kiedy użytkownik stworzy nowe zadanie na całym ekranie pojawią się fajerwerki. Będzie mógł dostawać przypomnienia na telefon o zbliżającym się zadaniu, a po wykonaniu zadania w głośnikach będzie słyszeć “We Are The Champions”, to pomysł na grube miliony.

Zaczynamy opisywać główne wątki naszej aplikacji, to na czym będziemy bazować pisząc tak zwane zapychacze…

O genialnych pomysłach programistów pisał już Maciej Aniserowicz na swoim blogu. Jeśli potraktujemy program jak książkę to tak właśnie jest, to tak właśnie jest, że niektóre zaczynamy z wielkim zapałem, po czym porzucamy, bo projekt stał się nudny albo za dużo już nabroiliśmy i nie wiemy jak z tego wyjść. Ewentualnie wpadł nam nowy pomysł, stwierdziliśmy, że jest lepszy od ostatniego, a tak na prawdę po prostu przeraża nas ogrom ostatniego przedsięwzięcia…

Zarówno pisarz jak i programista zarabiają wymyślając bajki, obaj mogą pobawić się w boga tworząc coś z niczego i wydaje mi się, że to najwspanialsza część tej pracy. Wspaniałe uczucie, kiedy na ekranie monitora zaczyna się pojawiać coś co sam sobie wymyśliłeś i inne osoby mogą to zobaczyć. Przeważnie działa tak jak mu kazałeś, zdarzają się natomiast momenty kiedy się przeciw tobie buntuje i robi coś po swojemu… wiesz jednak, że to tylko dlatego, że ty coś źle zrobiłeś.

Kindle – to się opłaca

Od kilku miesięcy jestem szczęśliwym posiadaczem jednego z urządzeń firmy Amazon, który podbił świat. Muszę się przyznać, że na początku byłem nieco sceptycznie nastawiony do tego urządzenia, bo co to za czytanie książki bez zapachu papieru i przewracania stron, bez fizycznej rzeczy, która leży w biblioteczce i co jakiś czas błaga o zebranie z niej kurzu, który się nagromadził.

Oczywiście czytałem wiele ebooków, przeważnie na komputerze, co było strasznie niewygodne… Czasami pozycja w jakiej czytałem te książki błagała o pomstę do nieba. Jeśli jednak chciało się przeczytać książkę, która jeszcze nie wyszła w wersji papierowej nie było innego wyjścia.

Po przeczytaniu już kilku książek na Kindle mogę się co nieco wypowiedzieć. Tak na prawdę moje odczucia mogłyby się streścić w jednym zdaniu, a nawet słowie… Postanowiłem jednak trochę bardziej się rozpisać o zaletach tego urządzenia.

Bardzo wygodny

Samo czytanie książek, jest o wiele wygodniejsze niż to było w wypadku zwykłych książek, przede wszystkim dlatego, że można czytać leżąc w łóżku bez potrzeby opierania głowy o rękę na co drugiej stronie lub obracanie się z boku na bok. Można położyć sobie Kindle i czytać bez przejmowania się czy to parzysta czy nieparzysta strona.
Gdyby tylko jeszcze można było podłączyć zewnętrzny przełącznik stron, tak żeby można było je przełączać nie wyciągając ręki spod koca to bym było super! 🙂

Tańsze książki

Jeśli chodzi o cenę, to wiadomo, że tańsza będzie wersja, która od wydawnictwa wymaga wysłania odpowiedniej wersji na maila, niż ta, która wymaga ścięcia paru drzew, druku, oprawy, magazynu i wysłaniu książki kurierem do klienta. Niestety ceny ebooków nie są tak tanie na ile można się było tego spodziewać.


Przeważnie jest to różnica rzędu 10zł (10$ jeśli książka kupowana zagranicą). Natomiast o wiele łatwiej znaleźć jakiegoś dobrego ebooka do kwoty 40zł, niż książki drukowanej.

Oszczędność miejsca

Szczególnie jeśli ma się mały pokój z czasem nadmiar książek zaczyna trochę przeszkadzać. Oczywiście fajnie jest mieć całą ścianę zawaloną książkami, natomiast jeśli ktoś nie ma na to miejsca lub nie kręcą go takie ozdoby, posiadając Kindle jedyne miejsce jakie musi poświęcić to to na swoim dysku.

Miejsce w pokoju to nie jedyne miejsce jakie oszczędzamy. Dodatkowo dostajemy sporo miejsca w swoim plecaku lub torbie. Nie trzeba już dźwigać 1000 stronicowych tomów i taszczyć ich ze sobą cały dzień, mimo, że na czytanie ich poświęcimy może 20 do 40 minut.

Brak klimatu

Niestety minusem takiego rozwiązania jest to co mówiłem na początku, czyli brak klimatu jaki towarzyszył czytaniu książek. Najlepiej tych starych, których zapachami przesiąknięta jest każda biblioteka. Zawsze jednak możemy wziąć jakąś starą książkę i zrobić z niej etui na naszego Kindle zostawiając kilka stron, wydających ten charakterystyczny zapach 😉

Podsumowując

Muszę przyznać, że odkąd dostałem swojego Kindle, jestem od niego uzależniony. Kiedyś czytałem dużo książek, potem zaczęło mi brakować czasu, a teraz znów zaczynam wracać do tego co wcześniej. Dlatego polecam bardzo wszystkim inwestycję w to urządzenie, na pewno się zwróci, nawet jeśli nie w formie pieniędzy, to w ilości stron, które zdążycie przeczytać jadąc do szkoły lub pracy autobusem.

Sync everything!

Przepraszam, za tytuł pisany po angielsku, ale nie potrafiłem inaczej ująć tego o czym chciałbym napisać poniżej.
Nie wiem, czy też macie takie wrażenie, ale ostatnio zacząłem się już gubić z kontami na różnych portalach. Dopóki każde konto było oddzielne jedyny problem jaki miałem to ‚jakie to było hasło?’. Prawdziwy burdel zaczął się wraz ze skonfigurowaniem konta na Windows Phone 7, chociaż teraz już wiem, że to zaczęło się dużo wcześniej.

Błąd nr 1. Zakładając Live id, użyj innego maila. Ja założyłem Live id podając swojego maila w domenie studentpartner.pl, teraz na dodatek ten mail został zlikwidowany a ja nadal loguje się na live id podając nieistniejącego maila.

Błąd nr 2. Logowanie do facebooka za pomocą gmaila. Może to nie jest do końca mój błąd, bo rejestrując się na fb trzeba było podać swojego maila, no ale teraz dorzucili pocztę @facebook.com i po co?

Błąd nr 3. Synchronizacja wszystkiego z live id.
Żeby mieć facebooka w telefonie z wp7 trzeba połączyć go z live id. Dodatkowo potajemnie wszystkie moje kontakty z telefonu zostały skopiowane do kontaktów w live id. Kiedy doszedłem wreszcie do ładu i połączyłem wszystkie kontakty z telefonu, z tymi z facebooka i z live id (co zajęło mi trochę czasu) byłem z siebie nawet dumny. Ale gdzieś w głębi miałem przeczucie, że przez to wszystko mogą być tylko problemy.

Błąd nr 4. Synchronizacja twitter’a z live id. 
Do twitter’a w telefonie korzystam z oddzielnej apki, chciałem jednak widzieć nowe tweety w aplikacji Kontakty na Windows 8, dlatego też musiałem zsynchronizować live id z twitterem.


Kiedy następnym razem kiedy zobaczysz coś takiego zerknij w notatnik czy się nie zapętlisz.

 

Dodatkowo ostatnio znalazłem opcję „Post your Tweets on Facebook„, ale chyba z niej nie skorzystam, to już by było przegięcie.

Teraz kiedy chciałbym zmienić live id jestem udupiony. Nawet nie wiem co jeszcze jest z czym połączone, nie wspominając że chcąc zmienić live id musiałbym sformatować telefon… thanks Microsoft!

 

Na koniec tabelka jakie usługi można ze sobą połączyć, tak aby stracić orientacje z jakiego konta została wysłana wiadomość.

Możliwe połączenia:

LiveId – inny mail
facebook – logowanie przez gmail
facebook – synchronizacja z LiveId
twitter – synchronizacja z LiveId
twitter –  wysyłanie tweetów na facebooka
youtube – synchronizacja z facebookiem
youtube – synchronizacja z twitterem
liveid – google account !? 

Write it down

Często w głowie mamy mnóstwo nieuporządkowanych myśli, najwięcej wtedy, kiedy zaczynamy jakiś projekt i nie wiemy od czego zacząć. Na pewno znacie już magiczny wynalazek, który potrafi te myśli uporządkować… Kartka i długopis często są nieodłącznym atrybutem osób, które projektują jakąś część systemu od zera. Przynajmniej ja, nie wyobrażam sobie uporządkowanie architektury systemu bez wcześniejszego narysowania go sobie na kartce. No właśnie, ale kartki często również mają swoje ograniczenia, przeważnie dlatego, że są zbyt małe i często się mieszają. Można rysować sobie poszczególne części na oddzielnych kartkach, ale wprowadza to zamieszanie i po pewnym czasie już sami nie wiemy co gdzie miało być. Idealnym materiałem na który możemy przelać swoje myśli jest więc tablica. Tak, to co towarzyszyło nam od podstawówki zdaje się, że będzie towarzyszyć jeszcze długi czas. Sam mam w domu jedną tablicę suchościeralną i muszę przyznać, że pomogła mi już z nie jednym problemem. Wystarczy zapisać go na tablicy, a problem sam się rozwiąże :)

whiteboard

Inwestycja w tablicę szybko się zwraca, zwłaszcza jeśli jesteś jeszcze na studiach. W pracy zawodowej rzadko mamy do czynienia z tworzeniem projektu kompletnie od zera, często są to przeróbki istniejącego systemu bądź naprawa błędów. Na uczelni natomiast musimy projektować nowe systemy praktycznie kilka razy w semestrze, wtedy rozrysowanie sobie komponentów i połączeń między nimi na prawdę się przydaje. Niestety tablice mają również swój zasadniczy minus. Są duże i nie wyglądają zbyt ładnie jeśli przykręcimy taką tablicę w salonie, poza tym o ile mieszkamy w domu bądź własnym mieszkaniu możemy sobie wiercić w ścianach do woli, natomiast jeśli wynajmujemy jakieś mieszkanie może być z tym problem. Niedługo sam będę chyba musiał zostawić swoją tablicę w domu i przeprowadzić się do czegoś innego… Dlatego właśnie zacząłem zastanawiać się, co może zastąpić mi tablicę w bloku?

quadpen_p2020_midi_jpg
Jedyną myślą jaka mi się nasunęła, to tablet. Nie taki tablet, który Microsoft, czy Samsung chciałby sprzedać, chodzi mi o graficzny tablet. Jako, że będzie on służył głównie do robienia prostych rysunków nie potrzebowałem jakiegoś super wypasionego za kilka tysięcy, znalazłem fajny tablet Pentagram QuadPen 2, który spełnia wszystkie moje wymagania i kosztuje w granicach 100zł. Na razie jestem w fazie testowania, ale już zaczynam się do niego przyzwyczajać, jest bardzo cienki, dzięki czemu nie wadzi mi na biurku. Na chwilę obecną mogę powiedzieć, że rysuje mi się na nim dużo gorzej niż na papierze czy tablicy, ale mam nadzieję, że to kwestia przyzwyczajenia. Duży plus należy się również nowemu OneNote’owi, dzięki któremu można w bardzo łatwy i przyjemny sposób robić notatki odręczne grupować je w zeszytach i kategoriach. Poza tym przestrzeń ‘kartki’ w one note jest nieograniczona, więc można robić na prawdę duże wykresy i to od razu w wersji cyfrowej.

Post ten miał na celu zachęcić Was do spróbowania przelewania swoich myśli na tablicę, na kartkę bądź też bezpośrednio do komputera za pomocą tabletu. A może już korzystacie z tych albo innych narzędzi do rozpisywania swoich projektów? Dajcie znać w komentarzach, co o nich myślicie.