DSP – Progresu brak

Pisanie dwóch postów tygodniowo jest jak widzę sporym wyzwaniem. Przede wszystkim czasowym. Do tego realizacja projektu, to już doby za mało. No cóż, nie ma co narzekać. Każdy z Nas ma 24 godziny. Ja, Ty, Bill Gates czy Mark Zuckerberg. Kwestia jak je wykorzystamy. Ja najwyraźniej nie za dobrze, bo poza myśleniem nie zacząłem jeszcze kodować. A to już chyba mój czwarty tydzień bez progresu. Może niewłaściwie się do tego zabieram. Tak jak pisałem wcześniej zaczynam od RestAPI we Flasku. Ponieważ, już coś takiego robiłem uznałem, że będzie dobre na rozgrzewkę. Ale to już chyba za długa trwa. Kiedyś ktoś, gdzieś powiedział, że jak dobrze zaprojektujemy API to potem już z górki. Ale u mnie cały czas pod. Może się do tego źle zabieram. Jeśli, masz jakieś zdanie w tym temacie chętnie poczytam Czytelniku.

A tymczasem przed nami długi majowy weekend, pogoda za oknem raczej bliżej zimy, więc w końcu muszę znaleźć ten czas i odpowiednio go wykorzystać.

Pisanie na sterydach

Po świątecznej przerwie, czas zmobilizować się do pisania bloga. Trochę zardzewiałem. Pomyślałem więc, trzeba przyspieszyć pisanie artykułów. W moim przypadku to bardziej szkiców na artykuły. Pomysłów jest znacznie więcej niż czasu, który można poświęcić na pisanie. Ad rem, czyli do rzeczy.

Obiecałem o sterydach. Niestety nie dowieźli. Dealer znowu się spóźnia. No dobra, nie o takich sterydach miałem pisać. Miałem na myśli legalne wspomaganie pisania za pomocą narzędzi typu TextExpander.

Na co dzień używam macOS. System, który jak każdy unixopochodny automatyzację ma we krwi. Poczynając na terminalu, poprzez narzędzia do automatyzacji czynności typu Automator, Keyboard Maestro, Hazel, Alfred a na przyspieszających używanie fragmentów tekstu kończąc. To są narzędzia, które z mniejszym lub większym skutkiem używam w codziennej pracy. Dziś skupię się na tych ostatnich, czyli przyspieszających pisanie.

To snippet or not to snippet

Zapewne większość z moich czytelników używa snippetów, czyli fragmentów kodu, tekstu czy innej twórczości, którą wielokrotnie możemy wykorzystać. Zamiast tworzyć coś od początku sięgamy po gotowe rozwiązania. Znalazłem nawet narzędzie dedykowane o nazwie Snippets. Niestety nie używałem, więc nie wiem na ile użyteczne.

Innym sposobem na przyspieszenie jest korzystanie z wbudowanych w IDE mechanizmów autouzupełniania typu IntelliSense. Na co dzień używam Pycharm’a. Gdzie te mechanizmy podpowiedzi i uzupełnienia działają naprawdę świetnie. Drugim moim edytorem jest Sublime, który po dołożeniu mu kilku dodatków, również obsługuje te mechanizmy. Ma on też swój system tworzenia snippetów.

Dobrym przykładem na produktywne wykorzystanie idei snipettów jest, znany szczególnie wśród webdeveloperów, Emmet. Jest to plugin do wielu edytorów i IDE wykraczający daleko poza zwykłe kopiuj-wklej gotowych fragmentów. W rękach sprawnego frontendowca, może znacznie zredukować liczbę naciśnięć klawiszy w celu uzyskania tego samego kodu.

Wymienione wyżej przykłady pozwalają na sprawną pracę z dedykowanymi programami. Jednakże w pracy zazwyczaj nie ograniczamy się do jednego narzędzia, które służy nam do wprowadzania tekstu. Idealne byłoby narzędzie ogólnosystemowe. I tu z pomocą przychodzi nam TextExpander i tym podobne.

TextExpander, niech żyje król?

