19 czerwca 2014

Brackets - roszszerzenia

Korzystając z dzisiejszego dnia wolnego napiszę post o nowościach oraz rozszerzeniach do programu Brackets, edytora kodu, którego używam na co dzień. Wydaje mi się, że gdzieś widziałem informacje o zmianach, które pozwalają używać polskich znaków bez konieczności przestawiania skrótów klawiszowych ale sprawdziłem bloga Brackets jeszcze raz i nie mogę tego znaleźć. Tak więc polecam mój starszy post na temat ustawienia skrótów tak aby działały polskie znaki. Aktualna wersją programu ma numer 0.40, jeżeli nie otrzymaliście automatycznego powiadomienia o aktualizacji sprawdźcie ręcznie poprzez "Check for Updates" lub po prostu ściągnijcie najnowszą wersję z ich strony.
Największą nowością wprowadzoną do tego edytora od momentu kiedy go używam jest możliwość używania kilku kursorów (wersja 0.38). Funkcję tę posiadał już dawno Sublime Text i muszę przyznać, że czekałem aż w końcu pojawi się również w Brackets. Możliwość edytowania tego samego słowa w kilku miejscach znacznie przyspiesza i ułatwia pracę, kiedy chcemy zmienić nazwę zmiennej. Wiele kursorów daje dużo więcej możliwości niż ten jeden podany przeze mnie przykład, szybkie przedstawienie tej funkcji pokazuje ten filmik:


Jeżeli zaś chodzi o rozszerzenia, oto lista tych używanych przeze mnie:

  • Beautify - formatowanie tekstu HTML, CSS, i JS za pomocą jednego kliknięcia. Nie zawsze działa tak jakbym tego chciał ale bardzo pomaga i tworzy czytelniejszy kod jeżeli wrzucimy coś z innego źródła lub po prostu narobiliśmy trochę chaosu,
  • Bootstrap Skeleton - gotowy szablon pod najnowszą wersję Bootstrapa,
  • Brackets Icons - rozszerzenie dodaje ładne dla oka ikonki w naszym drzewku plików,
  • Brackets Key Remapper - rozszerzenie, które jest potrzebne aby zmieniać skróty klawiszowe, tak jak wspominałem wyżej, konieczne aby ustawić możliwość używania polskich znaków,
  • Code Outline - tworzy małe okienko ze skrótami do odpowiednich stylów css,
  • colorHints - tworzy podpowiedzi css w momencie wpisywania koloru, wystarczy wpisać znak # i pokażą się kolory, które używaliśmy w tym pliku css,
  • HTML templates - szablony HTML,
  • JSHint - podpowiedzi do JavaScript,
  • Live Reaload - podczas korzystania z Live Preview odświeża okno z podglądem z momencie zapisania pliku,
  • Lorem Ipsum Generator for Brackets - generator dummy text,
  • Paste and Indent - automatyczne formatowanie tekstu w momencie wklejania,
  • Themes for Brackets - chyba mówi samo za siebie, osobiście używam stylu MBO.
Na koniec zostawiłem jeszcze jedno rozszerzenie, najważniejsze z tych wszystkich -  Emmet. Piszemy w odpowiednich skrótach HTML i CSS, następnie naciskając Tab i otrzymujemy pełny kod. Koniec z nudnym i powolnym pisaniem kodu HTML. Narzędzie to znacznie przyspieszyło moją pracę, szczególnie polecam zapoznać się z dokumentacją.



27 maja 2014

Jak łatwo dzielić swoje projekty pomiędzy komputerami? Google Drive oraz Git.

Myślałem napisać posta na dany temat już od dłuższego czasu lecz wstrzymałem się do momentu aż nie ustawiłem odpowiednio wszystkiego na Windowsie i Ubuntu.

Kiedy zaczynałem swoją przygodę z programowaniem na swoich urządzeniach miałem tylko Windowsa. W domu korzystam z komputera stacjonarnego z dwoma monitorami, co ułatwia i przyspiesza naukę programowania, natomiast poza domem z laptopa.

Chęć zainstalowania Linuxa chodziła za mną od dawna i narastała z każdym kolejnym przeczytanym
tutorialem, gdzie autor korzystał z terminala i różnych narzędzi dostępnych tylko na ten system lub na Mac'a. Początkowo zainstalowałem Ubuntu na komputerze stacjonarnym lecz szybko się okazało, że dysk SSD, który mam tam zamontowany był zbyt mały na dwa systemy, miałem również problemy z zainstalowaniem odpowiednich sterowników do karty graficznej oraz inne pomniejsze niezgodności. Na laptopie nie chciałem instalować innego systemu ponieważ czytałem, że poprzez zmianę partycji można stracić możliwość korzystania z partycji służącej do odzyskiwania systemu. Całkiem niedawno znalazłem rozwiązanie w postaci kieszeni na drugi dysk do laptopa, którą montuje się w miejsce napędu optycznego, idealne rozwiązanie szczególnie, że drugi dysk wymontowałem z poprzedniego laptopa. Mam nadzieję, że dzięki temu poznam chociaż trochę Linuxa i jego możliwości.

Wracając do pytania w jaki sposób łatwo dzielić swoje projekty pomiędzy komputerami to w momencie kiedy na obydwóch urządzeniach miałem Windowsa dzielenie projektów pomiędzy nimi było bardzo proste. Wszystkie skrypty, które piszę w ramach nauki trzymam na swoim Google Drive, a jako folder domyślny ustawiłem folder 'www' apache. Czemu akurat tak? Jednym z pierwszych języków, po który sięgnąłem było PHP i dlatego zainstalowałem WAMP'a. Domyślny folder mojego edytora (Brackets) również ustawiłem na folder 'www' apache'a, co powodowało, że obojętnie, na który komputerze otworzyłem edytor miałem tam najnowsze pliki, których nie musiałem nigdzie kopiować oraz od razu pojawiały mi się w Live Preview edytora. Dzięki autosynchronizacji nie musiałem się o nic martwić, wszystko działo się w tle a ja zawsze miałem najbardziej aktualne pliki na obydwóch urządzeniach.

