Het einde van 2022 en het begin van het nieuwe jaar stonden in het teken van het stoppen met twee initiatieven: Tweakers Plus en Tweakblogs. Inmiddels zijn beide niet meer beschikbaar. We zijn gestart met een adblockcheck op verdiepende artikelen en hebben een advertentievrije podcastfeed gemaakt voor abonnees. Aan het eind een update over een technische verbetering in de databasestructuur die in de afgelopen sprints onze aandacht vroeg.
Einde van Plus
Op 9 januari zijn het Plus-abonnement en de Plus-artikelen definitief vervallen. Voorafgaand hieraan hebben we alle Plus- en Elite-abonnees geïnformeerd en de mogelijkheid geboden het abonnement op te zeggen. Plus-abonnees die hun abonnement behielden, zijn overgezet op een Hero-abonnement. Inmiddels zijn ook alle verwijzingen naar Plus van de site verwijderd, waaronder de labels en filters in het nieuws- en reviewoverzicht.
Tweakers is eind 2020 begonnen met Plus-artikelen. We hoopten daarmee minder afhankelijk te worden van onze grote adverteerders. Plus zou ons ruimte geven om te investeren in redactiecapaciteit, waardoor er meer ruimte was voor uitgebreide achtergrondartikelen. De redactie schreef er meer dan 500 en collega Tijs van de redactie heeft een overzicht gemaakt van het beste van Tweakers Plus. Deze artikelen kun je nu allemaal gratis teruglezen. Je hebt hiervoor geen abonnement nodig en ook geen account. Het enige dat we van je vragen, is dat je je adblocker uitschakelt.
Start van adblockcheck
Want zoals eerder aangekondigd blijft de redactie ook in de toekomst verdiepende artikelen schrijven. Dat kost veel tijd en moeite, dus zoeken we naar een weg om daar wat tegenover te stellen. Daarom hebben we besloten om bij een deel van de content een adblockcheck te doen. Die ziet er zo uit:
Het is niet zo dat we de Plus-paywall een-op-een vervangen, maar het zal veelal wel om vergelijkbare, verdiepende content gaan. Er zijn geen plannen om die check bij nieuws of producttests in te voeren, en ook niet bij andere onderdelen op de site. De instructies om voor Tweakers een uitzondering te maken in je adblocker, vind je op deze pagina.
Verwijdering Tweakblogs
Eind oktober vorig jaar kondigden we aan dat we afscheid gingen nemen van Tweakblogs. In de afgelopen jaren is het gebruik van Tweakblogs fors teruggelopen en de laatste tijd werd het nauwelijks nog gebruikt. In de voorbije maanden hebben we de eigenaren van een Tweakblog de mogelijkheid gegeven hun data te downloaden. Het verwijderen van Tweakblogs is nu afgerond en de verwijzingen op Tweakers zelf naar de blogs zijn niet meer beschikbaar. De exportlink voor bloghouders blijft beschikbaar tot 1 maart 2023.
Technische verbetering databasestructuur
Dat Tweakers een oude codebase heeft, is soms goed te merken. Een voorbeeld hiervan was terug te vinden in onze database. We gebruiken indexen in onze database om het ophalen van gegevens snel te houden. Toen het forum gebouwd werd, ondersteunde MySQL indexen nog niet zo goed als vandaag. Een index op een kolom kon alleen gebruikt worden als deze oplopend werd gelezen. Dus als je gegevens van laag naar hoog sorteerde, kon MySQL de index gebruiken. Wilde je echter van hoog naar laag sorteren, om bijvoorbeeld posts van een gebruiker aflopend op datum te sorteren, dan kon de database de index niet gebruiken. Hierdoor waren deze query's erg langzaam.
Om daar omheen te werken, gebruikten we in sommige situaties twee kolommen. Een kolom voor de datum in aantal seconden sinds epoch om te kunnen sorteren van oud naar nieuw. En een kolom met dezelfde tijd, maar dan afgetrokken van de 'maximale tijd' in een tweede kolom voor het sorteren van nieuw naar oud. Op beide kolommen kon een index worden gemaakt waarmee de database in beide situaties even snel was. De maximale tijd is in dit geval 07:28:15 op 7 februari 2106 en komt overeen met de hoogste waarde die in deze kolom kan worden opgeslagen.
Er zitten echter drie problemen aan deze manier van werken. Allereerst sla je data twee keer op, wat extra ruimte inneemt. Ten tweede kunnen deze extra kolommen verwarrend zijn als je met deze code werkt, omdat de data uit de database altijd aangepast moet worden voordat je ermee kunt werken. Als laatste krijg je een probleem als er berichten worden geplaatst na de maximale tijd, omdat het resultaat dan negatief wordt. De kolommen kunnen geen negatieve waarden aan, waardoor deze tijd altijd met een onvoorspelbare waarde zal worden opgeslagen en de sortering ineens onbepaald zal zijn. Overigens speelt het overflow-probleem ook voor de datumkolom zelf natuurlijk. Dat is echter op te lossen door het datatype van de kolom te verruimen van een 4 byte unsigned integer naar een 8 byte unsigned integer, waardoor het probleem voorlopig niet meer voorkomt.
Gelukkig is MySQL al jaren prima in staat om een index ook omgekeerd te gebruiken bij de sortering, waardoor het oorspronkelijke probleem niet meer relevant is. Daarom hebben we besloten om de inverted kolommen te verwijderen. Twee van de tabellen met zulke inverted kolommen hadden samen zo'n 60 miljoen records. Dat had tot gevolg dat veranderingen in de structuur van deze tabellen erg lang duurden. Mocht de database in die tussentijd deze tabellen niet kunnen uitlezen (locking), dan zouden jullie daar als gebruikers van het forum hinder van ondervinden. Gelukkig kan MySQL in bepaalde situaties online DDL operaties uitvoeren, waardoor de tabellen tijdens de migratie gewoon te gebruiken zijn en niemand iets moet merken van de migratie. Nadat we dit in verschillende omgevingen hebben getest, hebben we de migraties in december stapsgewijs uitgevoerd. Daar hebben jullie, voor zover wij kunnen zien, niets van gemerkt
En verder
- Sinds kort kun je pre-rolladvertenties tegenkomen in de Tweakers Podcast. Voor abonnees hebben we een advertentievrije feed beschikbaar gesteld via het Abonneeforum.
- In de abonnementsinstellingen is voor abonnees een optie toegevoegd om de maandelijkse factuur automatisch te laten mailen.
- Door een bug werd er een verkeerde bevestigingsmail verstuurd na het afsluiten van een maandabonnement. Dat is nu verholpen.
- De vormgeving van de reactiescorefilter onderaan artikelen is aangepast, zodat de knoppen beter leesbaar zijn.