Leermateriaal delen en vinden met de Groene Route van de HBO Kennisbank

De HBO Kennisbank wordt goed gebruikt om kennis te delen en te vinden en is dus een bron van inspiratie voor velen. Wij bouwden deze databank; het is een goed voorbeeld van de ‘groene route’ in het hoger onderwijs. Het houdt onder meer in dat er door iedereen kosteloos full text in gezocht mag worden. De meeste artikelen zijn vrij te downloaden. Zo kan kennis zich sneller verspreiden en kan iedereen er zijn voordeel mee doen.

Zo werkt het

Minder evident is iets te weten te komen over de achterkant van deze voorziening. In de onderstaande infographic laten we de belangrijkste technische aspecten die ‘onder water’ spelen, in vogelvlucht zien.

Infographic HBO Kennisbank 2017.png

Rode loper gaat uit voor Debian Stretch

Wat hebben Dwight Eisenhower en de OS-software release Stretch met elkaar te maken? Het antwoord staat bij ons op het whiteboard. De Eisenhower methode helpt om relevantie en urgentie van te verrichten werkzaamheden te beoordelen. Hij schijnt ooit te hebben gezegd: ‘The urgent are not important, and the important are never urgent.’

Onderhoud

eisenhower-method

The Eisenhower Method

De servers waarop de diensten draaien die wij onze klanten leveren, moeten onderhouden worden. Bijvoorbeeld door de software te updaten. We willen betrouwbaar meerwaarde leveren: de dienst moet altijd bereikbaar zijn voor onze klanten en doen wat is afgesproken.

Voorbereidingen

De nieuwste versie van het besturingssysteem dat we gebruiken, Debian (URL), heet Stretch en zal naar verwachting begin volgend jaar beschikbaar komen. Om de overgang naar Stretch zo soepel mogelijk te laten verlopen, hebben we nu de nodige voorbereidingen getroffen. Zo is onze Meresco software gepackaged, dus klaar gezet, om straks gemakkelijk te kunnen worden uitgerold op de servers.

Op tijd

Omdat we denken zoals Eisenhower, komt ons werk niet in belangrijk-urgent terecht. Dat is immers de vervelendste plek om te zijn. Tijdige voorbereidingen vergroten het zelfvertrouwen. Bij ons hoeft niemand te wachten op het krijgen van bijvoorbeeld de nieuwste security updates. En wij maken ons niet te laat – dus onnodig -druk.

Wil je een kei van een programmeur worden?

Seecr heeft weer ruimte voor twee stagiaires. Ditmaal hebben we een uitdaging liggen voor een HBO- en WO-afstudeerders. Ben, of ken, jij een afstudeerder? Dit is het document waarin wij een eerste casusopdracht voor beschrijven, en meer vertellen over wat je bij Seecr kunt verwachten.

En deze casus is zowel voor hbo als wo-afstudeerders interessant, denken wij. Zegt het voort.

Wij willen deze vakature rechtstreeks met geïnteresseerden opnemen. Geen acquisitie dus.

Helderziend, of gewoon ‘smart’?

Sommigen van ons bezitten in de virtuele wereld diverse magische krachten, maar in de ‘echte’ wereld werken we gewoon ‘op de slimme manier’. Onze hokus-pokus bestaat uit de inzet van onze service ‘Continubeheer’ op de systemen van onze opdrachtgevers. Daarmee voeren we op allerlei plekken metingen uit, wat een reeks aan indicatoren en grafieken oplevert. Zodoende kunnen we tijdig, als we daar aanleiding voor zien, de performance beïnvloeden van de systemen die we voor onze opdrachtgevers in beheer hebben. We wachten bij wijze van spreken niet tot er rookpluimen uit de auto komen, maar grijpen veel eerder in, als we niet tevreden zijn over een tussentijds gemeten uitkomst.

Transparant

