Artur Trzęsiok

Jestem programistą
i pasjonatem pracy zespołowej.
Ważne jest dla mnie co robię,
ważniejsze jak to robię,
a najważniejsze dlaczego to robię.

Zobacz moje prace

Co robię?

Swój pierwszy program stworzyłem na komputer Atari 800XL gdy miałem 7 lat. Od czasów szkolnych programuje w języku C++. Od ponad 10 lat zawodowo piszę aplikacje webowe.

Od kilku lat prowadzę jednoosobową działalność gospodarczą. W tym czasie rozwiązywałem szerokie spektrum problemów - od niskopoziomowej optymalizacji na potrzeby grafiki czasu rzeczywistego do systemu klasy Enterprise na potrzeby sektora publicznego. Lubię wyzwania i to ich przede wszystkim szukam w każdym projekcie, którego się podejmuje.

Łączę w sobie doświadczenie techniczne, zaangażowanie społeczne i umiejętności trenerskie. Często pracuje w zespołach interdyscyplinarnych doceniając ich szczególną wartość.

Technologie

Praca

Napisz do mnie!

Uważasz, że możemy współpracować? Chętnie spotkam się na kawie i porozmawiam o szczegółach. Pierwszym krokiem do tego jest wypełnienie poniższego formularza.

Dziękuje za skorzystanie z formularza kontaktowego.

Niestety coś poszło nie po mojej myśli. Spróbuj później lub skontaktuj się bezpośrednio: kontakt@cubeproject.pl

NodeJS rozwija się niezwykle dynamicznie. W chwili pisania tego tekstu w repozytorium NPM znajduje się 184.989 publicznie dostępnych bibliotek.

W programowaniu w JavaScript cenię sobie przede wszystkim wydajność i elastyczność. Mam doświadczenie w pisaniu aplikacji typu DIRT (Data Intensive Real Time).

Jako programista, który wcześniej dużo programował w C++, poznałem dokładnie rozwiązania pozwalające osiągać wysoką wydajność obliczeniową silnika V8. Wykorzystałem w praktyce rozwiązania takie jak TypedArrays, SIMD.js, asm.js czy obliczania na GPU realizowane poprzez webGL.

Doświadczenie
Od 2013 roku
Skala realizowanego projektu
Aplikacja klasy Enterprise dla transportu publicznego
Używane frameworki/narzędzia
Express, node-gyp, Grunt, Vagrant, Chef, Jenkins, Nginx, NPM
Stopień zaawansowania
Zaawansowany, prowadzę szkolenia z NodeJS
Zespołu deweloperski, z którym współpracowałem
Ponad 50 osób

W PHP stawiałem swoje pierwsze kroki w zleceniach komercyjnych. Często wybieram PHP do rozwiązania jakiegoś problemu z powodu jego szerokiego wsparcia pod kątem hostingu.

Wiem, że PHP ma coś co nazwałbym „złą opinią” w środowisku. Zawsze starałem się pokazywać, że w języku tym można programować stosując dobre praktyki.

W PHP powstał mój największy pod względem wolumenu bazy danych, samodzielny projekt - narzędzie analityczne platformy Allegro. Stosując wielopoziomowy cache obsługuję w nim bazę danych o wielkości ponad 20 GB. W pracy z platformami e-commerce nauczyłem się wydajnie analizować i optymalizować zapytania SQL'owe do bazy.

Doświadczenie
Od 2003 roku
Skala realizowanych projektów
Od prostych stron internetowych do platform B2B
Używane frameworki/narzędzia
Zend, Kohana, composer, MVC, memcache, PHPUnit, Varnish, Nginx
Stopień zaawansowania
Zaawansowany; byłem liderem zespołu programistów
Rodzaj pracy
Zlecenia własne + praca dla agencji przez ponad 2 lata
Bazy danych
MySQL (zaawansowany), MS SQL (średni), Oracle (podstawowy)

Po ponad 7. latach pracy z jQuery potrafię docenić i zrozumieć wzorce, które wdraża AngularJS.

Mam perspektywę dwóch lat rozwijania oprogramowania z użyciem tego rozwiązania. Przeszedłem przez takie problemy jak słaba wydajność przez zbyt wielką liczbę watch'y czy memory leaki pozostawiane przez trzymane referencje w controlerach.

Mimo to wciąż jestem entuzjastą-pragmatykiem tego rozwiązania. Obecnie niemalże każdą aplikacje od strony warstwy klienckiej realizuje przy użyciu tego frameworka.

Doświadczenie
Od 2013 roku
Skala realizowanych projektów
Aplikacje mobilne + Aplikacja Enterprise
Używane frameworki/narzędzia
Cordova, Protractor, Selenium, Less
Stopień zaawansowania
Zaawansowany
Zastosowanie
Aplikacje typu SPA (Single Page Application)

Grafiką czasu rzeczywistego byłem zainteresowany od samego początku. Od podstaw stworzyłem silnik 3d wraz z rasteryzatorem na platformę MS-DOS.

