Kalender

onsdag den 20. april 2022

DAPUG generalforsamling med forudgående ERFA-møde onsdag d. 4. maj 2022 i Fredericia

DAPUG holder erfamøde onsdag d. 4. maj 2022 kl. 10 - 16 hos Archersoft, Videnparken, Vesterballevej 5, 7000 Fredericia. Umiddelbart i forlængelse af erfamødet afholdes generalforsamling med dagsorden i henhold til vedtægterne.

Da alle Corona-restriktioner nu er ophævet vender vi tilbage til normal praksis, og derfor afholdes begge møder udelukkende med fysisk fremmøde. Alle er velkomne til deltage i erfamødet, uanset om man er medlem af DAPUG eller ej.Deltagelse er gratis for medlemmer af DAPUG. Ikke-medlemmer opkræves deltagergebyr på kr. 150,-.

Du er medlem af DAPUG, hvis blot din virksomhed har tegnet medlemsskab. Hvis I deltager flere personer fra samme firma, opkræves deltagergebyr for deltager nr. 2, 3, 4 osv.
Sidste tilmeldingsfrist er fredag d. 29. april kl. 16.
Hvis du er tilmeldt og bliver forhindret, kan du indtil 29. april sende en ny tilmelding, hvor du i kommentarfeltet skriver, at du er blevet forhindret i at deltage. Ved behov for senere framelding bedes du ringe til Thomas Vedel på 40 19 11 89.

Tilmelding sker ved udfyldelse af tilmeldingsformularen som du finder her. Tilmeldingsfristen er overskredet.

Du modtager på mail en kvittering efter tilmeldingen, så du kan se du er registreret. Mandag d. 2. maj modtager du yderligere oplysninger om hvordan mødet afholdes.

Det er en god idé at medbringe en bærbar PC til mødet, så du kan afprøve det vi snakker om undervejs. Der vil være mulighed for trådløs internet-adgang, men husk forlængerkabel til strøm og kablet netværk, hvis du er afhængig heraf. 

Agenda (ændringer kan forekomme):

09:45 - 10:00 Ankomst og opstilling af medbragt PC.
Kaffe

10:00 - 10:45 Flexcel fra TMS Software i Delphi. (Jens Fudge, Archersoft)
Jens viser hvordan man kan arbejde med Excel filer fra sit Delphi program, endda uden at Excel er installeret på maskinen der afvikler programmet.
Der vises generel skrivning og læsning til og fra Excel filen, hvordan man kan benytte Excel fil formatet og Flexcel som rapport generator i Delphi, og hvordan man via APIMate kan generere Delphi kode der kan oprette en specifik excel fil.

10:45 - 11:30 Introduktion til QuickLib og QuickLogger (Thomas Vedel)
QuickLib er et open source library som udvider Delphis RTL med mange nye funktioner. Og al source er ren Delphi-kode, så man kan bruge funktionerne på alle de platforme, som Delphi understøtter, og ikke kun under Windows.
QuickLogger er et open source logning-framework som er baseret på QuickLib, og som ligelgedes kan anvendes på alle platforme. Både QuickLib og QuickLogger er tilgængelige via GetIt i Delphi.
Thomas giver en kort intro til QuickLib og viser hvor nemt det er at anvende QuickLogger i egne applikationer. 

11:30 - 12:00 Anvendelse af certifikater til beskyttelse af Delphi-programmer (Thomas Vedel)
Sikkerheden på Windows (og alle andre platforme) strammes hele tiden op, i et forsøg på at mindske risikoen for at få malware. Hvis de programmer man producerer ikke er signeret, vil de blive markeret som "usikre" af operativsystemerne, og signering af programmerne er derfor en god idé. Samtidig kan signering være med til at sikre imod at programmerne reverse engineeres, og man slipper for en masse diskussion med kunderne om hvorvidt programmerne er sikre eller ej.
Thomas viser hvordan man får Delphi til at signere de programmer man laver, og hvad der skal til for at lave sin egen signatur og/eller købe en signatur fra en "trusted" udbyder.
12:00 - 13:00 Frokost

13:00 - 13:30 Anvendelse af certifikater til beskyttelse af Delphi-programmer (fortsat)

