31 grudnia 2011

Ogon programisty

Co niektórzy blogerzy na koniec roku publikują podsumowania dotyczące poczytności swojego bloga. Ten wpis nie będzie o tym, gdyż takiego podsumowania nie chcę mi się po prostu robić :P

Zdecydowałem się jednak coś napisać, gdyż podobno istnieją jakieś pogańskie przesądy jakoby to co się zrobi ostatniego dnia roku, często będzie miało też miejsce w roku kolejnym...

Innym często praktykowanym zwyczajem jest tworzenie sobie listy celów do osiągnięcia na następne 12 miesięcy. Zdarzało mi się takie listy tworzyć, jednakże zazwyczaj dotyczyły one raczej sfer osobistych.

Na 2012 rok moje cele te programistyczne jak i osobiste definiują się trochę inaczej... przede wszystkim, chcę zadbać o ...

Niedokończone sprawy...


Bloga prowadzę od jakiegoś czasu, ale jakoś nie widać tutaj zbyt wielu efektów, moich programistycznych prac, w postaci postów o tychże właśnie projektach. To jest wręcz dziwne, gdyż każdy kto mnie lepiej zna, wie że w ciągu roku średnio mam kilkanaście różnych pomysłów na różne projekty i projekciki...

Większość z nich nigdy jednak nie wchodzi w fazę końcową. Brakuje mi cierpliwości i determinacji, by do końca skupić uwagę właśnie na tym danym projekcie. Zanim dokończę jeden, już nowy pomysł wydaje mi się dużo ciekawszy.

Konsekwencją tego wszystkiego jest to, że obecnie chcąc wziąć się za wykańczanie tychże projektów, trudno jest nawet ocenić za co się zabrać.

Życzenia...

W tym nowym nadchodzącym roku, chciałbym więc życzyć Ci przede wszystkim determinacji a także jasności umysłu, która powinna pomóc w podejmowaniu decyzji oraz - cytując moją najdroższą żonę -  "aby ten ogon niedokończonych spraw nie ciągnął się tak za Tobą, bo to czasami przeszkadza w przekroczeniu kolejnych progów na Twojej drodze."

25 listopada 2011

Dlaczego warto zostać programistą?


Początkowo ten artykuł miał być czymś w rodzaju listy, która miała przedstawiać atuty tego zawodu względem innych. Od jakiegoś czasu, gdy przyszło mi coś do głowy, starałem się notować sobie "plusy pracy w tym zawodzie".

Lista ta nie zawierała kilkudziesięciu pozycji, raczej kilka-kilkanaście. Podczas przygotowywania tej notki, czytając te punkty nie czułem jednak by to one przekonały mnie niegdyś do ukierunkowania swojej przyszłości.

Teraz wiem, że sprzyjające okoliczności przyczyniły się do tego, że obecnie typowy przedstawiciel tego zawodu nie za bardzo musi się obawiać o pracę. Jeżeli mamy szczęście, nasz pracodawca również może być informatykiem lub ściślej - programistą. To ważne, bo gdy tak się dzieje, on rozumie nasze potrzeby. Często więc np. zdaje on sobie sprawę, że jego pracownicy pracują najwydajniej o różnych porach dnia, tak więc nie zawsze musimy stawiać się w biurze punkt dziewiąta ;) Zdarza się też nie rzadko, że ów pracodawca w pełni jest w stanie zrozumieć, że np. pewne czynności możemy danego dnia zrobić zdalnie, z domu.

Kiedyś było inaczej, programistów postrzegano nierzadko jako wynaturzonych dziwaków. Społeczeństwo jeszcze 20-30 lat temu nie rozumiało, jak można całymi dniami siedzieć przed monitorem a to wszystko tylko po to by stukać w plastikową klawiaturę drukując na ekranie znaczki, które tworzyły jakiś "nudny kod"... W dzisiejszych czasach chyba każdemu z nas zdarzyło się choć raz zatracić w komputerowym/wirtualny/internetowym świecie. To co osiągnęła ludzkość w dziedzinie informatyki jest efektem pracy ale i przede wszystkim wizji osób, które uwierzyły, że to będzie możliwe, już dekady temu.