Ponieważ narzędziami do zwiększenia produktywności jeśli chodzi o pisanie zaraziłem się słuchając Mac Power Users , to długo jedynym znanym mi był TextExpander. Ponieważ nie czułem potrzeby korzystania z dodatkowych programów, a przy tym kosztujących powyżej 40$, nie miałem zamiaru korzystać z jego funkcjonalności. Jednakże, słuchając Macgadki dowiedziałem się o taniej alternatywie, kosztującym 5$ programie aText.

Postanowiłem sprawdzić na ile przydatny jest to program. Utworzyłem kilka rozszerzeń typu adresy email, najczęściej używane zwroty i starałem się pamiętać o ich użyciu. Na dodatek, przyznaję się bez bicia, korzystałem z niego dosyć chaotycznie. Dopiero teraz zaczynam porządkować sposób w jaki go wykorzystuję.

To be continued

NaRESTcie czas odpocząć

Chciałoby się rzec. Niestety, nie będzie mi to dane. Miałem rozpocząć kodowanie projektu w tym tygodniu, jednakże ból zęba skutecznie storpedował moje zamiary. Człowiekowi wydaje się, że może dużo wytrzymać, dopóki nie doświadczy bólu zęba. Zapewne inne bóle też nie są przyjemne, ale na szczęście znam tylko ten.

Plan był następujący – napisać szkielet REST API dla mojej aplikacji. Zostanie przeniesiony na następny tydzień, choć w związku ze zbliżającymi się świętami Wielkanocnymi nie będzie łatwiej go wdrożyć. Pożyjemy, zobaczymy.

Póki co ósemka nie daje znać o sobie. Trzeba podjąć decyzję, czy rwać czy leczyć kanałowo. Dentyście nie uśmiecha się żadna z tych opcji. Najważniejsze, że już nie boli.

Zaprzyjaźnij się z Processingiem

Jak zapewne część z Was słyszała do szkół wraca stare tzn. nowe. Nowa reforma edukacji. Obecni szóstoklasiści zamiast iść do gimnazjum, zostaną w 7 klasie szkoły podstawowej. Ci, którzy zostaną promowani, oczywiście 🙂

W związku z reformą jest nowa podstawa programowa, w tym również dla informatyki. Tak będą nazywać się dotychczasowe zajęcia komputerowe w szkole podstawowej.

W nowej reformie duży nacisk kładzie się na naukę programowania. Co w różnych środowiskach wywołuje spore emocje. Maciej Aniserowicz na swoim blogu również popełnił felieton.

Jako nauczyciel wyżej wymienionych przedmiotów mam mieszane uczucia. Ale to temat na inny wpis.

Staram się przygotować do tej zmiany, uczestnicząc w różnego rodzaju aktywnościach. Ostatniej środy miałem okazję wziąć udział w warsztatach poświeconych temu zagadnieniu.

Były to warsztaty przeznaczone dla nauczycieli przyszłych klas 7-8 i poświęcone były narzędziu do nauki programowania – Processing.

Edukacja informatyczna ma do swej dyspozycji wiele różnych narzędzi. Dominujący ostatnio Scratch, trochę zaniedbywany język Logo czy coraz popularniejszy Python. Każde z nich ma swoje plusy, a chodzi o to żeby te plusy nie przysłoniły nam minusów – jak mawiał prezes Ochódzki.

Wracając do Processingu jest to jednocześnie język i środowisko do nauki programowania przeznaczone dla osób, które oczekują szybkich efektów wizualnych swojej pracy. Np. nie musimy implementować animacji, gdyż dostajemy ją już domyślnie włączoną w funkcji draw().

Środowisko jest darmowe. Wystarczy je pobrać i rozpakować archiwum, aby rozpocząć pracę. Nie ma potrzeby instalacji. Domyślnym językiem w jakim programujemy jest Java. Można doinstalować jednak inne moduły, które pozwolą na pracę m.in. w javascript, pythonie.

Dostajemy prosty edytor tekstu wraz z przyciskiem uruchom. Napisany program możemy wyeksportować do pliku wykonywalnego działającego na platformie Windows, Linux czy MacOS. Załączony podręcznik pozwala zapoznać się ze składnią języka i jego wykorzystaniem na dołączonych przykładach.

