Angular wat een ramp

okt 162017

Angular is een framework om webapplicaties te ontwikkelen. De afgelopen 8 maanden heb ik hier mee leren werken. In dit stukje belicht ik waarom ik Angular liever niet meer voor een volgende applicatie zou inzetten.

Typescript
Typescript is een nieuwe "taal" die je moet leren om een Angular project te bouwen. Het lijkt er op of men wil proberen een statische manier van programmeren in javascript te krijgen. Een hopeloze poging javascript aantrekkelijk te maken voor C# ontwikkelaars. Typscript wordt door een parser weer in javascript vertaald. Deze parser zorgt er, tijdens ontwikkelen, voor dat het even duurt voordat je na een aanpassing de wijziging op je webpagina ziet. Een verandering in javascript zie je direct na een refresh van je webpagina. Niet alle editors ondersteunen typescript. Je bent aangewezen op Atom met plugin, Visual Studio Code of WebStorm. Niet alle browsers ondersteunen typescript debugging.

Package hel
Met de package manager npm kun je van allerlei modules aan je project toevoegen. Kijk hier mee uit. Ik heb bij de migratie van Angular 2 naar 4 best veel moeten herschrijven. Zo kan het zijn dat een package niet langer wordt doorontwikkeld. Of de ontwikkelaar heeft wijzigingen aangebracht die er voor zorgen dat je website niet meer werkt. Bijvoorbeeld bij Angular Material tags en modules beginnen in eens met <mat.. en Mat.. i.p.v. <md.. en Md.. . De documentatie bij veel packages is ronduit slecht. Zo moet je er vaak zelf achter zien te komen dat je afhankelijkheden (Modules) nodig hebt. Er is een complete wildgroei van packages op o.a. npmjs en github waar niet meer uit te komen is.

Overgecompliceerd
Door een brei aan technieken (modules, directives, routes, observables, nodejs, npm, ng) is het een complex raamwerk. Overgecompliceerd naar mijn idee. Je bent vrij lang bezig om Angular onder de knie te krijgen. Een framework zou werk uit handen moeten nemen, niet complexer moeten maken.

Conclusie
Voor de ontwikkeling ben je afhankelijk van Chrome als browser en debugger. Gezien Chrome een groot privacy lek is (Google) is dit een grote min. Javascript is prima te doorgronden en te structureren, typescript is een overbodig verzinsel. Structuur in je projecten kun je zelf ook aanbrengen daar heb je Angular niet voor nodig. En als je eenmaal alles een beetje door hebt in Angular ben je niet productiever dan wanneer je alleen javascript zou gebruiken. Dus als je snel websites wilt ontwikkelen laat Angular dan links liggen.

Programmeerkeuken

aug 302017

Ik programmeer bijna dagelijks in C# met Visual Studio. Prima taal en ontwikkelomgeving. Python en PHP hebben met name als programmeertaal voor mijn hobbyprojecten de voorkeur.

Vergelijk Microsoft met een 3 sterren restaurant. De meeste koks in zo'n restaurant hebben een blinkende hi-tech keuken(Visual Studio en tools) met veel ingredienten beschikbaar(keur van libs en functionaliteit). Hiermee maken ze veel gangen, ingewikkelde gerechten (applicatie lagen). Alleen het eindresultaat is het net niet, food voor status en snobs. Ze lijken meer bezig te zijn met "kijk eens wat ik kan" in plaats van een lekker gerecht te maken. Op weg naar huis verlang je naar een friet speciaal....

Met een editor zoals Atom of Geany en een taal als Python of PHP heb je, een rommelige keuken, een aantal goede basisingredienten tot je beschikking die je heerlijk bij elkaar kunt gooien en als resultaat heb je een heerlijke hap zoals bij de Turk of bij de Chinees. Een geweldig broodje donner of hap bami met babi pangang, lekker veel, buik goed vol en met een voldaan gevoel naar huis.

Pruimenjam

jul 312017

Vandaag pruimenjam gemaakt. Het is niet de eerste keer dat ik dat doe. Elk jaar in augustus zit ons pruimen boompje vol. Te veel om zo op de hand op te eten. Daarom verwerk ik het meeste in jam of compot. Deze keer kreeg ik een doosje pruimen van de buurvrouw.

undefined

Jam maken is eenvoudig maar wel bewerkelijk. Alle pruimen moeten ontpit worden. En de glazen potten om de jam in te bewaren moeten goed worden uitgekookt. Eerst in de vaatwasser en daarna kook ik ze nog eens uit in een grote pan. De deksels moet je ook meenemen en steriel maken.

undefinedundefined

Als je alle pruimen in de pan hebt om te gaan koken. En de potten staan steriel klaar kun je verder gaan. Als je compot wilt dan laat je de pruimen zo heel mogelijk. Wil je jam dan maak je de pruimen eerst even fijn met een mixer. Bij de pruimen voeg je geleisuiker toe. Ongeveer 500 gram op 1,2 kilo fruit. Persoonlijk hou ik niet van hele zoete jam. Ik neem meestal de verhouding 500 gram op 2 kilo pruimen. Maar dan moet je er wel rekening mee houden dat de jam dan minder lang houdbaar is. De geleisuiker zorgt namelijk voor de conserverende werking. Het geheel breng je zachtjes aan de kook een laat een paar minuutjes doorkoken.