Obecnie programista postrzegany jest zgoła odmiennie. Nierzadko postrzegany jest on już jako ktoś szczególny. Filmów, gdzie programista jest głównym bohaterem też powstało ostatnio nie mało: Matrix (I, II, III), Kod Dostępu, The Social Network, Szklana Pułapka 4, Tron - Legacy. Gdyby wliczać filmy o tematyce około komputerowej, to lista jeszcze bardziej by się wydłużyła m.in. o Eagle Eye, Wroga publicznego, I Robot, Transformers (I, II, III), itd. Z resztą po co wymieniać? Istnieje cały spis owych filmów na Wikipedii(List_of_films_about_computers).

Komputery stały się popularne. Widzimy, że odgrywają one ogromną role w naszym życiu. Zaskakujące jest to, że to co jeszcze do nie dawna było dla nas gadżeciarskim Science Fiction, obecnie często przybiera realną formę. Wydawanie komend głosowych komputerowi w naturalnym języku, jeszcze 5 lat temu było zupełnie nieprawdopodobne, dzisiaj produkt to oferujący, jako swoją główną zaletę podaje właśnie to. Oglądając nie jeden nowoczesny film podziwialiśmy, samosterujące się auta. A prawda jest też taka, że one już jeżdżą po niektórych ulicach USA (jeszcze w fazie testów, co nie zmienia faktu, że już jeżdżą!)

Co to ma do programowania? A to, że bez programistów żaden z tych tworów by nie powstał. Co ciekawe, ludzie zaczynają nawet sami to rozumieć, jaka ważna jest ich rola, oraz to, że maczaliśmy palce w aucie którym dojeżdżasz do pracy, urządzeniu z pomocą którego kupujesz bilet autobusowy, w Twoim telefonie, nowej plaźmie ze ściany, robocie kuchennym, budziku, radiu, odtwarzaczu muzyki a nawet w Twojej szczoteczce do zębów. To są tylko urządzenia w których "żyją" programy napisane przez programistów. A gdyby zastanowić się co nie powstałoby, gdyby nie została oprogramowana ta czy inna taśma produkcyjna, to wychodzi na to, że w domu nie mielibyśmy prawie niczego :)

Czy zatem programistą warto zostać dlatego, że być może będzie miało się okazje oprogramowywać ekspres do kawy? Nie, a przynajmniej mną nigdy to nie kierowało ;)

Od małego dziecka lubiłem komputery, jednak pierwszy swój program napisałem dopiero w pierwszej klasie liceum. I wiecie co wtedy poczułem? Moc!

Okazało się, że oto odkryła się przede mną możliwość wymyślania rzeczy,  szczegółowego projektowania a następnie ostatecznego ich tworzenia! Jeżeli kiedyś bawiłeś się Lego, to na pewna znasz tu uczucie satysfakcji, gdy kończyłeś budować swoją wymyślną konstrukcję! Była stworzona przez Ciebie klocek po klocku, dzięki czemu była wyrazem Twojej twórczości i oryginalności, była niepowtarzalna i wyjątkowa.... chyba, że....zabrakło Ci kilku klocków.

Chyba każdy, kto bawił się Lego nie zbudował choć jednej wymarzonej konstrukcji, dlatego że liczba jego klocków była ograniczona. A co gdyby mieć klocków więcej lub nawet nieograniczoną ilość?

Jeżeli choć odrobinę się wczułeś, to być może zrozumiałeś to, jak może czuć się programista każdego dnia. On do dyspozycji ma wszystkie klocki w nieograniczonej ilości! On nie ma też problemów, że jakiegoś klocka w ogóle nie posiada. Języki programowania są tak skonstruowane, że brakujące "klocki" zawsze można stworzyć z już istniejących.

Gdy uczyłem się programowania z początku uczyłem się reguł jak "dopasowywać klocki do siebie". Dość szybko przyszła pora na poznanie tajników programowania obiektowego. I to było dla mnie kolejne wielkie wydarzenie. Zrozumiałem, ze od tej pory wszelkie odzwierciedlanie tego co chciałbym stworzyć będzie dla mnie łatwiejsze! Wiecie jakie było moje pierwsze wrażenie gdy poznałem zasadę i cele klas? "Dajcie mi trochę czasu, a napiszę wam drugiego Matrixa!" :)

