Ing. Jan Bednář

Senior developer

O mně

Ahoj! Jmenuji se Honza (přezdívka Bedla) a jsem SW developer.

Mezi moje specializace patří JavaEE, Apache Camel, Spring Boot, Quarkus a integrace včetně designu řešení.

Umím být součástí celého vývojového cyklu, od quickscanu, nabídky, analýzy, detail designu, přes vývoj, testing, profiling a ladění, CI/CD až po release a i následný L3 support.

Dokáži pracovat v týmu i sám, agilem i waterfallem.

Hledám pouze kreativní projekty, které mi budou dávat smysl. Nehledám teplé místečko na údržbě legacy aplikací. Hledám projekty na IČO. Nehledám práci na HPP.

Jsem Apache member a ❤ Open Source.

Projekty v rámci CGI

Stream cloud processing IPTV

Byl jsem součástí agilního týmu, který vyvíjel IPTV stream processing platformu postavenou na mikroservisní architektuře v Microsoft Azure. Na projektu jsem byl v rolích Team Leadera, programátora a architekta. Aplikace využívá Apache Kafka, Azure Data Explorer, Azure Kubernetes, Quarkus, PostgreSQL, Eclipse Vert.X, SmallRye Reactive Messaging, Grafana, Azure AD. Provozní monitoring zajišťuje Eclipse Microprofile Metrics, který vystavuje Prometheus metriky pro Azure Monitor. CI/CD proces je zajištěný přes Azure DevOPS.

Stream processing pro BI a Service Assurance

Byl jsem součástí agilního týmu, který vyvíjel IPTV stream processing platformu postavenou na mikroservisní architektuře v on-prem prostředí. Na projektu jsem byl v rolích Team Leadera a programátora. Ekosystém využívá Apache Kafka, Python3, Numpy, Pandas, Kafka Connect a Debezium CDC pro akvizici, normalizaci, transformaci a agregaci dat. Výstupem jsou data v ElasticSearch, MySQL a InfluxDB. Aplikace je nasazená v on-prem pomocí Docker Compose. Build je přes Gitlab CI Pipelines. Prezentační logiku pro Service Assurance zajišťují dashboardy v Grafana. Prezentační logiku pro BI zajišťuje existující Data Warehouse, kterému aplikace poskytuje na SFTP pravidelné extrakty.

PDS

Vyvinul jsem aplikaci pro správu a distribuci firmware a balíčků CPE zařízení. Na projektu jsem provedl analýzu řešení, včetně zmapování existujícího komunikačního protokolu a následného vývoje. Aplikace je nasazena v on-prem na Payara AS a skládá se z backendu a frontendu. Backend vystavuje HTTP endpointy pro CPE a zároveň REST rozhranní pro frontend za využití Spring Boot, Apache Camel, EclipseLink, Hazelcast, MySQL NDB Cluster. Frontend vystavující uživatelské a administrátorské rozhranní jsem naprogramoval v AngularJS. Aplikaci jsem následně podle požadavků rozšířil i pro nové typy CPE s odlišným komunikačním rozhranním.

MAS

Vyvinul jsem aplikaci pro řízení video enkodéru. Aplikace slouží k přípravě a transkódování video obsahu před nasazením do VOD katalogu. Aplikace má AngularJS frontend, obsahující Shaka Player a komunikuje se Spring Boot backendem pro správu metadat o video souboru. Metadata o jednotlivých stopách a náhledy generuje Apache Camel za využití FFMpeg.

PerfTool

Vyvinul jsem pro IPTV platformu aplikaci pro reálné generování zátěže. Toto usnadnilo projekt stabilizace platformy, protože to umožnilo nasimulovat chování platformy z předchozích výpadků na izolovaném prostředí, nebo mimo televizní špičku. Aplikace pomocí grok patternů parsuje access logy a zákaznické extrakty do MongoDB. Následně spouští nad daty transformační vrstvy, které upravují jednotlivé parametry HTTP volání tak, aby byl dodržený požadovaný histogram a délka zátěže, validita volání s ohledem na zadané testovací účty. Technické řešení je pomocí Apache Camel, Spring Boot a OKHttp.

Validátor VOD obsahu

Vyvinul jsem nástroj pro automatickou validaci úplnosti nasazení VOD obsahu u IPTV operátora. Aplikace využívá Spring Boot a MySQL. Generuje report v případě, že nasazení nebylo kompletní, případně chybí některé díly seriálu. Toto ušetřilo nejméně dva dny týdně manuální kontroly, zrychlilo reakční čas a zamezilo pokutám od dodavatele obsahu.

ActiveMQ Artemis

