`
MySite

MySite – een eigen CMS met Perl en Dancer2

Deze categorie gaat over het bouwen van een eigen CMS met Perl en Dancer2, inclusief onderwerpen zoals webarchitectuur, observability en SEO.

Heel vroeger had ik een site die ik vulde met artikelen over Slackware. Gebaseerd op MySQL en PHP, de artikelen geschreven in SGML. Tot ik op een gegeven moment WordPress ontdekte en ook een aantal jaren gebruikt heb. En hoewel dat voor anderen waarschijnlijk DE oplossing is, deed het voor mij niet wat ik wilde.

Dus ik besloot een eigen CMS te bouwen, gebaseerd op Perl en Dancer2, SQLite als database en Markdown als contentformat. Niet perfect en gelikt als WordPress, maar ik snap het wel en kan het uitleggen.


Ik begon met het vermoeden dat SQLite misschien een bottleneck vormde binnen MySite. Met behulp van Prometheus, Loki en zelfgebouwde metrics bleek het verhaal een stuk ingewikkelder. SQLite presteert verrassend goed, markdown rendering via Pandoc blijkt een veel grotere kostenpost en er blijft zelfs een aanzienlijk deel van iedere HTTP-request over dat ik nog niet volledig kan verklaren. Een verslag van een observability-onderzoek dat uiteindelijk veel minder over SQLite bleek te gaan dan ik vooraf dacht.

Hoe een zoektocht naar trage requests leidde van SQLite naar observability, Prometheus, Memcached en uiteindelijk een onverwachte ontwerpbeslissing rond markdown-rendering.

Vroeger was een unieke zoekterm genoeg om gevonden te worden. Tegenwoordig willen zoekmachines niet alleen weten waar een pagina over gaat, maar vooral wat een pagina is. Een persoonlijke verkenning van moderne SEO, structured data, JSON-LD en het onverwachte moment waarop een verzameling JSON-objecten ineens veranderde in een gegevensmodel.

Dit artikel onderzoekt hoe kleine technische keuzes in softwareontwikkeling onverwacht kunnen uitgroeien tot een wirwar van nieuwe ideeën, afhankelijkheden en complexiteit – het bekende "can of worms"-effect. Aan de hand van praktijkvoorbeelden en reflectie wordt duidelijk hoe scope-creep en keuzestress ontstaan, en hoe je met focus, prioritering (zoals de MoSCoW-methode) en iteratief werken grip kunt houden op een groeiend project.

De site heeft een nieuwe header en menubalk gekregen, waarmee een oude GitHub-wens eindelijk is afgerond. Ondanks frustraties met CSS en uitlijning is er nu een duidelijke scheiding tussen header en menu. Het resultaat is niet perfect, maar vormt wel een solide basis om verder te bouwen aan de uitstraling en functionaliteit van de site.

Dit artikel beschrijft recente technische vernieuwingen op de site, waaronder de introductie van een moderne, uitbreidbare Markdown-editor (Toast UI Editor) en de implementatie van veilige OAuth2-inlogmogelijkheden met Google. De auteur licht toe waarom deze keuzes zijn gemaakt, hoe privacy wordt gewaarborgd, en welke toekomstige functies in ontwikkeling zijn. Het artikel biedt inzicht in het leerproces en de experimentele aanpak van het project, en nodigt lezers uit om feedback of suggesties te delen.

Deze update beschrijft de eerste verbeterpunten na de livegang van de site: onduidelijke samenvattingen op de homepage, foutieve links, eenvoudige header en footer, en inconsistent gebruik van categorie‑iconen. Een transparant kijkje in wat er nog moet worden aangepakt — en dit is pas het begin.

Deze site markeert een frisse start na jaren experimenteren met HTML, PHP, MySQL en later WordPress. Met prjv.nl is gekozen voor een volledig zelfgebouwd content management systeem, ontwikkeld in Perl met Dancer2, een SQLite‑database en maatwerkmodules in JavaScript. De site draait in een Docker‑container en gebruikt Google OAuth2 voor authenticatie. Het project is ontstaan uit de wens om volledige controle te hebben over de technologie en de creatieve vrijheid die open source biedt. Naast technische artikelen komen ook persoonlijke projecten zoals het bakken van desembrood aan bod. De site blijft actief in ontwikkeling en staat open voor feedback, verbeteringen en nieuwe ideeën.