Trochę trudniej zaczęło wszystko wyglądać jeżeli chodzi o Ubuntu, ponieważ nie ma oficjalnej aplikacji Google Drive na Linuxy. No nic, trzeba sobie radzić inaczej, istnieje nieoficjalny klient zwany Grive. Niestety nie posiada wielu funkcji jak autosynchronizacja i trzeba to robić ręcznie, jednak nie było tak trudno wyrobić sobie dobry nawyk synchronizacji plików przed i po pracy. Wystarczy odpalić terminal (skrót Alt+Ctrl+T), wejść do folderu Google Drive i wpisać komendę 'grive'. No tak, jest jeszcze jeden minus, nie można zmienić domyślnego folderu więc nasze pliki będą trzymane w folderze /home/Google Drive tak więc zmiana ścieżki na ścieżkę do 'www' apache tym razem nie wchodzi w grę. Udało mi się to zrobić, oczywiście z przeszkodami ale wyszukiwarka google jak zwykle ma na wszystko rozwiązanie, np. ten post na stackoverflow. Mogą wystąpić również problemy z uprawnieniami apache do dostępu do tego folderu, o ile dobrze pamiętam najlepszym rozwiązaniem było dodanie siebie jako użytkownika do grupy www-data (czyli apache). Zanim zaczniecie grzebać w i przestawiać zezwolenia (permissions) różnych użytkowników zastanówcie się dwa razy ponieważ bardzo trudno jest cofnąć niektóre źle wpisane komendy.


Kolejnym świetnym sposobem na dzielenie projektów jest Git. Jeżeli nie jesteście przekonani po co wam Git i ogólnie kontrola wersji, skoro dopiero się uczycie to przyznaję, że kiedyś też tak sądziłem. Pomijając argumenty, że zakładając konto na GitHub warto budować swoje portfolio oraz próbować włożyć własny wkład w projekty open source powiem po prostu, że korzystanie z Git jest fajną zabawą. Aby opanować postawy wystarczy znać jakieś 5 - 8 komend, a samo korzystanie z terminala jest tym bardziej satysfakcjonujące im więcej go używam. Jeżeli nie chcecie korzystać z terminala to GitHub posiada graficzną aplikację na Windowsy, która jest bardzo intuicyjna i łatwa w użyciu. Do pobrania na stronie https://windows.github.com/.
Kilka użytecznych artykułów i instrukcji odnośnie Git, które pomogą wam zastartować:

Chciałbym jeszcze zaznaczyć, że darmowe konto na GitHub pozwala jedynie na tworzenie publicznych repozytoriów (projektów), jeżeli chcemy pracować nad prywatnymi projektami to w takim razie polecam Bitbucket, który zezwala pracować nad projektami do 5 osób. 

Niestety zawsze też jest jakieś ale... tak się składa, że Git kiepsko działa z Google Drive, ponieważ nie synchronizuje on ukrytego folderu .git gdzie zapisane są wszystkie wiadomości o repozytorium, pewnie to i dobrze ponieważ mogłoby to spowodować mały bałagan. Osobiście projekty prywatne trzymam na Google Drive, natomiast te, które robię czysto do nauki wrzucam na GitHub.

