At the ING I was part of the Consumer Lending DevOps team. Together with my team I was maintaining and extending a couple of applications related to the lending of money to consumers. There were several frontend-only, smaller “tool applications”, and one large frontend (AngularJS) / backend (REST) application for the actual money lending process. In 2017, the AngularJS frontend was migrated to Polymer. The REST application gathers and updates data using TIBCO calls. The logging of the application was stored in Logstash and monitoring dashboards were created in Kibana/Grafana, based on data from logstash. Deployment was done via Nolio with numerous checks in different systems before deployment is authorized. One of the most challenging aspects of the work was to get the requirements clear with so many stakeholders.
At the Rabobank I was involved in several web-based projects and one processing application. I worked mostly on implementing new Web projects and maintaining an existing (portlet) application. I set up one new web project from the ground up, in the role of lead developer. This project involved a frontend AngularJS application with a REST/JSON web application built with Jersey/Spring. The REST application gathers and updates data using Soap calls. At the beginning of the project I performed a major refactoring of the Maven structure of the project, in preparation for a SVN to GIT migration which I then carried out. We use Sonar and code reviews to ensure quality of code.
Development of a web application for Yamaha dealers. Dealers can order parts and units, register sold cars and enter warranty claims. The system is coupled to an AS400 back-end system of the Yamaha warehouse, which processes orders. Iprofs has migrated the old Struts application to Spring MVC. My work consisted mainly of capturing requirements, developing new functionalities, and solving bugs. We worked in a small team, where code is being peer-reviewed. The most part of the work is
development of Java components, or related technologies. Iprofs introduced a few modern technologies, such as AngularJS, Groovy test framework (Spock, very intuitive), Jasmine (Javascript unit testing), Play Framework (worked with it briefly).
Working for Sungard (now FIS), I worked for several financial institutions (banks, brokers) to give them advice on the implementation of Sungard’s financial products.
I worked mostly with Front Arena. An important aspect was being a sparring partner and source of knowledge concerning the software product that they used, Front Arena. Front Arena is a trading package mainly focused on Front Office activities with support for exchange connectivity, entering quotes (supporting market making activities), trade capturing, risk management, third party data vendor integration (Bloomberg, MarkIT, ICE, etc) and other business data processing.
In 2008 the central Dutch government initiated the project Overheid Nieuwe Stijl (ONS), which translates as “Government New Style”. One of the goals of the project is to integrate the websites of all departments into one new umbrella website, www.rijksoverheid.nl. This is a very complex project, both politically speaking as well as technically. The ONS project team selected Hippo as their supplier for content management solutions. Project management requested two senior developers from Hippo to help out with the development of both the CMS (Content Management System) as well as the development of the website rijksoverheid.nl. This is how I became involved in the project, in may 2009. My daily tasks while working on the project consisted of 75% actually helping to implement the CMS and website, and the other 25% providing consultancy in the form of coaching the other programmers (not from Hippo) and giving advice on how to solve complex problems.
Implementing the website consisted mainly of Java development plus configuration of Hippo CMS. De Java components of the website were small to medium in size. Quality
of the code was ensured by several techniques, such as peer code reviews (part of the Scrum methodology we used), unit tests using Junit, integration tests with Selenium / Webdriver and code formatting rules were enforced using Checkstyle. Quality metrics could be obtained from a running Sonar server on the network. The test coverage of the website components was around 80%. An average website component fetches configuration from the CMS, executes some JCR (Java Content Repository) queries and generates the JSP beans for the view layer. I also worked on extending the CMS (based on Hippo CMS) with custom plugins, which were based on the Apache Wicket framework. Lastly, I took care that the configuration of the CMS was kept clean and working.
The consulting / coaching role I fulfilled was both on an ad-hoc basis, as well as in an organized context. While implementing the website I regularly supplied the other programmers with relevant information about Hippo software and made sure their work complied with the best practices of Hippo. During planning meetings (Scrum estimation meetings) I advised project management on the complexity of the features they wanted and estimated how much time it would cost to implement them. I also frequently provided input to the functional designers, so that they could design technically feasible solutions for new features. Next to these tasks, I had regular contact with the CMS product team back at Hippo to discuss the requirements of the project and to request features / bugfixes.
As a Hippo consultant I have been involved in the project www.antwoordvoorbedrijven.nl for more than two years. The project was initiated by the Department of Economic Affairs and outsourced to the ICTU, the Dutch central government’s executing ICT organization. The goal of the website is to make the government more accessible for companies. Via the website, companies can get an overview of licenses, regulations, procedures, etc., of the government that are relevant for them. The idea is that companies find out quicker which institutions they need to contact for the information they need.
My role at the ICTU consisted of two parts, an implementing role (80%) and an advising/consultancy role (20%). The implementation work consisted mainly of building and modifying the website, which was based on Apache Cocoon. Cocoon is an XML publishing framework, which makes it easy to aggregate and transform XML streams. Publication to multiple media channels is possible, e.g. (X)HTML, mobile, PDF/Word. In 2009/2010 I was on location 1 day per week to solve complex problems or bugs, mostly related to Hippo / Cocoon technology. Besides that, I gave advice to the development team about parts of the website that can be improved, e.g. with respect to performance or maintainability of the code. The development work itself comprised the modification of Cocoon / Hippo CMS configuration, XSLs and the implementation of custom (Java) Cocoon components.
In these 2,5 years I was part of the Hippo Portal product team to set up a new product, Hippo (now Bloomreach) Portal and developed several intranet portals for customers, based on the new product. Hippo Portal was built on top of the portal framework Apache Jetspeed. During the development of Hippo Portal I contributed so much to Apache Jetspeed, that I obtained the status of Apache committer for the Apache Portals project. That allowed me to modify the Jetspeed code by myself, instead of sending in patches which needed to be approved. One of my big contributions to Jetspeed is a component that synchronizes LDAP data with an internal security database. Another big contribution is the complete refactoring of the Single Sign On module, which was partly necessary to better integrate with a new security model that was being introduced in Jetspeed.
Next to my committer work I also implemented several portal websites for customers like ICTU, ROC Eindhoven, the Municipalities of Weert and Schijndel, the ANWB and Randstad. For the last two projects my role was mostly consulting / coaching, because the implementation was outsourced to partner companies. Building the portals consisted of a lot of Java programming, plus some Hippo CMS / Jetspeed configuration.
During my early years at Hippo, I helped to develop the CMS product (Hippo CMS 6), as well as implementing a number of websites for customers using CMS 6 / Apache Cocoon. I estimate that I spent half the time on CMS development, and the other half on developing websites. For the CMS I designed and developed the search interface. This interface can be configured by XML and is pluggable with custom search criteria. Furthermore, I was known as the “editor” expert of Hippo CMS 6, due to the fact that I was one of the main developers of the XML document editor in Hippo CMS. The CMS part involved XML/XSD/XSL/HTML/JavaScript work.
I also have implemented several websites, sometimes within a team, sometimes independently. The websites were based on a custom distribution of Apache Cocoon, called Hippo Cocoon. The “extra sugar” on top of Apache Cocoon is, as you might guess, the ability to implement content-driven websites, where the content comes from Hippo CMS 6. The biggest customers were: ABN AMRO Asset Management, TUI, VNU UK and the Departments of Finance and Foreign Affairs. Developing the websites involved XML/XSD/HTML/Javascript/CSS work, but once in a while Java components needed to be written to handle non-standard behaviour. The main criteria for a good website were transparency of the code and performance. For performance optimization we used a lot of different tools to tackle bottlenecks.
Delphi developer for own company, mainly working on a Pipeline Engineering program and related tools.