A właściwe o tym, że właśnie Ty masz talent! I nie ważne co Ci mówią inni, co Ci mówi świat, ani tym bardziej - co sam o tym myślisz. Skąd taka pewność? Bo tak. Stary bardzo nie jestem, ale coś tam już wiem, wiele też się dowiedziałem od wielokrotnie mądrzejszych ode mnie.
Zacznijmy jednak od początku. A zawsze najlepiej jest zacząć od siebie. Sam bowiem wiele lat borykałem się z tematem talentów. Właściwie to przez pierwsze kilkanaście lat swojego życia raczej się nim nie zajmowałem, bo mając nieliche problemy z poczuciem własnej wartości, temat czy mam jakieś talenty wydawał się kosmicznie odległy. Coś mnie interesowało, coś mniej, ale raczej skupiałem się na tym, w czym talentu nie mam. Nie mam talentu do sportu, nie mam talentu do gadania z ludźmi, nie mam talentu do prowadzenia samochodu. Mogłem tak długo wymieniać i się dołować. I powiem wam jedno, krótko i zwięźle - bullshit! Więcej...
Wpis nietechniczny też czasem musi się pojawić. A okazja jest dobra, bo miałem wczoraj przyjemność pobawić się nową na rynku zabawką - zestawem do rzeczywistości wirtualnej HTC Vive. Wszystko dzięki firmie SteamBytes, z którą to mnie łączą różne konotacje personalne. Fajna firma, zajmuje się tworzeniem gier na urządzanie mobilne z edukacyjnym zacięciem, nabyła sobie właśnie ten VR. A skoro tak, to czemu nie korzystając z zaproszenia, przy okazji trochę się pobawić?
Temat VR towarzyszy mi od dzieciństwa i od dzieciństwa mi się jakoś marzy. Pewnie to wpływ Kosiarza umysłów czy Johnego Mnemonica. Pamiętam jak dziś pewien zryw w tym kierunku w roku 1995 w postaci gogli VFX1. Jednak nie oszukujmy się, wtedy było jeszcze za wcześnie. Dwa wyświetlacze LCD o rozdzielczości 263 x 230 pikseli i 256 kolorów?! Po tamtym falstarcie bardzo długo nic się nie działo. Oczywiście pojawiały się różne specjalistyczne sprzęty do virtual i augmented reality ale nic nawet nie próbowało trafiać w segment konsumencki. Więcej...
Jeśli ktoś ma coś wspólnego z Microsoftem, szczególnie w kontekście programistycznym, na pewno kojarzy konferencję Build - duże, trzydniowe wydarzenie dla developerów. W tym roku odbyło się w dniach 30 marca - 1 kwietnia w San Francisco. Ze względu na raczej kosmiczną cenę rejestracji (w tym roku 2195 $) oraz koszty przelotów i pobytu tam - dla dużej części świata, a już na pewno dla "przeciętnego Polaka", jest to wydarzenie raczej mało osiągalne. Kojarzy się zatem głównie z live streamingiem na Channel 9 i... tyle. Więcej...
Nie będę oryginalny pisząc, że nie jestem oryginalny i zbliżający się koniec konkursu "Daj się poznać" odnotuję krótkim podsumowaniem. A zatem oto i podsumowanie.
Celem mojego udziału nie było skończenie projektu, bo realnie patrząc, wiedziałem, że się z tym nie wyrobię. Chciałem jednak zmotywować się do działania. O motywacjach pisałem przed rozpoczęciem konkursu. Biorąc pod uwagę ogrom dodatkowych “zaangażowań”, które miałem przez ten trzymiesięczny okres, za
największy sukces uważam fakt, że w ogóle dotrwałem do końca!
Ale przechodząc od ogółu do szczegółu, co się udało, a co nie? Więcej...
Zgodnie z wynikami wcześniejszych poszukiwań, do rysowania grafów w projekcie zamierzam używać biblioteki GraphX. Co prawda, jak słusznie zauważył w jednym z komentarzy Karol, istnieje bardzo ciekawa alternatywa. Syncfusion udostępnia bowiem swoje biblioteki za darmo w ramach licencji Community, dla projektów Open Source. A mają tam naprawdę mnóstwo świetnych kontrolek. I zapewne docelowo ich użyję - do zbudowania ładnego GUI. Jednak do rysowania grafów na razie wciąż spróbuję użyć GraphX, bo wydaje mi się bardziej zoptymalizowany do rysowania dużych zbiorów danych.
Na początku optymistyczne spróbowałem użyć tych kontrolek od razu w projekcie F#. Jednak odbiłem się od ściany licznych mniejszych lub większych problemów. Musiałem zatem zrobić krok wstecz i przygotować minimalny, działający przykład w starym, dobrym C#. W tym celu odchudziłem jak się tylko dało przykład .\GraphX\Examples\SimpleGraph i stworzyłem nowy projekt WPF. Jak zatem używa się GraphX? Więcej...
Pracuję na etacie od 10 lat. O ile mnie pamięć nie myli, dokładnie 10 lat - pierwszy miesiąc to był właśnie Maj 2006 roku. Trzeba przyznać, że czas ten minął błyskawicznie i nie mogę powiedzieć, że był zawodowo jakimś ciężkim znojem. Zwłaszcza, że jak już pisałem, miałem rok przerwy i byłę fotografę. Były oczywiście okresy trudniejsze i okresy przyjemniejsze, ale praca w kamieniołomach to nie była.
Z drugiej strony jednak 10 lat to obiektywnie kawał czasu. I dobry moment, żeby się na chwilę zatrzymać i spojrzeć w tył. Zatrzymałem się zatem i popatrzyłem. Wiele tam nie zastałem - moja praca była ok i pracodawcy byli jak najbardziej ok, ale można by to wszystko określić raczej terminem "stagnacja". Prywatnie działo się bardzo wiele - ze ślubem na czele - ale mam na myśli tę zawodową część życia. Ostatni rok zaś, jak można zauważyć, w końcu mnie "ruszyło" i postanowiłem zacząć realizować się w dawno mnie kuszących i pociągających obszarach. Zaktywowałem się w społeczności, zacząłem być prelegentem, prowadzić bloga. Wszystko to jest super i jestem pewny, że to część mnie, a nie chwilowe zafascynowanie. O motywacjach pewnie jeszcze kiedyś napiszę, ale teraz chciałbym powrócić do tytułowego pytania. Więcej...
Trochę sporo ostatnio czasu w ramach projektu poświęciłem na naprawianie biblioteki ClrMd i pisania poradników o GitHubie. W ramach rdzennego rozwoju projektu skupiłem się na neo4j, teraz pora najwyższa wrócić do interfejsu i zastanowić się nad ważnym pytaniem - czego użyję jako biblioteki rysującej grafy. Na pierwszy ogień poszło przeglądanie “internetów” i wyszukanie opcji, których będę mógł użyć w WPF. Wynik tych poszukiwań nie jest przytłaczający. Wygląda na to, że jest pewne pole do popisu dla osoby, która napisze funkcjonalny i ładny komponent WPF do rysowania grafów. Ja w ramach tego projektu nie mam na to czasu, więc pozostaje mi korzystać z gotowców. Więcej...
W poprzednich częściach znęcałem się nad biblioteką ClrMd i zawartym w niej niedopatrzeniu – poważnym problemie z deadlockiem. Korzystając, że jest to Open Source dostępny na GitHubie, czuję się w obowiązku spróbować dostarczyć oficjalną poprawkę. A to świetna okazja do napisania artykuliku o tym, jak to formalnie przeprowadzić.
Mając namierzony błąd w ukochanym projekcie, zacząć musimy od rzeczy podstawowej - issue. Jeśli błąd zgłosił już ktoś inny, na razie nie musimy się tym przejmować. Ale jeśli jesteśmy “szczęściarzami” i pierwsi coś odkryliśmy, zanim przystąpimy do dalszych działań błąd taki najlepiej formalnie zgłosić. Więcej...
W poprzednim wpisie zmieniłem system zarządzania zależnościami z Nugeta na Paket. Ściąganie paczek Nugetowych skonwertowało się automatycznie za pomocą dołączonego narzędzia, teraz pora dodać główny cel tych zabiegów - archiwum z przenośną (samowystarczalną) wersją Neo4j.
Jest ona dostępna pod poniższym adresem i trochę waży:
$ wget http://neo4j.com/artifact.php?name=neo4j-community-3.0.1-windows.zip
...
Length: 62661995 (60M) [application/zip]
Aby dodać taką zależność musimy ją dodać do pliku packet.dependencies:
$ more paket.dependencies
source https://www.myget.org/F/roslyn-nightly/
source https://www.myget.org/F/dotnet-core
source https://www.nuget.org/api/v2/
framework >= net45
nuget FsXaml.Wpf 0.9.9
nuget Microsoft.Diagnostics.Runtime 0.8.31-beta
http http://neo4j.com/artifact.php?name=neo4j-community-3.0.1-windows.zip
Więcej...
Tak jak pisałem w jednym z poprzednich postów, zdecydowałem się użyć Paket do zarządzania zależnościami w projekcie. Dlaczego? Ponieważ poza zależnościami NuGetowymi, mam jedną dużą, niestandardową - standalone binarki bazy neo4j. Tak jak pisałem, Paket poza źródłami z serwerów NuGetowych potrafi korzystać ze źródeł Gita oraz po prostu zasobów dostępnych przez HTTP. Ostatnio trochę oszukałem, mówiąc, że neo4j jest dostępny w samowystarczalnym pliku ZIP pod adresem http://neo4j.com/download-thanks/?edition=community&flavour=winzip. Stronka ta jedynie rozpozczyna auto-download pliku pod adresem http://neo4j.com/artifact.php?name=neo4j-community-3.0.1-windows.zip i to ten plik będę musiał wskazać jako zależność HTTP.
Ten wpis opisuje natomiast sposób konwersji klasycznej solucji opartej o Nugety (i plik packages.config) do wersji używającej Paketa. Więcej...