Sto lat, sto lat – 10 lat mojego bloga!

Noworoczne zamieszanie spowodowało, że prawie zapomniałam, iż dokładnie 1 stycznia 2007 roku założyłam swojego programistycznego bloga.

Przez parę ostatnich dni próbowałam sobie przypomnieć jak to było wtedy i jak to bywało przez te 10 lat.

Otóż w tamtym czasie nie było tak rozwiniętej jak teraz polskiej blogosfery programistycznej. Właściwie w ogóle było mało blogów innych niż pamiętniki w sieci. Wówczas mój blog miał podtytuł „miejsce na moje podręczne notatki”, bo taki właśnie był jego cel. Założyłam go, by zapisywać jakieś problematyczne rozwiązania albo ciekawostki na które się napotykałam. Nie było w tamtym czasie Stackoverflow (powstał w 2008 i pewnie chwilę mu zajęło zanim stał się tak popularny jak teraz) więc faktycznie warto było mieć miejsce, by sobie coś zanotować i mieć do tego dostęp z każdego miejsca. Dzięki dostępności publicznej można było też łatwo się  tym dzielić z innymi.

Początkowo blog  był zdaje się na jakiejś platformie typu blox albo wp dopiero później przeniosłam go na WordPress. Był on zlokalizowany na darmowej domenie i hostingu pod adresem maga.ovh.org Dopiero parę lat później zmieniłam adres na programistka.com by w końcu kupić domenę programistka.net Obecnie stoi na płatnym hostingu linuxpl.org z którego zresztą jestem bardzo zadowolona, bo nawet w niedzielę popołudniu odpisują na głupie pytania o to jak coś skonfigurować.

W tym początkowym okresie jeszcze gdy hostowałam stronę na ovh oprócz bloga miałam też śmieszne podstronki z CV itp. naklepane osobiście w phpie i z osobiście wymyślonym designem, co jak można się domyślić niespecjalnie służyło tej stronie. Na szczęście wraz ze zmianą domeny wreszcie zmądrzałam i postawiłam na jedną główną część jaką jest blog ubrany w skórkę stworzoną przez WordPress. Tym samym strona zdecydowanie zyskała na wyglądzie.

No i najważniejsza zmiana – gdy zakładałam bloga, zajmowałam się tworzeniem stron w PHP i w sumie nie myślałam o zmianie technologii. Teraz programuję głównie w .NET i pracuję jako architekt oprogramowania, ale nie przywiązuję się już tak bardzo do jednego języka.

Dziś blog ma też swoje odzwierciedlenie na Facebooku oraz Twitterze. Twitter istniał dopiero rok. Facebook z kolei był chyba jeszcze zamknięty dla szerszego grona a dostępny tylko dla środowisk uniwersyteckich.
Dziś mogę też pisać notki z komórki, co w 2007 roku nie przyszłoby mi do głowy:)

Kto żyw niechaj rusza do boju – Daj się poznać 2017

Już jest – wystartowała rejestracja do kolejnej edycji konkursu programistycznego „Daj się poznać”:)

Bardzo mnie to cieszy i niniejszym chciałam wszystkich zachęcić do startu, ponieważ jak mogliście przeczytać w moich wpisach z zeszłego roku jest to naprawdę super przygoda.

Może się Wam wydawać, że trzy miesiące to za długo i że nie dacie rady. Nie martwcie się na zapas! Najważniejsze to spróbować i zobaczyć co będzie dalej. Na pewno podczas udziału w konkursie poznacie dużo innych pasjonatów, którzy lubią kodować po godzinach i tym samym rozszerzycie krąg znajomych o bardzo wartościowych ludzi. Na początku wdrożyć się w tryb pisania dwa razy w tygodniu może być trudno jeśli nie pisaliście niczego wcześniej, ale z czasem przywykniecie i już w czasie kodowania czy mijającego dnia będą Wam słowa same przychodziły do głowy.

Zachęcam do przeczytania również mojego gościnnego wpisu na stronie devstyle.pl, gdzie opisuję swoją drogę do drugiego miejsca:) Choć w tym roku nie zamierzam startować będę śledzić konkurs i trzymać kciuki! Powodzenia!

O tym jak przeczytałam ponad 70 książek w ciągu jednego roku…

