Software craftsman. I help companies ship software.
Computer Software | Zürich Area, Switzerland, CH
Conversational: Scala, Clojure
Java: Spring, JAX-RS, RESTEasy, Solr, Elastic Search, Hibernate/JPA, Dropwizard, Akka ...
Grails: Full stack - GPS, GORM, Custom Plugins
JEE and SOA: Oracle Weblogic, Oracle OSB, JBoss, Tomcat
SQL: ANSI SQL, PL/SQL, T-SQL — PostgreSQL, MySQL, Oracle, MS SQL Server
NoSQL: Mongo, Redis, Cassandra, Hadoop
Web: HTML, CSS,
Cloud: Amazon Web Services
Other Tools: Vim, Idea, Eclipse, Git, Mercurial, Rake, Gradle, Leiningen, Jenkins, Puppet
Methodologies and Best Practices
Object Oriented Programming and Design (OOP/OOD), Functional Programming, Architecture, Design Patterns, Refactoring, Unit Testing
Agile, Scrum (Iterative Development, Refactoring, Unit Testing, Automated Functional Testing, Build Automation, Continuous Integration, Pair Programming)
JVM Tuning and optimization
I’m the co-author of the book “Groovy 2 Cookbook”, published by Packt (http://d.pr/2eS0)
2014 - Present
Full Stack Developer / UBS
Lead the development of two internal greenfield projects for the bank's compliance department (KYC). Both projects were delivered in time and on budget.
- Designed the software architecture for both applications (front-end and back-end)
- Designed the RESTFul API for the main KYC application of UBS, including dealing with external applications' stakeholders and defining SLA and high availability.
- Added several new modules to the corporate Java framework, including XSS protection for Spring MVC applications, cookie-based session persistence, JS/CSS resource compression and minification
- Technologies: Spring 4, Hibernate, jQuery, Lo-Dash, Git, Guava, Junit, Mockito
Founder / Aestas IT
Aestas IT is a consulting company which I started in 2011. We went from 0 clients to several, large accounts in less than a year and we enjoyed a steady growth.
During my three years at Aestas, I wore several hats, including software architect, developer, trainer, conference speaker and business developer.
Our clients regarded me as an expert in enterprise architecture, JVM tuning and optimization, Java, Scala and Groovy. I successfully prepared and delivered training sessions about the JVM internals, the Scala language and the Groovy language. Our most requested training was "How to become a better developer", in which we taught software design patterns, unit testing best practices and project automation.
I have also helped clients to implement "extreme software automation": large scale automated build and deploy, automated code analysis and system automation (devops).
Some of our clients:
- Danish Tax Authority (DK)
- Nespresso (CH)
- Kuoni (CH)
- Netcompany (DK)
- SEVEN Networks (FI)
Architect and developer / TDC
TDC is the largest Telco company in Denmark and in 2010, they decided to rebuild from scratch their customers-facing portal - for both private and corporate accounts.
TDC gave us a large room, a bunch of tables and chairs and we started to gather requirements and design the architecture of the new portal. The most critical aspect of the design was performance. The new portal had to be blazing fast, regardless of the response time of the several back-end systems we had to hit - including mainframe - to fetch and aggregate data. TDC has over 9 millions clients, and we had to build a system that could sustain heavy load without breaking a sweat.
My job was to design the back-end system and, at the same time, get the developers up to speed with the technologies we chose: Akka - the Actor framework from Typesafe, Spring, Rest, Gradle and TDD approach to coding.
The project was delivered in time and budget and it was so successful that Netcompany, the company I was working with, won the "TDC supplier award" for two consecutive years.
Technology used: Java 6, RESTEasy, Akka framework, Spring 3, Hibernate, Oracle Weblogic 10.3, Gradle, Jenkins, JUnit, Mockito
Architect / SKAT (Danish Tax Authority)
- Designed and oversaw the implementation of the Danish Tax Office SOA initiative for Vehicle Registration.
- Seamlessly integrated old Bea Weblogic web services runtime with Spring 3, Hibernate and Drools Rule engine.
- Developed strategies for Aqualogic Service Bus code generation and efficient deployment of ALSB artifacts.
- Mentored a team of 20+ engineers in Java development, testing and coding best practices.
- Introduced continuous integration (Hudson) and several layers of testing, using Junit, SoapUi and Selenium for the Portal testing.
Technology used: Java 5, Groovy, Gradle, JBoss Drools, Bea ALBPM, Bea ALSB 2.6, Bea WLS 9.2, Spring 3.0, Hibernate 3.5, Junit, Mockito, Selenium, SoapUI, Oracle 10, Hudson, Enterprise Architect
JEE Consultant / BNP Paribas Corporate and Investment Banking
- Java developer on a large-scale migration project of a Delphi application to a Web based system. The project uses Scrum and other Agile practices (TDD, Pair programming, Standup meeting, etc.).
- Successfully mentored the team (based in Paris and India) to a more effective usage of TDD.
Technology used: Java 5, Teamcity, Freemarker, Spring 2.0, Hibernate, Lucene, FITnesse, Junit, Selenium, Prototype, Oracle 9
SOA Consultant / Sonofon
- Part of the architectural team responsible for the initial adoption of a company wide Service Oriented Architecture in Sonofon (part of Telenor Group).
- Designed and developed several billing related (Geneva) end to end services using JBoss Soa Platform (ESB and jBPM). The initial services design and implementation will be used as a blue print for the creation of new services.
- Improved software engineering foundations by prioritizing fully-automated build/package/deploy, product versioning, continuous integration and a rounded SOA-compatible automated test approach.
Technology used: JBoss Soa Stack (jBPM and ESB), Seam, EJB3.0, JAXB 2.1, TestNG, Maven, Hudson
Technical Architect / Saudi Telecom Company
- Lead a team of 15 developers to successfully roll out of the STC customers portal, the second largest portal in the Middle East.
- Managed the design, the implementation and the deployment of the STC customer portal, reporting to the company's executive management.
- Worked shoulder-to-shoulder with developers to integrate Bea Portal framework with Spring + Hibernate and other open source frameworks. Mentored the team on code craftsmanship, test driven development and Bea Portal best practices.
- Designed and overlooked the implementation of an high availability architecture (active/active) based on Bea WLS 9.2, Bea Portal 9.2, Oracle 9i RAC and LDAP (Fedora Directory Server)
- Designed and implemented test practices based on continuous feedback (Hudson) and UI testing (Selenium).
- Fought back and resolved daily scalability issues (JVM, database, code, integration, poor design of the Bea platform) due to large user base (17 million customers, 3.5m registered users).
Technology used: Bea Weblogic Server 9.2, Bea Portal 9.2/10, Bea Workshop 9.1, Spring 2.5, Ant, JUnit, Mockito, Oracle 9i RAC, Subversion
Senior Consultant (various European locations) / BEA Systems
Architecture and development of enterprise integration solutions utilizing BEA SOA stack: AquaLogic Service Bus (ALSB), AquaLogic Enterprise Repository (ALER) and AquaLogic BPM (ALBPM).
Assist in creation of development standards, process, best-practices and guidelines for developing Portal, Integration and BPM applications using SOA standards.
Main projects: Zurich (UK), TDC (Denmark), other European Bea customers.
Technology used: Bea Weblogic Server 9.2, Bea Portal 9.2, Bea Workshop 9.1, AquaLogic Service Bus 2.5/6, Aqualogic Enterprise Repository and BMP, Spring 2.0, Ant, JUnit, JMock, , Oracle 9i, Subversion
Senior Consultant (Copenhagen, Denmark) / Netcompany
Designed and implemented a Web Service based gateway to expose the PFA Pension core operations to external insurance brokers. The solution includes Spring/Weblogic 8.1 integration and XML Schema versioning (different versions of a XML Schema triggers a dedicated business logic).
The system supports 280/300 requests per second with an under-the-second response time on a relatively small hardware.
Designed Web Services XML Schemas and helped the company to develop a strategy for maximum reuse of Schemas among different applications and departments (Information Architecture)
Introduced a test based development approach and wrote a testing framework based on JUnit, JMock, AspectJ and Spring.
Led quality improvement process, including code reviews and continuous integration.
Technology used: Bea Weblogic Server 8.1, Spring, UML, Ant, JUnit, JMock, XMLUnit, AspectJ, IntelliJ, XMLSpy, Oracle 9i, CVS, Cruisecontrol
J2EE Consultant (Brussels, Belgium) / B2Boost
Hired to coordinate and implement the migration of the company's B2B platform from Bea Weblogic 7.0 to Bea Weblogic 9.
Introduced a testing framework based on JUnit, Cactus and Canoo. Mentored the development team (7 people) in using TDD.
Completely rewrote the build scripts for the entire core B2B platform using Ant. This includes a automatic generation of Weblogic domains and a modular building process.
Designed and implemented a JMS based monitoring subsystem to decouple the application monitoring from the rest of the platform.
Introduced the usage of the Spring framework and other open source frameworks (Mule, XDoclet, AspectJ and others).
Technology used: Bea Weblogic Server 7.1 and 9.0, Spring, Ant, XDoclet, JUnit, JMock, Cactus, Mule, AspectJ, IntelliJ, Struts, Oracle 9i
Bea Platform consultant (Helsinki, Finland) / Nokia
Partecipated in the design and development (server-side) of a new release (v.2.0) of the "Club Nokia" web site.
As Senior Bea Platform and J2EE consultant, I acted as tech leader and mentor for two small teams of developers, in Riga (Latvia) and Helsinki.
Designed and developed new functionalities of the Club Nokia website, using the Bea Platform (Portal 8.1 sp4) and many Portal-related features, such as user segmentation based on business rules, localization, Unified User Profile. The web site also leverages the Content Management features exposed by Bea Portal 8.1.
Developed a cluster-aware cache based on JMS synchronization and the Bea "p13n" caching framework.
Developed a input validation framework based on Jakarta Common Validator.
Introduced the teams to unit testing, using JUnit, mock objects, Cactus, DBUnit. Developed different Junit/Cactus templates for in-container and out-of-container testing.
Technology used: UML, JDK 1.4 (Bea Workshop 8.1, Eclipse), J2EE, Oracle 9i, SQL, Bea Weblogic 8.1, Bea Portal 8.1, Ant, Junit, Clearcase
Technical Architect (Rome, Italy) / Telecom Italia S.p.A.
Responsible for the software architecture of Telecom Italia fraud detection system. The system's main goal is to analyze an average daily landline traffic composed of 100/140 millions atomic data and identify fraud patterns.
During the Design Phase, my duties include helping the customer gather requirements, identifying the appropriate hardware stack, recommending third party software products, designing all components of the J2EE applications, and participating in designing the complementary database schema.
During the Implementation Phase, my duties include assigning coding modules to appropriate team members and overseeing their progress for about fifty percent of the time. I spend the other fifty percent of my time coding the remaining portions of the project and meeting the Telecom architecture board.
I have also mentored a large team of former .Net developers in Java, Spring and TDD.
Set-up a Continuous Integration Process with CVS, Ant and Cruisecontrol.
Technology used: JDK 1.4 (Bea Workshop 8.1, Eclipse), J2EE, Oracle 9i, SQL, Spring Framework 1.1.x, ILOG JRules 5, Bea Weblogic 8.1, Bea Portal 8.1, Bea Integration 8.1, Ant, Junit, Cruisecontrol, CVS.
Bea Weblogic Consultant (Brussels, Belgium) / Mobistar
Senior J2EE Consultant (Frankfurt, Germany) / European Central Bank
J2EE server-side consultant working on a a web based application for the design and execution of financial projections, integrating financial data from the European member countries and producing economical forecasts.
Built a secure, high-availability web-service based system (based on Apache AXIS) to integrate a FAME database with our application. The integration layer was able to query and retrieve results (XML/Gesmes files, PDF) from FAME using Soap with attachments.
Technology used: Bea Weblogic 8.1, EJB, Cocoon, XDoclet, Ant, JUnit, Tomcat, Quartz, Apache Axis, XML, OpenLDAP
Senior J2EE Consultant / Sirtisistemi S.p.A.
Part of a small tiger-team that designed and implemented a complete web based control system for a tramway public network. The system monitors and controls trains and railway appliances (tracks, traffic lights, etc.).
Designed and developed most of the back-end code and created a solid infrastructure based on core J2EE standards and patterns (focusing on patterns usage, JMS architecture design and system performance optimization).
Created a solid, reusable MVC framework based on Jakarta Struts 1.1 and introduced Agile development methodologies and tools (such as Ant, JUnit and AspectJ).
Technology used: Bea Weblogic 8.1, Oracle 9i, EJB, XDoclet, Ant, JUnit, Ilog JViews
Technical Architect / Developer (Milan/London) / H3G
Designed and developed mobile applications to be used on UMTS handsets inside the larger H3G Service Delivery Platform.
Developed different core parts of the H3G back-end systems, including a data access framework, a logging and tracing system, a EJB testing framework.
Mentored several PriceWaterHouse&Cooper consultants on J2EE development and Java testing.
Technology used: Java 1.4,Bea Weblogic 8.1, Oracle 9i, EJB, JMX, Volantis, Castor, XML/XSLT, JUnit
Technical Architect / Ericsson Telecomunicazioni S.p.A.
Architect and developer for Ericsson "Service Delivery Platform", successfully deployed in Wind (Italy's 3rd Italian mobile operator).
The platform is based on a J2EE solution running on Bea Weblogic and heavily relying on asynchronous messaging (JMS).
The Service Delivery Platform has been successfully reused by several Ericsson client.
Techincal Project management and architecture design on this Ericsson internal project aiming at online distribution of Ericsson italian employees' payrolls.
Architecture based on Apache, Tomcat and JBoss as application server.
Developer / Technical Leader / Eunosia, S.p.A.
Visualbasic/COM++/Java development on several projects including Diners, Piaggio, Europcar.
Lead developer on the first Bea Weblogic project in Italy.
Senior developer/Analyst / BNL Multiservizi
Java Developer / FAO of the UN
Developer / SMS Italia (Siemens Health Services)
Java and Visual Basic developer.