Portfolio van Daniel van Kesteren


internetradio

Uit onvrede over wat de markt te bieden heeft, ben ik begonnen met het bouwen van mijn eigen internetradio. Niet alleen software geschreven in bash, maar ook een echt apparaat. Voor het hart gebruik ik een raspberry pi met linux. Verder gebruik ik het chassis van een oude sattelietontvanger. Op de foto de tussenstand.

De display wil ik vervangen met een vacuum fluorescent display, met de kenmerkende blauwe gloed. Dat blijkt echter niet zo gemakkelijk te zijn als het lijkt. Daarom een miniatuur monitor ernaast. Wel heb ik er nu 10 werkende knoppen op gemonteerd. Later meer.
Picture of the internetradio device

Omrecorder

De omrecorder is software. Het is vooral bedoeld om op een makkelijke en betrouwbare manier een compact disc digital audio met CD-TEXT te kunnen maken. Daarnaast kan de omrecorder met behulp van de minidisc-tools een minidisc voorzien van de titels. De titels worden van internet gehaald, uit Musicbrainz. Dat kan met het ingeven van performer en albumnaam, maar ook aan de hand van een compactdisc. Daarnaast kan een playlist worden gemaakt van youtube audio en kan deze afgespeeld worden. Via een optical link is de computer verbonden met een minidisc recorder en kan dit afspelen dus vastleggen.

De omrecorder is geschreven in bash en heeft een "recht op een neer" menustructuur.

Picture of the Omrecorder menu

Amdb

De amdb staat voor Audio Media Data Base. De afkorting is een knipoog naar de cmdb. De database staat in postgreSQL en de interface is geschreven in bash. Het is een simpele manier om geluidsdragers zoals minidisc, compact disc, vinyl disc, reel to reel tape en compact cassette (en elk ander formaat) in een database te zetten en zodoende het overzicht op de verzameling te vergroten. Met dezelfde "recht op en neer" menustructuur als de omrecorder.

Picture of listing content in amdb

dtools

dtools is kort voor de daniel tools, maar het is ook een knipoog naar systemd. Niet dat ik gecharmeerd ben van systemd, integendeel, geef mij maar het oude system V. Maar dsystem was wel leuk gevonden en het was de start van de dtools. Het is een verzameling van applicaties voor het dagelijks beheer van mijn netwerk. Het bestaat uit twee servers, zes desktops, zes laptops, drie terminals en een palmtop, Binnenkort ga ik mijn binnenrouter vervangen met een linux router. En linux staat op het overgrote deel van de hardware net genoemd. Alles is geschreven in bash.

De dtools zijn ontstaan in een tijd dat linux nog iets was dat je het echt helemaal zelf moest onderhouden. Het begon met een cronjob, doe om 0 uur de system upgrades en om 2 uur een rapportje over disk usage. Het is uitgegroeid tot een verfijnde set van tools die rekening houden met verschillende distributies (devuan/debian, slackware en postmarketos) en het onderscheid dat ik heb tussen laptops, desktops en servers. Het is mijn bedoeling om deze binnenkort te publiceren op github, net zoals de bovenstaande grote projecten.

Hieronder een overzicht van de belangrijkste dtools.

