| name | Jacco Kok |
| first names | Jacobus Cornelis |
| date of birth | 11-09-1966 |
| residence | Amsterdam |
| jacco at 0xcafebabe dot nl |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| 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 |
| customer | Akzo |
| period | 3 months |
| role | programmer, mathematician |
| description | Optimized neural network software for the statistics department of Akzo Nobel. |
| products used | C |
Taught mathematics at a secondary school.
degree in Math (University of Amsterdam)