W OpenGL tworzyłem aplikacje w ramach subkultury zwanej Demosceną. Z tego doświadczenia wyniosłem umiejętność szybkiego prototypowania rozwiązań.

Komercyjnie wykorzystałem OpenGL do stworzenia oprogramowania dla zaprojektowanej przeze mnie podłogi interaktywnej.

Oprócz OpenGL'a w naturalny sposób zainteresowałem się WebGL'em. Między innymi stworzyłem renderer wykorzystujący metodę ray-marching oraz metody energetyczne z BRDF, oparte w 100% na obliczeniach GPU w jednostce Pixel Shader.

Doświadczenie
Od 2004 roku
Skala realizowanych projektów
Aplikacje pisane samodzielnie
Zastosowanie alternatywne
Wykorzystanie GPU do obliczeń równoległych
Zainteresowanie
Geometria proceduralna, tekstury proceduralne
Stopień zaawansowania
Średnio zaawansowany
Zastosowanie
Oprogramowanie na potrzeby upowszechniania nauki

HTML5 i CSS3 to podstawa dla większości zleceń jakie wykonuje. Uważam, że praca na tym poziomie powinna być przede wszystkim wydajna. Do tego potrzeba doświadczenia i biegłości. Przekładanie PSD do formatu zrozumiałego przez przeglądarkę musi być szybkie.

W tworzeniu stron cenię minimalizm i przejrzystość nie tylko od strony wizualnej, ale i implementacji. Do minimum redukuje wykorzystywanie gotowych rozwiązań. Gdy jednak ich używam wybieram je starannie. Prosty kod jest najlepszą gwarancję minimalizacji potencjalnych problemów.

Aplikacje tworzone z pomocą Cordovy/Phonegap'a są wrażliwe na zbyt rozległe obszary przerysowywane co klatkę. W pracy z CSS3 szczególną uwagę poświęcam wydajności na urządzeniach mobilnych, dzięki czemu potrafię rozwiązać takie problemy.

Doświadczenie
Od 2002 roku
Stopień zaawansowania
Zaawansowany
Projekty
Stworzenie kilkudziesięciu dedykowanych stron internetowych, w ramach pracy w agencji interaktywnej
Używane narzędzia
Minify, uglify, bower, compass, sass, less, google pagespeed etc.
Umiejętności powiązane
RWD, W3C valid, SEO ready, reverseproxy, eXtreme Programming

C++ pozwolił mi wcześnie rozpocząć programowanie zorientowane obiektowo. Jest to język mocno związany z warstwą sprzętową i nie posiada on automatów czy udogodnień takich jak garbage collector. Nauczyło mnie to szanować zasoby komputera.

Posiadanie wieloletniego doświadczenia w pracy na takim poziomie dało mi obecnie szeroką perspektywę spojrzenia na problemy w językach wyższego poziomu.

C++ używam w node-gyp tworząc natywne rozszerzenia języka javascript, gdy to konieczne.

Doświadczenie
Od 1998 roku
Spektrum doświadczenia
Od Borland C++ przez Watcom C++ do VC++
Zainteresowanie
Aplikacje obliczeniowe, optymalizacja, grafika
Stopień zaawansowania
Zaawansowany
Zdobyte umiejętności
Zrozumienie niskopoziomowych aspektów programowania

Future Processing to firma, która pokazuje, że w Polsce można inaczej. Jej hasło to: „Great software… because we put People first”. To miejsce nastawione na rozwój zarówno biznesu jak i zespołu.

Zdobyłem tu przede wszystkim doświadczenie pracy w międzynarodowych projektach o dużej skali. Zmierzyłem się z wyzwaniami zarządzania dużym ekosystemem programistycznym. Doświadczenie szybkiej i efektywnej pracy z wcześniejszych projektów połączyłem z wielopoziomową troską o gwarancje jakości.

Czas pracy
Od 2013 roku
Sposób pracy
Zespoły Agile, głównie stosujące Scrum
Obowiązki
Deweloper, opieka techniczna nad projektem
Zaangażowanie dodatkowe
Prowadzenie szkoleń i warsztatów

Abstract to moja przestrzeń zaangażowania społecznego. Pierwotnie był to festiwal skoncentrowany wokół grafiki czasu rzeczywistego i demosceny. Później wydarzenie ewoluowało w kierunku Festiwalu Nauki.

Motywacją do takiej działalności było pragnienie zarażania młodych ludzi pasją. Dzieliliśmy się wiedzą, organizowaliśmy spotkania i warsztaty. W założonym przez nas stowarzyszeniu działało około 30 wolontariuszy.

Przez IX edycji festiwalu współpracowaliśmy z wieloma instytucjami takimi jak Politechnika Śląska, Uniwersytet Śląski, Uniwersytet Ekonomiczny czy Akademia Muzyczna. Skala wydarzenia zmieniła się z kilkudziesięciu do kilku tysięcy uczestników jednej edycji. Były to moje pierwsze doświadczenia w zarządzaniu i motywowaniu zespołu.

