Name - Miroslav Foltýn
Phone - +420 732 204 141
Email - email@miroslavfoltyn.com
Location - Czech Republic
Website - miroslavfoltyn.com
Postal Address:
I also hangout on "The Programmer's hangout" Discord channel. Nick is @Erbenos#1658.
I am Master's Computer Science student at Palacky University in Olomouc.
I have been working as a freelance web developer for 3 years, while studying simultaneously. Last 6 months or so I am part-time working at Computer Center of Palacky University, where me and my colleagues build upon and improve existing university's internal applications for employees and students alike. I mostly do front-end stuff now, altrought I am able to do back-end if need be (in either C# or PHP, I have some NodeJS experience, but only for client side app's - with stuff like Electron - not with actually coding server-side logic). I have little low-level programming experience, only did some microcontroller programming in Assembly, C and VHDL in my secondary school years. There were some C and Assembly tasks while studying at University as well. I am looking forward to gaining more experience in C and meeting people from the community.
If my proposal get's accepted, I will fully commit myself to GSoC the moment coding begins.
I successfully completed both front-end and back-end of given website design in collaboration with marketer (Lukáš Hladeček), copywriter (Karel Melecký), designer (Michal Maleňák) and SEO analyst (Šárka Jakubcová). The project was completed in tight deadline, as the marketting campaign was already setup and delays would be costly. Site was further improved months down the line with more functionality as requested by the client. Most important part was interactive test that aimed at inspecting company owners perception of their company's technical security and presenting gathered data in clear and informative way.
In collaboration with Computer Center of Palacky University I implemented redesign of university's Helpdesk application that serves as a main place where both students and employees can submit tickets regarding various issues they may have with either their studies or jobs. I communicated closely with day-to-day users of Helpdesk about their feedback to WIP builds to accustom application's UI to their everyday needs and make switching from the older design smoother, and mainly more pleasant, experience.
StatsD is simple, text-based UDP protocol for receiving monitoring data of applications in architecture client-server. As of right now, there is no StatsD implementation for PCP available, other than pcp-mmvstatsd which is not suitable for production environment as it:
Goal of this project is to write PMDA agent for PCP in C, that would receive StatsD UDP packets and then aggregate and transfer handled data to PCP. There would be 3 basic types of metrics: counter, duration and gauge. Agent is to be build with modular architecture in mind with an option of changing implementation of both aggregator and parsers, which will allow to accurately describe differences between approaches to aggregation and text protocol parsing. Since the PMDA API is based on around callbacks the design is supposed to be multithreaded.
PMDA will be written using pthreads:
Main process
Inter-thread communication will be taken care of using Go (Go-Lang) like channels library chan (github repo, Apache license).
There will be 3 supported metrics:
Data will come from either TCP or UDP connection in form of StatsD datagrams, which will be parsed with either:
Configuration will also include an option for specifying which parser to use, port on which to listen, max packet size and how many unprocessed datagrams there may be.
In case of duration metric values will be further processed via high dynamic range histogram using HdrHistogram_c (github repo, BSD 2 License) or basic aggregation.
Ragel (website, github repo) is an Open Source MIT licensed (in case of Ragel 6, GPL v2) State Machine Compiler, as such it is great for parsing data formats.
Values are simple strings in a form of:
<metricname>:<value>|<type>
Data may also contain any number of tags (separated by commas), which can be used as instance identifiers:
<metricname>,<tagname>=<tagvalue>:<value>|<type>
Instance will be identified by the tag of the same name eg.:
<metricname>,<instance>=<identifier>:<value>|<type>
and/or sampling attribute:
<metricname>:<value>|<type>@<sampling>
Supported types:
Such strings will be parsed with configured parser and passed to another thread for further processing.
Standard GDB should proof sufficient for generic C code, with Valgrind specifically for memory allocations.
Most PCP tools support -D flag for activating debugging options. PCP also ships with dbpmda - domain specific debugging utility for PMDAs.
Libraries that are currently planned for usage in this project (excluding PCP related ones) are:
At this point the data parsing and processing part not related to PCP should be complete.
At this point the PMDA should fully integrate with PCP.
At this point documentation should be written, agent performance optimized and all programming finished so that the product is fully usable.
Please send feedback to my email address.