Open source

De rekensommen achter de tools, gepubliceerd als bibliotheken die je kunt installeren en lezen.

Bekijk de repositories MIT · geen afhankelijkheden

Waarom de rekensommen openbaar zijn

Elke tool hier is rekenwerk plus een formulier. Het rekenwerk is het deel dat goed moet zijn, en het deel dat het controleren waard is, dus het wordt apart gepubliceerd, apart getest en onder een licentie gezet waarmee iedereen het voor alles kan gebruiken.

Dat is geen vrijgevigheid. Een formule die alleen in een webpagina bestaat, kan niet worden nagekeken, niet worden hergebruikt en niet worden verbeterd door iemand die het beter weet. Als bibliotheek kan hij alle drie, en de tools op deze site worden er beter van.

tooltiki-image-tools

Alles wat je over een afbeelding kunt weten zonder hem te decoderen: afmetingen, formaat, resolutie en EXIF-oriëntatie rechtstreeks uit de bytes, maatvoering voor verkleinen en bijsnijden, srcset-generatie, en afmetingen voor print en scherm.

De lastige gevallen zijn de reden dat hij bestaat. Een telefoon slaat een staande foto op als liggend beeld met een vlag die zegt welke kant boven is, dus een programma dat de header naïef leest, zet elke thumbnail op zijn kant. Apple vult oneven afmetingen aan tot een even kader en bewaart een uitsnede die ze terugzet, dus een foto van 37 bij 23 pixels wordt opgeslagen als 38 bij 24, en de meeste code die ernaar kijkt, meldt het verkeerd. Beide worden afgehandeld.

npm install tooltiki-image-tools

Het is dezelfde rekenkunde als Foto verkleinen, de formaatconverters en de berekening van het afdrukformaat op deze site, apart gezet en apart getest.

Broncode op GitHub · Pakket op npm

tooltiki-financial

Financiële rekenkunde die haar werk laat zien: aflossingsschema’s rij voor rij, JKP met de kosten echt meegeteld, IRR en XIRR, samengestelde groei, progressieve belasting met de uitsplitsing per schijf, en geld dat in drieën wordt verdeeld zonder een cent kwijt te raken.

Hij rekent ook lineaire aflossing door, de lineaire hypotheek, waarbij elke maand hetzelfde deel van de hoofdsom wordt afgelost en de termijn daalt met de schuld. Zo leent een groot deel van Europa, en niets anders op npm tekent het voor je uit.

Er zitten geen belastingtarieven in. Schijven verschuiven elk januari, en een bibliotheek die ze meelevert, klopt het jaar erna niet meer en stilletjes niet voor iedereen die niet bijwerkte, dus ze gaan erin als gegevens.

npm install tooltiki-financial

Het is dezelfde rekenkunde als de hypotheek calculator, de rente-op-rentecalculator en de inflatiecalculator.

Broncode op GitHub · Pakket op npm

tooltiki-pdf

Een PDF-schrijver met niets eronder. Standaard-14-tekst gemeten tegen de gepubliceerde Adobe-tekenbreedtes, zodat een geldkolom precies op de punt rechts uitlijnt en niet ongeveer; gevulde en omlijnde rechthoeken; lijnen; afbeeldingen, met transparantie doorgegeven als echt zacht masker; en JPEG byte voor byte ingesloten in plaats van gedecodeerd en opnieuw gecodeerd. Daarnaast de twee kleine dingen die een batchtool altijd nodig blijkt te hebben: paginabereiken getypt zoals mensen ze in een afdrukvenster typen, en een zip-schrijver zonder compressie.

Hij bestaat omdat de alternatieven groot zijn. Een pagina die een bon opmaakt, hoort daarvoor geen complete PDF-engine mee te sturen, en de toolpagina’s hier hebben een harde grens voor hoeveel JavaScript ze mogen laden. Compressie gaat via CompressionStream, die het platform al levert, dus het pakket heeft niets van npm nodig en dezelfde build draait in een browser, een worker, Node, Deno en Bun.

Om het ronduit te zeggen: hij schrijft PDF’s en kan ze niet lezen. Er zit geen parser in, dus hij kan geen bestaand bestand openen, samenvoegen, splitsen of verkleinen. Daarvoor is pdf-lib het juiste antwoord, en de README zegt dat ook. De functies voor paginabereiken zoeken uit welke pagina’s iemand vroeg; die nummers doorgeven aan iets wat ze kan uitknippen, is een ander klusje.

Het is dezelfde code als de factuurgenerator, de certificaatmaker en de afdrukbare kalender: elke tool hier die je een PDF geeft die hij zelf heeft getekend.

Hij staat nu op GitHub en nog niet op npm; de eerste getagde release publiceert hem. Broncode op GitHub

Wat ze niet zijn

Geen van drieën doet meer dan hij belooft. De afbeeldingsbibliotheek decodeert, codeert of verkleint nooit één pixel; hij rekent de getallen uit die je aan iets geeft wat dat wel doet. De financiële heeft geen grootboek, geen wisselkoersen en geen idee van een transactie. De PDF-bibliotheek schrijft bestanden en kan ze niet lezen.

Die grenzen zijn het punt, geen excuus ervoor. Ze zijn de reden dat alle drie geen enkele afhankelijkheid hebben, dat ze ongewijzigd draaien in een browser, een worker of op een server, en dat elk klein genoeg is om in een middag door te lezen en zelf te beslissen of hij klopt. Een bibliotheek die ook de andere helft zou doen, zou iets anders en veel groters zijn, en daar bestaan al goede van.

Licentie, en hoe je kunt helpen

MIT, allemaal. Gebruik ze commercieel, fork ze, stop ze in iets gesloten. Er valt niets te vragen en niets te vermelden.

Vind je een verkeerd getal, dan is dat de melding die het waard is. Voeg bij de financiële bibliotheek de bron toe die vastlegt wat het juiste antwoord hoort te zijn; bij de afbeeldingsbibliotheek het bestand dat verkeerd wordt teruggelezen; bij de PDF-bibliotheek het document dat een lezer weigert te openen. Elke repository neemt issues en pull requests aan.

Er volgen er meer zodra categorieën met genoeg inhoud zover zijn dat ze op zichzelf kunnen staan. Eén repository per categorie, of die categorie nu iets bevat of niet, zou opvulling zijn en geen open source.

Vragen

Nee. De MIT-licentie vraagt alleen dat de copyrightvermelding met de broncode meereist, en verder niets. Je hoeft niet terug te linken, ons te noemen of toestemming te vragen.