Teraz wiem, że najpewniej sam mógłbym nie wyrobić się w odpowiedniej liczbie osobogodzin, by skończyć go przed śmiercią ;) Jednak wiem, że na pewno nie byłem sam z myślą, że praktycznie cały świat dałoby się odwzorować wirtualnie. Ktoś przecież musiał wpaść na ten koncept Matrixa!

Szybki komputer, dwa monitory, stały dostęp do internetu, nie rzadko jakiś fajny pakiet socjalny i nie najgorsza pensja...to są tylko przykłady atutów, które mogłyby przekonać nie jedną osobę, że warto wyuczyć się na programistę. Jednakże istnieje nie mały procent osób, które postanowiły kształcić się w tym kierunku nie myśląc o tym... one po prostu kiedyś zaczęły programować i zdały sobie sprawę, że odtąd mogą tworzyć niemalże wszystko, co tylko będą w stanie wystarczająco dokładnie opisać!

22 listopada 2011

Jak przyśpieszyć git'a?

Na pewno sposobów jest wiele, jednak jednym z nich jest regularne odpalanie git gc (garbage collector).

Pamięć jednak jest zawodna, dlatego najlepszym pomysłem jest zautomatyzowanie procesu i ustawienie cyklicznego wywoływania procesu.

Do tego wystarczy pojedynczy wiersz w cronie. Jednakże jeżeli na co dzień uzywamy wielu repozytoriów, tych wpisów musiałoby być w cronie więcej.

By zachować w nim porządek chciałbym zaproponować inne podejście:

Tworzymy sobie plik ~/.gitrepos, do którego wpisujemy ścieżki projektów, które chcemy "utrzymać w czystości"


/media/truecrypt1/workspace/current/project_A/
/media/truecrypt1/workspace/current/project_B/
/media/truecrypt1/workspace/old/project_C/
/media/truecrypt1/workspace/another/project_D/

Potem już tylko crontab -e i wklejamy:

30 2 * * * cat ~/.gitrepos | xargs -I {} git --work-tree={} --git-dir={}.git gc

Taki wpis, codziennie w nocy o 2:30 będzie odpalał git gc dla każdego repozytorium z zapisanych katalogów. Użycie --work-tree oraz --git-dir jest konieczne, dlatego że domyślnie polecenie z crona jest odpalane w katalogu domowym.

PS. jeżeli nie lubisz/nie chcesz używać crona  w tradycyjny/trudniejszy sposób, zainstaluj sobie nakładkę graficzną gnome-schedule (sudo apt-get install gnome-schedule)

12 września 2011

Krzysiek się żeni!

Uwaga... niniejszy tekst jest przeznaczony tylko dla osób ze "skrzywieniem" okołoinformatyczny!

Stało się!


Wszelkie programistki powinny przestać mieć złudzenia! Kolejny dobrze wypozycjonowany programista przestał bowiem być publicznie dostępny. Otóż na mocy pewnej umowy, Krzysztof mniej lub bardziej znany jako noisy, został objęty własnościową licencją "Marriage 2.0/Good".


Jak dowiedziały się media, podobno już od kwietnia ów koder przestrzegał postanowień cywilnej wersji licencji "Marriage 1.0". RoadMap noisy'ego podobno jednak od początku przewidywał organizację okolicznościowej imprezy integracyjnej dopiero z okazji migracji na drugą wersję licencji. Główna różnica pomiędzy wspomnianymi licencjami polega na tym, że ver. 2 uniemożliwia jakiekolwiek migrację, innymi słowy jest wieczysta. Programiści chcący przejść na wersję drugą licencji przepisywani są do projektu w której Project Managerem jest programista-guru o pseudonimie Good. Samo podpisywanie stosownych dokumentów musi mieć miejsce w jednej z jego kwater (noisy i jego wybranka wybrali tą o współrzędnych 51.10251, 17.085993). Podczas uroczystości migracji do licencji "Marriage 2.0" na Krzysztofie i jego wybrance - Magdalenie zostały przeprowadzone kroki dość tajemniczego algorytmu. W kluczowym momencie podali sobie dłonie, po czym z pomocą klucza szyfrującego w formacie STUŁA, został pomiędzy nimi nawiązany specjalny szyfrowany tunel komunikacyjny w protokole na owej specjalnej licencji. Od tej pory newralgiczne dla ich systemów decyzje muszą przejść proces podwójnej autoryzacji.

