Work experience

Data Architect at Instructure (2021–)

Lead architect for a data access and analytics platform serving Canvas and other education products.

Our data engineering teams are facilitating internal teams and external partners in getting insights from their data. We are collaborating in acquiring, exposing, modeling, categorizing, and managing data through its life-cycle. We have been creating a data lake, ingesting data from relational and non-relational sources using a combination of change data capture, streaming data and Ed-Tech protocols to external systems. Based on the data gathered in the data lake, we have been developing an analytics suite that helps answer ad-hoc queries, drives dashboards and provides interactive drill-down on data. All of these services are integral to our Learning Platform, which is an accelerator to unifying a heterogeneous product portfolio, and helps the company scale.

Technologies involved: Spark, Apache Hudi, Debezium, PostgreSQL, AWS (e.g. Kinesis, MSK, EMR, EKS, Glue), Scala, Java, Python

Engineering Specialist at Kheiron Medical Technologies (2020–2021)

Senior technology advisor for medical products backed by artificial intelligence.

Backed by a neural network stack, our team had built a product that integrated with hospital systems to help ensure proper breast positioning and diagnose malignancies in mammography digital images. Responsibilities of our engineering team included acquiring and pre-processing images, incorporating machine learning models, visualizing predictions and facilitating the verification and validation process.

My main focus had been designing a scalable cloud-first solution for Kheiron's flagship products Mia and Mia IQ, and ensuring a smooth migration from an earlier monolithic on-premise version, and an evolution from a prototype to a full-fledged product. This had entailed collaborating with Machine Learning, Data Acquisition, Product and Clinical Teams.

Technologies involved: Kotlin, Python, C++, PostgreSQL, TensorFlow, AWS (Lambda, Redshift, S3, SageMaker), Azure

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, Elastic­Search, 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.

Technologies involved: C++11/14, Boost, C++/CLI, Python, HTML5/JavaScript, asm.js, emscripten, Windows/Mac

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 exten­sibility 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.

Technologies involved: C++03, C++11, Boost, Java, ANTLR, TTCN-3, GWT, JavaScript, HTML, CSS, Linux

PhD candidate at BME Department of Automation and Applied Informatics (2010–2011)

Researcher working on parameter estimation and model fitting problems with applications in control and computer vision; lecturer teaching courses in computer engineering.

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 identify­ing dynamic systems (when observations are coupled in time), I proposed an effective nonlinear parameter estimation method.

Major courses taught:

  • Basics of Programming (BSc course in Electrical Engineering and Information Technology): focus on C, C++, programming fundamentals
  • Advanced Software Design (MSc course in English for international students): focus on architectural and design patterns
  • Software Technologies (MSc and BSc course in Information Technology), focus on multi-threading, database usage, design patterns, developing web applications
  • Software Laboratory (BSc course in Information Technology): focus on databases and the database access layer

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