Poniżej prosty program, który wykonaliśmy na zajęciach. Odbijamy poruszającą się piłeczkę i zbieramy za to punkty. Program nie jest doskonały, ale pokazuje jak przy pomocy niewielkiej ilości kodu można uzyskać szybkie i atrakcyjne dla uczniów efekty pracy.



int x = 400;
int y = 250;
int delta_x = 5;
int delta_y = 5;
int ball_diameter = 30;
int rectangle_x = 400;
int points = 0;


void setup()
{
  size(800, 500);
  textSize(30);
}

void draw()
{
  background(255, 0, 0);
  fill(255, 255, 255);
  ellipse(x, y, ball_diameter, ball_diameter);
  fill(0, 255, 0);
  rect(rectangle_x, 450, 200, 30);
  x = x + delta_x; 
  y = y + delta_y;
  if (x > rectangle_x && x < rectangle_x + 200 && y > 450 - ball_diameter / 2) 
    {delta_y = -delta_y; points++;}
  if (y > height - ball_diameter / 2) points = 0;
  if (x > width - ball_diameter / 2 || x < ball_diameter / 2) 
    delta_x =  -delta_x;
  if (y > height - ball_diameter / 2 || y < ball_diameter / 2) 
    delta_y =  -delta_y;
  fill(0, 0, 0);
  text("Points: " + str(points), 50, 50);
}

void  mouseDragged()
{
  rectangle_x = mouseX;
}

Ludzie posty piszą

Mija trzeci tydzień blogowaia. No dobra, trochę się rozpędziłem. Coś tam sobie piszę. Blogerzy to są Michał Szafrański z Jak Oszczędzać Pieniądze, Maciej Aniserowicz z Devstyle czy Kasia Tusk z Makelifeeasier.

Ten post powinien być o moich postępach w pracy nad projektem, ale znowu będzie nie na temat 🙁

O postępach krótko. W tym tygodniu za długo zastanawiałem się od czego zacząć. Czy REST API to dobry start, czy zacząć od bazy, czy może przemyśleć wygląd strony www. No cóż, rozterki początkującego i niedoświadczonego programisty. Postanowiłem zacząć od API, ponieważ stworzyłem już JEDNO w ramach nauki. Więc wydawało mi się to najprostsze do wdrożenia. A jak wiadomo wyobrażenia to jedno a rzeczywistość drugie. Czas spędzony w tym tygodniu uważam, za niezbyt produktywny w tym obszarze. Mam nadzieję, że przyszły tydzień przyniesie już jakiś konkretny efekt w postaci kodu.

A propos pisania. Przejrzałem pobieżnie kilka blogów biorących udział w konkursie. Na szczęście większość z nich nie przytłacza ogromem treści. Choć ilości pracy zaczynam już niektórym zazdrościć, pozytywnie znaczy się. Z podziwem patrzę jak ludzie są w stanie ogarniać kod, pisanie i życie, które też musi się toczyć.

Dzięki pierwszemu komentarzowi, który pojawił się na moim blogu trafiłem na twórczość kolegi Buliego – Prosto do celu. Jestem pod wrażeniem Twoich wpisów. Ich długości i merytoryczności. Szacun.

Automatyzuj co się da, mówili …

Dziś próbowałem ułatwić sobie życie. Pewnie coś, co dla osób zajmujących się blogowaniem jest sprawą normalną. Postanowiłem zautomatyzować zmianę rozmiaru grafik przygotowywanych na stronę.

Ponieważ od ponad dwóch lat korzystam z macOS postanowiłem wykorzystać narzędzie o nazwie Keyboard Maestro. Z predefiniowanych klocków możemy tworzyć własne kompozycje, które usprawniają powtarzalne czynności wykonywane na komputerze. Uruchamiamy je za pomocą różnego rodzaju wyzwalaczy, z których kombinacja klawiszy jest jednym z najprostszych.

Mój skrypt, nie do końca działał jak należy. Od czego jednak community skupiona wokół tego genialnego narzędzia. Na stronie forum, znalazłem gotowe makro.

Pierwsze testy okazały się pomyślne. Postanowiłem zdezaktywować moje makro i przypisać używany dotychczas skrót klawiaturowy do nowego. So far so good.

