Tech Lead at IBM Watson Media, Budapest (2018–2020)
Lead architect for a closed captioning and video analysis product portfolio, part of the Watson suite for major media companies.
Utilizing artificial intelligence research in speech-to-text, visual recognition and natural language understanding, our team created close to real-time applications that automatically enrich video content with metadata for video indexing and search, as well as provide punctuated transcripts for live broadcast streams in English and Spanish. Our responsibilities ranged from integrating external research assets into our product portfolio to developing our own algorithms for solving complex machine learning problems; spanning the entire software development flow taking code from inception to being deployed as a highly available cloud service. Our solution has been integrated with over 80 stations of the Sinclair Broadcasting Group across the US.
My responsibilities included problem analysis, overall system design, balancing business and engineering objectives, communicating with offering representatives, coordinating the engineering aspects of a multi-site team (mainly Atlanta, Budapest, Haifa), creating inventions (patents), solution design and code review, mentoring.
Technologies involved: Go, C++, Boost, Python, Keras, TensorFlow, SQL, ElasticSearch, Kubernetes, IBM Cloud
Senior Software Engineer/Architect at LogMeIn, Budapest (2014–2018)
Lead engineer of the cross-platform core of collaboration and customer engagement and support products.
Brief description: Working with several experienced colleagues, I was involved in software design utilizing cross-platform back-end and front-end technologies aimed at making a first-class multi-platform conference and collaboration tool of the LogMeIn software-as-a-service product join.me. The main challenges included choosing technologies and writing future-proof portable code that integrates seamlessly with platform-specific application code (for both desktop and hand-held devices) developed by several Scrum teams. This covered a broad range of topics including asynchronous operations (futures) and networking, media services, distributed state management, platform-adaptable interfaces and a monitoring framework. Our work had to keep pace with rapid product evolution (revenue from the product doubled each year, coupled with a high demand for new features) while maintaining stability.
My major projects include a brand-new HTML5 client evolving from a sizable C++ code base, with a fully functional prototype developed in 2-3 months (instead of previously anticipated 6 months); a full reorganization of an existing code base resulting from fast inorganic growth as well as inherited from earlier days of join.me; and semi-automatically generated glue interfaces making an effective use of C++ template technology.
After the merger of LogMeIn with Citrix's GetGo business, I was involved in the product transfer project of the customer engagement and support application GoToAssist from Karlsruhe to Budapest. Once the product had been transferred, I became the primary feature negotiator for platform services (screen share, input control, messaging) used by GoToAssist and its twin product Rescue. To meet surging demand for new features, I have been a lead contributor to the next-generation architecture for a common GoToAssist and Rescue product, including its web technician console. As part of my work, I have been keeping in touch with several Scrum teams in Hungary and colleagues in Germany and the US.
System Architect at Ericsson Research and Development Hungary, Budapest (2011–2014)
Lead designer for an extensible high-performance load generation framework.
Brief description: Consolidating a heterogeneous product portfolio that had proliferated over time, I led a tool convergence project to unite test specification and execution tools as a common load testing framework. The solution comprises of a graphical user interface implemented as a thin client that manipulates a model which captures domain-specific knowledge, a high-performance execution engine that simulates thousands of users and network nodes, and a cross-compiler that translates the domain-specific model to executable binaries, which are deployed to host machines. The development involved approximately 20 software developers with an impact over an approximate 4000 in-house users at various locations over the world.
Special attention was paid to the underlying execution engine. Having acquired an existing tool intended to generate load to test system performance under stress, previously developed by an Ericsson business partner, I played a major part in both the transition process and laying the foundations for a framework with significantly higher performance, improved extensibility and ease-of-use. The transition process involved a one-month period spent in Sweden, with active participation in design and coding. Once in Budapest, leading the software development process for a small team, I took a major role in drafting a new architecture for the product, creating a prototype implementation, and supervising the migration of existing communication protocol and media format implementations to the new framework. The team achieved outstanding speed, with agility to react to trouble reports and customer requests.
PhD candidate at BME Department of Automation and Applied Informatics (2010–2011)
Research topics: parameter estimation problems in system identification and computer vision, model reconstruction in the presence of measurement noise
Brief description: With applications in computer vision and pattern recognition, I proposed fast, robust and accurate methods for estimating parameters of curves and surfaces captured with an implicit model f(x)=0, and clustering methods for scattered point clouds (e.g. 3D data acquired with a laser scanner) in which the entire model is a composition of such curves and surfaces. In the context of identifying dynamic systems (when observations are coupled in time), I proposed an effective nonlinear parameter estimation method.
R&D engineer at Nokia Siemens Networks, Budapest Research Center (2007)
Designing and implementing capacity dimensioning algorithms part of a graphical UMTS network design tool.
Brief description: As part of a team, the goal was to extend a graphical tool used in designing a UMTS network. This included incorporating various algorithms for finding an efficient allocation of connections in a connection-oriented network, reorganization of existing code as well as extending the graphical user interface.
Technologies involved: C++, MFC, MatLab