Na koniec chciałbym się jeszcze z wami podzielić jedną rzeczą. Po zainstalowaniu Ubuntu podczas uruchamiania systemu pokazywał się błąd, który bardzo niewiele mi mówił - "System Program Problem Detected". Rozwiązanie znajdziecie w tym artykule. Jeżeli chodzi o mnie to pomogła mi sama komenda sudo rm /var/crash/* , która jest wspomniana na końcu strony.

Moje konto na GitHub: https://github.com/Emnalyeriar


17 maja 2014

JavaScript - pierwsze kroki oraz pierwszy skrypt

Znając tylko w niewielkim zakresie podstawy PHP już na samym początku nauki JavaScript trafiłem na pewne różnice miedzy jednym a drugim językiem.
Pierwszą 'dziwną' praktyką stosowaną w JS jest immediately-invoked funcion expression (IIFE). W PHP, zmienne zadeklarowane poza funkcjami są globalne, natomiast w JS są one częścią obiektu window. Myślę, że sam nie wytłumaczyłbym tego lepiej niż ten artykuł. Główną zaletą IIFE jest brak możliwości nadpisania globalnych zmiennych tymi zadeklarowanymi wewnątrz IIFE. Niestety powoduje to również, że wewnątrz funkcji nie możemy się odnieść do zmiennej globalnej (należącej do window) ponieważ wszystkie zmienne zadeklarowane w IIFE są lokalne i dostępne tylko dla danego fragmentu kodu właśnie wewnątrz IIFE. Muszę przyznać, że przeczytałem różne artykuły, tutoriale i materiały na ten temat, a nie zdawałem sobie z tego sprawy dopóki nie próbowałem napisać własnego kodu. I tutaj moim zdaniem wychodzi jak ważne jest, aby po przeczytaniu tych wszystkich mądrych publikacji próbować napisać chociażby krótki ale własny kod, robiący cokolwiek, tak tylko dla sprawdzenia czy rozumiemy to co przeczytaliśmy. Kiedy przepisuje się kod z książki lub filmiku nie zauważa się tego typu rzeczy.
Zanim wspomnę jak poradziłem sobie z tym problemem chciałbym również napisać o sposobach deklarowania zmiennych w JS. Jeżeli przed nazwą zmiennej dopiszemy var wtedy ta zmienna jest dostępna dla danej funkcji, w której ją zadeklarowaliśmy oraz do pozostałych funkcji zagnieżdżonych w niej. Jeżeli pominiemy słowo var zmienna staje się globalna i dostępna poza funkcją. Może to wprowadzać mały zamęt i powodować, że nadpiszemy sobie niektóre zmienne więc należy zwracać na to szczególną uwagę. Bardzo pomocne przy śledzeniu zmiennych jest kolorowanie nazw zmiennych przez edytor, w którym piszemy kod.
W takim razie jak zadeklarować zmienną globalną wewnątrz funkcji? Albo poprzez pominięcie słowa var przed deklaracją funkcji lub poprzez zadeklarowanie jej do obiektu window poprzez var window.zmienna. 
Zasada ta również dotyczy deklarowania funkcji. Jeżeli zadeklarujemy funkcję poprzez function declaration czyli
 function doSomething() {}
to funkcja ładuje się przed rozpoczęciem wykonywania całego kodu co ogólnie nazywa się hoisting. Dzięki temu możemy w kodzie najpierw wywołać funkcję a dopiero później ją zadeklarować. Drugim sposobem deklaracji funkcji jest function expression:
var doSomething = function(){};
co powoduje, że funkcja staje się dostępna jedynie dla kodu napisanego poniżej jej zadeklarowania.
Należy pamiętać, że dobrą praktyką jest deklarowanie wszystkich zmiennych oraz funkcji na samym początku naszego skryptu poprzez użycie słowa var.
Więcej na temat variable scope oraz variable hoisting możecie poczytać tutaj.
Polecam również ten filmik. Przypominam również o stronie Eloquent JavaScript, z której to wiele się nauczyłem.

Na koniec chciałbym przedstawić po raz pierwszy na tym blogi (czas najwyższy) własny skrypt. Jest to prosty skrypt, który podświetla aktualnie naciskane klawisze podczas pisania oraz wypisuje średnią liczbę kliknięć na sekundę co 5 sekund.
Będzie mi niezmiernie miło jeżeli wypowiecie się na temat tego kodu, co powinienem poprawić, co zmienić, jak go udoskonalić, jakie błędy poprawić. Jeżeli również poplątałem się gdzieś w moich tłumaczeniach odnośnie zmiennych i funkcji w JS, chętnie się poprawię.
Link do skryptu.
Na koniec chciałbym wspomnieć o jeszcze jednym problemie, na który natrafiłem podczas pisania tego skryptu. Funkcja setTimeout w swoich argumentach przyjmuje funkcję, którą mam wywołać, lecz wywoływanej funkcji argumentów już przekazać niemożna. Trochę masło maślane ale mam nadzieję, że rozumiecie o co mi chodzi. Obszedłem to zastosowując kod:
var fadeOut = function(j) {
           setTimeout(function() { buttons[j].parentNode.className = "button";}, 500);
}
fadeOut(i);
Jeszcze raz zachęcam do komentowania!

29 kwietnia 2014

Który język programowania wybrać? Część 2.

Minęły ponad 4 miesiące od kiedy napisałem pierwszy post na temat wyboru języka programowania. Czy po takim czasie i zdobyciu troszkę wiedzy na temat programowania nadal brnę w tym samym kierunku? Mniej więcej tak. Po poznaniu podstaw PHP postanowiłem chwycić się za JavaScript. Przez pewien czas świtało mi w głowie opanować jakiś framework PHP jak np. codeigniter lub laravel lecz, przynajmniej na ten moment, zrezygnowałem. Na horyzoncie jest wiele nowych technologii, które zyskują coraz większą popularność i uznanie na rynku, natomiast nie ma co ukrywać, że PHP istnieje od dawna i specjalistów w tej dziedzinie jest wielu.
Post ten nie będzie obfitować w treść ponieważ prawdę mówiąc postanowiłem go napisać po obejrzeniu pewnego filmiku, który polecam wszystkim osobom decydującym się na web development. Obejrzyjcie go, SERIO. Dzięki niemu rozgraniczycie sobie pewne technologie oraz języki i jeżeli jeszcze nie dokonaliście wyboru języka lub nie jesteście swojego wyboru pewni, ten filmik wam sporo rozjaśni.



Pozwolę sobie wrzucić ponownie filmik, który znalazł się w poście o JavaScripcie lecz tutaj również pasuje idealnie. Facet odpowiada na pytanie: jakie umiejętności powinienem posiadać, jakie języki i technologie związane z HTML5 powinienem znać aby zacząć starać się o pracę? Posłuchajcie o czym wspomina aby wyznaczyć sobie własne cele.


Swoją drogą na jednym i drugim kanale znajduję się masa świetnych filmów!

Chętnie poznam również na jaki język sami się zdecydowaliście. Wolicie front-end czy back-end? Może sami znacie jakieś świetne materiały, które waszym zdaniem każdy powinien przeczytać? Albo technologie, którą każdy powinien znać? Świetnie byłoby przeczytać co na ten temat sądzicie w komentarzach!



22 kwietnia 2014

Polskie znaki w Brackets

Przeglądając statystyki bloga zauważyłem, że kilka osób trafiło na stronę w poszukiwaniu odpowiedzi jak włączyć polskie znaki w edytorze Adobe Brackets. Muszę przyznać, że kiedy rozpocząłem pracę z tym programem od razu przypadł mi do gustu i również poszukiwałem jak uporać się z tym problemem. Należy wejść w zakładkę File, następnie Extension Manager i zainstalować rozszerzenie Brackets Key Remapper. Po zainstalowaniu wchodzimy ponownie w File i potem Remap Keys. W polu Filer wpisujemy słowo Alt i wyskakują nam wszystkie skróty klawiszowe z użyciem przycisku Alt. Zmieniamy wszystkie skróty klawiszowe które pokrywają się z polskimi znakami, np. alt+a, alt+e oraz te zawierające ctrl+alt. Dla zobrazowania wrzucam zrzut ekranu ze swojego ustawienia.


W wolnej chwili przedstawię również rozszerzenia do Brackets, których sam używam.

21 kwietnia 2014

JavaScript - poradnik jak zacząć

Dwumiesięczna przerwa spowodowała, że zacząłem zastanawiać się czy nie spróbować czegoś świeżego i próbować chwycić podstawy jakiegoś nowego języka. Na ten czas znam podstawy HTML, CSS i PHP, poznałem podstawy modelu MVC i zatrzymałem się przed samym momentem próby zrozumienia OOP. Tak więc czas poświęcony na programowanie postanowiłem podzielić na dwie części, pierwsza to próba wykorzystania tego co już wiem przy pisaniu własnego projektu, druga to chęć nauki JavaScript, którego jak łatwo się domyślić w tym zestawieniu brakowało. Wybór dla jednych oczywistych dla drugich już niekoniecznie, zdecydowałem się akurat na ten język ponieważ:
  • odpowiada za dynamikę i zachowanie stron co pozwala na budowanie świetnych stron z pomocą np. biblioteki jQuery,
  • w porównaniu do PHP pozwala wysyłać lub pobierać dane bez konieczności odświeżania strony,
  • dodatki do Chrome są pisane w JavaScript,
  • kod jest wykonywany po stronie klienta (przeglądarki), a za pomocą node.js może być również po stronie serwera,
  • edytor Brackets, który opisywałem, szczególnie polecam i sam używam, jest napisany własnie w tym języku,
  • pozawala pisać browser-based gry z użyciem WebGL.
Obstawiam, że jest jeszcze bardzo sporo zastosowań, o których nawet nie mam pojęcia. 

Ok, tak więc od czego zacząć? Podczas przeszukiwania internetu trafiłem na ten artykuł: How to Learn JavaScript Properly i naprawdę, naprawdę mocno go polecam. 
Tak jak powyższy artykuł zaleca, zróbcie podstawowe kursy na Codecademy, jeśli macie już jakąś podstawową wiedzę możecie spróbować Programmr lub jeśli macie luźniejsze podejście i chcecie się trochę więcej pobawić to sprawdźcie grę, która uczy JavaScript - CodeCombat. A kiedy już zdobędziecie trochę wiedzy spróbujcie swoich sił na Codewars, strona wyświetla fragment kodu, który trzeba zmienić tak aby działał poprawnie. Naprawdę świetny sposób na przypomnienie i utrwalenie sobie języka!

Na koniec chciałbym jeszcze przedstawić kilka ciekawych materiałów, na które trafiłem przeszukując internet:

13 kwietnia 2014

Semantyczny HTML

Kiedy pierwszy raz zacząłem szukać w internecie informacji na temat programowania, a w pierwszych
krokach szczególnie chodziło o html to zawsze zastanawiałem się czy informacje, które znalazłem są aktualne. Bieżąca wersja HTML to 5.0 i jest dostępna od 2008 roku natomiast materiały znalezione w internecie mogą być nawet starsze. Drugą sprawą jest fakt, że nie wszystko co znajdziemy na temat programowania jest zgodne z aktualnymi standardami.
Idea semantycznego HTML polega na oddzieleniu warstwy znaczeniowej od warstwy prezentacji. Polega to na wyszczególnianiu czym Twój tekst jest, jakie ma znaczenie, natomiast nie jak ma wyglądać. Tym samym zamiast używać tag <b> używamy <strong>, zamiast <i> używamy <em> (emphasis), a następnie poprzez CSS nadajemy tym tagom odpowiedni charakter. Nasuwa się pytanie, po co zamieniać tagi, a następnie ustawiać ich wygląd w CSS skoro wynik jest dokładnie taki sam? Otóż dla nas strona pewnie i będzie wyglądać dokładnie tak samo, natomiast dla web crawler'ów, które będą parsować nasz kod robi to dużą różnice.
Przykład jak nie powinien wyglądać nasz kod:

<table>
   <tr>
      <td>
         <font size="10" color="red">Tutaj nasz tytuł</font>
         <p>Tutaj tekst naszego artykułu <b>jakieś wyszczególnione słowo</b></p>
      </td>
   <tr>
</table>

Aktualnie nie używa się już tabeli aby ustawić strukturę naszej strony. Nie używa się już również font i ustawiania jego atrybutów w tej samej linijce oraz odchodzi się od stosowania wyżej wspomnianych tagów <b> i <i>
W takim razie jak powinien wyglądać kod?
Zamiast tabelek często używamy tag <div>, któremu nadajemy odpowiednią klasę lub id lecz tak naprawdę powinno się stosować tagi takie jak <article>, <header> albo <footer>, a następnie poprzez CSS ustalamy jak przeglądarka ma wyświetlać dany element.
To tylko bardzo krótki i powierzchowny przykład ale mam nadzieje nakreślający te tematykę i dający do zrozumienia na czym semantyczny HTML polega. W celu zagłębienia tego tematu polecam szczególnie stronę HTML5doctor oraz The Syntax, Vocabulary and APIs of HTML5 W3C Editor’s Draft 9 August 2010. Na koniec jeszcze mały flowchart:







06 kwietnia 2014

Wracają do tematu

Niestety minęły jakieś dwa miesiące od ostatniego posta i złożyło się na to kilka czynników. Nie mam zamiaru zanudzać nikogo tym, że w tym czasie oczywiście byłem bardzo zajęty życiem prywatnym, bo tak wygląda każde tłumaczenie lecz napiszę o czymś innym. Kiedy przygotowywałem się do pisania tego bloga czytałem i oglądałem bardzo dużą liczbę materiałów o programowaniu. W pewnym momencie przyszło przesycenie i zmęczenie tematyką, co wydaje mi się naturalne. Dziwnym zbiegiem okoliczności w tym samym czasie nastąpiło oficjalne odpalenie gry Hearthstone, o której wspominałem wcześniej oraz wyjście nowego dodatku do Diablo III ale nie będę wysuwać tak daleko idących wniosków jakoby to miało mieć wpływ na moją produktywność! W tym czasie przeglądałem sobie kursy niezwiązane z programowaniem, takie jak: The Modern and the Postmodern, gdzie prowadzący Michael S. Roth potrafi zainteresować słuchacza w ten sposób, że z pewnością będziesz chcieć obejrzeć kolejne części kursu. Na początku tego roku znalazłem też fajną serię książek, którą mogę z pewnością polecić "50 teorii, które powinieneś znać", osobiście kupiłem tę dotyczące fizyki i filozofii lecz jest wiele innych dziedzin, tak że znajdziecie coś dla siebie.


Kontynuując luźniejszą tematykę tego posta, chciałbym polecić wszystkim ten artykuł zbierający 10 najlepszych wystąpień TED. Niestety filmiki nie pokazują się na stronie artykułu ale wystarczy wbić tytuły w wyszukiwarkę żeby je znaleźć na YouTube. Swoja drogą warto zajrzeć również na kanał Ted-Ed na YouTube, gdzie znajdziecie krótkie lecz bardzo ciekawe filmiki edukacyjne, w sam raz żeby obejrzeć podczas jedzenia. Dla podbudowania motywacji do dalszej nauki koniecznie obejrzyjcie wystąpienie Jacka Walkiewicza podczas TEDxWSB!

Żeby jednak daleko nie odbiegać od tematyki programowania, chciałbym wspomnieć o ściągawkach dla programistów. Próbujesz się nauczyć nowego języka lecz ciągle zapominasz jak nazywała się lub co robiła dana funkcja, składnia lub tag? Z pewnością przydadzą Ci się cheat sheet'y. Okażą się przydatne niezależnie czy je wydrukujesz i będziesz mieć przed sobą czy otworzysz w nowym oknie żeby od czasu do czasu podglądać.

1. 75 Essential Cheat Sheets for Designers and Programmers,
2. 12 Essential Cheat Sheets for Developers,
3. 7 Essential SEO Cheat Sheets,
4. 40+ Essential Front End Web Developer Cheat Sheets
5. 12 Essential Social Media Cheat Sheets.

I jeszcze tak na sam koniec, niedawno wystartował kurs An Introduction to Interactive Programming in Python na stronie Coursera, jeżeli jesteś zainteresowany akurat nauką Pythona to kurs ten może być akurat dla Ciebie! Ja sam z pewnością go przejrzę, jeżeli nie w całość to chociaż kilka filmików.

09 lutego 2014

Lista kursów MOOC, które można przerobić w dowolnym czasie

Tak jak wspominałem wcześniej przedstawiam listę kursów MOOC, które możecie zrobić we własnym tempie. Całość materiału jest udostępniona od razu po zapisaniu oraz nie mają określonego czasu, w którym musimy je ukończyć. Niestety przerobienie wszystkich jest czasowo niemożliwe więc skomentuję tylko te, które chociaż trochę przejrzałem.

edX:

Coursera:
Udacity (Udacity oferuje bardzo dużo kursów, które można wykonać w dowolnym czasie, jednak po próbie ukończenia kilku z nich niestety stwierdziłem, że wymagają dużo większej wiedzy i doświadczenia niż wspomniane wyżej przez co trochę mnie przerosły, polecam jeżeli jesteście już bardziej zaawansowani):

Inne platformy:



Ta lista to tylko wierzchołek góry lodowej. Na podanych stronach znajdziecie jeszcze wiele innych ciekawych kursów, które startują konkretnego dnia i konkretnego dnia się kończą. Wymagają regularnej nauki i bardzo często zawierają quizy i testy. Jednym z takich kursów jest Internet History, Technology and Security, który wystartował 3 lutego i trwa 11 tygodni. Przerobiłem część tego kursu podczas jego poprzedniej edycji i mogę go z pewnością polecić. Nie jest intensywny pod względem ilości informacji ale za to uczestnictwo w nim jest lekkie i przyjemne oraz jest dobrym wprowadzeniem do MOOC. Prowadzący ten kurs posiadał własny program w TV w latach 90' na temat internetu, jego powstawania i działania. Kurs zawiera wiele zapisów video z prowadzonych przez niego wywiadów w tamtym czasie z ludźmi, którzy mieli wpływ na to jak internet wygląda dzisiaj.
Podczas pisania tego posta korzystałem ze strony Class Central, zajrzycie koniecznie aby znaleźć kurs dla siebie!

04 lutego 2014

Szorty #1 + Hearthstone Open Beta

Tym wpisem rozpocznę serię krótkich postów zawierających ciekawe znaleziska z internetu, które nie zasługują na osobny post, a chciałbym o nich wspomnieć:

Dodatkowo muszę wspomnieć, że niedawno ruszyła Open Beta gry karcianej Hearthstone, która spowodowała moją zmniejszoną aktywność w tematyce programowania. Kiedy dostałem zaproszenie do zamkniętej bety oddałem je znajomemu w obawie, że ten blog mógłby nie powstać. Teraz kiedy wystartowała Open Beta śmiało się zapisałem i próbuje coś ugrać od czasu do czasu. Jeżeli ktoś z czytelników tego bloga chciałby się ze mną zmierzyć to chętnie przyjmę wyzwanie!
Polecam również zajrzeć na blog Lothar'a - znajomego, który drugi sezon testowy Hearthstone zakończył na 19 miejscu w Europie!



26 stycznia 2014

Materiały do dalszej nauki programowania

Kolejnym krokiem po obejrzeniu (w całości lub wybranych fragmentów) CS101 lub CS50x oraz opanowaniu podstaw poprzez Codecademy lub/i Dash będzie podjęcie decyzji w jaki sposób chcemy dalej uczyć się programować.

  • Książki: pierwszą rzeczą jaką zrobiłem w momencie podjęcia decyzji o nauce programowania było pożyczenie od mojego dobrego znajomego książki PHP, MySQL i Apache wyd. Helion. Siedziałem z rozłożoną książką przed monitorem i starałem się zrozumieć kod, który przepisuję do edytora. Jednak po pewnym czasie zacząłem się zastanawiać, że choć w sumie kiedyś próbowałem opanować HTML/CSS to sporo zapomniałem i standardy od tego czasu się już zmieniły. Następnie zacząłem się zastanawiać dlaczego kod, który wpisuję w edytorze tak właściwie działa? Postanowiłem wtedy zacząć od kompletnych podstaw, dlatego na tym blogu na starcie poleciłem dwa kursy MOOC, a następnie interaktywne kursy, gdzie kod wpisujesz w przeglądarkę i nie musisz się martwić instalowaniem niczego na komputerze. Jeżeli jednak książki to preferowany przez Ciebie sposób zdobywania wiedzy o programowaniu to mogę polecić PHP and MySQL for Dummies. Ja sam lubię bardziej czytać książki lecz bardziej odpowiednim podejściu do programowania niż wprost uczyć się programować z nich. O takiej tematyce mogę polecić wspomniany wcześniej Clean Code (aut. Robert C. Marin) oraz The Passionate Programmer (aut. Chad Fowler). Dodam, że nie jest zbyt trudno znaleźć te książki w wersji pdf w internetach.
  • MOOC: jeżeli przypadły wam do gustu kursy internetowe w formie video polecam poszukać
    interesujących was zagadnień na stronach: Coursera, Udacity, edX lub MIT OCW. Niedługo przygotuję listę kursów MOOC, które możecie oglądać we własnym tempie. Natomiast teraz mogę polecić w ciemno Intro to Computer Science na Udacity. 
  • Interaktywne kursy: chyba najciekawsze i dostarczające przy tym najwięcej zabawy sposoby nauki
    programowania. Wypełniamy instrukcję wypisane na ekranie poprzez wpisywanie kodu w przeglądarkowy edytor i od razu dostajemy wynik. W szczególności polecam wspomniane wcześniej Cocecademy oraz Khan Academy (Khan posiada kursy na najróżniejsze tematy, również po polsku), Programmr i DevelopPHP. W ten sposób łatwo jest zacząć programować lecz moim zdaniem ma to też swoje minusy, ponieważ należy poćwiczyć poprzez...
  • Napisanie własnego projektu: skromne portfolio, mały blog lub przykładowa strona firmowa. Nie muszą to być wielkie strony internetowe, wystarczy prosta strona ze skromnym backendem (np. pobieranie wpisów z bazy danych MySQL). Po skończonym kursie koniecznie zainstalujcie odpowiednie komponenty aby można było w danym języku programować lokalnie na komputerze wraz z edytorem i próbujcie napisać jeszcze raz to czego się nauczyliście. Nie tylko powtórzycie składnie danego języka ale również natraficie na błędy, których rozwiązanie wiele was nauczy.
Powodzenia!

22 stycznia 2014

Na której platformie pisać bloga?

Zanim podjąłem decyzję na której platformie pisać bloga postarałem się rozeznać w temacie. Z początku zanosiłem się z pomysłem, żeby w ramach nauki napisać własnego prostego bloga w PHP lecz widząc jak wiele opcji jest do wyboru, postanowiłem zdecydować się na jedną z nich a czas, który poświęciłbym na kodowanie bloga wykorzystać na inny projekt lub zwyczajnie na napisanie kilku postów tutaj.

Postawiłem sobie parę warunków, które powinien spełniać blog, na który się zdecyduję. W przeciwieństwie do większości blogerów chciałem mieć dostęp do kodu bloga, móc go podejrzeć i edytować. To chyba oczywiste wymaganie. Po drugie - chciałem mieć jak największe możliwości personalizacji. Brałem pod uwagę tylko darmowe rozwiązania, na tym etapie nie planowałem żadnych wydatków na hosting, domenę, templaty czy dodatki i rozszerzenia więc w grę wchodziły platformy, które od razu hostowały bloga. Miłym dodatkiem byłoby móc w przyszłości przenieść cały content na własny hosting.

Pierwszą opcja, którą wziąłem pod uwagę jest oczywiście WordPress. Podobno aż 18% wszystkich blogów jest postawionych na WP. Do wyboru mamy wordpress.com czyli opcję darmową hostowaną przez WP oraz wordpress.org pozwalającą ściągnąć całego CMS i zainstalować go na własnym serwerze. Na pierwszy rzut oka wszystko wydaje się pasować. WordPress jest napisany w PHP i jest open-source. Dodatkowo warto zapoznać się z platformą, na której można postawić nie tylko bloga ale również proste strony, być może w przyszłości zdarzy się konieczność zrobienia strony przez WP lub wprowadzenia zmian na już istniejącej stronie korzystającej z tego CMSa (podobno nie ma nic gorszego niż próba naprawienia źle działającej strony strony WP z powodu zbyt dużej ilości kiepsko działających plug-inów). Opcja darmowa daje całkiem znośną i rozpoznawalną domenę, rozbudowany CMS oraz sporą ilość motywów i rozszerzeń. Niestety ta opcja nie daje możliwości podglądu kodu PHP oraz instalowania rozszerzeń. Taką możliwość mamy dopiero jeżeli zdecydujemy się na własny hosting, gdzie zainstalujemy wp, co powoduje również konieczność kupienia domeny.

Kolejną dużą platformą jest Blogger. Wydaje się dużo łatwiejszy i mniejszy niż opisany wyżej WordPress lecz w pewnym zakresie spełnił moje wymagania. Posiada możliwość podglądu HTML/CSS ustawianych motywów, proste statystyki strony z możliwością dodania Google Analytics oraz pozwala na darmowe podpięcie własnej domeny jeżeli kiedyś się na taką zdecyduję. Rozwiązanie proste ale na tyle funkcjonalne, że postanowiłem wybrać właśnie Bloggera.

Napiszę jeszcze w paru słowach o nowszych i dużo mniej rozpoznawalnych platformach, które nie są tak oczywiste jak te powyżej. Szczególnie warto zapoznać się z tymi rozwiązaniami, jeżeli chcecie spróbować czegoś świeżego.

Ghost - zrealizowany dzięki projektowy na Kickstarterze i wydany w październiku 2013. Promuje się jako "just a blogging platform". Ładny design, przejrzyste pisanie postów oraz dobrze zrobiony dashboard - takie informacje możemy przeczytać na ich stronie, lecz jak jest naprawdę? Ghost stworzony jest z pomocą node.js i z jednej strony jest to zaleta jak i wada. Domyślam się, że pozwala no ta wprowadzenie kilku ciekawych rozwiązań (aktualna wersja to 0.4) lecz aby móc wypróbować tę platformę należy się zdecydować na płatny hosting od Ghosta lub mieć własny serwer, który obsługuje node.js. Serwery takie (VPS) są zazwyczaj droższe niż współdzielone.

Roon - minimalistyczna, przejrzysta i responsywna platforma. Prosta i czysta w obsłudze, pozwalająca założyć darmowe konto w 2 minuty, hostowane przez platformę i dające domenę .io. Płatne opcje pozwalają na użycie wlasnej domeny i Google Analytics. Rozwiązanie bardzo ciekawe jeżeli szukacie czegoś nowego i naprawdę minimalistycznego. Dla mnie wydawało się zbyt proste.

Innymi blogami również wartymi wspomnienia są: Medium i Jux.

15 stycznia 2014

Wybór odpowiedniego edytora kodu

Głównym narzędziem do pisania kodu, szczególnie jeśli tak jak ja zdecydowaliście się na web development, jest oczywiście odpowiedni edytor tekstu, który będzie ułatwiał pracę z kodem. Jeżeli nadal używacie notatnika do pisania swojego kodu to czas najwyższy przeskoczyć na coś bardziej zorientowanego na programowanie. Wybór jest ogromny, od prostych edytorów po zintegrowane środowiska programistyczne (IDE), natomiast ja skupiłem się na dwóch, obecnie najbardziej popularnych i najchętniej używanych.


Brackets - całkowicie darmowy edytor, który najbardziej przypadł mi do gustu i na którym aktualnie pracuje. Jest to projekt open-source (https://github.com/adobe/brackets) napisany całkowicie w HTML, CSS i JavaScript, ukierunkowany szczególnie na web development. Dostępny na systemy Windows, Mac OS oraz Linux. Posiada wiele wbudowanych udogodnień oraz możliwość pobrania rozszerzeń jeszcze bardziej uprzyjemniających pracę z kodem. Kilka zalet, które przychodzą mi do głowy:
  • Live Preview - wyświetlanie w przeglądarce na bieżąco zmian w kodzie,
  • Quick Edit - wystarczy zaznaczyć tag HTML i nacisnąć ctrl+e a Brackets od razu wyświetli nam odpowiadający mu CSS z możliwością edycji,
  • tworzenie, usuwanie i zmienianie nazw plików i folderów przez interfejs programu,
  • podpowiedzi do HTML, CSS i JavaScript podczas pisania kodu,
Dzięki Extension Manager możemy w łatwy sposób przeglądać oraz instalować najróżniejsze rozszerzenia. Te które mogę polecić od siebie:
  • HTML Templates - pozwala wstawić gotowy szkielet HTML strony, przyspiesza pracę i zwalnia z konieczności pisania ciągle tych samych tagów HTML kiedy rozpoczynamy nowy projekt,
  • Lorem Ipsum - generuje dummy text (objaśnienie tutaj),
  • Themes for Brackets - zmiana wyglądu Brackets.
Rozszerzeń jest tak dużo, że nie miałem sposobności (i wiedzy) sprawdzić wszystkich, z pewnością znajdziecie coś dla siebie. Niestety Brackets ma jedna sporą wadę jeżeli chodzi o polskich użytkowników - brak polskich znaków. Problem polega na tym, że program ma domyślnie ustawione skróty klawiszowe zawierające alt razem z klawiszem pod którym kryje się polski znak (np. ctrl+alt+s). Zajęło mi trochę czasu zanim znalazłem odpowiednie rozwiązanie. Należy ściągnąć rozszerzenie Brackets Key Remapper i przestawić wszystkie skróty klawiszowe zawierające alt lub zawierające polskie znaki. 
Warto przeczytać:
Sublime Text - chyba aktualnie najpopularniejszy edytor dostępny w internecie. Napisany w C++ i Pythonie lecz nie jest open-source. Udostępniany na zasadzie "free to try" czyli będzie was co pewien czas nagabywać, żeby go kupić za 70$. Nie mam zbyt dużo doświadczenia z tym edytorem ale wiem, że jest bardzo polecany, szczególnie zanim jeszcze pojawił się Brackets. Plusem jest duża ilość poradników i artykułów na jego temat. Posiada większość tych samych udogodnień co edytor opisany wyżej (wbudowanych lub możliwych za pomocą rozszerzeń). Kilka polecanych rozszerzeń:
  • AdvancedNewFile - pozwala na szybsze tworzenie nowych plików,
  • BracketHighlighter - podświetla pary nawiasów (otwierający wraz z odpowiadającym mu zamykającym i odwrotnie),
  • SideBarEnhancements - rozszerza możliwości bocznego menu
Dostępny jest również LiveReload, lecz trzeba go dodatkowo zainstalować. Poradniki godne uwagi:

Warto zainstalować i przetestować obydwa z nich, na pierwszy rzut oka mogą się wydawać bardzo podobne lecz im więcej będziecie pisać własnego kodu i im bardziej będziecie chcieli spersonalizować wasz edytor zobaczycie różnice między nimi, które pozwolą wam podjąć ostateczną decyzje.

12 stycznia 2014

Który język programowania wybrać?

Uwaga spoiler: decyzję będziesz musiał podjąć sam, nie ma czegoś takiego jak najlepszy język programowania. Proponuję jedno z trzech podejść przy wyborze języka programowania, który będzie akurat wam odpowiadał:
  • Spróbuj odpowiedzieć sobie na pytanie dlaczego tak naprawdę chcesz uczyć się programowania. Czy chcesz znaleźć pracę jako programista? Chcesz tworzyć strony internetowe? Aplikacje na Androida/iOS? Lub po prostu dla własnej satysfakcji jako hobby? Najpierw zastanów się po co i dlaczego chcesz programować a następnie dobierz do tego odpowiedni język programowania, pamiętając oczywiście, że dany cel można osiągnąć na kilka sposobów. Niestety minusem takiego podejścia jest fakt, że możemy trafić na język, którego składnia i funkcje nie będą nam odpowiadać przez co zrazimy się do programowania
  • Drugim sposobem jest wybranie języka, które jest uznawany za łatwiejszy w nauce lub wypróbowanie nawet kilku i wybraniu tego, które wam najbardziej przypasuje.
  • Można również język wybrać czysto pragmatycznie i zorientować się, na który jest obecnie największe zapotrzebowanie. Sprawdza się to chyba najbardziej jeśli chcemy szukać pracy jako programista w jakiejś firmie.
Pomocne mogą okazać się zestawienia, które próbują na różne sposoby przedstawić popularność języków programowania. TIOBE mierzy popularność na podstawie wyników zwróconych przez zapytania zawierające nazwę danego języka. Kalkulacje są robione na podstawie 25 różnych wyszukiwarek. Całość jest wytłumaczona tutaj. Inną stroną, która prowadzi podobne statystyki jest Programming Language Popularity. Ocenę przydatności tych rankingów pozostawiam wam.

Jeżeli chodzi o mnie to zdecydowałem się na web development. Chciałem tworzyć strony internetowe oraz wiem, że jako jedna osoba mogę być bardziej niezależny i pomniejsze projekty tworzyć całkowicie samemu. W głowie często świtają mi pomysły na różne strony, które chciałbym kiedyś zrealizować. Wyznaczyłem sobie takie poszczególne kroki:
  1. HTML/CSS - chyba nie trzeba tłumaczyć, kompletna podstawa, nie są to nawet języki programowania tylko język znaczników (markup language),
  2. PHP - wiele osób negatywnie wypowiada się o PHP twierdząc, że uczy nieładu oraz pozwala na działanie źle napisanego kodu, doradzając przeskoczyć na Ruby albo Pythona lecz PHP ma nadal silną pozycję i jest stosunkowo łatwy do nauki. BTW Facebook jest napisany w PHP.
  3. JavaScript  - aby tworzyć bardziej dynamiczne strony. Następnie jQuery i daleko w przyszłości chciałbym chociaż ruszyć node.js,
  4. Chciałbym również chociaż spróbować Ruby oraz Pythona.
Lista wydaje się krótka lecz przy ograniczonym czasie i pracy w tygodniu stawiam, że realizacja tego planu zajmie mi minimum rok. Kilka artykułów które warto przeczytać przed podjęciem decyzji:

11 stycznia 2014

Przejrzystość kodu

Podobno jedną z najlepszych rad jaką daje się początkującym to ciągłe przypominanie o konieczności utrzymywania porządku w swoim kodzie, tak abyśmy za 10 minut nie zastanawiali się co sami mieliśmy na myśli pisząc daną linijkę. Piszę o tym już teraz, ponieważ jest to umiejętność, którą należy szlifować od samego początku. Przyznaję, że ja sam kilka razy nie mogłem sobie przypomnieć dlaczego napisałem daną funkcję tak a nie inaczej i dlaczego dałem jej nazwę, która teraz kompletnie nic mi nie mówi. Jeżeli poprosicie kiedyś bardziej zaawansowanego programistę o pomoc to szanujcie jego czas i napiszcie kod w ten sposób, aby ktoś nie musiał spędzić godziny próbując się w nim odnaleźć. Dużo łatwiej jest od razu starać się pisać przejrzysty kod, niż później próbować go poprawiać. Niestety jest to umiejętność, której nie można się nauczyć wprost, najpierw trzeba napisać trochę kodu, z którego nic nie wynika, żeby nabrać odpowiednich zwyczajów. Warto poświęcić ten dodatkowy czas aby utrzymywać porządek w tym co piszemy.


Polecam również pozostałe filmiki na tym kanale. Link do książki, o której wspomina.
Aktualizacja: PDF książki Clean Code Roberta C. Martina można znaleźć tutaj lub tutaj.

Czas napisać własny kod!

Ok, mamy za sobą wstęp i trochę teorii zawartej w pierwszych filmikach z kursów z poprzedniego posta. Wszystko fajnie, tylko istotą programowania jest pisanie kodu wiec nie pozostaje nam nic innego jak zacząć kodzić. Istnieją strony pozwalają pisać kod od razu w przeglądarce, pokazując rezultaty na bieżąco przy okazji tłumacząc krok po kroku co należy robić. Idealnie na start!
  • Codecademy - jedna z pierwszych stron, od których zacząłem swoją naukę. Bardzo łatwy interfejs, który pokazuje nasz progres i przyznaje odznaki za skończone kursy. Do wyboru mamy markup HTML/CSS oraz JavaScript, PHP, Python i Ruby.
  • Dash - pokazuje jak w prostu sposób złożyć całkiem nieźle wyglądające proste strony za pomocą HTML/CSS. Przykłady są łatwe i szybkie.
Pamiętajcie, że te strony pokażą wam tylko składnie, zaprezentują zasady działania głównych funkcji i zapewnią podstawy do napisania własnych, prostych programów lecz jeśli nie przećwiczycie zdobytej w ten sposób wiedzy, na następny dzień zapomnicie o wszystkim. Codecademy warto potraktować jako sposób zapoznania się z danym językiem, zadecydować czy odpowiada nam jego składnia i podjąć decyzję czy chcemy brnąć dalej w jego naukę.

09 stycznia 2014

Wstępu ciąg dalszy

W internecie jest ogromną ilość najróżniejszych materiałów odnośnie programowania, których niestety nie jestem w stanie przerobić z powodu ograniczonego czasu, dlatego chciałbym tutaj wrzucać te, które uznam za warte przerobienia. Będzie to służyć równocześnie jako motywacja dla mnie aby szukać i uczyć się dalej, zdobywając umiejętności oraz content na bloga.
Na start warto zacząć od MOOC - massive open online course. Są to darmowe onlinowe kursy (w formie video) dla każdego, bardzo często prowadzone we współpracy ze znanymi światowymi uczelniami. Dla osób, którym czasem ciężko znaleźć chęć i motywację aby regularnie zabrać się za naukę, materiał kursów podzielony jest na cześci - po kilka godzin tygodniowo. W ten sposób można spokojnie podzielić i zaplanować wolny czas. Za ukończenie każdego kursu otrzymuje się certyfikat. Jednym z największych portali oferujących MOOC jest Coursera, sprawdźcie tylko ile najróżniejszych kursów oferują: https://www.coursera.org/courses. Jeżeli nie jesteście przekonani, wybierzcie taki, który was interesuje i obejrzyjcie wprowadzający materiał. Kursy dzielą się na ograniczone czasowo, które rozpoczynają się konkretnego dnia, a nowe materiały pojawiają się co tydzień, zapisy na te kursy są ograniczone czasowo, domyślam się, że ma to zachęcić do regularnego przeglądania materiałów oraz jeżeli wolicie przerabiać materiały we własnym tempie to są również kursy, które udostępniają całość materiałów od razu. Kursy wprowadzające do programowania, które mogę polecić:
  • Computer Science 101 - ciekawy materiał, nie tylko o samym programowaniu ale również o zasadach działania software'u, hardware'u i sieci oraz dający ogólny pogląd na computer science. Tutaj można obejrzeć filmy, bez konieczności zakładania konta - sprawdźcie czy taka forma zdobywania wiedzy wam odpowiada
  • HarvardX: CS50x Introduction to Computer Science - bardzo świeży kursy, który rozpoczął się 1 stycznia 2014 (jednak cały materiał jest już dostępny), obejrzałem dopiero week 0 ale skala tego przedsięwzięcia oraz ilość materiałów i filmów robi wrażenie. W porównaniu do powyższego kursu wygląda to bardziej na zapis video z wykładów ale czytałem, że wiele osób go poleca i jest jednym z lepszych wprowadzeń do CS.
Zdecydowaną zaletą rozpoczęcia programowania poprzez taki kurs, w przeciwieństwie do chwycenia książki czy od razu zabrania się za pisanie kodu, jest fakt, że zdobywamy tutaj trochę szersze pojęcie o samym programowaniu, a nie tylko umiejętność pisania kodu.

08 stycznia 2014

Hello World!

Chciałbym aby ten blog był w pewnym sensie udokumentowaniem mojego procesu zdobywania wiedzy na temat programowania i ogólnie zasad działania internetu oraz komputerów. Ponad rok po zdobyciu wyższego wykształcenia, całkowicie nie związanego z programowaniem, kiedy to odpocząłem trochę od przymusowej nauki i nauczyłem się wstawać wcześnie rano do pracy, poczułem potrzebę dalszego kształcenia się. Z ciekawości, dla przyjemności, aby rozszerzyć swój sposób myślenia o nowych technologiach, a w dalszej przyszłości - być może dla bardziej materialnych zysków. Wybór padł całkiem łatwo na programowanie, jestem człowiekiem, który lubi dociekać natury rzeczy więc przy okazji dowiem się więcej o technologii, z której korzystam bardzo dużo każdego dnia, dodatkowo dobrze się przy tym bawię oraz mam jakoś przeczucie, że jest to dziedzina, z którą sobie poradzę. Rozpocząłem ok. 2-3 miesiące temu i przez ten czas zdobyłem pewnie podstawy oraz małe rozeznanie w temacie, które miejmy nadzieje pozwoli na rozpoczęcie tego bloga. Na blogu chciałbym głownie umieszczać materiały, pomoce, książki, strony, filmy, programy oraz samouczki, na które natrafiam podczas codziennego przeglądania internetu, a które wydają mi się ciekawe i pomocne. Aby czytać tego bloga nie musisz posiadać jakiejkolwiek wiedzy na temat programowania ale muszę zaznaczyć, że 99% wrzucanych przeze mnie materiałów prowadzić będzie do stron w języku angielskim. W wolnych chwilach mogą się również pojawić posty na różne poboczne tematy jak bitcoin (BTC), sieć onion(TOR), gry komputerowe, książki popularno-naukowe lub jak znaleźć motywację do dalszej nauki. Niedługo wrzucę pierwsze materiały, a na początek umieszczę ten filmik: