Curriculum vitae

Particulars
name Jacco Kok
first names Jacobus Cornelis
date of birth 11-09-1966
residence Amsterdam
email jacco at 0xcafebabe dot nl

Experience

2010 - present 0xCAFEBABE
customer Adyen
period 05-2011 ->
role programmer
description

As part of the development team at this Payment Service Provider I take care implementing new payment methods or changing existing ones.

products used Java, IBatis, Postgresql, Ognl

customer CSC
period 02-2011 - 05-2011
role programmer
description

Implemented functional changes to a rather complex and near realtime feed of traffic data.

products used Java, JAX-WS

customer INL (Instituut Nederlandse Lexicologie)
period 10-2010 - 12-2010
role consultant
description

The grammar, morphology and phonology of the Dutch language will be made availlable on the web. I advised on ways to convert current scientific papers and books and on ways to maintain the converted material. I gave further advice on how to setup the new LanguagePortal site so that all embedded knowledge about the language can be accessed.

products used Java, XML, XSLT
2009 - 2010 Vigilance
customer Vigilance
period 07-2009 - 07-2010
role programmer/hardware engineer
description

Vigilance is a small company that operates in the security market. For them I wrote software to write reports on reconnaissance images conforming to NATO standards, software to manipulate MPEG transport streams to combine video and meta data and I did a small embedded project on an AVR32. Apart from software I did quite some hardware integration and some analog electronics (a pre-amplifier for the A/D converter on the AVR32).

products used Java, C, NITF, NSIF, MPEG-TS, H264, RS485, MapServer, TileCache, Postgresql, AVR32, Xuggle
2001 - 2009 0xCAFEBABE
customer TribalDDB
period 01-2009 - 02-2009
role programmer
description

Responsible for the design and development of a backend system and a Content Management system for a Flash site. Communication with Flash was done through OpenAMF.

products used Java, Shores, OpenAMF, PostgreSQL

customer Achmea
period 08-2008 - 12-2008
role programmer
description

Co-developed a corporate (DHTML)web site for Achmea. My responsibility was the non-js version and all backend communication (through AJAX) with the frontend.

products used Java, Spring, SpringMVC, Hibernate, XSLT

customer Prorail
period 07-2007 - 05-2008
role programmer and system administrator
description

The dutch railway is working on a new passenger information system. All railway stations will be fitted with overhead monitors (TFT/LED displays). I was responsible for the Linux distribution for the embedded computer of the TFT displays.

Displays like these come with numerous sensors that must be read and monitored. I wrote software to run on the embedded computer that interacts with the sensors-controller and a central management server.

The displays are networked over GPRS which took extensive fine- tuning. I Implemented IPSEC with X509 certificates to meet security demands and created a setup with a minimal C(ertificate) A(uthority) using openssl and Linux shell-scripts.

products used Java, Shores, Linux, OpenSwan

customer Transavia
period 02-2006 - 04-2007
role architect and programmer
description

The new website of Transavia aims to integrate ticket sales and sales of third party products in such a way that customers never notice the distinction between Transavia and the third parties (think of hotels, rental cars and packaged holidays).

The differences are hidden by communicating online (some variety of XML over HTTP) with a third party and displaying the results as an integral part of the site.

As a base for this application Shores was chosen, an opensource framework developed by me. It uses XSLT as a formatting language.

My personal part was the communication with a Navitaire flightreservation system (NewSkies). This core system is queried and updated over a SOAP interface. All flight bookings on the site go through this SOAP channel.

products used Java, Shores, Hibernate, WebSphere, SOAP, XSLT, Navitaire (NewSkies, SkyChannel)

customer Acha
period 06-2005 - 01-2006
role architect and programmer
description

This customer is in the process of moving from Progress to open source. I started with building a proof of concept with Swing on the client and Spring and Hibernate on the server. The two are joined with Hessian over https. The Swing client is made available through Webstart.

For the proof of concept I built a reusable framework that uses metadata for dynamically building components like tables with searchfields in the header. The framework uses JGoodies for laying out forms. Rather than using a gui-builder the forms are build in code, using JGoodies this is a breeze. The framework has all the usual bells and whistles using reflection to minimize work and interception (dynamic proxies) for uniform error handling.

Together with a junior programmer I built a large application based on this work for a health care organization. The framework is extended with security. The standard Acegi framework did not work well with Hessian and rich clients. The security framework allows for constraints like "if owner of document or supervisor and current date less than creation date + 3 -> allow update".

products used Java, JGoodies, Swing, Spring, Hibernate, Hessian, FOP, Tomcat

customer Randstad
period 12-2004 - 05-2005
role programmer
description