Pro Telco operátora jsem ladil JMS Stomp broker ActiveMQ Artemis, který slouží pro vzdálené ovládání CPE. JMS Cluster jsem optimalizoval jak na úrovni konfigurace a JVM, tak na úrovni OS a TCP IP stacku. Pro stejného operátora jsem vyvinul OAuth plugin do ActiveMQ Artemis

CRM

Byl jsem součástí týmu, který pro telco operátora vyvíjel backendovou část pro Liferay CRM. Technologie Spring, Wildfly, Oracle

Billing

Byl jsem několik let součástí týmu, který pracoval na velkém transformačním projektu billingu. Navrhli jsme a vyvinuli distribuovanou integrační vrstvu mezi provisioningem a billingem, umožňující vykonávání dekompozičních pravidel nad produkty podle logických celků a pluginů na základě BPMN diagramů v Enterprise Architect. Technologie Wildfly, Apache Camel, Hibernate, Infinispan, Oracle, JavaFX, SOAP, JMS. Aplikace je nasazená ve Wildfly clusteru v doménovém módu. K této aplikaci jsme vyvinuli i několik obslužných aplikací pro správu konfigurací a trasování požadavků.

Operativní reporting

Vyvinuli jsme aplikaci pro uživatelsky přívětivé generování ad-hoc reportů, pomocí drag&drop skládání jednotlivých entit a vazeb. Aplikace je vyvinuta pomocí PHP a JQuery. Aplikační logika validuje a skládá uživatelské modely reportů a následně je dransformuje v SQL dotazy do existujícího datového skladu.

Vlastní projekty

Vyvinul jsem Android aplikaci pro evidenci EET tržeb. Aplikace používá SQLite a GreenDAO pro ukládání tržeb, SOAP pro komunikaci s API finanční správy, ACRA pro error reporting. Komunikace s tiskárnou probíhá přímou komunikací POS příkazů přes bluetooth socket. K aplikaci jsem vyvinul i Spring Boot REST API backend pro správu licencí, aktualizací a monitoring.

Od roku 2019 jsem členem Apache týmu a podílím se na rozvoji Open Source frameworku Apache Camel, který implementuje EIP (Enterprise Integration Patterns)

Vyvinul jsem a udržuji repositář Google Fonts pro NPM, který pravidelně stahuje Google Fonty s otevřenou licencí jako NPM moduly. Využívá NodeJS a Lerna.

Vyvinul jsem typescript NPM modul pro SHA-512, protože jsem potřeboval knihovnu typescript pro Unifi Reset Password kompatibilní s mkpasswd implementací.

Vyvinul jsem AngularJS aplikaci pro reset administrátorského hesla UniFi controlleru.

Pracovní zkušenosti

CGI IT Czech Republic

Analyst/programmer → System Designer → System Architect

Březen 2015 - Prosinec 2021

https://www.cgi.com/ceska-republika/cs

V CGI jsem pracoval převážně na projektech v telco sektoru, ale také ve finančním sektoru. Podílel jsem se na návrhu řešení, nabídkách, implementaci, technologickém rozvoji a L3 supportu. V CGI jsem byl v průběhu času podle potřeby v roli analytika, programátora, architekta a team leadera. V posledních letech jsem participoval i přípravám nabídek, cenových odhadů a v menší míře i business developmentu. Podílel jsem se na inovacích a adopci nových technologí.

Materna Communications

Programátor

Červenec 2014 - Leden 2015

https://www.comverga.com/cze/

Pracoval jsem na vývoji Android aplikace pro ČMI s JavaEE Backendem. Spolupracoval jsem na vývoji samoobsluhy pro virtuálního operátora. Zautomatizoval jsem uživatelské testy samoobsluhy, včetně automatizace SMS OTP kódů, pomoci GSM brány. Vyvíjel jsem SPA aplikace pro SMS soutěže, včetně integrace na SMS bránu. Vyvíjel jsem Perl monitorovací scripty pro Nagios a Icinga.

Vzdělání

Univerzita Hradec Králové

Aplikovaná Informatika - Ing.

2013 - 2016

Univerzita Hradec Králové

Aplikovaná Informatika - Bc.

2010 - 2013

Něco navíc

Aplikační bezpečnost

Orientuji se ve webových útocích a aplikační bezpečnosti. Ve volném čase jsem bug hunter a etický hacker.

TCP přenosy a stabilita sítě

Vím, co je TCP retransmission, SYN Flood, socket TIME_WAIT,… Nebojím se použít Wireshark a Tcpdump.

Open Source

Fandím Open Source. Když najdu chybu ve veřejném projektu, tak namísto stěžování vytvořím Pull Request.

Unit testy

Každý dělá chyby, proto je můj kód krytý unit testy.