Wiele osób z którymi rozmawiam mówi mi, że nie ma czasu na czytanie książek. Są też takie, które mówią, że przy nich zasypiają więc nie mogą czytać.  Mówią „też bym tak chciał(a)”, kiedy widzi kolejną przeczytaną przeze mnie książkę.

A to wcale nie jest takie trudne!

Rok temu udało mi się przeczytać ponad 52 książki choć 52 to był cel jaki sobie ustawiłam. W tym roku celem było 60. Udało się to przebić i to tak naprawdę całkiem niechcący choć na pewno nie było to takie proste. Dodam, że rzadko wrzucam na listę książki techniczne, bo często czytam je wyrywkowo we fragmentach, które mnie interesują.

Uwielbiam czytać

Od dzieciństwa pochłaniałam książki w każdej wolnej chwili i to był jeden z moich ulubionych sposobów spędzania wolnego czasu. Do dziś jest. Jak więc mogłabym nie znaleźć na to czasu?

Czas się zawsze znajdzie

Do pracy jeżdżę samochodem, ale mimo to czytam więcej niż w czasach, gdy do pracy jeździłam komunikacją miejską. Początkowo sądziłam, że będzie wręcz odwrotnie. Jednak jest tak głównie dlatego, że samochodem dojazd tam i z powrotem zajmuje mi o połowę mniej czasu. Toteż zyskaną połowę mogę poświęcić na czytanie i to w komfortowych warunkach na własnej kanapie a nie będąc non stop potrącaną w autobusie, bo jednak znalezienie miejsca siedzącego nieraz bywa wyzwaniem. Zresztą kiedy jestem zmarznięta nawet niespecjalnie chce mi się czytać.

Każde miejsce jest dobre

Założenie jest takie, żeby czytać wszędzie nawet jeśli ma to być parę minut czy kwadrans. Tak więc wszelkiego rodzaju kolejki, poczekalnie, oczekiwanie na kogoś, podróżowanie, czekanie aż zagotuje się woda na kawę czy podgrzeje zupa to też dobre momenty na czytanie. Nie musimy sięgać po książkę z zamiarem pochłonięcia na raz 100 stron. Dwie będą tak samo dobre a w dłuższej perspektywie przybliżą nas do jej końca.
Łatwiej jest mieć zawsze coś do czytania pod ręką, kiedy czyta się ebooki. W większości czytam książki na tablecie lub telefonie korzystając z aplikacji Amazon Kindle i Legimi. Amazon Kindle pozwala nam czytać wszystko co mamy na swoim koncie Amazon podobnie jak Kindle jako urządzenie. Z kolei Legimi to bardzo fajny serwis, który pozwala nam czytać książki – w większości nowości za bardzo przystępną cenę abonamentowa. Opłaca się to na pewno przede wszystkim osobom, które dużo czytają a niekoniecznie mają potrzebę kupowania książek. Właśnie ze względu na tą aplikację nie używam Kindle, ponieważ nie ma on Androida, który jest potrzebny by jej używać. Czytniki z Androidem typu Inkbook itp. mi się nie podobają, ponieważ są powolne i ani to Kindle ani tablet.  Z kolei tablet, który mam ma fajną opcję „Tryb czytania”, który zmienia nieco barwę ekranu przez co nie męczy oczu i nie utrudnia zasypiania. Pod słońce to nie to samo co Kindle, ale cóż… nie można mieć wszystkiego.

Ale nie każda książka

Daję książce 30%, jeśli do tego momentu mnie nie wciągnie, zostawiam ją i biorę kolejną z listy książek, które chciałabym przeczytać. Lista ta jest u mnie bardzo długa, więc nie mam czasu książki, które mnie nie cieszą. A życie na takie książki jest zdecydowanie za krótkie. Czytanie ma cieszyć, więc jeśli czytanie danej książki nie przynosi nam radości można ją bez żalu porzucić.

Nie trzeba się ograniczać

