Wat de *piep* is Flutter? [1]

Na een bezoekje aan mijn zwager en zwagerin, werd ik er weer eens op gewezen dat ik niet meer bij de tijd was met mijn ouderwetse iOS en Android ontwikkelkennis. Nu was er een multi platform ding, wel van Google, wat veel meer kon dan de cross platform zaken die we van vroeger kenden. Blijkbaar omdat er libraries gebruikt werden die dan weer platform specifiek waren.

Dus bij mij kwam snel de vraag naar boven: “wat is dat dan??” en we zijn goed en wel een aantal maanden verder, voordat ik er aan toe kom om er eens naar te kijken. Dus snel een clone gemaakt van de Flutter git repo, zodat je Flutter met alle tools en de Dart SDK ontvangt.

 

rub

Dat verliep een keertje foutloos 😉

Mocht je het niet op deze wijze willen downloaden, dan kun je het ook via deze link regelen.

Flutter is blijkbaar niet zo fancy pancy als wat ik gewend ben, dus het is voor het meest command based! Dus lekker rammelen in de terminal. Voelt net zoals als het ouderwetse programmeren. Begreep er nooit wat van dat er mensen waren die dat in de DOS edit boxje deden, terwijl je goede IDE’s ervoor kon gebruiken. Maar goed, elke nerd zijn eigen tik, zullen we maar denken.

Het goed zetten en ervoor zorgen dat je PATH ook de flutter commando’s kent door de bijbehorende bin directory kenbaar te maken.

dit doe je in je .bash_profile als je met een Mac werkt. Blijkbaar is dat weer iets anders voor de nieuwere mac users (.zshrc):

vi .bash_profile

helemaal onderaan voeg je het onderstaande toe:

export PATH="$PATH:$HOME/flutter/bin"

Daarna moet je het bestand opslaan. Bij vi is dat natuurlijk “:wq” … daarna de terminal sessie opnieuw laden met de nieuwe instellingen:

source .bash_profile

Dan checken of het goed is gegaan, door which flutter uit te voeren.

Controleren of het allemaal goed is geinstalleerd: flutter docter

Oh wat grappig. Want het commando is natuurlijk om te kijken of alles aanwezig is en alle verschillende dependencies voldaan zijn. Of dat patient nog onderzocht moet worden 🙂

Nou bij mij miste er blijkbaar nog wel wat. oh oeps .. typo: docter moest doctor zijn 😉

En opeens:

Dat was raar. Een tijdje staan staren naar het scherm, maar er kwam niets. Geen foutmelding, maar ik kwam ook niet meer in mijn Terminal terug. Dus maar CTRL-C gedaan en nogmaals hetzelfde commando, maar nu met -v om wat meer meldingen (verbose) terug te krijgen. Daarin was te zien dat er 3 onderdelen niet goed waren:

Dus weer snel overstappen om CocoaPods te installeren:

sudo gem install cocoapods

whoepsie … een dikke vette fout:

ERROR: Failed to build gem native extension

SO post: https://stackoverflow.com/questions/20939568/error-error-installing-cocoapods-error-failed-to-build-gem-native-extension

Dus weer aan het zoeken geslagen en blijkt dat de versie niet goed installeert met de bovenstaande instructie. Je kunt een oude versie installeren, zoals 1.8.4 ipv de in het artikel gevonden versie 1.10.0

met het commando brew install cocoapods moest het ook kunnen. Daar wordt geklaagd dat het bijna prehistorisch is en er toch echt wel eerst een update uitgevoerd moet worden:

brew update

met sudo ervoor krijg ik weer een andere foutmelding. Aargh .. command not found.

Dan maar kijken of ik een oudere versie kan installeren …

sudo gem install -n /usr/local/bin cocoapods -v 1.8.4

woohoo  dat lijkt beter te werken:

Dus nu nog zaken installeren. Dus eerst maar even de AndroidStudio IDE geinstalleerd. Had blijkbaar al een keer eerder wat geinstalleerd, maar daar had ik blijkbaar 50 maand geleden wat mee gedaan. Jemig.

Daarna heb ik via configuratie nog de commandline tools geinstalleerd en daarmee was de fout die eerder getoond werd verdwenen.

Dus ik moet de Android SDK updaten. Dacht al dat de huidige geinstaleerde versie van 50 maand geleden misschien wel wat gedateerd kon zijn 🙂

Dit doe ik dus niet via de commando’s die getoond worden, maar gewoon lekker via de studio:

Vinkje gezet bij Show Package Details, omdat de 29 versie er niet tussen stond. Dus ik heb gewoon de 29 en de latest geselecteerd.

de SDK werd niet geupdate, dus dat heb ik met een standaard check for updates gedaan.



Bleek nog niet genoeg te zijn, dus daarna nog een keertje gevogeld en dan ook weer het vinkje aangevinkt, zodat je ook de andere onderdelen te zien kreeg

Daarna nogmaals flutter doctor gedaan en alles was goed. Melding over de oude cocoapods, maar hopelijk gaat mij dat niet in de weg zitten.

Het commando “pod setup”  dat de cocoapods repo moet opzetten en nogal wat tijd kon kosten, was binnen een seconde klaar. Zonder enige tekst of foutmelding of what-so-ever.

sudo xcode-select --switch /Applications/Xcode.app/Contents/Developer sudo xcodebuild -license accept

Deze gingen weer net zo snel als de eerdere pod setup commando. Dat vertrouw ik natuurlijk niet helemaal. Maar dit is wel weer nacht nummer 2, dat ik er mee bezig ben. Heb wel stappen gemaakt, maar heb het geheel nog niet werkend. Zucht.

Homebrew gebruik je als een package manager voor het systeem. Cocoapods is blijkbaar hetzelfde, maar dan specifiek voor je projecten.

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

Oeh .. dat geeft een ander resultaat:

Dan ratelt het wat, maar komt er opeens een done in beeld. Gelukkig had ik ook een terminal met een top erin staan en daar zag ik dat het git commando heel wat resources vrat van mijn zeer verouderde iMac. Dus even geduldig gewacht en ja hoor .. warempel. Hij is zowaar klaar.

Daarna heb ik voor de grap het eerder mislukte brew update uitgevoerd en dat lukte nu ook met de melding dat alles already up-to-date was.

Dan nogmaals de gok voor brew install cocoapods!

Ging goed, behalve symlink aanmaken kon niet, omdat er reeds eentje aanwezig was. De melding was dat je deze ook handmatig kon verwijderen. Dat heb ik gedaan en daarmee ben ik direct benieuwd naar wat er meer achter weg komt.

Dat was snel, want er kwamen nog een melding naar voren over een symlink. Dus daarna het volgende commando dat in de help stond uitgevoerd:

brew link --overwrite cocoapods
Nogmaals het commando flutter doctor, want nu heb ik dus ook de nieuwste cocoapods versie. Echter krijg ik nu een error over XCode:
Moest nog wat commando’s plakken en tadaa:
AVD Manager
Hahaa .. nu het echte werk. Een emulator nodig, zodat je niet steeds een telefoon moet koppelen om je code te checken!
Kies via AVD Manager een telefoon of watch, of waar je ook maar een emulator voor wilt hebben. Klik op Next en kies de Android versie die je wilt gebruiken. Ik had alleen hele oude, dus die heb ik eerst via de Download link opgehaald. Ze zijn enorm groot, dus let op dat je niet teveel download … daarna op Next
 voor de zekerheid kun je het beste nog een check doen met het commando
flutter doctor
Ze geven aan dat je misschien nog de licenties moet accepteren, maar nadat ik bovenstaand commando had uitgevoerd, waren er geen issues. Uiteraard had ik het bijbehorende commando eerder ook al uitgevoerd.
IDE

Het is belangrijk dat je een IDE gebruikt die lekker bij je past. Het grappige is dat ik verwachte dat er ook een plugin zou zijn voor XCode 😉 Oh nee, dat is natuurlijk niet wenselijk vanuit het MacIntosh oogpunt.

  • Android Studio
  • Visual Studio Code
  • IntelliJ IDEA
Android Studio

Installeer de Plugin

Blijkbaar hebben we Dart nodig 😉 ..

stable Channel switch

Flutter App

woohoo .. we gaan een appje bouwen!

Dit is zo’n ding dat je via 2 routes kunt bewandelen. Je kunt het via de command prompt of in je IDE doen.
Deze eerste keer gaan we het via de command line doen, omdat nerdies altijd even moeten laten zien wat er allemaal gebeurd enzo. Daarna mag je van de grote bazen het gewoon in de IDE doen. Denk dat er genoeg mensen zullen zijn die dat hele command prompt gedoe, hopeloos vinden.

Ze geven aan dat het handig is om je projecten in een consistente plek op te slaan. Denk dat dit maar gewoon in mijn home dir moet zijn. Ik heb een directory aangemaakt: flutter-projects

/Users/dwightlooye/flutter-projects