Minęła godzina, podczas której niezbyt intensywnie korzystałem z komputera. Przyszła pora na napisanie tego posta. Ku mojemu zdziwieniu nie działa klawisz backspace. Naciskanie nie powoduje żadnej reakcji. Sprawdzam w innych programach – nie działa. Sprawdzam inne klawisze – działają. Sprawdzam kombinację CMD + backspace, o dziwo działa. Czyli moje przypuszczenia o fizycznym uszkodzeniu klawisza – obalone. Na stronach Apple piszą o resecie SMC. Zwykły reset macbooka. Jest gorzej, touchpad nie reaguje na nacisk. Brak sterowania kursorem. Nie mam pod ręką myszki. Wyłączam laptopa przyciskim. Ponowny start. Touchpad reaguje. Logowanie. Wpisuję kilka słów, kasuję je. Backspace działa. Hura, hura, hura…

Ma radość była jednak przedwczesna. Uruchamiam iA Writera celem kontynuacji pisania. Backspace dead. I tu powinienem zaprosić do następnego odcinka za tydzień 🙂 Ale do północy jeszcze 15 minut, więc skończę.

W telegraficznym skrócie. Po przypisaniu skrótu w Keyboard Maestro do nowego makra, zamiast zdezaktywować stare, postanowiłem usunąć skrót. No jak usuwanie to backspace. Z kolei naciśnięcie jakiegokolwiek klawisza powoduje utworzenie nowego skrótu. Tym samym backspace stał się nowym skrótem dla starego makra. Jakby to powiedział prezydent Clinton – „Konfiguracja, głupcze”.

I tak półgodziny póżniej zamiast opisywać postępy w projekcie piszę o wyższości automatyzacji nad ręczną modyfikacją konfiguracji wszelakich.

A jak Ty ułatwiasz sobie życie Czytelniku?

A Ty czego słuchasz w drodze do pracy?

Poniedziałkowy ranek. Płomienne zorze budzą mnie ze snu, chciałoby się zaśpiewać. Ale ani zorze, ani płomienne. To kurier dzwoni umówić się na wizytę. No dodatek godzina snu mniej. Nikt się nad Tobą nie zlituje pierwszego dnia tygodnia.

Do rzeczy. Skoro poniedziałek to Mac Power Users. To już poranny rytuał w moim przypadku. W samochodzie, w drodze do pracy, zaczynam słuchać podcastów. Ten był jednym z pierwszych, jeśli nie pierwszym od którego ponownie zacząłem ich słuchać.
Pierwszy, regularny kontakt dzięki iPodowi Shuffle pierwszej generacji to był rok 2006. Słuchałem wtedy lekcji angielskiego z BBC. Nie było to wtedy takie proste jak dziś. Podcasty były w powijakach, nie było aplikacji, nie było serwisów, plany taryfowe w telefonach nie zachęcały do korzystanie ze streamingu. No cóż, kopiuj wklej w przypadku iPoda, też nie wchodziło w grę. Trzeba było skorzystać z iTunes.

Minęło kilka lat. W grudniu 2013 stałem się szczęśliwym posiadaczem Nokii Lumia 920, która zastąpiła wysłużony już HTC Touch HD2. Windows Phone następca Windows Mobile 6.5 okazał się całkiem przyjemnym systemem. W świecie wszechobecnego Androida i Iphone, Lumia była enfant terrible mobilnego świata. Nie będę się nad tym rozwodził. Long story short – byłem zadowolony z telefonu i znajdującego się w nim systemu. A przynajmniej do czasu.
Ale to jest artykuł o podcastach. Wróciłem do słuchania podcastów z powodu iPada Air. Zakochałem się w tym urządzeniu. Ale było zbyt niewygodne do słuchanie podcastów. A przynajmniej w drodze. Na scenę wkroczyła rzeczona Lumia. Dzięki 32GB pamięci i 2GB internetu, na nowo odkryłem słuchanie podcastów. Potrzebny był jeszcze czas, ale od czego jest jazda samochodem, zakupy w supermarkiecie czy prasowanie. Cała masa czynności przy których można słuchać podcastów.

