curriculum vitae
informacje podstawowe
imię.......: Michał Łyszczek
adres......: Wrocław, Polska
telefon....: +48.727-564-419
email......: michal.lyszczek@bofc.pl
www........: https://bofc.pl
Bardzo szybki przegląd
Lista otwartych projektów, które robiłem wraz z kluczowymi technologiami. Na stronie szczegóły wraz kodami źródłowymi do wglądu.
Open Source (projekty własne)
- https://termsend.pl (bash, nginx, rc.d)
- https://termsend.bofc.pl (c, pthread, socket, ssl)
- https://embedlog.bofc.pl (c, embedded, pthread)
- https://kursg.bofc.pl (bsh, markdown)
- https://libfo.bofc.pl (c, bash, dlsym)
- https://librb.bofc.pl (c, embedded, pthread)
- https://mtest.bofc.pl (macro-c)
- https://ntpd-setwait.bofc.pl (c, ntp, socket)
- https://psmq.bofc.pl (c, embedded, mqueue, pubusb)
Komercyjne (chronologicznie od najnowszego)
- integrator stb (bitbake, nagra, linux)
- sterownik paneli słonecznych (c, cortex a7, linux buildroot, mqtt, modbus-tcp)
- sterownik silnika (c, cortex m3, nuttx, can, adc, sd, flash)
- urządzenie pielęgnujące (c, cortex a7, linux, buildroot, uboot, mqtt, serial)
- mikser wideo (c, altera socfpga, linux, buildroot, uboot)
- stos LTE (c, lte l2)
- posix kernel (c, stm32, pthread, socket, mutex, semaphore, time, stos ip)
- ethernet interkom (c, stm32, ethernet)
- moduł diagnostyczny (c, stm32, sd, adc)
- sterownik klastrów LED (c, stm32, httpd, mqtt, ftp, rtc)
- system zliczania pasażerów (c++, linux, udp, mqtt)
- kontroler trzeźwości (c++, linux, serial, mqtt)
- sterownik kasowników (python, linux, serial, mqtt)
- monitor zasilania w tramwaju (c, linux, mqtt, tcp)
- monitor sieci (c, linux, raw socket, mqtt)
- GUI dla klastrów paneli słonecznych (c++, linux)
- moduł raportujący w BTS (c++)
umiejętności
bardzo dobrze ogarniam
W tym naprawdę jestem dobry, pracuję kompletnie niezależnie, bez pomocy jestem w stanie prowadzić i pomagać innym w wykonywaniu zadań.
- c, sh
- [embedded] linux
- make, autotools, massif, valgrind, buildroot, gcc, git
- tcp, udp, ip, unix domain socket, mqtt
- spi, can, serial, gpio
- pthreads, posix, jansson, mosquitto, c standard library
ogarniam
Sporo robiłem w danej technologii, mogę pracować niezależnie bez pomocy
- c++
- nuttx, bare metal, freertos
- buildbot, gtest, gmock, cmake, uboot
- pxe, openvpn, iptables, dns, cow fs, routing rsyncd, dhcpd, namespaces, nginx, raid, nfs
- i2c, adc
- httpd, ftp
- c++ stl
coś tam wiem
robiłem w danej technologii, proste zadania mogę robić niezależnie, ale generalnie potrzebuję nadzoru i pomocy
- python
- aix, hpux, solaris, netbsd, openbsd, freebsd
wiedza czysto teoretyczna
- assembler
Bardzo długi przegląd (dla wytrwałych)
Szczegółowa lista projektów z opisem i rozszerzoną listą technologii.
Open Source (projekty własne)
ntpd-setwait
Program od opóźniania startu demona ntpd, do momentu aż czas zostnie zsynchronizowany z serwerem ntp.
Strina projektu: https://ntpd-setwait.bofc.pl
libfo
Biblioteka pozwalająca na bardzo proste mockowanie funkcji POSIX, libc oraz dowolnych innych funkcji z dzielonych bibliotek. Biblioteka wykorzystuje specjalny uchwyt RTLD_NEXT dla funkcji dlsym().
Strona projektu: https://libfo.bofc.pl
librb
Implementacja bufora kołowego, który jest bezpieczny dla aplikacji wielowątkowych i jednocześnie szybki i wymagający mało pamięci z interfejsem podobnym do posixowego read/write. Biblioteka robiona z myślą o urządzeniach embedded z bardzo ograniczonymi zasobami, ale zadziała też na każdym systemie wspierającym c89 oraz pthread (opcjonalnie).
Strona projektu: http://librb.bofc.pl
embedlog
Logger robiony z myślą o urządzeniach embedded (mocno ograniczone zasoby), który również działa z każdym systemem implementującym c89. Zaimplementowane funkcje to między innymi, dodawanie timestampów do wiadomości (w różnym formacie), informacji o miejscu wystąpiena logu oraz poziomie logowania. Logger potrafi pisać na standardowe wyjście błędów albo do pliku z możliwością włączenia rotacji plików.Prawie wszystkie funkcje da się wyłączyć na etapie kompilacji w celu ograniczenia rozmiaru kodu.
Strona projektu: http://embedlog.bofc.pl
psmq
Bardzo przenośny i mały pakiet umożliwiających komunikację typu publish-subscriber zaimplementowany na posixowych kolejkach mqueue. Projekt zawiera serwer/broker zapewniającą komunikację między klientami, bibliotekę dla łatwego uzywania przez klientów, program do wysyłania danych do dowolnych klientów z konsoli oraz program do słuchania (i logowania do pliku) komunikacji po protokole psmq.
Strona projektu: https://psmq.bofc.pl
kursg
Prosty generator stron statycznych z plików markdown oraz html. Strona jest budowana na podstawie struktury katalogów oraz plików z minimalną ilością konfiguracji.
Strona projektu: http://kursg.bofc.pl
termsend
Serwer pozwalający na bardzo proste dzielenie się plikami za pomocą tylko i wyłącznie konsoli i najbardziej podstawowych narzędzi (curl, netcat). Wymieniać można zarówno pliki binarne jak i tekstowe (coś a'la no-paste ale bez wychodzenia z terminala). Opcjonalna możliwość włączenia szyfrowania ssl.
Strona projektu: http://termsend.bofc.pl
mtest
Bardzo prosty, ale w zupełności wystarczający framework do testowania programów pisanych w c/c++ oraz shell wykorzystujący protokół TAP (test anything protocol).
Strona projektu: http://mtest.bofc.pl
builder
Projekt bazowany na buildroot generujący środowisko budowania do testowania oprogramowania pisanego w c/c++, na wielu platformach (arm, mips, x86) ,wielu bibliotekach C (gnu, musl, uclibc) oraz wielu systemach operacyjnych (linux, freebsd, netbsd, openbsd, solaris)
memperf
Program do badania wydajności pamięci ram.
nuttx (posix rtos)
port dla płytki stm32butterfly2, dodano osbługę: spi, rs232, ethernet, sd card, adc, console over uart, joystick, usb host
pqtt
posixowy klient mqtt dla urządzeń embedded (ograniczone zasoby)
Komercyjne
bofc.pl
- utrzymywanie własnej infrastruktury serwerowej
- utrzymanie serwerów do automatycznego testowania oprogramowania (continous integration) na wielu architekturach (armv5, armv6, armv7, armv8, mips, x86), systemach operacyjnych (linux, netbsd, openbsd, freebsd, solaris, aix, hp-ux) oraz bibliotekach C (gnulibc, musl, uclibc)
- linux system administrator (backups, raid, vpn, git repos, monitoring (cron + scripts), nginx, network namespaces, router (internet sharing), rsyncd, dhcpd, filesharing samba+nfs, diskless pxe server, dns, buildbot, continous integration)
- tworzenie i utrzymanie strony firmowej oraz projektowych
- administracja maszynami Linuksowymi (serwery oraz maszyny rozwojowe)
sterownik paneli słonecznych
- algorytm sterowania aby w dzień ładować baterie, a w nocy oddawać energię
- integracja z użycie buildroota i płytki beaglebone black.
- diagnostyka (logi na kartę SD wraz z godziną z RTC)
- sterowanie i monitorowanie urządzeń po modbus-tcp
engine power
- sterowanie ładowarkami do ładowania baterii (CAN)
- monitor baterii (ADC), zasilania oraz styczników
- diagnostyka (logi na kartę SD wraz z godziną z RTC)
- CAN logger (logowanie wszystkich ramek CAN na kartę SD)
- zabezpieczenie obwodów i styczników przed dużym prądem (precharge)
- informacja o ostatnich błędach na wewnętrzej pamięci FLASH
- konsola diagnostyczna na szynie UART
set-top boxes
- integracja oprogramowania dla urządzeń typu set-top-box (yocto linux)
- debugowanie uruchamiania, błędów kernela, działania poszczególnych komponentów
- testowanie oprogramowania podczas wdrożeń
urządzenie do pielęgnacji ciała
- obsługa płytek "lemaker guitar" oraz "olimex a20" (arm linux)
- skrypty budowania (buildroot)
- obsługa bootowania (uboot)
- komunikacja z cloudem (websocket)
- diagnostyka urządzenia wraz z historią
- gui do obsługi urządzenia (qt5 qml)
- menadżer sieci
- serwer paczek dla aktualizacji
- badanie wydajności aplikacji
- administracja serwerów (git, dns, jenkins, vpn)
mikser wideo
- obsługa płytek altera socfpga (arm linux)
- prace badawcze nad możliwościami fpga
- skrypty budowania (buildroot)
- obsługa bootowania (uboot)
- serwer tcp do komunikacji z urządzeniem
- zarządzanie modułem fpga
- sterownik framebuffera do kernela Linuksa
lte
- Rozwijanie stosu L2 sieci LTE
embedded c software engineer [10.2015 - 06.2016] (etat)
Projekty:
- System operacyjny z API Posix dla 32 bitowych mikrokontrolerów (stm32) wraz z funkcjami takimi jak: socket, semaphore, mutex, pthread, time, cbuffer, fatfs, stos ip itp.
- Interkom po sieci ethernet (stm32f1)
- Moduł diagnostyczny do analizy prądu i napięcia wraz z zapisem oscylogramów na kartę SD (stm32f3)
- Moduł sterujący klastrami LED po ethernet (stm32f4)
- Aplikacje pracujące pod wcześniej napisanym kernelu takie jak: serwer http, klient mqtt, klient ftp, konfigurator rtc
- Dodatkowo zarządzałem: repozytorium git, toolchainem gcc, systemem budowania cmake
embedded c/c++ software engineer [03.2014 - 10.2015] (etat)
Projekty (działające pod Linuksem)
- System zliczania pasażerów w pojazdach
- Program sprawdzający trzeźwość kierowcy i blokujący pojazd w razie potrzeby
- Sterownik kasowników w pojeździe
- Aplikacja wygłaszająca zapowiedzi w pojeździe na żądanie z telefonu (BT 4.0)
- Program monitorujący stan zasilania w pojeździe
- Monitor zużycia transferu sieciowego na różnych portach oraz interfejsach
- Dodatkowo zarządzałem: repozytorium git, toolchainem gcc, systemem budowania cmake, systemem CI Jenkins
embedded c++ software engineer [10.2012 - 03.2014] (etat)
GUI dla sterownika klastrów paneli słonecznych (projekt grupowy)
junior C++ software engineer [09.2011 - 10.2012] (etat)
Utrzymanie i rozwijanie modułu raportującego błędy komórkowych stacji bazowych (BTS)
języki obce
- Angielski - bardzo dobry
hobby
- gitara
- komponowanie muzyki
- gry komputerowe
- perkusja
- góry
- pianino
- fizyka
zgoda
Wyrażam zgodę na przetwarzanie moich danych osobowych w celach rekrutacji, zgodnie z Ustawą z dn. 29.08.1997 o ochronie danych osobowych (Dz. U. nr 133, poz. 883).