Eigenlijk is Umbraco Codegarden van 14 tot en met 16 juni. Maar op 13 juni is de pre-party en daar willen wij ook bij zijn. "Wij", dat zijn mijn collega's Johan Reitsma, Sjaak van der Heide, Timo Schraa, Wesley Hofma, Robert Schuit, Harmen Visser en ik zelf natuurlijk. Namens TRES zijn we aanwezig in het Deense Odense. Op 7 juni had ik al gedeeld welke onderdelen ik wilde of dacht te gaan bezoeken: link. Dat is soms toch net iets anders geworden. Want op de vrijdag zijn we rond 9.00/9.15 uur weer richting Nederland vertrokken en waren we rond 16.15 uur weer in Heerenveen. Het is best wel een eind rijden en je bent dus eigenlijk 2 dagen heen-en-weer aan het rijden, maar het is wel de moeite waard!
Wat is er te leren?
De Timo-samenvatting:
- Ga naar de pre-party. Gezellig kletsen, biertje (of non-alcoholica) en alvast je toegangskaart voor CodeGarden krijgen. Kun je de volgende dag rustig aan doen (en deze avond dat biertje extra nemen).
- Rewrite, Redirect en security-zaken niet meer via de web.config inregelen, maar via code. In code kun je regels vanuit een bestand inlezen, ingericht als een .htaccess/web.config bestand. Hiermee kom je los van IIS. Want mochten we later goedkoper in Azure willen hosten op Linux (of in een Docker container), dan ben je daar klaar voor!
- Als we ooit een klant krijgen die op zijn/haar pc een website moet draaien op een locatie zonder internet, check dan Electron, Express en Gatsby.
- Gebruik de tag [DebuggerDisplay] in je code, als je regelmatig zit te debuggen en dan in je watches alle objecten moet uitklappen om eigenschappen te bekijken. Dat kan makkelijker!
- Heb je een (te) volle agenda? Volg dan het mantra: Eliminate, Simplify, Automate, Delegate, Outsource.
- Wil je even snel wat foto's / slides van de presentaties bekijken die ik bezocht heb? Surf dan naar mijn slides-pagina en klik er doorheen: slides.solution4u.nl
Eerst maar even de disclaimer, in de dagen na Codegarden had ik het druk en had ik tussendoor een "korte vakantie", waardoor sommige teksten nogal kort-door-de-bocht kunnen zijn. Meestal maak ik een samenvatting met een afgerond verhaal, deze keer is het wat meer "basic".
Eerst maar even het overzicht van wat ik dan wel bezocht hebt. Als je de pre-party bezoekt, dan krijg je dus al je bezoekerskaartje! Daardoor hoef je niet de volgende dag rond 8.00-9.00 uur te arriveren, maar is 9.00 uur prima. Zo kun je 's morgens om 7.50 uur ontbijten in je hotel en daarna rustig "die kant oplopen".
Dinsdag 13 juni 2023
16.31 - 18.00 | Odense verkennen (huis Hans Christian Andersen) en Harmen opzoeken |
18.00 - 19.30 | Eten bij Storms Pakhus (verschillende soorten eten, loaded nachos is een aanrader) |
19.30 - 22.30 | Codegarden Pre-Party at Umbraco HQ |
Woensdag 14 juni 2023
09.00 → 30 min | Welcome to Codegarden 2023!, Karla Santi |
09.30 → 60 min | Umbraco Keynote, Kim Sneum Madsen, Filip Bruun Bech-Larsen, Emma Burstow |
10.30 → 30 min | Coffee / Snack break |
11.00 → 35 min | Umbraco anno MMXXIII, Bjarke Berg ( Alfred & Kamilla: #16 ) |
11.45 → 35 min | Expand your content reach with the new Delivery API in Umbraco, Elitsa Marinovska ( Alfred & Kamilla: #16 ) |
12.30 → 60 min | Lunch break |
13.30 → 35 min | The Death of Web.Config: Navigating the New Landscape of ASP.NET, Matthew Hart ( DOK5000: The Theatre ) |
14.15 → 35 min | Eigen pauze ingelast |
15.00 → 20 min | Coffee / Snack break |
15.20 → 45 min | From Classroom to Career: Nurturing Newcomers for Success and Innovation, Jasmine Greenaway |
16.15 → 35 min | There's No Such Thing As Plain Text, Dylan Beattie ( Alfred & Kamilla: #10 ) |
17.00 → 35 min | Spijker slaan met de collega's |
17.45 → later | Odense in met de collega's voor een burger! |
Donderdag 15 juni 2023
09.00 → 90 min | Discover the social space |
09.00 → 35 min | From Headless to Fully Disconnected, Joe Kepley ( DOK5000: The Theatre ) |
09.45 → 35 min | Advanced Debugging, Steve Temple ( DOK5000: The Theatre ) |
10.30 → 30 min | Coffee / Snack break |
11.00 → 35 min | Experience Orchestration in Composable World, Ishraq Al Fataftah ( Alfred & Kamilla: #10 ) |
11.45 → 35 min | Best practices for planning scalable websites, Blake Watt ( Alfred & Kamilla: #10 ) |
12.30 → 60 min | Lunch break |
13.30 → 45 min | Code Red: convincing your boss to focus on code quality, Adam Tornhill |
14.25 → 35 min | No testing fright with Playwright, Nikolaj Geisle ( DOK5000: The Theatre ) |
15.00 → 20 min | Coffee / Snack break |
15.30 → 35 min | Living on autopilot with low-code platforms and Umbraco (as a lazy developer), Marcin Zajkowski ( Alfred & Kamilla: #10 ) |
16.15 → 105 min | Drinks and Networking |
18.00 - 23.00 | Dinner & Special Evening Program you do not want to miss!, Secret Secret |
23.00 - 02.00 | Mooi geweest, terug naar het hotel en wat nachtrust pakken! |
Dinsdag 13 juni
We zijn om 9.30 uur vertrokken en rond 16.00 uur in Odense. De stad in, het huis van Hans Christian Andersen (de sprookjesschrijver) bekeken, de smalle straatjes, keien en karakteristieke huisjes bekeken. Hierna aangesloten bij Harmen op het terras.
Harmen was al eerder aanwezig (vliegtuig - trein), omdat dinsdag de Business Summit gehouden werd. Deze wordt speciaal gehouden voor de commerciële verantwoordelijken van Umbraco Gold-partners (wat TRES ook is). In totaal waren hier 160 gasten uit 20 landen aanwezig,
Via de mensen van de Dutch Umbraco User Group (link) het linkje gekregen met foto's van de Business Summit: link.
Het is wel duidelijk dat de serveerster(s) hier het gauw te druk vinden, zoveel mensen zijn er niet, maar bijna een kwartier op een drankje wachten, dat is wel overdreven. 's Avonds naar het hoofdkwartier van Umbraco. Flesjes bier mee (Skuumkoppe en 0.0), ik had nog een heupflesje met een "Frysk slokje" mee genomen en daar hebben we bijgepraat met de andere Nederlanders die hier rondlopen. Rondgekeken hoe hier de tafels/kamers ingedeeld zijn en tot de conclusie gekomen dat dit best wel eens een kippenhok kan zijn (of iedereen zit met een hoofdtelefoon op), dus "bij ons op de zaak" hebben we het beter voor elkaar. Het is warm weer, dus binnen ook wel warm, al gauw zitten we met een drankje onder, buiten. Met zijn allen terug gelopen naar de stad.
Woensdag 14 juni
09.00 → 30 min, Welcome to Codegarden 2023!, Karla Santi
De aftrap van CodeGarden! We horen dat dit de grootste CodeGarden tot nu toe is. Ook een record aantal MVP's. Dan het publiek laten staan: wie is hier voor de 1e keer? Voor de 2e keer? En zo door tot de 10e keer. De volgende dag wordt dat nog gecorrigeerd, want er zijn nog meer CodeGarden-events geweest, iets van 14 volgens mij en er is iemand in het publiek die al die keren geweest is.
Er is een Champions initiatief gestart. En met alle "duurzaamheid" en het "belasten van het milieu" is er nu ook een "Sustainability Team" opgezet. Umbraco Cloud heeft er weer nieuwe regio’s bij gekregen. Alle tiers zijn dedicated. Tevens ondersteuning van MFA en Secret Management. En een nieuw dashboard waar je de statistieken kunt zien (snelheid, cpu). Dit zijn volgens mij allemaal Umbraco Cloud zaken. Waar we nu nog niets mee doen, maar misschien in de (nabije) toekomst wel.
09.30 → 60 min, Umbraco Keynote, Kim Sneum Madsen, Filip Bruun Bech-Larsen, Emma Burstow
Roadmap:
- Eigen identity-provider (zoals Azure AD)
- Flexibele omgevingen (feature branches)
- Upgrades die standaard op dinsdagochtend uitgevoerd worden kunnen uitstellen (als het je even niet uitkomt)
- Load balancing
- Eigen CI/CD integratie (dus vanuit DevOps naar Umbraco Cloud deployen?). Dit staat voor Q3 gepland, de beta komt binnenkort beschikbaar!
- Devops integratie, zoals promote dev to staging
- umContentCreator met chatGPT
- Accessibility Reporter
- Quick Blocks
- Contentment. De maker van Contentment, Lee Kelleher gaat bij de bingo-avond nog het podium op in een "boks-match" met een andere MVP.
- Umbraco Forms is een eigen product, 1-malige kosten zijn 240 euro. We gebruiken dit al, het vernieuwende is volgens mij dat het ook met headless gebruikt kan worden, op 20 juni komt de preview beschikbaar.
- Umbraco Workflow, nieuw dashboard, 199 euro per maand. Naast Save, Publish nu ook Content Review, dus een ander beoordeelt of jij als tekstschrijver een goed verhaal uitgewerkt hebt.
- Umbraco Commerce (was Vender), "Sell how you want to sell". Er worden veel paymentproviders ondersteund, de release-candidate is vanaf vandaag (14 juni) beschikbaar, op 5 juli komt de live-versie beschikbaar. Kost 199 euro per maand. Ondersteunt API's, headless, dus dit lijkt een zeer interessante integratie!
Matt Brailsford: Integrations: package om zelf je eigen pakketten te maken.
Andy en Bolette: Umbraco 12, het CMS krijgt een nieuwe grid. Er komt Entity Framework Core Support, 29 juni een Release Candidate. En ja, vandaag inderdaad online: link.
Headless Content Delivery API, Swagger en dergelijke.
Elitsa: Lazy loaded content, eigen caching om zaken te versnellen. Modern loginscherm, nieuwe backoffice vanaf U13. Expanding on the block. Ook content, dus geen macro’s meer. Stappen BO, UI library OK, extensive API OK, implementatie in progress.
Jacob Overgaard doet een demo van de nieuwe backoffice, code is typescript, 30 mei 2024 in U14, package dev preview today: link.
11.00 → 35 min, Umbraco anno MMXXIII, Bjarke Berg ( Alfred & Kamilla: #16 )
De Alfred & Kamilla locaties zijn 2 losse "huizen/gebouwen" waar ook sessies gehouden worden. Dus hierheen gelopen en de sessie van Bjarke bekeken/beluisterd.
Umbraco 10, vorig jaar .NET 6, runtime modes. Backoffe (development), IDE (development), production. Language permissions. Block Grid Editor.
Umbraco 11, .NET 7 en C#11
TinyMCE, 4 EOL, nu doorgevoerd naar 6.4.
Maintenance page in te stellen en uit te schakelen.
Umbraco 12, eind deze maand. Content Delivery API, openAPI, swagger in dev-mode. Er is API-versioning. 7/8/9. De Content Delivery Api mist nog een aantal zaken, zoals controles op members en protected content.
Output caching, EF core support, imagesharp is nu versie 3, nieuwe voorwaarden, v2 was apache licentie.
NPoco 5.7 minor update
Serilog en mail zijn aangepast.
Transacties zijn in delen opgesplitst, SQL Lite kon namelijk niet goed omgaan met één grote transactie. Breaking!
Umbraco 14, .NET8 LTS en C#12, mei volgend jaar.
Global using, standaard lambda-waardes, primary constructors en een modern inlogscherm.
Minimal hosting model.
Snellere opstarttijden bij grotere oplossingen. Optimale gedistribueerde cache. IDistributedCache
Meer cloud-native.
Opslag van block property data wordt gerefactord.
Block level variations, webhooks voor events.
Guids gebruiken ipv integer IDs.
Deploy uSync.
Viewports, Request en Response modellen.
Meer gebruik van het Attempt Pattern.
Async Method signatures.
Newtonsoft.JSON wordt vervangen met Microsofts System.Text.Json. Deze code werkt een stuk sneller. Wel zijn er een paar aandachtspunten, de werking is soms anders:
# | Newtonsoft.Json | System.Text.Json |
Case sensitive deserialization | nee | ja |
Escapes all non ascii | nee | ja |
Ignore trailing commas | ja | nee |
Allow JSON Comments | ja | nee |
Allow single quote propertynames and string values | ja | nee |
Allow non-string values for string properties | ja | nee |
Obsolete code is in Umbraco 14 echt verwijderd, dus niet meer gebruiken (daar moeten we nu dus eigenlijk al mee stoppen, als de code nu al obsolute is). Het gaat om Media Picker (legacy), Grid Layout en Nested Content.
Telemetry Insights va 9.5, blogpost.
Focus on Tests, automated end-to-end
Cypress vervangen met PlayWright (van Microsoft).
Azure load testing met JMeter.
Clean Starter Kit.
11.45 → 35 min, Expand your content reach with the new Delivery API in Umbraco, Elitsa Marinovska ( Alfred & Kamilla: #16 )
De vorige sessie was hier ook, dus we kunnen blijven zitten.
We zien hier voornamelijk hoe de API aangeroepen kan worden, via /umbraco/api/v1/content/item/{id:guid} of /umbraco/api/v1/content/item/{path:string}.
Hoe met query-parameters onder- of bovenliggende nodes kunt opvragen, dus ?fetch=ancestors:id / path, ?fetch=children, ?fetch=descendants
Hoe je daarmee kunt filteren, ?filter=contentType: alias, ?filter=name: nodeName
En ook kunt sorteren: ?sort=createDate: asc/desc,
En zaken kunt overslaan, "paginering": ?skip=0, ?take=100
Het resultaat kunt laten groeien: ?expand=all, ?expand=property: alias1
Via de headers de Accept-Language kunt meegeven (handig voor multi-language Umbraco omgeving).
En bij afgeschermde content via de header Api-Key deze gegevens kunt opvragen.
Ook kun je met de headers via Preview true/false de gepubliceerde of opgeslagen versie opvragen.
En met Start-Item in de header kun je het beginpunt opgeven.
Niet alle content wil je via de API beschikbaar stellen. Dus in je appsettings.json kun je binnen Umbraco / CMS / DeliveryApi naast de property "Enabled" die de waarde true of false heeft ook een property "DisallowedContentTypeAliases" een lijst met contenttypes opgeven, zoals [ "event" ]
De implementatie hiervan houdt het volgende in:
- Er is een nieuwe Examine Index voor het query-en.
- Property output wordt gecached op het Core level.
- Het is ontworpen voor uitbreidingen en aanpassingen.
- OpenAPI specificatie ondersteuning.
- Een gedeeld schema met Umbraco Heartcore REST API v3
Highlights:
- Hiermee krijg je headless mogelijkheden in Umbraco 12
- Vraag Umbraco content items in een JSON formaat op
- Vraag enkele of meerder items op, query met id of pad, query, filter, sort en pagineer
- Verschillende extension punten van de API zorgen dat je zaken naar je eigen hand kunt zetten
- Gebruik welke tech-stack je maar wilt gebruiken om je content makkelijk te tonen
- Gedeeld schema met CMS en Heartcore REST API v3
- Umbraco 12 release dates: RC nu beschikbaar, live-versie op 29 juni
- En er staan nog veel updates te wachten...
12.30 → 60 min, Lunch break
Hoewel CodeGarden al flink wat jaren gehouden wordt, liep dit even wat minder soepel. Later hoorden we dat dit gebouw failliet geweest is, er een nieuwe eigenaar is en CG anders zijn eigen leveranciers mocht gebruiken, maar nu via deze partij dat moest uitvoeren. En die was daar niet op voorbereid, want we krijgen een lange, slingerende rij mensen die hun lunch ophalen. Een bakje, je kunt kiezen voor vegetarisch en de andere is met vis. Maar zoals een aantal mensen zeggen: als ik beide niet lust? Gelukkig ben ik een visliefhebber en smaakt het prima. Wel hoor ik later dat de koffie vorig jaar heerlijk was (losse bonen) en dat was dit jaar niet zo: een tegenvaller voor vaste bezoekers, ik vond het op zich wel te doen. De snoephoek was wel een schot in de roos en nadat er wat opmerkingen over geplaatst zijn, was er de volgende dag ook fruit. Ik heb een banaantje gehad, smaakte prima.
13.30 → 35 min, The Death of Web.Config: Navigating the New Landscape of ASP.NET, Matthew Hart ( DOK5000: The Theatre )
Deze sessie is in een ander gedeelte van het hoofdgebouw. Matthew bespreekt hier hoe je eigenlijk web.config-bestanden niet meer nodig hebt. Matthew geeft ook aan dat voor het verwijderen van headers de web.config nog onmisbaar is.
Ik dacht dat dit wel "los zou lopen", want wij draaien op IIS, IIS pakt die web.config op met alle security-headers, redirects, rewrites, waarom zou je dat in code doen?
Maar stel dat we sites gaan overzetten naar Docker, containers. Dan heb je geen IIS meer. Of stel dat we binnen Azure op linux-omgevingen gaan draaien met onze .NET Core website, dan worden er geen regels uit de web.config meer uitgevoerd. Dan zul je alsnog al die regels moeten overzetten naar code. Als je dat in ogenschouw neemt is eigenlijk inderdaad de conclusie: zet het in code en doe alleen het hoogst noodzakelijke nog in je web.config. Matthew had een linktree-pagina opgezet om naar de verschillende items te gaan: link.
Mocht de linktree-pagina nog aangepast worden, hier even de linkjes zoals ze er nu op staan:
Umbraco Anywhere
Demystifying config in Umbraco .NET Core
Options pattern in ASP.NET Core
Web.config Transformation Tester
Security header hardening
aspnetcore-secury-headers middleware
URL rewriting middleware in ASP.NET Core
15.20 → 45 min, From Classroom to Career: Nurturing Newcomers for Success and Innovation, Jasmine Greenaway
Een "plenaire sessie", oftewel, in de grote zaal. Dit was wat mij betreft een grote misser, een verhaal over het niet gebruiken van jargon, hoe ze op school kinderen programmeren leert, ik hoorde later dat er nog wat gezegd was over het afsluiten van je HTML-tags (maar toen was ik al weggelopen). Dit was een prima verhaal geweest voor docenten op de basisschool en hun leidinggevenden, maar niet op een conferentie waar het grootste deel van de bezoekers op technische, nieuwe, relevante informatie zit te wachten en zo hun kennis wil uitbreiden (en thuis wil delen met de collega's die niet geweest zijn).
16.15 → 35 min, There's No Such Thing As Plain Text, Dylan Beattie ( Alfred & Kamilla: #10 )
Dit klonk als "encoding-problemen", ik zou eerst naar de sessie over Postman en API, maar dit leek een aantal van mijn collega's wel een interessante sessie, vermoedelijk zouden we bij die andere sessie alleen maar zien hoe requests door Postman heen gaan (en dat kun je thuis of op het werk ook gewoon doen). Ik dacht dat ik het meeste van deze sessie wel zou weten, maar niets is minder waar;
Dit was met recht de beste presentatie van heel CodeGarden 2023! Het ging inderdaad wel over encoding-problemen (waarom zie je in je browser ineens van die vreemde tekens, terwijl het in je editor er wel goed uit zag?), Dylan is een prima presentator, brengt alles met humor, is duidelijk verstaanbaar, heeft tijd in zijn presentatie gestoken en had wat mij betreft die plenaire sessie wel mogen geven.
We zagen hoe hij vroeger een probleem had om het Britse pond-teken uit te printen, hoe iemand wat naar Rusland zou sturen, die persoon zijn/haar adres met Russische tekens mailde, maar hoe dat dus volledig anders bij die andere persoon binnen komt. Hoe hij in paniek werd gebeld, ze waren gehackt, want in een Windows-foutmelding stonden allemaal Chinese tekens! Dat bleek door een defecte switch te komen, waardoor de eerste byte weg viel en vervolgens alle bytes een positie opschoven en er in plaats van DELETE een heel ander stuk tekst (met Chinese tekens) komt te staan.
Hierna volgt nog het Googelen op KOHLEPT (een album wat Billy Joel in de USSR gemaakt heeft en waarbij ook bepaalde tekens weggevallen zijn en er zo een alternatieve "Engelse" titel ontstaan is). Russische auto's die over de grens gingen, kregen altijd een ander nummerbord. Omdat die letters overeen moeten komen, werd een deel van het alfabet hiervoor gebruikt, de PIKE MATCHBOX.
Ook komt Dylan met het feit dat Apple en Google de handen ineen geslagen hebben om emoticons bruikbaar te maken. En ook "hoe dat werkt". Want het duimpje omhoog, dat was altijd een geel handje. Maar je hebt nu ook de "skin-tone". Je kunt een handje een Europese kleur geven en andere kleuren. Dat zijn niet allemaal verschillende emoticons. Dat is nog steeds hetzelfde gele duimpje met een kleur-emoticon gecombineerd. Zo zien we dus ook een vrouw + raket die dan een astronaute oplevert. En hoe Microsoft maar 3 vlaggen ondersteunt: de regenboogvlag, de piratenvlag en de finish-vlag.
Dat waren allemaal leuke weetjes (het verhaal van die combi van emoticons, misschien heb je ooit een vergelijkbare implementatie in jouw code nog eens nodig, doordat resources beperkt zijn en je door combinatie zaken kunt uitbreiden), Dylan laat ons wat SQL-statements zien. En dan hoe sortering werkt. Want als wij wat sorteren, daar denken we eigenlijk niet over na. In onze taal komen niet zoveel accenten voor. Maar in Denemarken wel. Zo heb je de plaats Aarhus. Maar eigenlijk was dat Ârhus. Als je dat normaal sorteert komt deze A redelijk bovenaan te staan. Maar geef je aan dat de tekenset Deens is, dan komt ie ineens onderaan in je sortering, onder de Z! Dat vinden wij er vreemd uit zien, omdat we zeggen: "het is een A met een vreemd kriebeltje", maar eigenlijk is het een eigen karakter: na de Z.
Interessant, want stel dat je een webshop hebt, waarin je internationaal levert. En ook plaatsen gesorteerd op naam wilt tonen. Dan moet je het eigenlijk tonen volgens de sortering zoals dat in dat land geldt. Dylan doet dat nu in de Query Analyzer, maar als je met Entity Framework werkt, zul je dat zelf via de .Database property (of iets) moeten configureren.
Na de tijd de stad nog even in, burgertje met de collega's. De glazen bier zijn enorm: geen halve liters, maar 750 cl. We gaan nog even terug naar het café waar Wesley en ik de avond ervoor gepooled hebben, maar dat deel is terug. Nog wat rondlopen en zo komen we bij de Old Irish Pub. Drinken is betaalbaar en 2 poolbiljarts kunnen gratis gebruikt worden. Het ruikt er wel muf, maar het is warm weer: de deur kan open. En er hangt ook nog een boksbal waar we ons op kunnen uitleven.
Donderdag 15 juni
09.00 → 35 min, From Headless to Fully Disconnected, Joe Kepley ( DOK5000: The Theatre )
We horen hier het voorbeeld van een agrarisch bedrijf wat midden tussen de korenvelden in Amerika shows geeft (hun trekkers demonstreert e.d.) en daar een soort website zonder Internet wil laten zien. Want die ene zendmast daar, die kan niet zoveel.
Joe begint met de definitie van headless. Volgens hem is dat: "The thing that keeps the content sparate from the thing that shows it to people".
Hij noemt nog even dat DMX, composable en headless buzzwords zijn. Als een klant er om vraagt, moet je eerste vraag zijn "waarom"?
Wat zijn de uitdagingen van headless? Content Preview, Cache Clearing, Access Control en Business Logic.
We zien de "head-lish" variant, het CMS welke via een API de content doorgeeft aan website en "andere requesters". De backend kan dan wel de business logica afhandelen, maar het maakt het wel complex om meerdere frontends te ondersteunen.
Daarna zien we de Static Site Generation. Dit kan prima schalen, zolang als caching en updates bijgehouden kunnen worden. De frontend moet wel alle business-logica afhandelen. En de build-time kan een probleem opleveren (3 letters aangepast, volledige nieuwe deploy?).
En we zien de Delivery Repository. Je hebt een CMS en mogelijke andere data-storage. Deze doet een push naar Document Graph Storage, zoals Solar, Redis. Die storage is via REST API calls bereikbaar. Hiermee kun je meerdere bronnen gebruiken, maar het maakt alles wel complex.
Voor hun project hebben ze gebruik gemaakt van Electron, een node-gebaseerde desktop-applicatie omgeving. Het biedt een native User Interface en automatische updates.
Een lokale webserver, Express. Dit is een node-gebaseerde web-server omgeving, lichtgewicht en programmeerbaar.
Voor het maken van statische content wordt Gatsby gebruikt.
09.45 → 35 min, Advanced Debugging, Steve Temple ( DOK5000: The Theatre )
Bij het begin van deze sessie ben ik even bang dat het inderdaad alleen even om het zetten van breakpoints gaat, maar dat is gelukkig alleen het intro.
- Tip van Steve, als je niet perse hoeft te debuggen, start dan nogmaal op (CTRL + F5). Hij laat zien dat dit bij hem een stuk scheelt.
- Heb je een fout, kijk goed naar de stacktrace. Fout 8004005 is melding over permissies.
- Debuglijn verplaatsen, nog een keer. Kijk, Wesley kende dit wel, ik had dit nog nooit gedaan.
- Tag [ DebuggerDisplay ]: link. Je hebt een lijst met 100 auto's. Die hebben weer eigenschappen. Met het breakpoint moet je alles open klappen. Met deze tag kun je al waardes in je debug output zetten.
- In je Immediate window kun je een functie zetten en uitvoeren, je project wordt dan automatisch gestart, functie uitgevoerd en je applicatie weer afgesloten.
- Als je in het Immediate windows je statement laat volgen met een komma nse, dan geef je aan: no side effects, dus daarna wordt je object weer teruggezet: tweets=null,nse
- In Azure, Azure App Service, remote debugging aanzetten. In Visual Studio ga je ia Connect - Microsoft Azure App Service via w3wp proces. Haal wel de .pdb-bestanden binnen naar je eigen BIN map, zodat verwijzigingen correct zijn.
- In Azure, debugging snapshots, dan zie je waar de fout optrad en de waardes van omliggende variabelen.
- Stel, je hebt 50 breakpoints, je klikt erdoorheen. Maar dan blijkt dat je net 1 stap te ver bent, je wilt terug. Volgens Steve kan dat, in Visual Studio via Intellitrace Settings, Snapshots. Wesley komt erachter dat je daarvoor de Ultimate versie van Visual Studio moet hebben...
De presentatie van Steve is hier terug te kijken: https://slides.com/stevetemple/advanced-debugging-v2
11.00 → 35 min, Experience Orchestration in Composable World, Ishraq Al Fataftah ( Alfred & Kamilla: #10 )
De eerste keer dat Ishraq op het podium staat.
1e keer op het podium, identificeren bezoekers, web, mobiele app maar ook screenreaders.
Mach, dit is een afkorting en staat voor Microservices, API-first, Cloud-native and Headless.
JamStack Experience: link.
Headless: markup language gebruiken. Ik weet niet of ik dit nu bedacht heb of dat dit in de presentatie genoemd werd. Feit is wel dat output naar meerder kanalen gezonden kan worden. Dus HTML is eigenlijk een no-no. Markup zou dan een redelijk alternatief zijn.
Moosend mailservice: link.
In de presentatie zag ik Hubspot voorbij komen, toevallig (of niet) noemde een buurtgenoot mij deze tool/site afgelopen week ook.
11.45 → 35 min, Best practices for planning scalable websites, Blake Watt ( Alfred & Kamilla: #10 )
Helaas, hier hadden we een andere sessie moeten kiezen. Want als je naar CG gaat en dit hoort, dan verwacht je dat je tips-en-tricks krijgt over hoe je zorgt dat je Umbraco-site "goed en snel" blijft werken bij eigen maatwerk, hoge belasting, trage databasequery's e.d. Maar dit was een algemeen verhaal over de structuur van je website (of je zaken fixed of dynamisch moet houden). Niet interessant voor ons dus.
12.30 → 60 min, Lunch break
Een uitstekende comeback van de organisatie! Doosjes met het eten worden uitgedeeld, meerdere tafels. Met gehaktballetjes, je kunt ook nog een stevig stuk brood met kaas (onder andere brie) pakken. Prima gegeten!
13.30 → 45 min, Code Red: convincing your boss to focus on code quality, Adam Tornhill
Een redelijk algemeen verhaal, maar wel goed gedaan door Adam. Hij laat zien hoe hij (en iemand anders?) met een project bezig zijn geweest waarmee met "groene/oranje/rode" cirkels getoond kan worden welk deel van je code "voor verbetering vatbaar is". Dat ziet er best cool uit, eigenlijk zouden we dat in Azure Devops standaard bij elke Git-repo op een dashboard moeten hebben. Want hoe beroerd/ondoorzichtig code geschreven is, vaak merk je het pas als ontwikkelaar als je wat moet fixen, de code uitcheckt en aan de slag gaat.
14.25 → 35 min, No testing fright with Playwright, Nikolaj Geisle ( DOK5000: The Theatre )
Helaas, een verloren sessie. De informatie die hier gepresenteerd werd, dat was de basis van Playwright. En dat had Robert die naast mij zat een tijdje geleden al aan mijn collega's en mij laten zien. We hadden gehoopt hier nog wat extra tips-en-tricks te leren, maar dat zat er niet in.
Enige puntje was de Visual Comparison. Op basis van screenshots worden de verschillen uitgelicht.
15.30 → 35 min, Living on autopilot with low-code platforms and Umbraco (as a lazy developer), Marcin Zajkowski ( Alfred & Kamilla: #10 )
Vaak wordt gezegd dat je als ontwikkelaar "lui bent" en daarom zaken automatiseert zodat je tijd over houdt. Dat is (voor mij in ieder geval) niet van toepassing, mijn agenda zit overvol, 20.000 dingen te doen, dus eigenlijk is het essentieel om zaken te automatiseren die geautomatiseerd kunnen worden, zodat je zaken die uitgevoerd moeten worden ook echt kunt afronden.
Tijd is geld. Time is a currency you can only spend once.
Je hoopt dus op een presentatie met allemaal tools en tips, life-hacks, dat is deze presentatie (niet echt). Wel een aantal en die ga ik hier ook noemen;
- Als je onzeker bent of je baantje nog beschikbaar blijft of dat robots dat over gaan nemen, deze site beantwoordt je vraag: link.
- Een boek, Ryan Holiday met Ego is the enemy. Er zijn tools beschikbaar, maar toch je eigen versie willen maken (en 6 maanden bezig zijn...).
- Het mantra is: Eliminate, Simplify, Automate, Delegate, Outsource.
- Marcin kwam tegen dat veel zaken de flow volgen van Event - Condition - Action. Hij kwam dit in Drupal tegen.
- Veel mensen hebben aversie tegen automatisering, omdat "ze dan geen controle hebben". Volgens Marcin hebben ze dan juist controle.
- Vervolgens komt hij met het stappenplan:
- Monitor
- RIZE, screen time op de iphone
- Define automation scenario's
- Implement
- Shortcuts op je iPhone om focusmode automatisch actief te maken
- Text Expander
- Keyboard Maestro
- Tools als Zapier, typevim (?), n8n (?), Trello, ChatGTP
- Share and inspire
- Superhuman
- Make.com apps/macro's
- CLR blog (?)
- Eigen website van Marcin is udfnd.pl
Deze avond de afsluiting (op vrijdag is er ook nog een programma, maar veel mensen, waaronder wij, gaan dan al naar huis). Een voorafje, hoofdgang en het toetje. Prima gesmaakt! Daarna nog de bingo, waarbij de prijswinnaar een witte piano met Umbraco logo wint!
Mijn eerste keer Umbraco CodeGarden en ik vermoed dat het niet mijn laatste was!
---
Via de Dutch Umbraco User Groep kreeg ik nog een paar linkjes door die ik ook met jullie wil delen, namelijk een artikel van iemand anders die geblogd heeft over Codegarden: link en een Flickr-sites met foto-impressies van de Codegarden-dagen: link.