Is dat alles? Nee. Ons Continubeheer levert in de praktijk meer op. Deze manier van werken leidt tot transparantie van de performance van onze systemen voor onze klanten. Continubeheer is een uitnodiging voor een continu verbeterproces. En het is een reden voor een feestje, dan wel reden voor een ongestoorde nachtrust voor onze opdrachtgevers: het laat zien, dat we kwaliteit leveren, ruim binnen de marges van de afgesproken SLA’s.

Schermafbeelding 2016-01-25 om 10.39.40

Ja, het gaat goed. Zie onze blog van vorige maand over optimalisatie.

Autocomplete Zoekplatform passend maken met lokale bibliotheekcollectie

Bij het intikken van een zoekopdracht zijn gebruikers erg geholpen wanneer automatisch mogelijk relevante zoektermen worden gesuggereerd. Het NBC+ zoekplatform biedt deze zogenaamde ‘autocomplete’ functie aan, zodat bibliotheken deze kunnen opnemen in hun website. De NBC+ autocomplete functie biedt bij de de gesuggereerde zoektermen bovendien het type (bijv. een boek of track) van het zoekresultaat dat ermee overeenkomt (zie afbeelding).

Screen Shot 2016-01-14 at 09.10.37

De suggesties waren tot nu toe gebaseerd op alle titels die bekend zijn in de landelijke catalogus. Voor specifieke toepassingen is dat echter onwenselijk, zoals op de website die gericht is op het uitlenen van e-books. Voor een gebruiker zou het hier verwarrend zijn om suggesties te krijgen van titels die niet als e-book beschikbaar zijn. Op dezelfde manier geldt dat een bibliotheek natuurlijk geen suggesties wil geven van materiaal uit een specifieke lokale collectie van een andere bibliotheek.

Op dit moment ontwikkelen we de code die het mogelijk maakt de suggesties te beperken tot precies het deel van de nationale collectie dat een lokale bibliotheek daadwerkelijk aanbiedt op haar website. Zo vinden gebruikers nog makkelijker wat ze zoeken.

 

Zoekindex Lucene verder geoptimaliseerd

