Dumitru-Nicolae M.


554 dollar
22 years
Bucharest, ROMANIA

My experience


METRO SYSTEMS RomaniaSeptember 2017 - Present

Designing and implementing Scala microservices with Lightbend Reactive
Platform (Akka Actor Systems), Scala & Java non-blocking reactive systems on JVM, Apache Cassandra, Apache Kafka, Docker & Kubernetes, Swagger, DataDog metrics. Agile distributed teams.

Driving technology & architecture alternatives together with a colleague.
Participating in another team for technologies research and spreading technical knowledge across the teams.

Designed and implemented security areas including OpenId Connect flows
e.g. authorization code flow, client credentials and implicit flow, across multiple microservices using JWT tokens.

Architected and supervised prototyping/implementation of a processing/ real-time computing pipeline with exactly-once processing guarantee, using
KafkaStreams and KafkaConsumer alongside Cassandra.

Organizing knowledge sharing in the areas of functional programming (FP) with practical Scala accent (organized a Scala reading group based on Coursera course progfun1), reactive programming and distributed systems, Apache Kafka, RxJava and other topics.

Graduated ISAQB course & certification for foundation-architecture. Became a Quora Top Writer for 2018 for my technical answers on the questions site.
Started contributing to Akka distributed data (conflict-free replicated data structures) - the cross data center feature.

Cegeka RomaniaNovember 2015 - September 2017

Developing event-driven middleware for complex enterprise processes for financial or other institutions.
Local expert in Reactive & Functional programming as well as distributed systems.
Involved in performance analysis with thread dumps, VisualVM profiling, heap dump analysis.

Coaching and mentoring colleagues in Java programming, functional and reactive programming, programming in distributed asynchronous systems.
Holding trainings. Publishing articles.
Participating in design. Giving feedback related to architecture and putting forward ideas. I go where I am most needed by my team and project, urgency or grunt work included.

Some achievements: Contributed to Continuous Integration/Deployment system. Refactored a component to reactive compositional style and ed it to the team. Wrote an article on InfoQ about refactoring a legacy application into functional reactive non blocking paradigm.

Technologies: Event sourcing, CQRS, staged event driven architecture (zetta), in-memory compute grid, micro services. Functional programming in Java 8.
AWS, Docker. Async non-blocking. Elastic compute-grid based technology
- Apache Ignite / GridGain (e.g. sending java closures remote). Server- less architecture (similar to AWS Lambda), event sourcing, consul, docker ecosystem, NoSql MongoDB, reactive programming with RXJava Observables transformations and compositions, Vertex as non blocking HTTP server, data grid & grid computing with Apache Ignite (GridGain), AWS, Spring Boot, Git, Gradle, Mockito. Java 8, asynchronous event driven middleware, ReactiveX, Vert.x non blocking event loop server.

Context: Distributed reactive system (framework) for financial middleware (off- loader and feature accelerator).

Team qualities: agile, pair programming, offering help in multiple zones, coaching junior colleagues, continuous learning, commitment to team goals, design/technical sharing sessions, ation to students, proactive and involved, authentic and self driven.

PayUFebruary 2015 - December 2015

Distributed/cloud applications with JVM & Spring Boot, Spring Cloud +
HashiCorp stack: Serf, Consul, Vagrant. Orchestration with Consul (gossip, Raft, integrated service discovery with gossip failure detection and health checks) + optionally Mesos, Docker. Prototyping such setups for high availability, smart service discovery. RESTful remoting automation. Computing infrastructure. Contributing to open source in Java (Spring Cloud Consul),
Scala (Apache Kafka), hopefully soon Go (tried a Docker fix, but no feedback to continue). Participating in design sessions and enjoying that. Focusing on distributed apps infrastructure, tradeoffs in design spaces such as CAP theorem, scaling persistence layer with NewSQL/BigSQL, HAT not CAP, causal consistency, and other distributed primitives for resilient, agile and intuitive services.

The team was 8 people. I offered coaching / mentoring to colleagues, proposed solutions to crisis situations, as well as technologies to adopt or not adopt, and suggested voting as a means to technical consensus when mutual convincing did not reach group alignment on technology selection.

Computas ASMarch 2014 - February 2015

Java 7, JEE-7, JBoss/Wildfly, Tomcat, semantic web RDF(S)/OWL persistence.

Suggesting design changes and frameworks adoption. Succeeded in convincing team to adopt Mockito. Generated meaningful discussion
about Spring adoption. Quality and priority driven. Agile, prototyping based incremental improvements/refactorings, feedback and code reviews. OOP &
Functional. RESTful services, semantic web, graph database. Authentication
& Authorization. CMIS/JCR integration, JPA "dynamic fields", Jasper Report
Server Jax-Rs integration, J2EE 7.

There were functional specification documents and persons you can reach for details, there were technical design documents and architect to reach. I generated a number of times meaningful discussions with the architect, and the product owner in (re)discussing decisions and background, to ensure a proper handling for each scenario, and a proper application of technology or standards e.g. discussing which HTTP codes or methods are appropriate, or full multi-request cycle for async flows.

In my free time I experimented with Scala, Java 8 and Haskell. Took online courses, continued contributing to Apache Kafka, solved Project Euler problems, understood more of the monadic style composition and played with other declarative programming and type systems goodies.

The team was ~10 people. I coached 2 guys on technical matters, I convinced the team to adopt mockito, and git rebase for local work, and gave feedback on various technical and non technical grounds, which were very well received by the team.

Adobe SystemsMarch 2010 - March 2014