Szukając informacji na tematy związane z hardwarem i softwarem od Apple natknąłem się na macgadkę – podcast dotyczący świata nadgryzionego jabłka. Polecam. Szczególnie ostatnie odcinki z Miłoszem Staszewskim . W nim to usłyszałem o wspomnianym już MPU, czyli podcascie dla fanów macOS i iOS. Prowadzący kładą nacisk na produktywne wykorzystanie urządzeń firmy z Cupertino.
Ten post miał zawierać tylko informacje o dzisiejszym odcinku z Salem Soghoian’em – ojcem automatyzacji w macOS. Polecam. Ale wyszedł mi przydługi post o podcastach.
A ponieważ zbliża się północ, będę już kończył. Temat nie został wyczerpany, więc jeszcze jeden wpis się pojawi.

A Ty czego słuchasz Czytelniku?

Pracę czas zacząć

Mija drugi tydzień konkursu. Cóż, nikt nie obiecywał, że będzie łatwo. Na razie moje wpisy dotyczące projektu raczej kwalifikują się na bloga w stylu Perfekcyjna Pani Domu, niż blog technologiczny. Programistyczny, byłby semantycznym nadużyciem, jak mawiał klasyk.

Samozwańczy Programista, tak chyba powinien się nazywać. Ten blog. Z naciskiem na samozwańczy.
Programiści mają pomysły, implementacje, technologie, metodyki i cały bagaż doświadczeń. Ja mam pomysł na pierwszy poważniejszy projekt. Mam chęć. To już dużo, jak na początek. Teraz tylko trzeba znaleźć czas na realizację i naukę. Nie ścigam się z nikim, tylko z samym sobą. Więc krok po kroku, bez pośpiechu będę realizował mój pomysł.

Carbook

Dzięki Orlenowi i jego współpracy z Audioteką miałem okazję zapoznać się ze świetnie zrealizowaną adaptacją książki Stanisława Lema – „Niezwyciężony”. Automaty w tej powieści na drodze ewolucji, wykształciły w sobie pewne mechanizmy przejawiające się w grupowej inteligencji. To w bardzo dużym uproszczeniu. Polecam zapoznanie się z pozycją. Natchnęło mnie to właśnie to zrealizowania pomysłu facebooka dla samochodów. Wszak tylko czekać, kiedy IoT zacznie ewoluować i żyć swoim życiem. Złośliwi, powiedzą, że już żyje. Ale to tylko Ci od bezpieczeństwa.

Stąd zmieniam roboczą nazwę projektu z LogMyCar na Carbook. Idea na dzień dzisiejszy związana jest z właścicielami pojazdów, ale w przyszłości kto wie. Mamy już autonomiczne samochody. Tylko czekać, kiedy zaczną robić sobie selfie z koła i umieszczać na Carbooku.

Idea jak dla mnie, czyli Samozwańczego Programisty, jest prosta w implementacji. Pewnie dlatego, że nigdy nic o podobnej złożoności nie zrobiłem. Programista Senior wiedziałby już od czego zacząć, jaki język wybrać, jaki framework, jakie pułapki czekają nas po drodze. Samozwańczy wie tylko, że to proste. O trudach wynikających z błędnych założeń będzie dopiero miał okazję się przekonać.

To Flask or not to Flask

Czyli wydawać by się mogło, klasyczne już w dzisiejszym świecie pytanie – jaki framework wybrać?
Z racji użycia Pythona w moich działaniach, w pierwszej kolejności wybieram framework, na którym zbuduję aplikację webową. Mój wybór padł na Flask, z racji tego, że miałem z nim do czynienia podczas nauki Pythona. Dla większości miłośników Pythona, bardziej naturalnym wyborem byłoby Django lub coraz popularniejszy Pyramid. Ostatnio na facebookowej grupie Python Poland, wręcz odradzano Flaska w przypadku tworzenia API dla androidowej aplikacji. No cóż pożyjemy zobaczymy.

A co tam na froncie?

No to pewnie jakiś HTML i CSS. No jak już szaleć to jakiś Bootstrap jeszcze. No i jakiś javascript będzie potrzebny.

Frontend vs Backend
Zródło: https://comic.browserling.com/15

Mobilnie?

No to już będzie extra, więc zostawiam sobie czas na podjęcie decyzji.

Programowanie – jak zacząć