Om een project te maken heeft flutter het volgende commando:

flutter create

Dit kan met een heleboel vlaggen, waarmee je je project kan configureren, maar voor de eenvoud houden we het hier bij de basis:

flutter create hello_flutter

Dit commando kan alleen uitgevoerd worden, indien je een internet verbinding hebt. Er wordt een zooi van project afhankelijkheden gedownload.

Dit kan ook door de vlag –offline toe te voegen:

flutter create --offline hello_flutter

Maar je moet uiteindelijk toch packages synchroniseren, dus een internet verbinding is onontbeerlijk! Voor degene die dat niet heeft, die zal deze blog ook niet zo snel gaan zitten lezen…vermoed ik 😉

Nu het project gemaakt is, moet je deze kunnen runnen. Daarvoor heb je een aparaat nodig dat aangesloten is, of een emulator. Hee, dat is handig. Dat was dat dingetje die we eerder hadden gemaakt.

Om te zien welke emulatoren er op je pc zitten, voer het volgende commando uit:

flutter emulators

Dit geeft het volgend lijstje:

Het rare is dat ik in het voorbeeld de Pixel 3 had geconfigureerd, maar de Flutter Cookbook die ik aan het volgen ben zegt dat je dan op de Mac alleen de iOS Simulator moet kiezen. Ben benieuwd of dit goed gaat werken, maar ik wil natuurlijk ook de Android variant eens in actie zien.

flutter emulators --launch apple_ios_simulator

Daar zag ik opeens een big mother iPhone 12 Pro op mijn scherm.

Na het commando om het project te draaien:

flutter run

Zie je een tijdje niets. Echter na een tijdje krijg je het Apple logo te zien en in de Terminal zie je ook dat er van alles wordt gedownload:

En in al die tijd, zit ik naar dat scherm te staren… we moeten misschien voorzichtig aan concluderen dat deze ooit eens super rappe iMac ook zijn beste tijd heeft gehad. Na een paar nummers geluisterd te hebben en op mijn telefoon wat verbaasd te zijn over tweets die worden gestuurd over een ministerie die zijn eigen werkwijze hanteert in de WOB en dan 50 extra juristen opzoekt om het sneller te kunnen gaan doen?

Dan eindelijk na minuten zie ik een scherm met daarin de Flutter app icon. Deze aangeklikt en weer langzaam aan zie ik een scherm opbouwen:

Daarna probeerde ik hetzelfde als met de Android versie, maar die knalde er mooi uit:

Dat moeten we dan later maar een keertje tegen het licht aan houden, toch? *bedoeld –> daar zien we nooit meer iets van terug*

Plaftorm taal keuze voor je app

Er zijn veel veranderingen geweest sinds ik een cursus Apps bouwen heb mogen volgen. Daar zijn de Swift- en Kotlin talen bijgekomen, respectievelijk voor iOS en Android. Dus je bent niet meer gebonden aan Objective-C en Java.

flutter create --ios-language swift --android-language kotlin hello_modern_languages

Dit zorgt ervoor dat Swift en Kotlin worden gebruikt. Maar dat is niet een definitieve keuze. Dat kan aangepast worden per project. Echter is het van belang om je te realiseren dat je voor het overgrote deel alleen maar Dart code gaat schrijven. Maakt dus niet echt uit welke keuze je in Flutter maakt.

Onder water wordt er een complete folder structuur opgezet:

Het mooie hiervan is dat je de Android folder in Android Studio kunt openen en de Runner.xcworkspace in de ios folder kun je openen in Xcode. Als je Native code of configuratie toevoegt, dan moet het dus in deze folders komen!

De lib folder is je hart en ziel van je Flutter App. Je moet er dus niets van vernaggelen, anders is het opeens een Flut App … sorry, die zat er al zo lang aan te komen. Hierin komt dus alle Dart code. Na aanmaken project, is er slechts 1 bestand:

main.dart

Dit is de main folder van je project, je moet het wel enigszins georganiseerd houden. Er komen voldoende subfolders hierin terecht en in het boek zullen een aantal verschillende architectuur stijlen aanbevolen worden.

In de root folder staat de pubspec.yaml. Hierin staan de zaken, zoals de app naam, versie etc. Er zit ook een pubspec.lock bestand in. Dit is een gegenereerd bestand dat gebruikt kan worden. Dit moet je dus ook niet aanpassen, maar laten staan. Dit is geen kopie, hij is namelijk anders opgemaakt, zoals hieronder te zien is:

pubspec.yaml
pubspec.lock