Jeśli mam ochotę czytać kilka książek na raz – robię to. Nie ma problemu jeśli chcemy czytać na przemian reportaże i książkę o samorozwoju. Albo książką obyczajową i zawodową. Nie polecam jednak łączenia książek fabularnych a w szczególności kryminałów, bo jeśli pomieszają się bohaterowie to raczej radość z czytania będzie marna. Czasem więc na przykład do poduchy czytam coś przyjemnego, żeby się miło spało, w ciągu dnia reportaże albo książki o minimalizmie itp

„Zasypiam nad książką”

Pewnie że zasypiam czytając książkę przed zaśnięciem. Ale to zależy od dnia i od książki. Czasem zdarza mi się czytać dłużej a czasem zasypiam przed skończeniem strony. Ma to jednak swoje plusy. Czytanie odciąga umysł od dnia codziennego przez co łatwiej się wyłączyć i nie myśleć o tym co trzeba zrobić dnia następnego albo co nam się dziś nie udało. Tym samym wyciszamy młyn w głowie i możemy odpocząć.

Dodam, że czytam też w ciągu dnia i też zdarza mi się zasnąć. Jest to dla mnie fajnym sposobem na reset po pracy. Po małej drzemce dzień zaczyna się dla mnie praktycznie od nowa. Ważne, żeby z drzemką nie przesadzić, bo czuję się jak zombie jeśli pośpię za długo. Zdecydowanie też nie później niż około 17, ponieważ kiedy śpię po 18, to nie mogę zasnąć w nocy.

Tak więc jak widać – wszystkie wymówki można jakoś obejść:) Jeśli tylko się chce.

A jak to wszystko wyglądało w praktyce w ciągu roku?

Na pewno nie było tak, że każdą wolną chwilę spędzałam na czytaniu, ponieważ na trzy miesiące pochłonęło mnie uczestnictwo w konkursie „Daj się poznać”, które to skutecznie zajęło prawie cały mój wolny czas. Prawie, bo jednak odpocząć od kodowania czasem musiałam i książka była najlepszą odskocznią. Zresztą poza czytaniem mam też parę innych hobby, którym również poświęcałam swój wolny czas.