Motywacja

Kochasz, uwielbiasz a może tylko lubisz? Może wręcz przeciwnie, masz już dość. Jak w każdym procesie uczenia się motywacja jest bardzo ważna, aby rozpocząć a co ważniejsze wytrwać w swoim postanowieniu. Proces nauki to nie krzywa wznosząca się to raczej sinusoida. Więcej porażek niż sukcesów. Przynajmniej na początku. Nie zniechęcaj się niepowodzeniami. Po prostu RÓB TO. Trenuj, ćwicz, pracuj. Po prostu RÓB TO. Błądź, potykaj się, podnoś. Przyj do przodu. Z czasem będzie łatwiej.

Jaki język?

Interpretowany czy kompilowany? Typowany statycznie czy dynamicznie? Jako początkujący pewnie nie zadajesz sobie jeszcze takich pytań. Po prostu chciałbyś zacząć programować.
Wybór ten jednak rozważyć, aby się za szybko nie zniechęcić. Na początku drogi, masz się zapoznać z podstawami. Zmienne, pętle, warunki, wejście, wyjście, struktury danych. Niech to będzie szybki i w miarę bezbolesny proces. Ja wybrałem Pythona. Uważam, że to świetny wybór na początek przygody zwanej programowaniem.

Dlaczego Python?

Bardzo niski próg wejścia, prostota, uniwersalność i elegancja. To są elementy, które zdecydowały o moim wyborze.

No to może kilka słów o sobie ..

 

No to może ja …  Ponieważ mam już 40+ lat, to wyżej i niżej pokazany fragment „Rejsu” jest dla mnie naturalnym skojarzeniem.

Od 1998 r. zajmuję się szeroko pojętym IT. Bardziej od strony administracyjnej niż programistycznej. Programowanie przewijało się przez cały czas, ale były to doraźne rzeczy związane z potrzebą chwili. Popełniłem kilka rzeczy komercyjnie, jakieś strony, jakiś system zamówień dla firmy z branży meblarskiej. Ale były to epizody nie powiązane ze sobą. Na co dzień nauczam dzieci i młodzież w zespole szkół. Z racji przygotowywania ich do konkursów programistycznych, ostatnie lata poświeciłem na zgłębienie tajników programowania. Mój wybór padł na język programowania Python. I temu językowi głównie będzie poświęcony ten blog.

Nazwa bloga Junior Senior wywodzi się stąd, że wiekowo to już raczej seniorem jestem, przynajmniej jeśli chodzi o programowanie. Z kolei umięjętności to raczej poziom juniora. Moje wpisy będę kierował do osób rozpoczynających swoją przygodę z programowaniem.

Daj się poznać – Krok pierwszy

Właśnie dziś wpadł mi w ręce ten URL z filmem.  Spadł jak grom.

Cóż więcej dodać.

RÓB TO.

Tylko tyle?

Tak.

No więc zaczynam. Kolejne wersje wpisów, które pojawiały się w głowie nie mają już żadnego znaczenia. Ubić dążenie do idealnej wersji. Czas zacząć pisać o projekcie.

LogMyCar to nazwa projektu, który ma za zadanie zaspokoić moje i mam nadzieję, nie tylko moje, potrzeby związane z przechowywaniem informacji związanych z użytkowaniem samochodu.

Przejechane kilometry, tankowanie, spalanie, naprawy, serwisowanie, opłaty, badania i tym podobne. Oczywiście są aplikacje do tego. Ale mają swoje niedogodności. Postanowiłem zrobić aplikację, która będzie spełniała moje potrzeby.

Na początek w formie serwisu internetowego opartego o Flask, do tego jakieś Restful API. Potem mobilna aplikacja.

Jeśli chodzi o Flask i Restful API to już robiłem jakieś proste rzeczy. Aplikacja mobilna to z kolei totalna nowość dla mnie. Zastanawiam się jeszcze czy rozpocznę od iOS, którego używam na co dzień, czy raczej od Androida.

No dobra, jakoś poszło. Miejmy nadzieję, że zgodnie z twierdzeniem im więcej robisz tym łatwiej będzie, kolejne wpisy będą się szybciej pojawiać.

RÓB TO.