Als laatste is er ook nog een test folder die groot kan worden, naarmate je project groter wordt. De testen die erin komen te staan, zijn ook Dart code zaken. Unit testing wordt hier niet verder behandelt. Testen in Flutter kun je hier wat meer info vinden

Hot reload

In het cookbook staat beschreven dat stateful hot reload toch wel 1 van de belangrijkste mogelijkheden zijn dat Flutter te bieden heeft. Er staat in vermeld hoe dit in te stellen is, maar uiteraard is dat weer anders als je een aantal versies verder bent:

Cookbook example
My Android Studio example

Zo vervelend dit, maar ik heb de moeite genomen om te proberen of het hot reload werkt. Wat houdt het in?

Je start normaal gesproken een virtuele telefoon op, waar je de App op gaat uitvoeren. Als je dan wijzigingen doorvoert, dan is het meestal een nieuwe installatie van de App op het virtuele device en dat duurt natuurlijk behoorlijk lang.

In mijn geval heb ik in Android Studio de Open Project geselecteerd en daar heb ik de hello_flutter folder geselecteerd om te openen. Dan zie je een groen play knopje:

Dat zorgt ervoor dat de hello_flutter demo app op het virtuele device wordt geplaatst.

Als je dan nu code wijzigt in het main.dart bestand, dan zou je dat on the fly terug moeten zien in het device, zonder dat je daar zelf wat voor hoeft te doen. (In het cookbook staat dat je wat vinkjes moet zetten bij Flutter in Languages & Frameworks, maar zoals het plaatje al liet zien was er niet een optie in mijn versie!) Dus dit is een test om te zien of de functie Hot Reload nu standaard geactiveerd is.

Als je de kleur wijzigt (was blue en is nu green) en bijvoorbeeld de title (FlutApp Demo Home Page) van MyHomePage wijzigt. Op het moment dat je dit opslaat, dan zou het naar het device gepushed moeten worden en zonder dat je een refresh of reload actie hoeft uit te voeren is het direct zichtbaar.

En dit is zonder minuten wachten op een nieuwe reload. Dit ken ik nog wel van mijn spastische pogingen om een app te bouwen vroeger met XCode of met Android Studio en Java.

in minder dan een halve seconde was het resultaat dus zichtbaar en dat vind ik best wel een behoorlijke wow !

De samenvatting laat nog even weten dat Flutter een behoorlijk dynamisch iets is, gezien het feit dat het nog niet uitontwikkeld is. Daardoor zal via het doctor commando vaak een nieuwe versie gedownload moeten worden. Daarnaast worden de command line skills in een Terminal nog eens benadrukt en geven ze verschillende boeken als voorbeeld:

Command Line Fundamentals

Geen idee of ik daar nog een uitstapje in zal moeten maken. Dat zal de tijd leren 🙂

 

An Overview of Enterprise and IT Architecture 9.2 – Content Framework, tools and Repo

Janet werkt samen om met verschillende mensen en teams om blueprints en proces afspraken etc te maken

ACF zorgt ervoor dat iedereen dezelfde taal spreekt of iig snapt en kan vertalen

building block kan in het begin bijv. alleen een naam zijn en later in het proces een bouwblok dat volledig uitgewerkt en herbruikbaar is voor andere projecten.

Dit vergeet ik nog wel eens. Een ABB zorgt voor een beschrijving van een capability … en later een specificatie voor een Solution Building Block.

SBB die componenten die gebruikt worden om de vereiste capability mee te realiseren.

Consistent is een onderdeel dat van belang is, zodat een organisatie met meerdere afdelingen dit vastgelegd hebben en dan ook op terug kunnen grijpen.

Actors kunnen mensen zijn, maar ook bedrijf of een systeem dat interacteert

Roles is een rol die een actor heeft

Organizations  eenheid met eigen goals etc. business partners etc

Functions levert business unit capabilities.

Business Service ondersteund business capabilities en wordt door de organization beheerd

Process set van gelateerde activiteiten

Application Component is een encapsulation van application functionlaitei dat met application structure aligned is

Data entities: encapsulatie van data.

Technology service: technische capability vereist om een technische infrastructuur te leveren om applicaties te kunnen aanbieden. Dat kan cloud services zijn of interne infra netwerk structuur

Value stream is representatie van een end to end collectie value adding activities dat een overall result maakt

Dit is wat TOGAF zegt

TOGAF 9.2 Framework kun je het lezen !

Veel output in de iteraties!

taal tussen architecten

levert methodes