13:30 - 14:00 Generel erfa (fælles) / værktøjer i IDE'en (Thomas Vedel)
Kom med alt hvad du har af mere eller mindre håndfaste ideer og spørgsmål (især om anvendelse af Delphi) og få dem diskuteret med ligesindede.
Desuden vil vi se på hvilke værtøjer og genveje der tilbydes i Delphis brugerflade / IDE.

14:00 - 15:00 Imposter Syndrome (Jens Fudge, Archersoft)
Imposter Syndrome er et syndrom der kan ramme alle. Det er en, måske pludselig opstået følelse af, at man i virkeligheden ikke er så dygtig som omgivelserne tilskriver en, og at det kun er et spørgsmål om tid inden man bliver afsløret som den bedrager man er. Følelsen kan være særdeles ubehagelig for den der bliver ramt, og man gætter på at mellem 50 og 70% af alle i tech-branchen rammes mindst én gang i løbet af deres kariere.
Jens vil fortælle lidt dybere om hvilke mekanismer der skaber tilstanden, samt give nogle værktøjer til at holde tilstanden fra døren.

15:00 - 15:15 Kaffepause

15:15 - 16:00 Introduktion til Git (Thomas Vedel)
Git er formodentlig verdens mest anvende versionsstyringssystem. I dette indlæg vil Thomas give en praksisk guide til hvordan man kommer i gang med at bruge det, og hvordan man undgår at køre fast.Thomas vil også vise hvilke fordele / begræsninger der er i at anvende den Git-integration der er indbygget i Delphi.

16.00 – 16.30 Ordinær generalforsamling 2022
Dagsorden i henhold til vedtægterne

søndag den 13. februar 2022

Workshop d. 12.-13. april 2022 på Hotel Hesselet

Andrea Magni
To Boldly Go Where No Developer Has Gone Before
Build RESTful Applications Using the MARS Curiosity Framework
FMXER, a Flutter inspired visual framework for FMX
April 12 and 13 2022
Hotel Hesselet, Christianslundsvej 119, 5800 Nyborg

The workshop is cancelled


In the Dapug April 2022 workshop Andrea Magni is taking us to travel the stars in his MARS Curiosity framework. The MARS Curiosity framework is a great open source framework for building RESTFul applications both Server and Client Side. We will spend time getting to know the framework, with an extensive walk through and some nitty gritty hands on details.
Andrea is also going to take us through a lot of cool coding with other things he has built, strongly inspired by Flutter, Andrea has created FMXER, containing a lot of cool components like TFrameStand and others.
Andrea is the author of "Delphi GUI Programming with FireMonkey"  and apart from being a speaker at a previous Dapug workshop, he is a frequent speaker at other conferences too, like Entwickler Konferenz in Köln/Düsseldorf., where his rooms are always packed. Andrea has been employed in various Italian Software development companies, and is now self employed working as a consultant and speaker.
Andrea is from Italy and has a very strong patriotic feeling about Italy (in a good way). He is an expert on Italian cuisine, Italian wines, Italian Coffees and probably also other Italian things.
For sure he has married a beautiful Italian woman Marta, and they have the most adoring girl Federica, who is now 7. 
When there is a spare moment Andrea can be found running or skiing. In both cases he would bring his camera and take thousands of pictures.
The different timeslots are a rough outline of the various topics he will cover – he might stretch one topic a bit and shift things around as fit.
You find the registration form here.
Please note that you must register on Friday Februray 25, 2022 at latest.
Participation requires that your company is a valid member of DAPUG. This is an annual fee of DKK 800, and covers all registrants for that company. If you are not representing a company you will need to have a personal membership of DAPUG, which is also an annual fee of DKK 800
Registration fee is DKK 6000 per participant. This includes both workshop days, including all meals and accommodation.
Offer: Pay no later than the 6th of April, and you can deduct DKK 500 per participant, bringing the total to DKK 5500.

Workshop Agenda: (See detailed topic list below the time schedule)