At this customer I extended the SOAP interface to a large human resource application. All SOAP messages where in HR-XML and the framework we used was Axis. Furthermore I did some reports with XSLT and FOP.

products used Java, WebLogic, XML, Soap, Axis, Fop (formatting objects)

customer Zon
period 05-2004 - 08-2004
role coach and programmer
description

For this contract I redid the way registration forms were generated. Due to the nature of the existing codebase standard xml data-binding was not a good choice, so I made a custom data-binding with jdom, mapping tables and introspection. This way the xml needed for the forms could be generated easily and either transformed into html or PDF using xslt. For the PDF generation apache Fop is used. Generation is done on-the-fly.

The second and smaller part was a re-write of the ldap code, which I ported and cleaned up from using the Netscape sdk to the standard JDK way.

products used Java, Tomcat, XML, XSLT, Fop (formatting objects)

customer Communication Broker for the paper industry
period 03-2004
role analyst
description

Wrote a requirements document for a monitoring tool.

products used LaTeX

customer Major telco
period 02-2004
role programmer
description

Wrote a conversion script for a massive ldap update. Based on an export of a crm system and the current content of the ldap server I created an ldiff for an up-to-date ldap server. The repository contained several million records.

products used Shell script, Solaris, AWK

customer Fredhopper
period 12-2003 - 01-2004
role architect and programmer
description

The contract started as a very short contract to write some XSLT stylesheets, but it turned into a real E-Commerce job. I reworked the checkout and shopping cart part of the application in a similar fashion as I did for Verkade based on a dispatcher servlet and XSLT.

products used Java, JBoss (J2EE server including EJB, JMS and JSP), XML, XSLT, modified version of Shores

customer Nibble
period 6-2003 - 10-2003
role architect and programmer
description

For a non-profit organization that will remain anonymous we have built a CRM application to keep track of their contributors. One of the design criteria was database-based optimistic locking. As there seem to be no CMP implementations that have that I skipped the entity beans all together and build a code generator to generate the code to access a table (with optimistic locking and logical delete) The calls to these generated objects are wrapped in a DAO and are called from the session beans. Transaction management was left to the container.

The client was build in swing which I discovered performs very well if you know what you are doing. Most of my work was helping design the application and building the back-end, that is all the ejb stuff. For the client-side I build the RMI based communication and a 'code table' editor in Swing. The editor generates the search and edit screens based on xml metadata.

products used Java, Swing (the Java GUI framework), JBoss (J2EE server including EJB, JMS and JSP), Oracle, Linux, Apache

customer Digipay
period 8-2002 - 2-2003
role architect and programmer
description Designed and build a SMS based payment-system. People hold an account at Digipay that allows them to pay for things like concert tickets with SMS. To that end we build all of the 'bank', interfaces with other banks, interfaces to an IVR, interfaces to a SMS gateway and an ingenious clustering system. My part was designing and implementing the object-relational layer, the transaction management and the clustering. Because the systems deals with money and should be very fast I decided that container managed persistence and container managed transactions were not proven enough for the job. So I build a data accessor layer that deals with transactions and it does all database work. Every transaction can be decorated with extra steps for instance for logging or marketing purposes. After that I went on to the bank interfaces. We setup a framework of schedulable tasks and task control in order to keep track of the tasks performed. The tasks themselves were mainly parsers for the bankformat like swift (mt940) and GMU. The parsers call the data-accessor and perform the financial transaction. The fact transactions can be decorated came in very handy as the first payment activates a customer. So rather than using batchjobs or clutter the parser code, a transaction is decorated with an activation step.

Together with one other architect/programmer I worked with KPMG to hammer out all of the business processes that had to be mirrored in the software and I worked with the financial and marketing people to lay out the database such that all their information needs would be satisfied.

Apart from the software side I helped design and setup the hardware infrastructure. We opted for a fiber-coupled central storage that all nodes can reach. Instead of the conventional cluster each node is expendable, all nodes know how to take over the other nodes function. To make replacing easy we used kickstart (like jumpstart) to install a new system. So within 10 minutes a system can be replaced.

Note: Digipay got into financial trouble, they never went live. The company has been resurrected and I am told they target different markets now.

products used Java, JBoss, MySQL, Axis (soap), Linux, Apache, Squid

customer Vizzavi
period 6-2002 - 7-2002
role programmer and administrator
description Setup an environment of several Solaris machines in such a way that testing any version of the application requires minimal effort. That took some clever scripting and some help of cvs.
products used Java, Solaris, shell script, Oracle, cvs

customer Submarine
period 3-2002 - 5-2002
role programmer and system administrator
description Extended mmbase with sms capabilities and a xml based, mmbase to mmbase, communication layer. Mmbase is an open source content management system that is used by Dutch broadcasting organizations and, among others, VNU publishers. Apart from the programming I set up two servers and a firewall based on netfilter (iptables).
products used Java, Orion, Linux, MySql, iptables

