The projects of Jakub Danilewicz http://jay-dee.atspace.com/portfolio-en.html

telephone: (+34) 605 610 158 e-mail: [email protected]

Jakub Danilewicz

Company Period Position Project Team Technologies name / size Scope Trendit SL / Alto 2010-21 chief technical officer IT department 20 OS: Linux on Analytics SL (CTO) Amazon/Rackspace

Containers: Glassfish/Payara, Tomcat

Core stack: EJB3, SOAP (JAXWS), JPA (Hibernate) / JDO (DataNucleus), XML (JAXB), XSL (Xerces), Struts2, jQuery

Data processing: Apache Flink, , AI (TensorFlow), Neo4j

Storage: MySQL / Aurora, Lucene / Elastic Search, MongoDB

Alto Analytics (initially operating as Trendit) were a leading competitor on the social data monitoring market in Spain, whose business model was based on the real-time delivery of algorithmically complex and visually robust insights into ever-changing topics and trends on the publicly accessible segment of Internet, later on enhanced with dark and deep web content. Given the sheer scale of data (tens of millions of new entries weekly) the architecture of my design was based on Amazon's Aurora database (potentially reinforced by a pluggable NoSQL engine of choice), index engine (based on Lucene customized with sharding) and wide array of standalone components:

ElasticSearch-backed dictionaries for toponym resolution and entity detection, Kafka-backed push-to-pull converters for high-throughput data pipelines, TensorFlow-based AI service for sentiment resolution, on-demand clusters of Apache Flink instances for graph topology and metrics generation (up to billion nodes), harvesting engine for parallel execution of standardised data connectors (XSL transformations, internal/third-party APIs), REST services for dynamic data enrichment and processing.

The software stack followed a unified service-oriented architecture (SOA) similar to that used in Kimia, just with a higher level of modularization, code re-usability and standardisation across different applications. Front-end applications were principally written in Struts2/jQuery and operated (just like as external data consumers) over a subset of the APIs offered by the backend services. A customized framework of build scripts allowed for extremely efficient development and assemblage of the components for deployment in any configuration and environment, which made possible the new production releases on a weekly basis and fast updates of hundreds of virtual service instances.

1 of 4 11/06/2021, 17:08 The projects of Jakub Danilewicz http://jay-dee.atspace.com/portfolio-en.html

Kimia Solutions 2007-09 chief software department 8 OS: Linux/Windows SL architect of software development Containers: Glassfish, JBoss

Java: EJB3, SOAP (JAXWS), JPA (Hibernate), JMS, XML (JAXB), XSL (Xalan), JSP/Servlet, Struts2

DB: Postgres

Kimia business model was based on providing multimedia content services to mobile environments. Thus all the software modules were equipped with a unified service-oriented architecture (SOA). A high level of code re- usability was achieved by their modularization; each EAR/WAR archive was being composed with interrelated API and implementation modules, utility libraries and remote service façades (EJB, SOAP, Servlet). Finally, there was introduced a framework of specialized Ant scripts, which enabled automatic assembling of the projects according to their specific dependencies.

The code portability was guaranteed by testing it on two different application servers. Other technical principles of the architecture were as follows:

data transfer objects (DTO) are constructed automatically from XML schemas (JAXB), persistence layer is based on JPA framework (backed by Hibernate) and comprises data access objects (DAO), typically coupled with DTOs by inheritance and "copy constructor&narrowing" pattern, communication between the modules is carried through a set local and remote session beans (EJB 3.0) and SOAP web services (JAXWS 2.1+), remote connection protocol is made transparent to Java clients by using client-side service façades, asynchronous processing is based on JMS framework and EJB Timer service, web/wap user interface layer is built on Struts 2 framework.

The application infrastructure got developed according to my design and under my supervision, and covered virtually all aspects of multimedia content processing; its components could be divided into the four logical groups:

content acquisition, adaptation, storage, search and management, personalization, recommendation and delivery of content (with a subscription and scheduling engine for both push and pull modes), content sharing, uploading and channeling to other users (SMS, MMS, email) and to social networks (e.g. Facebook, Flickr and Twitter), premium content access control and billing (with a set of pluggable connectors to various payment brokers, e.g. IPX, NetSize, DataCash and KPN).

Hence each web application and client project was built on top of or composed with a subset of the modules described above. All these building blocks were fully interoperable, which made the development and assembling process very fast and straightforward. Moreover, each module exposed its remote services to a variety of clients, both internal and external, largely reducing the cost of hosting and maintenance.

open-source 2007-11 project architect & Alembik 5 OS: Linux/Windows/MacOS project manager Media Transcoding Containers: Glassfish, JBoss, Server Tomcat

Java: EJB3, SOAP (JAXWS), JMS, XML (JAXB), JSP/Servlet, WURFL, JAI

Alembik was a J2EE server application providing transcoding services for a variety of clients. It was fully compliant with OMA's Standard Transcoding Interface specification. Its multi-tier architecture was container- agnostic, extensible and highly scalable (clustering, shared file storage).

2 of 4 11/06/2021, 17:08 The projects of Jakub Danilewicz http://jay-dee.atspace.com/portfolio-en.html

The application offered a wide array of predefined media transformations, automatic User-Agent resolution into transcoding parameters, processing and monitoring of asynchronous jobs, synchronized access to files, video streaming and many other features. It also included a fully-fledged web rendering engine (HTML transcoding). All the functionality was made available to clients through four different APIs:

EJB session façade, SOAP web service, HTTP service, JSP tag library.

Apart from the steadily growing number of commercial deployments it was also used as the transcoding service of MyMobileWeb framework and the device test application for WURFL community.

Mareon Polska 2006-07 project leader & Mareon 2 OS: Unix/Windows Sp. z o.o. architect integration hub Containers: Resin, Tomcat

Java: RMI, JAAS, Hibernate, JSF/Ajax, JMX

DB: Oracle, SQL Server

Mareon was a fast-growing B2B portal run by the German Aareal bank, which comprised disparate web applications used by bank's clients and collaborating companies. The platform seriously lacked any common management, which led to launching the integration Hub project.

The core of the unification system was based on a remote service (RMI), which centralized user registration and access control (JAAS) across numerous independent applications. Each web module was equipped with a common navigation bar (