As a Java server-side software engineer in 3 Adobe teams, I learned interesting things about designing, coding, testing parts of the systems as well as learned more to communicate with other developers and other stakeholders. My experience grew on both low-level aspects such as TCP life cycle as well as high-level design of RESTful distributed services. I am proud of working with highly talented enthusiastic engineers and want to reach an interesting stable project in distributed systems.
Another project involved BigData aimed to solved both real-time problems (low latency from event sourcing until reaching OLAP-like indexes), and batch map-reduce problems (high throughput on large volumes of daily event logs to recompute indexes), based on a stack including Hadoop, HBase, Kafka, Zookeeper, CouchBase, Storm, Spring, Netty, Jetty, maintained with Puppet, Rundeck, Jenkins, shell scripts and Git.

Special attention was on the performance (latency percentiles, throughput 20K/s per node) and of course resilience in general. I gained experience both as a developer to design and code for performance as well as how to test a system to find its limits, and developed an intuition around system behavior, bottlenecks identification, profiling, and load/stress testing.

Latest projects were:
- stabilizing the memory consumption of an HBase aggregation query system - made the aggregation incremental
- prototyping an ad-hoc query system with Druid DB and Apache Spark
Streaming as ETL

I graduated an FP course with implementations in Scala language and a Reactive Programming course building on the first one, with a final homework of creating a simplified version of a distributed replicated key-value database with Akka actors.

Frameworks/Platforms: Spring 3, Hadoop, HBase, Zookeeper, Storm, Kafka.
distributed fault-tolerant systems, Scala/actors, Kafka.
Context: Some subsystems did map-reduce batch processing while others were building real-time pipelines.

Kepler-RominfoDecember 2005 - March 2010

Analysis of business level or functional level application requirements and of the less obvious non-functional (quality related) requirements (including making decisions on quality dimension tradeoffs, such as between speed and simplicity).

Specialties: UML OOD; Java OOP; Design Patterns and Best Practices; Spring, Ibatis, Hibernate, Commons, FreeMarker, Velocity; servlet filters; EJB 1.2; Web Services;
Oracle 10 design (CDM & PDM: conceptual & physical data models), SQL performance optimisation, pl/sql development, Java stored procedures;
DHTML (Javascript, AJAX);
UNIX scripting

UML OOD and Java OOP development; database designer, DBA and database programmer knowledge and skills. For DBA I mention performance profiling and SQL optimisation; good relational database arhitecture understanding, Oracle multi versioning, transactions behaviour, including reciprocal influences (such as those handled by the transaction isolation level), normalization and integrity concepts and generally broad database background.

Nobel RomaniaJune 2004 - December 2005

Business needs discovery in active discussion with internal customers.
Business requirements negotiations together with key users, business owners and architects and committing to writing. Written technical specifications.
Estimation at task and project level. Test plan for manual and programmatic testing (extensive JUnit testing, especially unit testing but also functional testing). Implementation of the task. Analysis of performance: SQL (using query plans), Java and JavaScript. Implemented performance improvement plans (including extensive user defined filtering options, compressing, inter- JVMs traffic optimization, unused features cleanup) and obtained orders of magnitude speedup using 80/20 rule. Several plans to further optimize the backend logic devised but redesign that extensive was not cost-benefit attractive. QA/QC support, team support.

Remantec A.G.March 2003 - June 2004

Maintain and further develop a proprietary web application framework, including development of custom JSP tags, of new packages such as
email notifications with JavaMail, refactoring for thread-safety, efficiency in concurrent environment and a more effective exception management. Web module development: JSP, HTML&JavaScript, integration with external web services.
Created and maintained JavaDoc framework documentation, as well as introductory, classes relationships and sequences (UML diagrams) and examples for common scenarios. Trained 4 teams to successfully integrate in our project and develop modules with the framework. Review on offshore teams deliverables. Developed web application modules: Users and groups administration. Rights levels system and custom tags for it. Email SMTP/IMAP
client module based on JavaMail package. Email server with Postfix virtual mailbox domain configuration and Courier-IMAP.

Politehnica University of BucharestFebruary 2001 - January 2003

Experimenting algorithms with different operations order for dense matrix computations with Matlab, C and compare with Fortran LAPACK.

Parralel computing resonance frequencies. Optimizing sparse matrix ops by finding a custom quasi diagonal structure making dot products efficient by spatial and temporal locality, compact cohesive at every level of memory hierarchy.

Dimension reduction for dense and sparse linear systems.

TA for matrix computations, automation engineering computing and distributed HPC with MPI and ScaLAPACK.

My stack

Zookeeper, WildFly, Web Services, Web development, Vert.x, Vagrant, Unit testing, Tomcat, Test Planning, Technical Design, Teamwork, TCP/IP, SQL, Spring Boot, Spring, Spark, SMTP, Shell Scripting, Scala, RESTful, Reactive programming, Pair Programming, Oracle PL/SQL, Oracle, OLAP, Netty, Mockito, Middleware, Maven, Matlab, Kubernetes, JUnit, JPA, Jetty, Jenkins, JEE, JDBC, JBoss, JAX-RS, JavaScript, Java, JasperReports, IMAP, iBatis, HTTP, HTML, Hibernate, Haskell, Hadoop, Gradle, Git, Functional testing, Functional Programming, Freemarker, ETL, Docker, DHTML, Design Patterns, Database Administration, Courier, Couchbase, Continuous Integration, Consul, Big Data, Apache Zookeeper, Apache Web Server, Apache Kafka, Amazon Web Services (AWS), Akka, AJAX, Agile Methodology