Enterprise Continuumis een overview

Continuum is meestal als een virtual repository dat over de architecture repository wordt gelegd.

examen kan over alle bovenstaande 6 onderdelen gaan!!

download url is:

https://pubs.opengroup.org/architecture/togaf9-doc/arch/

 

studyguide daar moet je voor dokken, natuurlijk 🙂

Oef … van deze vragen had ik niet heel veel goed. Dus dat betekent flink studeren.

 

 

 

 

 

An Overview of Enterprise and IT Architecture 9.2 – ADM Architecture Governance Iteration

 

Architectuur team dat ging samenwerken en besluitvorming die door iedereen werd ondersteund.

Ze hebben allemaal samengewerkt om te bepalen wat er moet veranderen en wat de beste ontwerp zou zijn voor het zogenaamde bedrijf.

Als er helemaal geen overlap is

Als er enige overlap is. Met andere woorden er zijn nog steeds zaken niet geimplementeerd zoals gespecificeerd

Alle gespecificeerde features zijn geimplementeerd en er zijn geen extra features geimplementeerd.

Je wilt dat de EA LCM wordt gehanteerd tijdens deze fase

 

3 fases van TOGAF

 

business need is hier belangrijk!!

 

 

 

 

An Overview of Enterprise and IT Architecture 9.2 – ADM Transition Planning Iteration

Context specifiek. Deze iteratie die ons uitdaagt om een juiste implementatie te maken.

Deze maakt de stap van abstract naar specifieke solution architectuur ..

Voorbeeld van de nep firma ..

 

 

voorbeeld wordt weer gebruikt om het bovenstaande toe te lichten??

geen blame terwijl hij duidelijk maakt wat er fout gaat. Iedereen moet immers gemotiveerd worden

 

De Java wereld

Java

ondanks dat mijn vader een Indonees was, praat ik hier niet over het eiland .. waar ik graag nog een keertje naar toe wil gaan, maar ik praat over de programmeertaal Java. Waarom nu opeens Java.

Als je mijn blogs een beetje leest of mij persoonlijk kent, dan weet je dat ik de afgelopen 13 jaar alleen maar bezig ben geweest met integratie en voornamelijk met Oracle tooling omtrent SOA. Denk dat ik mij best een expert mag noemen met de kennis die ik op dit moment heb, maar ik had niet het gevoel dat ik goed kon groeien in de markt. Ook memo’s schrijven om ervoor te zorgen dat als team een inhaalslag gemaakt kon worden op het technologisch vlak kwam niet hoog genoeg in de organisatorische boom om daadwerkelijk aan de gang te kunnen gaan. Het meest frustrerende was dat het zelfs “gratis” was en dat een ingehuurde partner het wel voor elkaar kreeg om het voor zijn eigen team wel geregeld te krijgen.

Dat was het moment dat het bij mij van kriebelen in de onderbuik overging naar een gevoel dat ik weg moest om zelf nog te kunnen groeien.

Rule Engine werk

Dankzij meerdere toevalligheden kon ik bij een team aanschuiven om te zien of ik mij kon verdiepen in de rol van Solution Architect. Dat doe ik dan ook met veel plezier. Cursus uitgezocht en een stage periode aangezwengeld bij een nieuw team. Dat team klonk zo enthousiast en gezellig, maar het duurde toch even voordat ik door kreeg dat er een ongezonde sfeer in het team zat. Misschien dat ik hier later nog verder over kan uitwijden, in een andere persoonlijke blog, maar voor nu laat ik het even voor wat het is.

In het team wordt er gewerkt met een Rule Engine en men praat over Java voor connectiviteit. Dus na wat zoeken kwam ik op Drools Java Rule Engine en het leek mij leuk om mijzelf wat hierin te verdiepen. Zelf kan ik ook wel een Oracle Database oplossing downloaden om daar ook het datamodel in kwijt te kunnen.

Dus mijn eerste voorzichtige stappen zijn om een Rule Engine aan de praat te krijgen op een ontwikkelomgeving. Hiervoor heb ik een Virtualbox met Ubuntu 20 geinstalleerd en daarin het ik een Eclipse installatie uitgevoerd:

 

En nu wordt het spannend. Wat kan en ga ik hiermee doen? Met mijn SOA virtualboxes wist ik meestal precies waar ik naartoe wilde en ook eigenlijk wel hoe ik dat moest doen. Nu tast ik wel wat in het duister, dus nu moet ik kijken hoe ik de Drools Engine draaiend krijg. Volgens mij is dat een plugin, maar dat  weet ik dus niet. Ga ik nu mee aan de slag. Hoop dat ik binnenkort een update kan doen.