Zostały im także wręczone specjalne, podpisane cyfrowo nadajniki GPS wykonane z cennego kruszcu, które są teraz przez nich noszone na serdecznym palcu prawej ręki.



Należy pamiętać, że tego rodzaju nadajnik wręczony programiście jest jednocześnie certyfikatem świadczącym o jego wysokich kwalifikacjach interpersonalnych.

Cała procedura przebiegła dość sprawnie. Dość ciekawym wydarzeniem był natomiast pewien kwiatkowo-płatkowy atak DDoS jaki miał miejsce zaraz po wyjściu Magdaleny i Krzysztofa z kwatery Good'a. Jak się jednak okazało, jest to typowe w takich okolicznościach.


A co się działo później? Późniejsza impreza integracyjna była dość zaskakująca dla osób mających w pamięci stereotyp informatyka jako samotnego osobnika w okularkach ubranego we flanelową koszulę. Okazało się bowiem, że każdy programista, koder czy inny pracownik IT przyszedł w towarzystwie osoby płci przeciwnej!

Ale to nie koniec!... pomimo, że na sali był komputer klasy PC, to jednak nikt nie rwał się tego dnia do programowania(sic!). Cała sala zgodnie pozwoliła użyć tego sprzętu jako panelu konfiguracyjnego, na potrzeby administratora sali o pseudonimie DJ Locky, dzięki czemu wszyscy mogli bawić się przy świetnej muzyce.

Impreza przebiegła dość sprawnie. Pomimo częstego ładowania trunków do buforów gardłowych, nie wystąpił żaden StackOverflowException ;)


Kolejne wieczory po tej imprezie, Krzysztof i Magdalena spędzają już w swoim wspólnym gniazdku w Oławie. Krzysztof bowiem jakiś czas temu przeprowadził się z Wrocławia do ich wspólnego "M". Co prawda teraz musi wstawać trochę wcześniej, by dojechać do pracy... no ale cóż... nikt mu nie obiecywał, że będzie ze wszystkim łatwo :)

PS.
Krzysiek wraz Magdaleną postanowili stworzyć swoją stronę ślubną - szumni.pl. Podobno gościom bardzo się przydała i spodobała :)

12 lipca 2011

Pocztówka z wakacji

Owszem, ktoś pojechał na wakacje, ale tym razem nie byłem to ja. Na wakacje pojechała sobie Opera Mini razem z portalem nk.pl, na skutek kampanii którą razem z moim kolegą Sławkiem Sochajem i ekipą nk.pl przygotowaliśmy dla Was!

Postanowiliśmy przypomnieć naszym użytkownikom, że z Opery Mini można korzystać wszędzie korzystając praktycznie z każdego telefonu! W okresie wakacyjnym nie ma więc potrzeby rozstawać się z największym portalem społecznościowym o polskich korzeniach :)

Jeżeli jeszcze nie miałeś okazji korzystać z Opery Mini, masz teraz szansę wypróbować ją, bez konieczności instalacji korzystając ze strony http://nk.pl/nawakacjach.

Sprawdź jak działa, pobaw się nią i zobacz jaką daję to frajdę!

1 lipca 2011

Google+

Zamiast czytania, proponuję dziś obejrzeć filmik:



Chce ktoś zaproszenie? :)

(Chętni mogą podesłać swój e-mail na adres noisy.pl@gmail.com)

5 czerwca 2011

Optymalizacja czasu budowania projektu.



Planowałem na ten temat napisać spory artykuł. Od dłuższego czasu wszakże zbieram informacje, którymi chciałbym się z wami podzielić. Temat optymalizacji czasu budowania projektu jest naprawdę szeroki ;)

Postanowiłem przeprowadzić pewne badania, które pozwolą mi określić jak wygląda "typowe" środowisko programistyczne. W tym celu bardzo prosiłbym Cię mój czytelniku o wypełnienie tej krótkiej ankiety.