Als research engineer ben je verantwoordelijk voor het verder ontwikkelen, beheren en ondersteunen van de technische infrastructuur binnen de Onderzoeksafdeling van de KB. Je speelt een sleutelrol in het faciliteren van onderzoekers door het klaarzetten van datasets, ontwikkelen van technische oplossingen en het leveren van technische ondersteuning aan Researchers in Residence en andere onderzoekers die gebruik willen maken van onze digitale data.Een belangrijk onderdeel van de opdracht is het technisch beheer en onderhoud van de researchserver. Dit omvat onder andere het beheren van de web stack, het waarborgen van veilige toegang tot de serveromgeving in Linux en het verzorgen van certificering en beveiligingsmaatregelen. Je zorgt ervoor dat de onderzoeksomgeving stabiel, veilig en toekomstbestendig is, maar ook toegankelijk voor je collega’s.Daarnaast adviseer je over en verzorg je de inrichting van beveiligde onderzoekslaptops voor externe onderzoekers die gebruikmaken van het KB Data Lab. Je zorgt ervoor dat deze werkomgevingen voldoen aan de geldende security-eisen en optimaal ingericht zijn voor onderzoek.Je bent tevens betrokken bij het opleveren van datasets op verzoek van Dataservices, waarbij je zorg draagt voor een correcte, efficiënte en veilige levering van data aan interne en externe onderzoekers.Binnen de opdracht draag je bij aan het afronden van de NIS2-inventarisatie van de KB research server, waarbij je helpt om risico’s in kaart te brengen en maatregelen te implementeren conform geldende wet- en regelgeving.Tot slot lever je hoofdzakelijk een actieve bijdrage aan het klaarzetten van datasets voor onderzoekers, maar daarnaast draag je ook bij aan het opzetten en doorontwikkelen van een software documentatieplan, zodat kennisborging en overdraagbaarheid van systemen en oplossingen structureel wordt verbeterd.
EisenMin. 3 jaar ervaring en kennis van data modelling en metadata standards (bijv. Dublin Core, METS, MODS).Min. 3 jaar ervaring en kennis en vaardig met programmeren (Python, SQL, XML), API’s en web technologie.Min. 5 jaar ervaring met beheersing van Linux, Python, data extractieMin. 5 jaar ervaring en kennis van software engineering principes en best practices. Denk hierbij onder andere aan OOP, design patterns en SOLID, en aan versiebeheer met Git, schrijven van unit tests en documentatie, en CI met Docker in GitLab;DevOps skillsBeschikbaar voor min. 24 uur, met mogelijkheid tot uitbreiding naar 32 uur per week3 dagen per week op locatie aanwezig, maandag, dinsdag en donderdagBeschikbaar voor intakes (max. 45 min) op maandag 22 juni om 13.00 uur, 14.00 uur of 15.00 uur op locatie.WensenKennis van digitale preservering principes zoals OAIS en PREMIS.Sterke analytische vaardigheden en probleemoplossend vermogen;Proactieve teamspeler met goede communicatieve vaardigheden;Passie voor gestructureerde en onderhoudbare software en de toepassing daarvanFlexibiliteit en win-win denken, waarbij je de (soms tegengestelde) belangen van software en domein kunt verdedigen en afwegen;Leergierig en open voor feedback.
Referentienummer2026-05096
LocatieDen Haag
Startdatum22 juni 2026
Einddatum22 december 2026
Optie op verlengingJa
Uren per week24-32u p/w
Intakegesprek22 juni 2026
Sluitingsdatum12 juni 2026
05:30
Begint jouw trail hier?Stuur ons je CV met een korte opdrachtgerichte motivatie.
Discover your BlueTrailOnze weg naar jouw nieuwe carrière
Nadat jij op een opdracht hebt gereageerd, nemen wij binnen 24 uur contact met jou op en behandelen we jouw reactie.
We gaan met jou in gesprek. Wij kijken niet alleen naar je kennis en werkervaring, maar vooral naar jou als persoon. Dit is voor zowel de professional als de opdrachtgever belangrijk, wij willen de juiste match maken! Als we eenmaal de juiste match hebben gevonden, dan begint jouw BlueTrail en stellen we je voor aan de opdrachtgever!
Bij een succesvolle match worden de contracten opgesteld. Door middel van innovaties en digitalisering proberen wij dit proces zo kort mogelijk te maken. Zo kun jij doen waar je goed in bent, terwijl wij zorgen voor alle administratie!
Ook tijdens jouw opdracht staan wij altijd voor je klaar. Onze fieldmanagers zorgen er persoonlijk voor dan alles succesvol verloopt!
Follow our trail
E-mailadresCAPTCHA
gform.initializeOnLoaded( function() {gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery('#gform_ajax_frame_2').on('load',function(){var contents = jQuery(this).contents().find('*').html();var is_postback = contents.indexOf('GF_AJAX_POSTBACK') >= 0;if(!is_postback){return;}var form_content = jQuery(this).contents().find('#gform_wrapper_2');var is_confirmation = jQuery(this).contents().find('#gform_confirmation_wrapper_2').length > 0;var is_redirect = contents.indexOf('gformRedirect(){') >= 0;var is_form = form_content.length > 0 && ! is_redirect && ! is_confirmation;var mt = parseInt(jQuery('html').css('margin-top'), 10) + parseInt(jQuery('body').css('margin-top'), 10) + 100;if(is_form){jQuery('#gform_wrapper_2').html(form_content.html());if(form_content.hasClass('gform_validation_error')){jQuery('#gform_wrapper_2').addClass('gform_validation_error');} else {jQuery('#gform_wrapper_2').removeClass('gform_validation_error');}setTimeout( function() { /* delay the scroll by 50 milliseconds to fix a bug in chrome */ }, 50 );if(window['gformInitDatepicker']) {gformInitDatepicker();}if(window['gformInitPriceFields']) {gformInitPriceFields();}var current_page = jQuery('#gform_source_page_number_2').val();gformInitSpinner( 2, 'https://www.bluetrail.nl/core/modules/934d581a4a/images/spinner.svg', true );jQuery(document).trigger('gform_page_loaded', [2, current_page]);window['gf_submitting_2'] = false;}else if(!is_redirect){var confirmation_content = jQuery(this).contents().find('.GF_AJAX_POSTBACK').html();if(!confirmation_content){confirmation_content = contents;}jQuery('#gform_wrapper_2').replaceWith(confirmation_content);jQuery(document).trigger('gform_confirmation_loaded', [2]);window['gf_submitting_2'] = false;wp.a11y.speak(jQuery('#gform_confirmation_message_2').text());}else{jQuery('#gform_2').append(contents);if(window['gformRedirect']) {gformRedirect();}}jQuery(document).trigger("gform_pre_post_render", [{ formId: "2", currentPage: "current_page", abort: function() { this.preventDefault(); } }]); if (event && event.defaultPrevented) { return; } const gformWrapperDiv = document.getElementById( "gform_wrapper_2" ); if ( gformWrapperDiv ) { const visibilitySpan = document.createElement( "span" ); visibilitySpan.id = "gform_visibility_test_2"; gformWrapperDiv.insertAdjacentElement( "afterend", visibilitySpan ); } const visibilityTestDiv = document.getElementById( "gform_visibility_test_2" ); let postRenderFired = false; function triggerPostRender() { if ( postRenderFired ) { return; } postRenderFired = true; gform.core.triggerPostRenderEvents( 2, current_page ); if ( visibilityTestDiv ) { visibilityTestDiv.parentNode.removeChild( visibilityTestDiv ); } } function debounce( func, wait, immediate ) { var timeout; return function() { var context = this, args = arguments; var later = function() { timeout = null; if ( !immediate ) func.apply( context, args ); }; var callNow = immediate && !timeout; clearTimeout( timeout ); timeout = setTimeout( later, wait ); if ( callNow ) func.apply( context, args ); }; } const debouncedTriggerPostRender = debounce( function() { triggerPostRender(); }, 200 ); if ( visibilityTestDiv && visibilityTestDiv.offsetParent === null ) { const observer = new MutationObserver( ( mutations ) => { mutations.forEach( ( mutation ) => { if ( mutation.type === 'attributes' && visibilityTestDiv.offsetParent !== null ) { debouncedTriggerPostRender(); observer.disconnect(); } }); }); observer.observe( document.body, { attributes: true, childList: false, subtree: true, attributeFilter: [ 'style', 'class' ], }); } else { triggerPostRender(); } } );} );
Meer informatie