curriculum vitae
basic information
name.......: Michał Łyszczek
address....: Wrocław, Poland
phone......: +48.727-564-419
email......: michal.lyszczek@bofc.pl
www........: https://en.bofc.pl
Quick Overview
Open Source (own projects)
List of open source projects I've made including key technologies. Links take you to project site with details and source code.
- 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)
List of open source projects I contribute to:
- https://nuttx.apache.org (c, rtos, drivers, chip bring up)
- https://buildroot.org (c, integration, new board/app support)
Commercial
- controller for solar panel microinverters (zephyr, c, stm32h7, plc, yitran)
- stb integrator (yocto, bitbake, nagra, linux, security)
- test board for dentist chair (linux, python, c, serial, gpio, i2c)
- solar panels and inverter controller (c, zephyr, secureboot, cortex m)
- smart shopping label (c, dual cpu cortex m0/m4, lora, spi, ipc)
- solar panel controller (c, cortex a7, linux buildroot, mqtt, modbus-tcp)
- engine controller (c, cortex m3, nuttx, can, adc, sd, flash)
- beauty machine (c, cortex a7, linux, buildroot, uboot, mqtt, serial)
- video mixer (c, altera socfpga, linux, buildroot, uboot)
- LTE stack (c, lte l2)
- posix kernel (c, stm32, pthread, socket, mutex, semaphore, time, stos ip)
- ethernet intercom (c, stm32, ethernet)
- diagnostic module (c, stm32, sd, adc)
- LED cluster controller (c, stm32, httpd, mqtt, ftp, rtc)
- passenger counting system (c++, linux, udp, mqtt)
- driver sober monitor (c++, linux, serial, mqtt)
- ticket validator driver (python, linux, serial, mqtt)
- power monitor in tram (c, linux, mqtt, tcp)
- network monitor (c, linux, raw socket, mqtt)
- GUI for solar panel controller (c++, linux)
- BTS technical reporting (c++)
skills
Very proficient
I am really good at this stuff, I can work independently and also help and teach others.
- c, sh
- [embedded] linux, nuttx
- 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
I'm good at
I've done some projects in these technologies, I can work independently without help.
- <=c++11, python
- bare metal, freertos, zephyr
- yocto, buildbot, gtest, gmock, cmake, uboot
- pxe, openvpn, iptables, dns, cow fs, routing rsyncd, dhcpd, namespaces, nginx, raid, nfs
- i2c, adc
- httpd, ftp
- c++ stl
I know a little bit
I've dome some projects with it, but not long enough to consider myself good at it, I can perform simple tasks myself, but will need help and guidance with more difficult tasks.
- aix, hpux, solaris, netbsd, openbsd, freebsd
- assembler, >=c++14
Long Overview
Detailed list of projects with description and extended list of technologies.
Open Source (own projects)
ntpd-setwait
ntpd-setwait is very small program that ensures time is synchronized before ntpd daemon can be started.
Project site: https://ntpd-setwait.bofc.pl
libfo
Library which allows for very easy mocking of POSIX, libc and any other dynamically loaded functions. Library uses special handle RTLD_NEXT for dlsym().
Project site: https://libfo.bofc.pl
librb
Ring buffer implementation which is thread-safe and in the same time small and quick with very little memory footprint with posix-like interface known from read/send functions family. Library was created with embedded devices with limited resources in mind, but it can work with every operating system that implements c89 and pthread (optional dependency).
Project site: https://librb.bofc.pl
embedlog
Logger created with embedded devices with limited resources in mind, which will, of course, work with every operating system that implements c89. Implemented functions among others are, adding timestamps to messages (with different formats), place where log was printed from (file and line number), log level info, colors (depending on message level). Logger can also store logs to file with optional log rotatio - which can be customized for max file size and number of files before oldest logs shall be deleted. Almost all of these functions can be disabled in compile time to save precious memory.
Project site: https://embedlog.bofc.pl
psmq
Very portable and small packet which allows publish-subscribe communication implemented on top of POSIX mqueue. Packet consists of, server/broker which handles communication between clients, library for clients for easy implementation, publish commans which allows to publish messages directly from command line and program to listen and log to file communication on psmq bus.
Project site: httpss://psmq.bofc.pl
kursg
Simple static site generated from markdown and html files. Website is generated based on file structure and only one control file is needed to generate functionl webpage.
Project site: https://kursg.bofc.pl
termsend
Server to allow very easy file sharing without leaving our beloved terminal. To upload files only netcat is needed, and to retrieve files one can manage only with curl. Both binary and text files can be exchanged. It's something like no-paste but from terminal.
Project site: https://termsend.bofc.pl
mtest
Very easy and very simple but sufficient framework for testing in c/c++ or shell using TAP (test anything protocol).
Project site: https://mtest.bofc.pl
builder
Project based on buildroot that generates complete environment for testing c/c++ software on different architectures (arm, mips, x86), many C libraries (gnu, musl, uclibc) and many operating systems (linux, freebsd, netbsd, openbsd, solaris).
memperf
Benchmark for memory throughput.
nuttx (posix rtos)
port for stm32butterfly2 board, added support for: spi, rs232, ethernet, sd card, adc, console over uart, joystick, usb host
pqtt
mqtt client with posix-like api, for embedded devices (constrained devices)
Commercial
bofc.pl
- maintanencing own server infrastructure
- maintanencing servers for automatic tests (continous integration) for different architectures (armv5, armv6, armv7, armv8, mips, x86), different operating systems (linux, netbsd, openbsd, freebsd, solaris, aix, hp-ux) and different C libraries (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)
- creating and maintaining company website
- administration of Linux machines (servers and dev machines)
set-top boxes
- software integration for set-top boxes (yocto linux)
- software and kernel debugging
- software test during integration
- linux security review for nagra
solar panels and inverter controller
- drivers and backbone framework based on freertos (project later moved to zephyr)
- bringing up imxrt-1060 cpu in zephyr
- implementing canfd support
- implementing adc and voltage reading for the app
- implementing secure boot with mcuboot and writing rescue loader
- supporting team with linux and buildroot part of the project
smart shopping label
- epaper based shopping label with updates over lorawan
- based on nuttx rtos and stm32wl5
- cpu bring up - since cpu was not yet supported in nuttx
- ipc (inter processor communication) driver
- secure boot with mcuboot
solar panel controller
- Algorythm to charge batteries at daytime, and discharge at nighttime
- software integration with buildroot and beaglebone black
- diagnostics (logs on SD with time from RTC)
- driving and monitoring modbus-tcp devices
engine power
- driving chargers to charge batteries (CAN)
- monitoring of battery state (ADC), relays and power supply
- diagnostics (logs on SD with time from RTC)
- CAN logger (logging all CAN frames onto SD card)
- circuit protection from overcurrent (precharge logic)
- storing critical errors on internal FLASH memory
- diagnostic shell (with password protection) over UART
aestethic device
- support for lemaker guitar and olimex a20 boards (arm linux)
- linux building scripts (buildroot)
- bootloader (uboot)
- cloud communication (websocket)
- device diagnostics with history and live view for cloud
- graphical user interface (qt5, qml)
- network manager
- package server for updates
- analyze of software performance
- developer server administration (git, dns, jenkins, vpn)
video mixer
- support for altera socfpga (arm linux)
- investigation of fpga performance
- linux building scripts (buildroot)
- bootloader (uboot)
- tcp and udp servers for communication with the device
- managing onboard fpga
lte
- developing l2 lte stack
embedded c software engineer [10.2015 - 06.2016]
Projects:
- Realtime operating system with posix api, for 32-bit microcontrollers (stm32) with functions like: socket, semaphore, mutex, pthread, time, ring-buffer, fatfs, tcp/ip stack
- intercom over ethrnet (stm32f1)
- diagnostic module analyzing voltage and current on vehicle with options to store oscillograms int osd card in event of anomaly (voltage peak for example) (stm32f3)
- led cluster controller over ethernet with mqtt (stm32f4)
- application for previously written rtos like: http server, mqtt client, ftp client, rtc configurator
- also I managed, git repository, gcc toolchain, cmake building system
embedded c/c++ software engineer [03.2014 - 10.2015] (full time)
Projects (working under Linux)
- application counting passengers getting in and out of vehicle
- application checking whether driver is sober - and blocking vehicle if not
- ticket validator driver
- application announcing current stop on demand from phone (bluetooth 4.0)
- application monitoring power status in vehicle
- monitor of transfer usage for different port-address-interface tuples
- also I managed, git repository, gcc toolchain, cmake building system and jenkins
embedded c++ software engineer [10.2012 - 03.2014] (full time)
graphical user interface for solar panel cluster controller (group project)
junior C++ software engineer [09.2011 - 10.2012] (full time)
Maintanence and development of raporting module in BST (wcdma)
foreign languages
- English - very good
- Polish - mother tongue
hobby
- guitar
- piano
- drums
- composing music
- computer games
- hiking
- physics (classical and quantum)
permission
I hereby give consent for my personal data included on this webpage to be processed for the purposes of the recruitment process under the Personal Data Protection Act as of 29 August 1997, consolidated text: Journal of Laws 2016, item 922 as amended.