obżarłem się i gęba mi się wylewa

O mnie

Programowaniem interesuję się od lat 80-tych. Przygodę rozpocząłem w czasach świetności "małego Atari".

Programowałem w różnych językach (C, asembler m68k/IA32/PPC, Basic, C#) i w różnych środowiskach. O tych czasach wspominam w historii.

Obecnie specjalizuję się w językach skryptowych, głównie Python oraz w programowaniu WWW (Django). Jestem zwolennikiem zwinnych metodyk produkcji oprogramowania (Agile), szczególnie Scrum. Nie umiem rysować, malować ani projektować logotypów.

Doświadczenie zawodowe

Jestem programistą, a także architektem wielowarstwowych systemów e-commerce. Do moich zawodowych osiągnięć zaliczam wykonanie:

  • podsystemu zarządzania gospodarką magazynową,
  • podsystemu wyliczania cen sprzedaży towarów i usług,
  • projektu warstwy integracji z hurtowniami,
  • projektu warstwy integracji Mass Collect,
  • podsystemu automatycznego zatowarowania sklepu internetowego.

Jako programista brałem udział w realizacji projektów m.in. dla:

  • CTI Computech International
  • Mitsubishi Electric Europe
  • ING Bank Śląski
  • Monitor Outlet, Inc.

W dziedzinie refaktoryzacji wykazałem się umiejętnością wykonania frameworka MVC na potrzeby wewnętrzne, dzięki któremu dynamiczny rozwój oprogramowania był prowadzony współbieżnie z wdrożeniami.

Filozofia Python (PEP 20)

Dokument PEP 20 opisuje filozofię języka Python - zbiór reguł i zasad postępowania w różnych przypadkach. Jestem gorącym zwolennikiemn tej filozofii. Stosowanie jej w praktyce pozwoliło mi uniknąć wpadek i porażek.

Prostota, wygoda, wysoka czytelność, przejżystość Pythona umożliwiają szybką realizację projektów, a także ułatwiają utrzymanie kodu.

Polecam zapoznanie się z Zen of Python.

Moja filozofia

KISS

Narzędzia

Preferuję lekkie, małe narzędzia w systemie Linux, które robią tylko to, do czego zostały przygotowane i współpracują ze sobą.

Najczęściej używam:

Moje środowisko pracy to:

Historia

Lata 80/90

Pamiętam niemal doskonale mój pierwszy "kalkulator" - Atari 65XE prosto z Pewex-u, wart wówczas jakieś $125. Pierwsze programy były proste - River Raid, Moon Patrol i pożyczony joy. Ojciec obiecał mi, że po "przejściu" 100 leveli w River Raid następuje koniec gry. Po zestrzeleniu setnego mostu nastał czas zmian - moja gra będzie miała zakończenie.

Atari Basic. Pierwsza gra nie porwała tłumów: Najciekawsza na świecie gra w smoka

Od tamtego czasu uczyłem się podstaw programowania - pętle, warunki, skoki. Gdy Basic nie wystarczył, walczyłem z Turbo Basic (głównie ze względu na skok wydajności). Gier nie powstało zbyt wiele, a jeśli już to w trybie GRAPHICS 0 z podmienionym na emblematy graficzne zestawem znaków ASCII. Próbowałem swych sił w programach użytkowych (operacje na plikach/dyskach), obliczeniowych, rozrywkowych (Koło Fortuny - GRAPHICS 0 ;) i bazodanowych - najprostszy data storage.

W tych czasach otarłem się o ciekawy język Action!, a także zacząłem przyglądać się asemblerowi 6502 ("Mapę pamięci Atari" W.Zientary czytałem chyba trzy razy).

Lata 90' - Amiga

Był to zdecydowanie najpiękniejszy okres. Nowe możliwości audio-wizualne, nowe zastosowania komputera (video-editing, grafika 3D, animacja 2D), nowe języki programowania.

Początki z Amigą to Amos Basic początkowo v1.3, niedługo później w wersji Professional. W tym czasie zmagałem się z programowaniem małych gier oraz narzędzi wspomagających ich tworzenie (edytory map, edytory obiektów). Amos Basic nie nadawał się jednak do poważniejszych zastosowań.

Zdobyłem Blitz Basic, którego główną zaletą było wykorzystanie możliwości chipsetu AGA oraz wydajność. Razem z przyjacielem pracowaliśmy nad polskim klonem Mortal Kombat - stosowaliśmy digitalizację obrazu z nagrań kamerą VHS (za pomocą urządzenia DigiLab firmy HDP Electronics), gdzie poszczególne klatki były skrupulatnie wycinane i koloryzowane w Deluxe Paint IV.

Thalimar - Land of Chaos screenshot Pierwszym poważnym projektem była gra RPG Thalimar - Land Of Chaos, którą próbowaliśmy zrealizować siłą woli, bez budżetu i całkowicie zdalnie wymieniając się informacjami na grupach dyskusyjnych i email. Kiedy ludzie zaczęli studiować/pracować, to projekt oczywiście padł. W tym projekcie więcej czasu mogłem poświęcić na programowanie i deployment (stąd zachowały się jakiekolwiek ślady tejże działalności).

Demoscena. Były to czasy fascynacji efektami graficznymi i pokonywania ograniczeń sprzętu. Swoich sił próbowałem i w tej materii. W asemblerze składałem maga dyskowego, niestety język tak niskiego poziomu, bez posiadania porządnej bazy "routinek" pochłaniał zbyt dużo czasu. Więdzę wykorzystałem w przygotowywaniu krótkich podprogramów wywoływanych z poziomu C.

Wiek XX na finiszu - blaszak

Czasy Windows oraz Internet Explorera. Zaczynałem od Borlanda C++ i rozgryzania biblioteki VCL, gdyż API Windowsa było ciężkie do ogarnięcia. Skupiałem się na pisaniu małych programów użytkowych. Zrealizowałem dwa małe projekty komercyjne. Probowałem reaktywować projekt Thalimara z silnikiem 3D Irrlicht (kompilator Dev Shed). Brak czasu zabił pomysł.

System operacyjny Microsoftu nie odpowiadał mi. Tęskniłem za Amiga OS i Directory Opus. Podjąłem się wyzwania napisania własnego systemu operacyjnego NovaOS, wzorowanego na AmigaOS. Był to ciekawy, półroczny eksperyment, dzięki któremu zdobyłem dużo wiedzy o architekturze IA-32.

Równolegle zgłębiałem tajniki programowania WWW. Zacząłem od PHP3, poszerzałem wiedzę o RDBMS, otarłem się o .NET i język C# (projekty web oraz desktop). Jednak dopiero od PHP4 (głównie przez łatwość i niskie koszty hostingów) i jego skromnej implementacji programowania obiektowego zacząłem korzystać ze zdobytej wiedzy komercyjnie.

Zrealizowałem w tym czasie kilka udanych projektów, w tym pierwszy sklep internetowy i proste CMS-y. Do roku 2008 programowałem w PHP5. Osiągnąłem na tyle wysoki poziom wiedzy o PHP, aby nigdy więcej nie stosować go do profesjonalnych zastosowań. Wybrałem Python z racji jego dość dobrej obiektowości, dynamizmu, kilku cech języków funkcyjnych, a także ze względu na jego ogólne przeznaczenie.

Książki

Oto kilka pozycji, które są dla mnie (lub kiedyś były) nieocenionym źródłem wiedzy:

  • Niklaus Wirth: Algorytmy + struktury danych = programy, Warszawa: WNT, 1989
  • Perdita Stevens: UML: Inżynieria oprogramowania, Gliwice: Helion, 2007
  • Kernighan, Ritchie: Język ANSI C, Warszawa: WNT, 1999
  • Jesse Liberty: C++ dla każdego, Gliwice: Helion, 2002
  • Piotr Metzger: Anatomia PC, Gliwice: Helion, 2001
  • Mark DeLoura: Perełki programowania gier, Gliwice: Helion, 2002
  • Jan Ruszczyc: Asembler 6502, Warszawa: SOETO, 1987
  • Wojciech Zientara: Mapa pamięci ATARI XL/XE: Procedury interpretera Basica, Warszawa: SOETO, 1989
  • Andrzej Dudek: Jak pisać wirusy, Warszawa: Read Me, 1994
  • Michał Kołodziejczyk: Amiga OS od środka, Gliwice: WPK J.Skalmierskiego, 1997