undefined

De potten staan klaar en vullen maar. Zorg dat je de rand van de pot niet met je handen vastpakt. Steriel werken! Is de pot gevuld met jam, dan doe je de deksel erop, stevig aandraaien. Hierna zet de pot op zijn kop gedurende 5-10 minuten zodat de pot goed vacuum trekt. Laat de pot goed afkoelen. Hierna kun je deze in een koele ruimte bewaren.

undefined

De mirabelle

jul 312017

(Prunus domestica subsp. syriaca)

We hebben deze pruim, de boom, al een aantal jaartjes in onze achtertuin staan. De boom is momenteel een goede 6 meter hoog en beslaat zo'n beetje de breedte van ons achtertuintje. Door regelmatig te snoeien is ie prima in toom te houden. Ondanks de grootte misstaat ie niet, de takken hangen dusdanig hoog dat er prima onderdoor te lopen is. Eind maart/begin april staat deze boom vol in bloei. Een prachtig gezicht om te zien, de boom is dan bijna helemaal wit van de bloessem.

Met een goed jaar met voldoende bijen, hommels en andere insecten hebben we veel vruchten. Het is een zelfbestuivende boom. Dus eentje in de tuin is voldoende om vruchten te krijgen. De boom lijkt af en toe een jaar rust te hebben met minder vruchten. De meeste jaren hangt de boom helemaal vol, dusdanig dat takken flink doorhangen en zelfs kunnen breken onder het gewicht. De Mirabelle pruim is een kleine warmgeel gekleurde pruim met hier en daar paarse vlekjes. De pruim is heel zoet en heerlijk om zo van de boom de eten.

Bij een goed jaar komt er veel van de boom. Goed voor een 2-3 schalen om zo te eten en een flinke hoeveelheid om een aantal potten compotte of jam van te maken.

De Mirabelle heeft zijn oorsprong in Azië maar men kent de boom vooral vanuit Frankrijk. Met name rond Metz en Nancy. In die streken rond deze steden wordt de pruim verwerkt in gebak en taart en worden er liqueuren van gemaakt.

Een beetje geduld heb je wel nodig voor de eerste vruchten aan de boom komen. Wanneer je met een klein boompje begint duurt het 5-6 jaar voordat deze vruchten gaat dragen.

Frameworks

jul 312017

Frameworks worden te pas en te onpas gebruikt. Er lijkt wel een soort wildgroei van allerlei raamwerken te zijn voor de programmeur. Frameworks om sites te bouwen, denk aan Symphony voor PHP, Ruby on Rails, Django en template engines zoals Smarty. En op javascript gebaseerde frameworks zoals React en Angular. Ik ben hier op terug aan het komen en in eerste instantie not to framework.

Een framework lijkt in eerste instantie vaak een geweldige tool en bereik je in korte tijd een leuk resultaat. Echter moet je je er van bewust zijn dat het framework wat je toepast niet het eeuwige leven heeft. Je bent afhankelijk van de ontwikkelaars van het framework dat je toepast. De makers van deze frameworks en engines hebben een bepaald doel voor ogen gehad wat voor hun blijkbaar werkte en die filosofie moet ook werken voor jouw team en projecten. Sommige frameworks hebben daarnaast een best hoge leercurve. Kijk bijvoorbeeld naar Angular (2 en hoger). Je bent daar best een tijdje mee bezig voordat je alle facetten van het framework door hebt en productief bent. Je leert er eigenlijk een taal en werkwijze bij.

Nog even over template engines waarvan Smarty een mooi voorbeeld is. Niet echt een framework maar kan wel in dezelfde 'categorie' meegenomen worden. Je hebt PHP, een prima taal om dynamische websites te bouwen. Je maakt een HTML pagina en plaats op bepaalde plekken dynamisch informatie met PHP. Dus de HTML pagina kun je zien als template die je vult met een scripting taal PHP. Waarom dan Smarty (een template engine) gebruiken? Je hebt al een template engine en dat is je PHP. Met PHP maar ook in andere scripttalen kun je prima een scheiding maken tussen inhoud, opmaak en dynamische elementen. Template engines zijn in mijn ogen dan ook kul.

Mijn advies is, bij kleine projecten not to framework. Creeer je eigen structuur in welke taal je ook prettig vind. Met een framework voeg je onnodig complexiteit toe en dat is voor kleine websites overkill. Bij grote complexe projecten kan een framework voordeel bieden. Het dwingt jou en/of je team in een bepaalde structuur te werken. Hiermee kun je gemakkelijker afdwingen dat iedere ontwikkelaar op de zelfde manier nieuwe onderdelen in het project bouwt. Kies dan wel voor een framework dat zich al min of meer bewezen heeft in de laatste jaren en waar actief aan wordt ontwikkeld zodat je ook de komende jaren op het gekozen framework kunt bouwen.