If a chunk of code cannot be understood without reading it 5 times, this should be considered bad code and refactored. Code should read like prose. KISS
Used to think this should be used from a pragmatic approach and only for certain chunks of code but I was wrong and did not understand it correctly. Red green red green red green red green red green red green red green...
Broken windows theory
This kind of relates to clean code as I firmly believe that once dirty code intrudes your codebase, this will often lead to other developers not making enough effort to write clean code around that dirt code which will in the end spread out to your whole codebase.
Seperation of concerns and domain driven design
This leads to simpler code, safer code, more testable code and more maintainable code.
Commit often, small victories, divide and conquer
If you haven't made a code commit by noon, you are probably taking on too much at once. Always go for small victories as this will lead to a more fulfilling development process and better, simpler and cleaner code.
Continuous delivery/deployment will lead to software that can be more reliably released at all time .
Daily standups can lead to interesting coffee break/lunch time discussions but should be kept to the point, not just "I've added this and that".
Regularly, time should be allocated to reflect, should some code be cleaned up, can we improve a project from things learned in another project, are there certain "annoyances" in the development cycle that can be improved, ...
I am a realist that above principles will not always be possible to follow as we don't live in a perfect world and sometimes deadlines just have to made. Yet I do believe that if they are used from the start, at all times a best effort is done and periodically time is allocated to clean up, this will lead to faster development cycles, less bugs and better maintainable code.
An overview of technologies, languages, frameworks, ... I have worked with over the years. Obviously some might be a bit further down in the back of my head but it's still in there somewhere :)
I have grouped them a bit together per domain.
Agfa Healthcare Software engineer 2018 to ...
Migration of inhouse legacy authentication to OIDC using Keycloak
Technical Environment OracleDB, JBoss, Keycloak, OIDC, EJB3, LDAP, Kerberos, Swing, JNLP, OSGI, Hibernate, jBPM, Drools, Angular
CounterFort Software engineer 2017 to 2018
Responsible for the brand websites of the Cortina Group (Patrick, SafetyJogger, Sprox, ...)
Development of backend for iPad dealer app
Technical Environment DB2, Hibernate, Spring, Jersey, Angular, Tomcat
linkID NV Software engineer 2007 to 2016
Development of the linkID user centric identity/payment platform.
Development of a two-factor smartphone authentication solution on iOS and Android.
Integration with payment providers Docdata, Klarna and PayConiq.
Development of a user and operator web portal.
Development of the Dodentocht subscription application using the belgian eID
Development of the iWish.be service.
Development of the iWish.be iOS app.
Technical Environment MySQL, Hibernate, Guice, Jersey, OpenSAML, WSS4J, XMLSec, Bouncycastle, JUnit, EasyMock, angularJS, Tomcat, AWS, Objective-C, Cocoapods, TrustKit
FedICT Software engineer 2007 to 2011
Development on a number of projects for the belgian eID (jtrust, eid-applet, eid-idp, eid-dss, eid-trust-service)
Technical Environment MySQL, PostgreSQL, Oracle, Hibernate, EJB3.1, OpenSAML, OpenID4Java, WSS4J, XMLSec, ODF, OOXML, Bouncycastle, JUnit, EasyMock, JSF, Seam, JBoss
Encap A.S. Software engineer 2007 to 2011
Development of the authentication and signing platform
Development of the iOS app for this platform.
Technical Environment MySQL, Hibernate, EJB3, OpenSAML, WSS4j, XMLSec, Bouncycastle, JUnit, EasyMock, Wicket, JBoss
ON Semiconductor Software engineer 2001 to 2007
Development of a modular platform for the generation of test programs (digital and mixed-signal) for test engineering.
Technical Environment lex, yacc, C, C++, ObjectStore, JNI, Java, Swing
An identity management and payment platform that offers users the convenience of a central identity for use with different applications while it offers application vendors the ability to partner up easily and incentivise their user bases to check out each other’s offerings.
It also includes a wallet and reward system and has an iOS, Android and Windows Phone mobile app.
An online wish list where you can manage, search for products, add products from barcodes and QR codes and order products directly through the platform in collaboration with select partners.
It features an iOS and Android app.
A webapp through which participants of the Dodentocht could easily and quickly register using the belgian eID
Master Computer Science 1997 to 2001
Ghent University, Ghent, Belgium