customer United Biscuits (Verkade)
period 12-2001
role architect and programmer
description Built a little STRUTS like engine that uses XSLT rather than JSP. On top of this framework I created a webapp that helps implementing safety regulations. The app is designed in such a way that Oracle can be replaced by XHive.

This framework is the basis of Shores

products used Java, Tomcat, Ant, Xalan, Postgresql and Oracle

customer Vizzavi
period 8-2001 - 11-2001
role architect and programmer
description

Refined and extended the XML to database framework built earlier. Improved the manageability of the framework and added the possibility to run script driven functional tests.

Beside the development, I looked into and solved performance and network problems in the application server and the ldap server.

products used Java, XSLT, Oracle, JMS

1999-2001 Beautiful Code
customer Virtex
period 7-2001
role architect and programmer
description Wrote the feed part of a track and trace application for a carrier. This app reads XML documents posted on a webserver, extracts the information and allows customers to view the location of their parcels.
products used Java, XSLT, Postgresql

customer Vizzavi
period 1-2001 - 3-2001
role architect and programmer
description Created a small and flexible framework to extract information from XML documents and store that information in a database, without the need to write queries, based on Java and XSLT. Wrote a scheduler so that the processing of documents could be scheduled.
products used Java, XSLT, Oracle, JMS, Weblogic, Iplanet

customer Tryllian
period 4-2000 - 12-2000
role programmer and coach
description Took part in building an agent based trading application at Tryllian. The application was built on top of Tryllian's agent toolkit. We created the app, made a bridge between the agent world and a webserver. My contribution consisted mainly of implementing a persistence service for agents to offload the server. Apart from programming I advised on system administration.
products used Java, Tryllian ADK, Oracle, Solaris, Linux

customer various customers
period 4 5-day courses
role teacher
description Gave a number of Java courses with our own material. The most popular course is a preparation for Java certified programmer, but I also taught distributed programming with RMI or Corba, advanced networking and writing a special purpose server.
products used Holycow

customer Cowcatcher
period 2 months
role author
description Wrote many lessons, including examples and exercises, for Java courses, the material is part of the cowcatcher.org collective, nowadays a sourceforge project.
products used Holycow, a framework to create course material in XML

customer Bibit
period 1 year
role architect and programmer
description Took part in designing and building a distributed application for 'web based payment' I put much effort in the object to relational layer and in an event distribution mechanism with guaranteed delivery of events. Due to the distributed nature of this application we built a persistence service that could be addressed remotely with object streams rather then through RMI. We also created a management framework that allowed the application, while spread over 4 machines, to shutdown or restart gracefully.
products used Java, Apache, Sybase, Linux

customer various
period 3 years, as an on the side job
role system administrator
description Configuration and system management of Linux systems (mirroring, bind, sendmail, sybase, oracle) for several customers, for example I set up LDAP as alternative for NIS, so we could login on all unix machines. I also setup software mirroring.
products used Linux

1997-1998 Sun Microsystems
customer Car of the Century
period 3 weeks
role architect and programmer
description Designed and built a voting system for the 'Car of the Century' exhibition. Involving 8 Java stations and a server. (Alas they went bankrupt). This voting application used the AWT and was downloaded into the Java station, it used RMI to talk to a server.
products used Java, JavaStation, Postgresql, Solaris

customer Computers In het Amsterdamse Onderwijs (CIAO)
period 2 months
role programmer, system administrator
description Helped design and build an educational software system for primary schools. To this project I contributed a 'pupil tracking' system. A database system that allowed teachers to track individual pupils and groups of pupils.
products used Java, Postgresql, Solaris

customer Sun
period whenever we had no Java work
role system architect, system administrator
description Configuration and system management of Solaris systems (disksuite, oracle, firstwatch, vxvm). As an employee of Sun Professional Services I divided my time between Java and Solaris. For Example I setup a cluster once using EMC storage and Veritas firstwatch, I also helped in setting up an ISP.
products used Disksuite, Oracle, Firstwatch, Vxvm

1995-1996 Ordina
customer Unichema
period 1 year
role programmer
description Built server side database applications with PL/SQL on an Oracle database. Mostly concerning data warehousing.
products used Oracle

1994/1995 Akzo
customer Akzo
period 3 months
role programmer, mathematician
description Optimized neural network software for the statistics department of Akzo Nobel.
products used C

1988

Taught mathematics at a secondary school.

Training

General Education

degree in Math (University of Amsterdam)


Jacco Kok
Last modified: Tue Jan 4 15:57:12 CET 2011