Nie było też tak, że miałam dużo wolnego/urlopu/chorobowego a więc w większości moim wolnym czasem był tylko czas po pracy. Było parę podróży, ale w trakcie wyjazdów czytam raczej mało. W czasie lotów/jazdy pociągiem owszem, ale bardzo szybko zasypiam:) W trakcie jazdy autobusem niestety czytać nie jestem w stanie, ponieważ pojawia się choroba lokomocyjna:( Chorowałam tylko raz, w okolicy 60 tej książki.

Podsumowując – „Kto chce szuka sposobu. Kto nie chce szuka powodu”

A co w 2017? Plan na ten rok jest takim że nie ustalam żadnego celu ile książek chciałabym przeczytać. Jednak chciałabym czytać więcej książek o samorozwoju, organizacji, bo tego w minionym roku było mniej niż bym chciała. Ponadto czasopisma i blogi na które do tej pory miałam mniej czasu. Nie jestem pewna czy pęd do książek uda mi się ograniczyć, ale będę się starać.

Jeśli ktoś chciałby zobaczyć jak w książkach wyglądał mój rok 2016 to zapraszam na Goodreads. Wcześniej częściej używałam serwisu Lubimy czytać więc i tam można mnie znaleźć.

Code Europe – Kraków – jak było?

Miałam okazję ostatnio wybrać się na mało rozreklamowaną konferencję Code Europe w Krakowie. Miała ona również swoją bliźniaczą edycję w Warszawie dwa dni później. W obu miastach były niemalże te same prelekcje. Co wyróżniało wydarzenie to, że oprócz prelekcji można było wziąć w udział w warsztatach a to wszystko było darmowe. Niestety w praktyce wyszło to nieco rozczarowująco…

Po rejestracji na wydarzeniu dostałam maila z informacją, by koniecznie od razu zapisać się na warsztaty i prelekcje, bo liczba miejsc jest ściśle ograniczona. W przypadku warsztatów było to zrozumiałe ale w przypadku prelekcji? Troszkę dziwne. No i co z przeskakiwaniem między prelekcjami jeśli okaże się, że jednak nie interesuje mnie temat? Zgodnie z instrukcjami zapisałam się na warsztaty i prelekcje. Było to na kilka tygodni przed konferencją. Jednak dopiero na dwa czy trzy dni przed wydarzeniem dostałam maila (podobnie jak wiele innych osób) z informacją, że nie zmieściłam się na główną listę uczestników warsztatu na wybrany przeze mnie warsztat i jestem na liście rezerwowej. Dodatkowo była informacja, że decyduje kolejność pojawienia się pod salą i być może prowadzący zdecyduje o wpuszczeniu większej ilości osób. Było to dość kłopotliwe, bo albo człowiek bierze, że sobą sprzęt albo nie:(

Sprzęt wzięłam, ale na warsztat się nie dostałam. Z powodu kolejki do rejestracji. Tak oto wyglądała parę minut przed 9tą, więc jak nietrudno się domyślić po prostu na 9.15 nie zdążyłam.

img_20161205_085846

Innym ciekawym rozwiązaniem na konferencji było to, wykłady w równoległych blokach nie zaczynały się o tych samych godzinach tylko się zazębiały. Mogło to powodować albo zbyt długie albo zbyt krótkie przerwy a także utrudniać przejście między prelekcjami jeśli uprzednio wybrana nas nie zainteresuje.

Trochę o samych wykładach.

Pierwsze co widziałam, to Hubert Łępicki opowiadający o bazach danych w prelekcji pod tytułem „Your database is not your application”, który przypomniał nam, że czasy, gdy bazy danych były centrum naszego projektu i punktem startu dawno się skończyły.

Następnie byłam na bardzo inspirującej prezentacji „How to build a Robot!” Allena O’Neilla w której przekonywał nas on, jak dla mnie z sukcesem, że w dzisiejszych czasasch zbudowanie robota już nie jest tak dużym wyzwaniem i że każdy z nas może to zrobić. Najważniejsze to skupić się na prostocie I podstawowych funkcjach a niekoniecznie przejmować się tym jak to wszystko wygląda, bo to możemy dopracować później. Podkreślał, by duże problemy rozbijać na mniejsze i to od nich rozpoczynać rozwiązywanie. Mówił też o tym, że nawet jeśli mamy jakiś pomysł, który chcielibyśmy zrealizować I na dziś dzień jest to trudne bądź niewykonalne w ramach naszych zasobów, to by wracać do niego co parę lat, ponieważ niewyklyczone, że przyszłość dostarczy nam rozwiązań.

Kolejna prelekcja to „So, how do Google, Bing and Yahoo work?” również tego samego Allena O’Neilla na którą troszeczkę się spóźniłam, ponieważ organizatorzy konferencji poskąpili (była darmowa, ale jednak…) jakiegokolwiek poczęstunku dla uczestników i nie było sensownej przerwy by obiad zjeść gdzieś na zewnątrz.

Zatem nie było ani czegoś w ramach lunchu ani niczego do przegryzienia do kawy. Kawy zresztą też było mało, ponieważ znajdowała się tylko na stanowiskach firm, które reklamowały siebie i miały na celu rekrutację. Nie było możliwości napicia się kawy bez wdawania się w rozmowę o firmie, ofertach i byciu namawianym na poszczególne stanowiska. Jeśli więc nie szukało się pracy, takie rozmowy były stratą czasu a przez nie do kawy bardzo trudno było się dostać. Innych sposobów jej pozyskania nie znalazłam.

Wracając do prelekcji, to oczekiwałam czegoś bardziej zaawansowanego tymczasem prezentacja zawierała rzeczy bardzo proste, na które przy odrobinie zastanowienia wpadłby każdy. O działąniu takich mechanizmów zapewne można pokazać dużo ciekawsze rzeczy niż to jak kawałkiem kodu C# wyciągnać z htmla linki itp jest to jakaś tam podstawa crawlingu, ale później na pewno jeszcze wiele się dzieje.

Ciekawym punktem programu była też zorganizowana pogadanka na termat przyszłych zawodów w IT. Brali w niej udział Piotr Madej (Vice-President and Head of Telemedicine and Medical Devices RnD Department @ Comarch Healthcare) i Przemysław Berendt (Global Marketing Vice President @ Luxoft), którzy rozmawiali sobie o tym jak zmieniają się stanowiska w IT, które już wyginęły a które dopiero ostatnio powstały. Były również próby przewidzenia co przyniesie przyszłość.

Później był wykład na który bardzo liczyłam „Spotify – music streaming at scale” Niklasa Gustavssona, który w Spotify pracuje. Miałam nadzieję, że będzie bardziej technicznie o probelmach z jakimi w takiej skali muszą się mierzyć. Niestety jednak więcej było ogólnie os trukturze organizacji o sposobach współpracy, o tym jak działają wewnętrznie.

Następnie była moja ulubiona prelekcja tej konferencji – „Go hack yourself…or someone else will” Fransa Roséna, który na przykładach ze swojego życia jako zdobywcy sporej ilości pieniędzy ze znajdowania bounty bugów pokazuje różne ciekawe przypadki dziur w bezpieczeństwie a także zaniedbanych dobrych praktyk.

Ostatni wykład to „The Post JavaScript Apocalypse” Douglasa Crockforda, który początkowo wydawał mi się być wykładem o tym jak zapanować nad bałaganem w kodzie JavaScriptowym, ale ostatecznie okazał się być bardzo ciekawym opisem co można by zmienić by następca JavaScriptu był językiem prostszym i mniej zaśmieconym.

Na koniec jeszcze wspomnę o after party. Było ono tylko dla wybranych:) Organizowane przez Motorolę i zaproszeni byli jedynie programiści C++ i C#. Nietrudno się domyślić dlaczego zatem nie skorzystałam:) Wolę after, gdzie mogę pogadać z innymi programistami lub prelegentami a nie opędzać się od rekruterów.

Ciekawe jest też to, że z firmy w której pracuję dostałam bilet VIP, ponieważ jako jedyna się wybierałam a zapowiadało się, że bilet ten coś znaczy i będzie jakąś wartością dodaną do mojego normalnego biletu. Jednak kiedy pytałam przy rejestracji co ten bilet daje, organizatorzy mieli problem z odpowiedzią. Jedna pani była niepewna czy w ogóle coś, inna że może to po prostu bilet, kolejna, że może wejściówka na afterparty.

Podsumowując – konferencja jest darmowa i tematy są raczej podane w sposób odpowiedni dla początkujących, więc można by założyć, że taka jest grupa docelowa – studenci i młodzi programiści. Organizacja niestety jak dla mnie pozostawia wiele do życzenia, bo nie jest to pierwsza darmowa konferencja na której byłam za to pierwsza na której nie było sensownego cateringu. Naprawdę ta kawa czasem jest niezbędna nawet na bardzo ciekawym wykładzie, bo po paru godzinach w ciemnej sali coraz trudniej oszukać organizm. Na pewno też nie jest to „największa konferencja programistyczna w Polsce” choć takim hasłem się reklamuje.

NSSM – fajne narzędzie do zarządzania serwisami

NSSM to skrót od Non-Sucking Service Manager i to właściwie bardzo dobre podsumowanie tego narzędzia. Znajdziemy je tutaj.

Dlaczego jest takie fajne?

Ponieważ pozwala nam na łatwe zarządzanie serwisami bez używania takich komend jak installutil czy sc. Mimo, że używamy go z konsoli dostarcza nam okienkowego interfejsu w którym możemy ustawić poszczególne opcje dla naszego serwisu.

Zatem jak tego używać?

Powiedzmy że stworzyliśmy serwis Windowsowy lub też jakiś inny (osobiście używam NSSM na przykład do instalowania serwisów wchodzących w skład ELK – Elasticsearch, Logstash, Kibana) i nazywa się on myservice.exe

Ściagąmy NSSM stąd, rozpakowujemy w dowolnym miejscu i aby wygodniej go używać dodajmy go sobie do PATH. Tak przygotowani otwórzmy konsolę z prawami administratora i przejdźmy do folderu, gdzie znajduje się myservice.exe

Możemy tutaj wyświetlić sobie opcje jakie daje nam nssm poleceniem

nssm --help

lub samo

nssm

Pierwsza opcja dostępna to:

To show service installation GUI:
nssm install []

Ta bardzo mi się podoba, ponieważ pokazuje nam ona takie oto okienko:

NSSM

W zakładce Application możemy ustawić ścieżkę do naszego serwisu w polu Path oraz argumenty z jakimi ma być uruchamiany serwis. Na tym możemy zakończyć klikając „Install service” jednak możliwe jest też użycie wielu innych opcji. Najciekawsze z nich omówię poniżej.

W zakładce Details mamy możliwość ustawienia nazwy i opisu jakie mają być wyświetlana w systemie dla tego serwisu – np. w  systemowych usługach oraz opcji „Startup type” czyli czy serwis ma być uruchamiany automatycznie, ręcznie albo ma pozostać nieuruchomiony.

nssm-details

W zakładce Log on ustawiamy parametry konta, którego ma używać serwis.

nssm-logon

Z kolei w zakładce Dependencies możemy ustawić serwisy od których nasz ma być uzależniony.

nssm-dependencies

W praktyce oznacza to, że jeśli np nasz serwis wymaga do działania jakiegoś innego dobrze jest umieścić go właśnie w tych zależnościach aby serwisy razem się uruchamiały i razem resetowały. Unikniemy wtedy sytuacji, że jeden się wyłączy i drugi przestanie działać z powodu tamtego.

Zakładka Process pozwala nam ustawić parametry dotyczące priorytetów tego serwisu oraz jakiej ilości rdzeni ma używać. Parametry dotyczące wyłączenia serwisu ustawiamy w zakładce Shutdown a to co ma się dziać w razie wystąpienia problemów w zakładce Exit Actions.

nssm-process

W zakładce I/O możemy podać ścieżki do plików, gdzie zostaną umieszczone logi z działania serwisu takiego jak uruchamianie czy jakieś problemy. Trzeba pamiętać, że nie jest to ta sama ścieżka co np logowanie do plików za pomocą log4net, którą konfigurujemy całkiem gdzie indziej.

nssm-io

Z logami powiązana jest również kolejna zakładka, która umożliwia nam ustawienie według jakich reguł pliki mają być podmieniane.

nssm-filerotation

I wreszcie ostatnia zakładka umożliwia nam zdefiniowanie zmiennych środowiskowych właściwych dla tego serwisu jeśli ich wymaga.

nssm-environment

Jak widać NSSM dostarcza nam w sposób bardzo przyjazny potężny zbiór różnego rodzaju ustawień, które oczywiście możemy konfigurować też na parę innych sposobów:

  • konfiguracja podczas tworzenia np. w Visual Studio
  • polecenie installutil podczas instalacji serwisu
  • Usługi (Services)

Jednak tutaj mamy tą przewagę, że wszystkie ustawienia zebrane są w jednym miejscu i wygląda to bardzo czytelnie i wygodnie.

Podobne okienko zobaczymy, gdy zechcemy edytować serwis poleceniem

nssm edit

Jednak jeśli bardzo chcemy możemy też nie używać okienka i po prostu korzystać nadal z linii poleceń, ale wtedy oczywiście wszystkie parametry wpisujemy ręcznie. Służą do tego celu komendy:

nssm install <servicename> <app> [<args> ...]

do instalacji

Oraz

nssm set <servicename> <parameter> [<subparameter>] <value>

do ustawienia poszczególnych parametrów serwisu

Dla mnie największą zaletą NSSM jest to, iż radzi sobie ze wszelkim przywieszonymi serwisami, które do końca się nie uruchomiły a których pid wynosi 0 przez co nie da się ich pozbyć za pomocą polecenia taskkill. Takie sytuacje często zdarzają się podczas pracy nad windowsowymi serwisami.

Wystarczy wówczas uruchomić usuwanie albo korzystając z okienka za pomocą polecenia:

nssm remove [<servicename>]

i wówczas otworzy się okienko

Albo po prostu wywołać polecenie:

nssm remove <servicename> confirm

I NSSM szybko pozbywa się naszego serwisu bez konieczności resetowania maszyny by pozbyć się przywieszonego serwisu.

Oprócz wspominanych opcji instalowania i usuwania serwisów mamy też inne:

Edycję:
To show service editing GUI:
nssm edit

Modyfikację poszczególnych parametrów bądź sprawdzenie ich wartości:

To retrieve or edit service parameters directly:
nssm get []
nssm set []
nssm reset []

Zarządzanie serwisami:

To manage a service:
nssm start
nssm stop
nssm restart
nssm status
nssm rotate