Deel kennis, creëer synergie, overtref verwachtingen
Jan schrijft zijn eerste programma's in 1981 op 13-jarige leeftijd: Boter-, kaas en eieren, Pong en een race-spelletje op de Exidy van zijn natuurkundeleraar. Gedurende de laatste jaren van zijn middelbareschooltijd werkt hij aan grotere software projecten, zoals een functionele kopie van Dino Eggs in assembler. Ook naast zijn studie Technische Natuurkunde (TU/Eindhoven) blijft Jan programmeren en daar komt hij in aanraking met het intrigerende fenomeen Vrije Software.
Tegen het einde van zijn studie schrijft Jan verschillende experimenten met muzieknotatie-software die uiteindelijk uitmonden in het vermaarde vrije software muzieknotatiepakket LilyPond waarvan hij hoofdontwikkelaar en medeoprichter is.
Na zijn afstuderen gaat hij direct aan de slag als Software Engineer bij internet startup DigiCash en vervolgt zijn carrière bij uiteenlopende softwarebedrijven in verschillende functies. Daarnaast bouwt Jan een bijzonder grote kennis op van Linux en vrije software. Niet in de laatste plaats vanwege de verdere ontwikkeling en professionalisering van LilyPond.
In 1997 wordt Jan door Richard Stallman uitgenodigd mee te doen met zijn gerenommeerde GNU-project. LilyPond wordt onderdeel van GNU, de vrije en open her-implementatie van Unix.
GNU LilyPond wordt uniek en beroemd vanwege de geautomatiseerde en hoge kwaliteit muzieklayout en wordt zeer gewaardeerd. Er worden door Jan en andere LilyPond-ontwikkelaars tijdens verschillende computermuziek- en open source-conferenties presentaties over LilyPond gegeven (LAC 2001, 2004, 2008, 2010; LSM 2003, 2010; CIM 2003; FISL 2007). Het werk aan LilyPond heeft ertoe geleid dat Jan patches schrijft voor 15+ pakketten in de vrije software stack en dat hij werkt met verschillende open source communities.
In 1994 begint Jan met SLS en Slackware-Linux en sindsdien werkt hij op professionele basis met verscheidene Linux-distributies. Zodoende beschikt hij over 16 jaar ervaring als professional met IT-architectuur en softwareontwikkeling, applicatiegebruik, -integratie en -management en systeemadministratie. Later werkt hij ook als software engineer in een wereldwijd team voor Novell aan Go-OO.org, de pre-LibreOffice community-vriendelijke distributie van OpenOffice.org.
Door het werk in verschillende omgevingen, van sterk gestructureerde bedrijfssoftware-projecten tot internet-startups en onderzoeksomgevingen, zakelijke open source-projecten en zijn eigen open source-projecten, heeft Jan een uitgebreide ervaring opgedaan in softwarepraktijken, procedures en processen.
Als SCRUM-master (gecertificeerd in 2005) en Agile-teamleider, heeft Jan ondervonden dat Agile-methoden, en in het bijzonder eXtreme Programming en SCRUM, heel goed aansluiten bij zijn ervaring in de open source-stijl van projectmanagement.
Jan is er goed in en vindt het een uitdaging om precies die software te produceren die de gebruiker of klant wil en tegelijkertijd tijd-efficiënt te zijn en flexibele, onderhoudbare broncode te creëren. Vanuit zijn ervaring is hij van mening dat, bij het werken met of in een team, de grootste winst wordt behaald en de meeste moeilijkheden worden vermeden door voldoende aandacht te besteden aan relaties en communicatie.
Teamleider/Project Manager: ervaring met open source (10+ jaar) en Agile (2+ jaar) projectmanagement: SCRUM en eXtreme Programming, user stories, task breakdown, burn-down graphs, genereren van GANTT charts, rapid prototyping, korte en extreem korte iteraties (van een week tot een halve dag), Test Driven Development (TDD), schrijven van functioneel ontwerp, coding standards, sturen van code reviews en pair programming, hanteren van code ownership
Proces Manager: 12+ jaar ervaring met schrijven en updaten van procedures vanuit praktijkervaring, het scripten van procedures, evolutionaire proces-verbetering, 2+ jaar in Agile-retrospectives, verandering van teamdynamiek, team-coaching en personal-coaching (Avatar®, Geweldloze Communicatie)
IT Architect: 17+ jaar ervaring in architectuur van muzieknotatie-software, multitasking/multi threading, real time embedded en kritieke web applicaties
Quality Control: 10+ jaar in het maken en testen van software-releases en regressie-testen, unit testen, micro testen, geautomatiseerde builds, versiebeheersystemen
Software Engineer/Systeemontwikkelaar: 23+ jaar ervaring in code ontwerp, implementatie, rigoureus refactoren en onderhoud in vele talen, met name: C, C++, GUILE Scheme (Lisp), Java, PHP, Python. Ook: font-ontwerp, taal-ontwerp, cross-build systeem opzet, systeemadministratie en packaging
Assembler (1984--1992), BASIC (1981--1985), Bash (1994--heden), C (1992--heden), C++ (1994--heden), Fortran (1987--1991), Java (2001--2005), JavaScript (2000--2005), Pascal (1985--1993), PHP (2000-2001), Python (2000--heden), GUILE Scheme (2000--heden)
Zie ook Language Experience op Ohloh open source statistieken.
Han-Wen Nienhuys and Jan Nieuwenhuizen, LilyPond, a system for automated music engraving, Proceedings of XIV Colloquium on Musical Informatics, Florence, Italië, 2003
A.D. Schwarz-van Manen, A. F. M. Van Geloven, J. Nieuwenhuizen, J.C. Stouthart, K. Krishna Prasad and F.T.M. Nieuwstadt, Friction velocity and virtual origin estimates for mean velocity profiles above smooth and triangular riblet surfaces, Journal of Applied Scientific Research, vol. 50, nr 3-4, May 1993
Jan Nieuwenhuizen, LilyPond -- Running A Free Software Project, ATOS Origin TA/IPS, KLOS 5, Veldhoven, 2007
Nieuwenhuizen, J.C. and Nienhuys, H.-W., MPP, a MusixTeX PreProcessor, The LaTeX Graphics companion, 1996
J.C. Nieuwenhuizen, An object-oriented model for EPEP, afstudeerverslag, Technische Universiteit Eindhoven, 1995