Eerst maar even controleren hoe ik de rule engine aan de praat krijg:

Eerst JBoss installeren via de Marketplace:

Dan JBoss invullen en Go klikken:

Selecteer de JBoss Tools en Install en daarna Confirm

Waarschuwing geaccepteerd dat er andere software werd geinstalleerd en gaan met die banaan.

Drools installatie via de New Software optie bij About

Verder dan dit ben ik niet gekomen. Nu ondertussen op een nieuwe omgeving en op mijn UNRAID server een VM met Ubuntu geïnstalleerd en terwijl ik bezig was met een Eclipse stappen uitvoeren, dacht ik dat ik al een keertje dit had uitgevoerd. Dit keer wil ik verder komen, dus ik heb gezocht op Drools by Example. Daaruit kwam naar voren dat je ook een Studio kon downloaden. Deze studio zal gebaseerd zijn op Eclipse, maar zonder de overbodige zaken die standaard met een full blown Eclipse meekomen (ja ik had de EE met alles erop en eraan opgehaald, want ik wilde niets missen 😉 )

Dus de Studio gedownload, via https://www.drools.org/download/download.html. Daar moest ik de Drools en jBPM integration Distribution ZIP downloaden.

Na downloaden, moest ik deze uitpakken. Met een kleine glimlach op mijn gezicht, dacht ik dat ik toch wel weer wat handiger was geworden … echter bleek bij het volgende onderdeel dat ik toch gewoon weer met Eclipse en plugins aan de slag mocht.

*zucht*

Maar deze keer had ik de plugins dus al lokaal opgeslagen (de stap hierboven) en daarmee kan het updaten toch weer wat sneller uitgevoerd worden.

Dan op Add klikken

https://downloads.jboss.org/jbpm/release/7.48.0.Final/updatesite/

Selecteer de Drools en jBPM box … je krijgt dan genoeg te downloaden:

  • Core: voor de regels denk ik
  • Guvner: is de repo waarin de regels terecht komen
  • jBPMN Core: BPM Notatie
  • jBoss Runtime: server waarop het draait)
  • Kie Navigator (Kie staat voor Knowledge Is Everything) is het overkoepelende gedeelte. Hoop dat ik na al deze uitleg toch meer weet van al deze verschillende zaken.

Dan een paar keer Next Next Finish acties en dan moet er nog een acceptatie vinden van de licentie meuk. Daarna komt er een melding die een gemiddelde gebruiker voor Abort ABOR ABORT NOW zal kiezen:

Maar wij gaan voor Pfft: Install anywayz …

 

Daarna een Restart …

Nu zou Drools beschikbaar moeten zijn. Slik … of Gulp in het Engels …

Ja joh .. het is hier fantastisch VAKANTIEMAN … De goede oude tijden. Volgens mij was dat een programma, waarin een presentator ging kijken hoe mensen genoten van hun vakantie. 20 jaar later en de programma’s gaan er alleen maar over hoe de vakantiegangers al coma-zuipend voor de camera komen, de presentator redding moet bieden voor malifide praktijken en allemaal dat soort dingen. Hebben jullie ook wel eens het gevoel dat de hele maatschappij gek is geworden?

En weer terug naar mijn testcase:

Ik neig naar de onderste: lekker een voorbeeldje downloaden en alleen de Hello World tekst aanpassen. Maar misschien moet ik nu toch ook eens proberen snugger over te komen, alsof ik ooit een hard-core developer zou kunnen gaan worden 🙂

Dus bovenste gekozen en op Next geklikt. MyFirstDroolsFuckUp

In het voorbeeld stata dat je kiest voor Maven zodat je niet zelf een complete Drools runtime hoeft te downloaden. Ja lekker een beetje laat. Dat heb ik al gedaan (denk ik) en dus kies ik toch (een beetje recalsie .. recalcy … tegendraads) voor de Java en Drools Runtime classes

Dan krijg ik een leeg scherm voor mijn kiezen, maar mijn gutfeeling (ok, een beetje omdat ik er vaker tegenaan gelopen ben) zegt dat ik naar de download en subfolder binaries moet gaan:

Daar staat dan alles goed ingevuld voor de runtime. Sjemig, wat heb ik dat G O E D gedaan 🙂

In het genoemde voorbeeld staat dat er een eenvoudige validatie op een model class wordt uitgevoerd. In een bankAccount moet geld staan.