Horyzont czasowy
Od 2001 do 2009 roku
Rola
Główny organizator i pomysłodawca
Cel projektu
Promocja nauki, pracy zespołowej
Zdobyte umiejętności
Oficjalny kontakt z większymi partnerami, motywowanie zespołu, koordynowanie projektu, zarządzanie ryzykiem, estymacja czasu pracy
Cecha szczególna
Projekt trwający 9 lat, uczenie się na błędach, permanentne doskonalenie warsztatu, założeń i narzędzi

iCSE (ang. innovative Computing in Science Education) to projekt, w którym uczestniczyłem w ramach wygranego przetargu ogłoszonego przez Uniwersytet Śląski. Moim zadaniem było przygotowanie autorskich konspektów zajęć, a następnie przeprowadzenie szeregu warsztatów w szkołach.

Zaangażowanie w tego rodzaju działania jest dla mnie naturalną kontynuacją idei festiwalu Abstract. Jednk tym razem mogłem podejść do promowania matematyki i programowania z dużo większym doświadczeniem pracy komercyjnej. Świadomość rynku pracy nadała mojemu nauczaniu innej perspektywy.

Horyzont czasowy
Od 2013 do 2014 roku
Cel projektu
Promocja modelowania komputerowego
Technologia
SageMath, Python
Model finansowy
Przetarg publiczny, rozliczenie na podstawie realizacji mierników
Cechy szczególne
Połączenie zaangażowania społecznego, zdolności technicznych i umiejętności trenerskich

Matler to mój największy samodzielny zrealizowany projekt. Byłem odpowiedzialny za kompleksowe dostarczenie gotowego produktu. Koordynowałem prace zarówno informatyczne, jak i przygotowania zawartości merytorycznej platformy.

Wytyczne zamawiającego nie określały szczegółów implementacyjnych, więc w zakresie moich kompetencji było zarządzanie produktem i podjęcie pełnej odpowiedzialności za skuteczność tworzonego narzędzia.

Matler to repetyrorium dla maturzystów i studentów. W odróżnieniu od innych dostępnych na rynku rozwiązań, w Matler wszystkie zadania zostały zrealizowane jako mikro-programy komputerowe. Dzięki takiemu rozwiązaniu każde zadanie może generować tysiące przykładowych danych do ćwiczeń.

Horyzont czasowy
Od 2013 do 2014 roku
Cel projektu
Stworzenie platformy e-learningowej do matematyki
Technologia
PHP, JavaScript
Model finansowy
Przetarg publiczny, rozliczenie na podstawie realizacji mierników
Zespół projektowy
Interdyscyplinarny - matematycy, programiści, graficy
Cechy szczególne
Zaangazowanie się w projekt Khan Academy
Doświadczenie
Zobaczenie pracy Scrumowej z perspektywy Product Ownera

Projekt Laborative miał na celu stworzenie produktu na bazie doświadczeń z grafiką czasu rzeczywistego oraz optymalizacji kodu. Zagadnienie komputerowej wizji idealnie do tego pasowało.

Zakres mojej pracy obejmował nie tylko oprogramowanie, ale także tworzenie prototypów urządzeń. Doświadczyłem w ten sposób poszukiwania kompromisu pomiędzy usprawnianiem warstwy sprzętowej, a optymalizacją algorytmu.

Moje instalacje zostały wykorzystane w sklepach na terenie Śląska oraz hotelu Gołębiewski w Wiśle.

Horyzont czasowy
Od 2010 do 2011 roku
Typ projektu
Research & Development
Technologia
C++, OpenGL, OpenCV
Zrealizowany projekty
MultitouchPad ponad 50″, podłoga interaktywna
Rozwiązanie technologiczne
Analiza obrazu w podczerwieni (850nm) w rozdzielczości 600x480 i 60 klatkach na sekundę

Jupyter to aplikacja webowa umożliwiająca programowanie w ponad 40 językach. Jest stosowana przede wszystkim do obliczeń naukowych. Rozwijana na zasadzie Open Source zyskuje popularność wśród społeczności uniwersyteckich.

Platforma posiada bardzo bogaty zestaw narzędzi do wizualizowania danych, co jest szczególnie istotne z uwagi na jej zastosowanie. Moje zadanie polega na rozszerzeniu tych możliwości o interaktywną przestrzeń trójwymiarową.

Wykorzystując wiedzę zdobytą przez lata w OpenGL, niskopoziomową optymalizację algorytmów oraz doświadczenie z pracy webdevelopera dołączyłem do międzynarodowej społeczności entuzjastów Jupytera.

Czas realizacji
2015 rok
Typ projektu
Research & Development
Rola projektowa
Lider zespołu deweloperskiego
Technologia
Python, WebGL, JavaScript
Model finansowy
Przetarg publiczny, rozliczenie na podstawie realizacji mierników
Cecha charakterystyczna
Tworzenie oprogramowania Open Source