s e r v e r   t o o l s
dsystem.sh
- aangeroepen vanaf cron om 00:15 of boot time
- voor server only
- run time locking
dsystem.sh doet kleine taken zelf, voor grotere taken worden andere dtools aangeroepen. Kleinere taken zijn o.a. het overzicht van de geraadpleegde tijdservers (ntpq -p), draaiende processen (ps -axjf) en netwerkconnecties (netstat -e4 | grep -v domain), alsmede een hardwareoverzicht.
dsysbackup.sh
- configuratie in /local/etc/dsysbackup.conf
- keuze uit full/diff, monthly/weekly
- optional gpg encryption
- media keuze onbeperkt, in unix is alles een file
- ddumpsql.sh voor dagelijkse dump postgres
- ddumpldap.sh voor dagelijkse dump openldap
dsysbackup in default mode maakt op de eerste dag van de maand een full system backup. Op de andere dagen worden er diffentiele backups gemaakt. Op de eerste van de maand worden na het maken van de full backup de oude diffs verplaatst naar de diff directory, nadat de oude, oude diffs zijn gewist. De oude full wordt naar de full directory verplaatst. Op 1 januari wordt de full van het jaar daarvoor in hist geplaatst. Fulls ouder dan een jaar worden elke maand gewist. Hiernaast worden backups gemaakt op usb sticks en tapes. Want een backup is pas een backup als je die buiten het pand bewaard.
dsyncslackmirror.sh
dpackrdimg.sh
dmkinstalltarball.sh
Deze programma's zorgen ervoor dat de locale slackwaremirror up to date is, dat de het installimage voor slackware up to date is en dat de second stage install voor alle distros up to date is.
dcleanstations.sh
dcheckstations.sh
De werkstations maken backups van de etc, de local en de root directory en sturen een copy naar de server. Om te voorkomen dat de stations directory volloopt zorgt dcleanstations.sh voor een opschoning en bewaart backups in full en hist vergelijkbaar met dsysbackup.sh. dcheckstations.sh rapporteert van elk werkstation wanneer er voor het laatst een backup is gemaakt en wanneer dat station voor het laatst online was.
w o r k s t a t i o n   t o o l s desktops, laptops, palmtops*
dsystemws.sh
- op desktops aangeroepen door cron
- op laptops door dsystemusr.sh
- voor workstations only
- run time locking
dsystemws.sh doet in het klein wat dsystem.sh op de server doet en op een iets andere manier. Om te beginnen roept het update.sh aan die install.tgz naar binnen haalt. Naast installscripts bevinden zich hierin ook gemodificeerde configuratie files en de local files.
dupdate.sh dupdate.sh haalt install.tgz binnen. Op desktops zijn de local bin, etc en sbin directory nfs gemount vanaf de server. Maar op laptops en niet. Daarom copiert het script update.sh, dsynclocal.sh en dupdsys.sh naar de local sbin directory.
dsynclocal.sh
dsynclocal.sh synct met behulp van rsync de local directorys. Op desktops alleen share en lib, op laptops ook etc, bin en sbin. Uitgezonderd zijn de files die hier in deze tabel worden genoemd, omdat die hun eigen updatemechanisme hebben. De sync is update en copy only, delete wordt niet gedaan, omdat er echte local files kunnen zijn. Er is een delete mechanisme, maar dat moet met de hand in werking worden gezet.
dupgrade.sh dupgrade.sh voert veranderingen door zoals een opdracht om een bepaald programma te installeren, een file te modificeren. Hierbij kan onderscheid gemaakt worden naar het type werkstation, distro, release en hostname. Dit script update update.sh, alleen op laptops.
dupdsys.sh
- laptops only
- aangeroepen vanaf dsystemusr.sh
dupdsys.sh update dsystemws.sh omdat dit niet gedaan kan worden door de andere updatemechanismes die allemaal worden aangeroepen door dsystemws.sh. Uiteraard speelt dit probleem allen maar op laptops.
dsystemusr.sh Op laptops zit dsystemws.sh niet in de cron. Er is pas netwerk als de user de moeite neemt om in te loggen, tenzij de ethernetkabel is ingeplugt. Maar dat is bijna nooit het geval. Vandaar dat de user zelf opdracht moet geven tot het uitvoeren van systeemonderhoud.
dnmta.sh
- aangeroepen vanaf rc.local
dnmta,sh is de dtools network management agent. Deze stuurt met intervallen van 30 seconden een report naar de server over hoe vol de schijven zijn, hoe druk de processor is en hoeveel geheugen in gebruik is.
dnmt.sh
- user tool
deze tool kan op elk station worden gebruikt, maar komt pas tot zijn recht op de server omdat daar de rapporten van alle stations staan. Overzicht van up/down, disk- cpu- en mem usage en date last online. Op desktops werkt alleen het up/down overzicht. Op laptops werkt zelfs dat niet, tenzij ze via ethernet zijn verbonden.
* een palmtop is een hele kleine laptop

Projecten in portefeuille:

- Reparatie van een jaren 60 Philips koffer bandrecorder
- Reparatie van een jaren 60 Garrard koffer platenwisselaar
- Reparatie van een jaren 70 Philips bandrecorder
- Reparatie van drie laserdiskspelers
- Reparatie van een printer
- Bouw van een superklok met raspberry pi en mini crt
- Bouw van een vinyl recorder

home

laatste update van deze pagina was op 9 oktober 2025