Meresco, onze library van search en retrieval software, gebruikt Lucene voor de zoekindex. Lucene is ontwikkeld in Java; onze code is geschreven in Python. Python biedt verschillende mogelijkheden om deze Java code te gebruiken. De open source Software Foundation Apache biedt de mogelijkheid de Java code beschikbaar te maken binnen Python. Dit kan met PyLucene (http://lucene.apache.org/pylucene/).

Opvallend

Tot voor kort maakte we alleen maar gebruik van PyLucene om onze indexen aan te spreken. Op onze software draait continu een monitoring systeem, dat ons inzicht geeft in performance. We merkten steeds vaker dat er geheugen ‘kwijt’ was. Een ander opvallend fenomeen was dat het nodig werd de indexen eens in de zoveel tijd te herstarten, omdat deze anders ‘Out of memory’ gingen. Duidelijk: er was iets aan de hand, en we doken erin. Ondanks veel memory profiling en het bekijken van heap-dumps, die laten zien waaruit het gebruikte geheugen was opgebouwd, kwamen we niet tot een bevredigende conclusie waarom de garbage collector zijn werkt niet goed deed. Java objecten, waarvan wij zagen dat die wel konden worden opgeruimd, werden níet opgeruimd.

Zagen wij iets over het hoofd? Hadden we echt een geheugenlek? Of had de garbage collector te veel te doen om dit binnen de gewenste tijden op te kunnen ruimen?

Aankijken

Ondertussen bleven onze indexen groeien, alsook het aantal queries aan de indexen. Tot we uiteindelijk voor sommige indexen meerdere keren per dag een ‘out of memory error’-melding kregen. Om wat ruimte te scheppen, zetten we het automatisch bijwerken van de indexen daarom uit, en voerden we die handmatig uit op rustige momenten van de dag. Dit gaf voorlopig ruimte, maar dat is geen duurzame oplossing. Tijd voor actie dus.

Actie

Wij hebben een tijdje gebruik gemaakt van het open source enterprise search platform Solr, dat in Java is geschreven. Solr maakt gebruik van de zoekindex-functionaliteit van Lucene, en biedt een http-service aan om queries te stellen. Wat zou er gebeuren als wij ook deze strategie zouden volgen? We zouden Lucene in Java gaan draaien, de ‘native’ taal. Het combineren van garbage in Python en Java komt dan niet meer voor en lost eventuele problemen die we daarmee hebben op. We waren ook heel benieuwd wat er met de performance zou gebeuren.

We schreven onze eigen code om naar Java, bovenop Lucene, en plaatsten er een http-service voor. Na een aantal dagen Java code schrijven, met in het achterhoofd dat het ons zowiezo zou helpen bij het vinden van een oplossing, lukte het ons om weer een werkende versie te krijgen.

Performance testen

De code installeerden we op een acceptatie server met veel data. De eerste testresultaten waren erg bemoedigend. Ze gaven aan dat de indexen zelfs meer dan dubbel zo snel waren geworden. Dat was een beter resultaat dan we verwacht hadden. Maar de grote vraag: is ons geheugenprobleem opgelost, was nog niet beantwoord. We lieten daarom een duurtest los op de oplossing. We bestookten het systeem urenlang met een continue load, waarvan we wisten dat het oude systeem daar al snel onder zou bezwijken. En jawel: er kwamen geen geheugenproblemen meer voor.

Gemiddelde responstijden voor en na release op 16 december

Gemiddelde responstijden voor en na release (op 16 december 2015)

In de roos

Het leek er sterk op dat we ons probleem opgelost hadden. Ons vermoeden dat het in puur Java beter zou moeten gaan, klopte. Als klap op de vuurpijl kregen we er ook nog een enorme performance verbetering bij.

Uiteindelijk hebben we deze aanpak een tijdje laten meedraaien op de acceptatie-omgeving om er zeker van te zijn dat de werking probleemloos was. Intussen is het alweer een tijdje gereleased naar een productie omgeving, waar het nu vlekkeloos draait.

 

Meer erfgoed objecten verrijkt met juiste geografische aanduidingen

De afgelopen maanden hebben verbeteringen in de ErfGeo API en de ErfGeo Verrijkingenservice bij de Digitale Collectie (ontwikkeld door Seecr), ervoor gezorgd dat veel meer erfgoed objecten nu kunnen worden verrijkt met de juiste geografische concepten en coördinaten.

Om deze vooruitgang aan te tonen, zijn steekproeven genomen en beoordeeld. Daaruit blijkt dat ongeveer de helft van de records locatieinformatie bevat. Voor die records met locatieinformatie werd in 67% van de gevallen een match gevonden met de ErfGeo API. Op dit moment levert dat nog in in 4.5% van de gevallen een verkeerde match op.

Relevante aanpassingen die bijdragen aan het verschil t.o.v. de vorige keer:

  1. Aan de graph van https://api.histograph.io zijn Nederlandstalige landnamen toegevoegd en Nederlandstalige namen van grote steden in het buitenland.
  1. Vanuit de Digitale Collectie ErfGeo Enrichment service wordt nu exact gezocht op https://api.histograph.io in plaats van ‘fuzzy’.
  1. De term ‘Nederland’ wordt niet meer als zoekvraag gesteld: te vaak leverde dit het plaatsje Nederland in Overijssel. Bovendien voegt het nauwelijks iets toe (of zou het zelfs misleidend zijn) om de geo-coördinaten van het land Nederland bij het record op te nemen (in elk geval in de context waarmee we nu werken).
  1. Records die al geo-coördinaten bevatten, worden niet geprobeerd verder te verrijken.

Intussen blijven we zoeken naar manieren om het aantal verkeerde matches nog verder naar beneden te krijgen. Een voorbeeld van locatieaanduidingen die nog niet goed matchen zijn namen van rivieren en meren, zoals “Oosterschelde”, “Grevelingen”, etc., omdat de HistoGraph wel de straatnamen kent die daarmee overeenkomen, maar nog niet de wateren met die naam.