Tuesday (Day 1)
08:00 - Arrival and setup
09:30 - Welcome to Andrea
09:45 - MARS: Fundamentals 1
10:45 - Break
11:00 - MARS: Fundamentals 2
12:00 - Lunch
13:00 - MARS: Hands-on 1
14:00 - Break
14:10 - MARS: Hands-on 2
15:00 - Coffee break
15:15 - MARS: Wrap up / Q&A
16:00 - A word from Nohau
18:30 - Drinks before dinner in Tranquebar
19:00 - Dinner
Wednesday (Day 2)
07:00 - Breakfast and CHECK OUT (please check out from your room before 09:00)
09:00 - FMXER: Fundamentals (TFrameStand + TFormStand)
10:00 - Break
10:10 - FMX: IconFontsImageList
11:00 - Coffee break
11:15 - FMXER: Framework and approach
12:00 - Lunch
13:00 - FMXER: Hands-on 1
14:00 - Coffee break
14:15 - FMXER: Hands-on 2
15:00 - Break
15:10 - FMXER: Wrap up / Q&A
16:00 - Wrap up and evaluation

Detailed topic list:

  • MARS-Curiosity REST Library
    • Server side
      • Serialization / Deserialization
        • Built-in capabilities
          • Records, objects, collections ← → JSON
          • Records, objects, collections ← → YAML
        • Customization
      • Authentication and authorization (JWT tokens)
      • Data Access (FireDAC)
      • OpenAPI 3.0 support
      • WebBroker
        • Standalone (Indy)
        • Windows Service (Indy)
        • Apache Module (Apache)
        • ISAPI (IIS)
        • Linux daemon (Indy)
      • DelphiCrossSocket
        • Standalone (IOCP)
        • Windows Service (IOCP)
        • Linux daemon (EPOLL)
        • MacOS (KQUEUE)
    • Client library
      • Mobile / Desktop
      • Sync / Async
      • Code / Components
  • Delphi / Language / FMX topics
    • IconFontsImageList (https://github.com/EtheaDev/IconFontsImageList)
  • FMXER
    • TFrameStand
    • TFormStand
    • Available elements/components
    • Declarative framework (Flutter / Swift UI)

fredag den 10. september 2021

Workshop 23.-24. november 2021 på Hotel Hesselet

Stefan Glienke
Optimizing Development Using Delphi
November 23 and 24
Hotel HesseletChristianslundsvej 119, 5800 Nyborg

Stefan Glienke started with Delphi more than 20 years ago. He is a regular speaker on several conferences and maintainer of a few software projects, such as Spring4D, DSharp and lately Benchmark. He is also the author of TestInsight and Delphi UsesHelper. With a focus on runtime libraries, developer productivity and software architecture he likes to write software for software developers and help them do their job better.
During the workshop Stefan will show several parts of Spring4D, how modern CPU hardware influences code and how to measure and improve the performance of your software.
Stefan is also genuinely a really great guy to be around. He is very helpful and goes out of his way to help a stuck developer. Of Sci-fi series he is a big fan of Star Trek, and when there is spare time he might be found as an archer in Final Fantasy, and to be able to really relate to the figure he has also been seen on archery ranges shooting arrows.
The different timeslots are a rough outline of the various topics he will cover – he might stretch one topic a bit and shift things around as fit.
You find the registration form here.
Please note that you must register on Friday October 8, 2021 at latest.
Participation requires that your company is a valid member of DAPUG. This is an annual fee of DKK 800, and covers all registrants for that company. If you are not representing a company you will need to have a personal membership of DAPUG, which is also an annual fee of DKK 800
Registration fee is DKK 6000 per participant. This includes both workshop days, including all meals and accommodation.
Pay no later than the 18th of November, and you can deduct DKK 500 per participant, bringing the total to DKK 5500.

Workshop Agenda:

Tuesday (Day 1)
08:00 - Arrival and setup
09:30 - Welcome to Stefan
09:45 - Introduction to Spring4D
10:45 - BREAK
11:00 - Collection types
12:00 - LUNCH
13:00 - Software meets hardware
14:00 - BREAK
14:10 - Measuring with SamplingProfiler
15:00 - COFFEE BREAK
15:15 - Using Spring.Benchmark
16:00 - A word from Nohau
18:30 - Drinks before dinner in Tranquebar
19:00 - DINNER
Wednesday (Day 2)
07:00 - BREAKFAST and CHECK OUT (plz check out from your room before 09:00)
09:00 - Introduction to VTune
10:00 - BREAK
10:10 - How to profile properly
11:00 - COFFEE BREAK
11:15 - A word about big O
12:00 - LUNCH
13:00 - Optimization stories – making the RTL faster
14:00 - COFFEE BREAK
14:15 - Fun with collections
15:00 - Break
15:10 - The search for the best sorting algorithm
16:00 - Wrap up and evaluation

tirsdag den 30. marts 2021

Erfamøde og generalforsamling tirsdag d. 20. april 2021 hos Archersoft, Fredericia

DAPUG holder erfamøde tirsdag d. 20. april 2020 kl. 10 - 16 hos Archersoft, Videnparken, Vesterballevej 5, 7000 Fredericia. Umiddelbart i forlængelse af erfamødet afholdes ordinær generalforsamling med dagsorden i henhold til vedtægterne.

Vi overholder de til enhver tid gældende Corona-restriktioner. Derfor afholder vi begge møder som kombinerede fysiske og virtuelle møder. Det tilladte antal personer kan mødes fysisk i Fredericia, men mødet afholdes samtidig virtuelt i Zoom, så øvrige deltagere kan være virtuelt til stede. 

Alle er velkomne til deltage i erfamødet, uanset om man er medlem af DAPUG eller ej. Dog koster deltagelse i erfamødet kr. 150 hvis man ikke er medlem af DAPUG. Indlægsholdere og DAPUG-medlemmer har fortrinsret til at deltage fysisk i Fredericia, og deltagelse i møderne forudsætter tilmelding, uanset om man deltager fysisk eller virtuelt.

Sidste tilmeldingsfrist er fredag d. 16. april kl. 16.
Hvis du er tilmeldt og bliver forhindret, kan du indtil 19. april sende en ny tilmelding, hvor du i kommentarfeltet skriver, at du er blevet forhindret i at deltage. Ved senere framelding bedes du ringe til Thomas Vedel på 40 19 11 89.

Tilmelding sker ved udfyldelse af tilmeldingsformen som du finder herDu modtager på mail en kvittering efter tilmeldingen, så du kan se du er registreret. Mandag d. 19. april modtager du yderligere oplysninger om hvordan mødet afholdes.

Deltagelse er gratis for medlemmer af DAPUG. Ikke-medlemmer opkræves deltagergebyr på kr. 150,-. Du er medlem af DAPUG, hvis blot din virksomhed har tegnet medlemsskab. Hvis I deltager flere personer fra samme firma, opkræves deltagergebyr for deltager nr. 2, 3, 4 osv.

Ved fysisk deltagelse i Fredericia kan det være en god idé at medbringe en bærbar PC til mødet, så du kan afprøve det vi snakker om undervejs. Der vil være mulighed for trådløs internet-adgang, men husk forlængerkabel til strøm og kablet netværk, hvis du er afhængig heraf. 

Agenda (ændringer kan forekomme):

09:45 - 10:00 Ankomst og opstilling af medbragt PC.
Kaffe

10:00 - 10:45 Kommunikation imellem klasser (Jens Fudge, Archersoft)
Jens viser hvordan man laver events til at kommunikere imellem klasser, og derefter hvordan man bruger message systemet til det samme.

10:45 - 11:30 RESTful services med Delphi (Jens Fudge, Archersoft)
Jens laver en klient, som anvender JSON til at hente oplysninger fra et REST-baseret API (CPH Trackers), så han kan spore hvor hans biler befinder sig.

11:30 - 12:00 Brug af en "instumenting profiler" i Delphi (Thomas Vedel)
Der er mange former for debugging. Det er vigtigt at undgå deciderede fejl og nedbrud, men det er også vigtigt at sikre, at applikationer performer hensigsmæssigt. Thomas viser hvordan ProDelphi kan anvendes til at sikre at programmer ikke indeholder f.eks skjulte flaskehalsproblemer.

12:00 - 13:00 Frokost

13:00 - 13:30 Generel erfa (fælles) / værktøjer i IDE'en (Thomas Vedel)
Kom med alt hvad du har af mere eller mindre håndfaste ideer og spørgsmål (især om anvendelse af Delphi) og få dem diskuteret med ligesindede.

Desuden vil vi se på hvilke værtøjer og genveje der tilbydes i Delphis brugerflade / IDE.

13:30 - 14:30 Ny TEdgeBrowser komponent. Installation og hvordan den kan benyttes. (Helge Larsen, EG A/S)
I Delphi 10.4 kom Embarcadero første gang med en komponent til at benytte Microsofts Edge browser i Delphi programmer. Det krævede installation af Canary versionen af Edge Browseren fra Microsoft og en lidt besværlig installation via NuGet. I nyeste Delphi 10.4.2 kan release-versionen af Edge anvendes, og komponenten kan installeres med Delphi's GetIt.
Helge viser eksempler på hvordan komponenten kan benyttes fra Delphi, og hvordan man henter information ud fra en loaded hjemmeside. I et lidt større eksempel vises med et landkort i browseren, hvor man ved klik i kortet via en offentlig REST server kan få information om hvad man har klikket på.

14:30 - 14:45 Kaffepause

14:45 - 16:00 Robotprogrammering i Excel (Martin Houlberg Jensen)
Martin viser hvordan man kan bruge Excel til meget andet end traditionelle regneark. Denne gang til robotprogrammering, hvor man styrer en robot rundt i regnearkets felter. Interesserede kan evt. lave en Delphi-variant.

16.00 – 16.30 Ordinær generalforsamling 2021
Dagsorden i henhold til vedtægterne

tirsdag den 10. marts 2020

WORKSHOP 28. - 29. april
Hotel Hesselet
Aflyst pga. corona-virus / covid-19 situationen

Bogdan Polak 
 Modernisation of highly coupled VCL applications


Modernisering af stærkt koblede VCL applikationer
Forårets workshop vil hjælpe dig arbejde med og forbedre store monolitiske VCL applikationer. For at forbedre store monolitiske applikationer kræver det en del refaktorering, som kan medføre utilsigtede bugs, da der kun er få eller slet ingen unittests.
Undervejs i workshoppen kommer vi ind på måder at splitte disse gamle monolitiske applikationer i mindre dele og få dem dækket med automatiserede tests.
Vi kommer igennem emner som Class Helpers og unit tests, med en introduktion til Test Driven Development. Vi forbedrer læsbarheden af kode og vi fjerner kode fra forms.
Desuden kommer vi til at se hvordan man hiver forretningslogik ud af koden, og få det testet, ved at indføre nogle stærke design patterns som Delphi Command Pattern samt Delphi Data Proxy Pattern. 


Bogdan Polak
Is a polish developer who has many years of Delphi development, especially as a trainer and a consultant. Bogdan has been the coordinator of the Polish Community, and has been a speaker at numerous Delphi Conferences.
Spare time is often used with recreational sports, like sailing and skiing,
 

Det detaljerede program og tilmeldingsformular finder du her


Sidste frist for tilmelding er 27. marts 2020
OBS: Det er vigtigt for DAPUG, at deltagerne betaler inden WorkShoppen begynder. Derfor er deltagelse 500 kr. billigere, hvis betalingen sker senest den 23. april 2020

onsdag den 4. marts 2020

Erfamøde og generalforsamling tirsdag d. 24. marts 2020 hos GEUS

Mødet er aflyst pga. coronavirus/covid-19 epidemien.

DAPUG holder erfamøde tirsdag d. 24. marts 2020 kl. 10 - 16 hos GEUS, De Nationale Geologiske Undersøgelser for Danmark og Grønland, Øster Voldgade 10, 1350 København K

Umiddelbart i forlængelse af erfamødet afholdes ordinær generalforsamling med dagsorden i henhold til vedtægterne.

Alle er velkomne til erfamødet, uanset om man er medlem af DAPUG eller ej. Tilmelding er under alle omstændigheder nødvendig af hensyn til bespisning, som omfatter formiddagskaffe, frokost og eftermiddagskaffe.

Sidste tilmeldingsfrist er torsdag d. 19. marts kl. 8.
Hvis du er tilmeldt og bliver forhindret kan du indtil 19. marts sende en ny tilmelding, hvor du i kommentarfeltet skriver, at du er blevet forhindret i at deltage. Ved senere framelding bedes du ringe til Thomas Vedel på 40 19 11 89.

Tilmelding sker ved udfyldelse af tilmeldingsformen som du finder her. Du modtager på mail en kvittering efter tilmeldingen, så du kan se at din tilmelding er gået igennem.

Deltagelse er gratis for medlemmer af DAPUG. Ikke-medlemmer opkræves deltagergebyr på kr. 150,-. Du er medlem af DAPUG, hvis blot din virksomhed har tegnet medlemsskab. Hvis I deltager flere personer fra samme firma, opkræves deltagergebyr for deltager nr. 2, 3, 4 osv.

Det kan være en god idé at medbringe en bærbar PC til mødet, så du kan afprøve det vi snakker om undervejs. Der vil være mulighed for trådløs internet-adgang, men husk forlængerkabel til strøm og kablet netværk, hvis du er afhængig heraf. 

Agenda (ændringer kan forekomme):

09:45 - 10:00 Ankomst og opstilling af medbragt PC.
Kaffe

10:00 - 10:45 Kommunikation imellem klasser (Jens Fudge, Archersoft)
Jens viser hvordan man laver events til at kommunikere imellem klasser, og derefter hvordan man bruger message systemet til det samme.

10:45 - 11:15 Android Permissions (Jens Fudge, Archersoft)
Hvordan håndterer man tilladelser i Android Apps?

11:15 - 12:00 Brug af en "instumenting profiler" i Delphi (Thomas Vedel, EG)
Der er mange former for debugging. Ud over deciderede fejl og nedbrud er det også vigtigt at sikre, at de applikationer man laver performer hensigsmæssigt. Thomas viser hvordan ProDelphi kan anvendes til at sikre at programmer ikke indeholder f.eks skjulte flaskehalsproblemer.

12:00 - 13:00 Frokost

13:00 - 13:30 Generel erfa (fælles) / værktøjer i IDE'en (Thomas Vedel, EG)
Kom med alt hvad du har af mere eller mindre håndfaste ideer og spørgsmål (især om anvendelse af Delphi) og få dem diskuteret med ligesindede.

Desuden vil vi se på hvilke værtøjer og genveje der tilbydes i Delphis brugerflade / IDE

13:30 - 14:15 JWT authentication med Delphi (Helge Larsen, EG A/S)
Hvad er JSON Web Token (JWT)?
Det er en åben standard (RFC 7519) for sikker udveksling af overførsel og udveksling af information i form af JSON objekter. Overførslen er signeret, og derfor kan indholdet verificeres.

14:15 - 14:30 Kaffepause

14:30 - 16:00 Robotprogrammering i Excel (Martin Houlberg Jensen)
Martin viser hvordan man kan bruge Excel til meget andet end traditionelle regneark. Denne gang til robotprogrammering, hvor man styrer en robot rundt i regnearkets felter. Interesserede kan evt. lave en Delphi-variant.

Alle kan selv prøve kræfter med det. Grundmodellen fås via dagens LinkedIn-opslag og den LinkedIn-artikel, som den henviser til.

16.00 – 16.30 Ordinær generalforsamling 2020
Dagsorden i henhold til vedtægterne

tirsdag den 20. august 2019


WORKSHOP 22.-23. oktober 2019
Hotel Hesselet

Cary Jensen and Danny Wind
"Delphi – Can be used for anything"

Efterårets workshop I 2019 bliver et brag af en workshop hvor vi kommer til at se, at Delphi virkelig kan bruges overalt og til alt.

   På dag 1 får vi besøg af Product Manager Marco Cantù som vil gennemgå nuværende status på Delphi samt Road Map som den ser ud til den tid.  Det er muligt, at stille spørgsmål til Product Manager.
 Bemærk: Marco er med via Skype.

   Derefter tager Danny Wind og Cary Jensen over, og tager os igennem en hel masse om Microservices, Database programmering, CPU optimering, decoupling, tråde og en ordentlig spandfuld tips og tricks  På dag et får man lov at vælge om man vil følge den ene eller den anden taler, afhængig af hvor ens interesse ligger. Sessionerne er tilrettelagt således, at man godt kan vælge en taler til en session, og den anden taler til den næste session.

   Dag 2 bliver en dag hvor Cary og Danny fremlægger sammen. Vi får på denne vis forhåbentlig gang i lidt diskussion omkring emnerne. Vi har med stor succes set denne fremgangsmåde før, hvor vi kommer i dybden med emnerne.  Jeg er sikker på, at det bliver en fantastisk oplevelse.

Det detaljerede program og tilmeldingsformular finder du her


Sidste frist for tilmelding er 6. september 2019

OBS: Det er vigtigt for DAPUG, at deltagerne betaler inden WorkShoppen begynder. Derfor er deltagelse 500 kr. billigere, hvis betalingen sker senest den 17. oktober 2019