JavaScript the Language: Diving Deep in a Test-Driven Way

In June 2024, we held the 73rd edi­tion of the “JavaScript the Lan­guage” meet­up, where each month we dive into one of JavaScript’s fea­tures, some make you go, “Wait, it does what now?” We do this by writ­ing tests, read­ing the spec­i­fi­ca­tion, and run­ning those tests – the pro­gram­ming equiv­a­lent of a work­out that actu­al­ly makes you stronger.

Here’s the plan: We start by brain­storm­ing ques­tions we can answer with code. Then, we write a test with a descrip­tion so clear even your non-cod­ing gold­fish could fol­low it. Before we run this test, we open the ECMAScript spec­i­fi­ca­tion, which is like the sacred scrolls of JavaScript knowl­edge, to see if our wild guess—I mean, hypothesis—is cor­rect. For exam­ple, does ‘””.at(-1)‘ return an emp­ty string or unde­fined? (Spoil­er alert: It’s a fun sur­prise every time!) This deep dive often leads us into the labyrinth of JavaScript’s inner work­ings, where we encounter delight­ful odd­i­ties and bril­liant design choic­es. By the time we run the test, we’ve either con­firmed our the­o­ry or had an exis­ten­tial cri­sis about how com­put­ers work, which we then call “learn­ing”.

Join me in this ses­sion to expe­ri­ence the joy of team pro­gram­ming, the thrill of test­ing, and the sheer geeky plea­sure of read­ing the spec. Even if you cur­rent­ly think test­ing is as excit­ing as watch­ing paint dry, I promise you’ll leave with a new­found appre­ci­a­tion for it—or at least a few good laughs. Let’s embark on this adven­ture togeth­er and unlock the mys­ter­ies of how JavaScript ticks, one test at a time.

Beyond Javascript – Writing a Web Application Full Stack with Rust

Are you work­ing on a project where you write code both on the back­end and on the fron­tend? Are you tired of con­stant­ly swap­ping half of your brain when switch­ing pro­gram­ming lan­guage, stan­dard library and idiomat­ic ways of programming?

In this talk, I take a look at setups where fron­tend and back­end are writ­ten in the same pro­gram­ming lan­guage. What are the pros and cons? We then take a deep dive into a promis­ing con­di­date: writ­ing back­end and fron­tend com­plete­ly in Rust. How mature is the ecosys­tem? What does it look and feed like? How is the devel­op­er experience?

Suddenly in the spotlight — moderation for architects and developers

Work­shop facil­i­ta­tion is an indis­pens­able skill for soft­ware archi­tects and devel­op­ers. The high com­plex­i­ty of the chal­lenges and deci­sions that arise in archi­tec­ture work requires effec­tive and con­struc­tive col­lab­o­ra­tion in order to achieve good results. The stan­dard approach of “write PostIt’s — form clus­ters — dot-vot­ing” all too often leads to inad­e­quate results. I will […]

Cleaning Up After Yourself

It’s com­mon to run into the prob­lem of resources and tasks hang­ing around after they need to. It’s easy to for­get to close a data­base con­nec­tion, or can­cel a timer, or stop an HTTP request that isn’t need­ed any more. This can cause all sorts of sub­tle prob­lems from hang­ing to leaks and beyond.

Let’s look at dif­fer­ent ways to avoid this prob­lem, includ­ing the new “using” state­ment and the resource man­age­ment tools that come with it, along­side exist­ing APIs. We’ll explore pat­terns that make it eas­i­er to man­age resources in the face of unex­pect­ed excep­tions, and how to diag­nose which resources aren’t being closed properly.

Next.js in Action: Practical Solutions for Everyday Challenges

Are you look­ing to build a high-per­for­mance and flex­i­ble web appli­ca­tion by lever­ag­ing the strengths of both client and serv­er? Next.js is the per­fect frame­work for you. In this work­shop, you’ll learn how to build a com­plete appli­ca­tion and solve every­day challenges.

You will cov­er every­thing from data fetch­ing and dis­play, user inter­ac­tions, styling, and rout­ing, to per­for­mance opti­miza­tions and authen­ti­ca­tion. You’ll under­stand what client and serv­er com­po­nents are, how they dif­fer, and how to best uti­lize them. Addi­tion­al­ly, we’ll dive into serv­er actions, the mod­ern approach to form han­dling in a Next.js application.

For each fea­ture, you’ll gain tech­ni­cal insights and engage in prac­ti­cal exer­cis­es to apply what you’ve learned. By the end of the work­shop, you will be equipped to set up your own Next.js appli­ca­tion, tack­le com­mon issues, and con­fi­dent­ly explore and solve new challenges.

Join us and take your Next.js skills to the next lev­el. Reg­is­ter now and unlock the poten­tial of build­ing high-per­for­mance, flex­i­ble web appli­ca­tions with Next.js.

Micro Frontends in production – does it work and is it worth it?

Mod­erne Weban­wen­dun­gen wer­den immer größer und kom­plex­er. Das Ver­sprechen von Micro Fron­tends ist, dieser Kom­plex­ität zu begeg­nen, indem Anwen­dun­gen in kleine, unab­hängige, bess­er wart­bare Teile geschnit­ten wer­den. Doch wie gut gelingt dies in der Prax­is? In einem Pro­jekt mussten Teile eines beste­hen­den Fron­tends voneinan­der entkop­pelt wer­den. Um dies zu erre­ichen, haben wir Micro Fron­tends mit Hil­fe von web­pack Mod­ule Fed­er­a­tion einge­führt. Kön­nen die Micro Fron­tends jet­zt getren­nt entwick­elt wer­den? Oder haben wir nur die Kom­plex­ität um ein Vielfach­es ver­größert? Ob die Ein­führung von Micro Fron­tends ein Erfolg war und was wir daraus gel­ernt haben, erläutert dieser Vortrag.

GenAI and LLMs in exiting web-apps — automate everything?

Join this ses­sion to dis­cov­er how to seam­less­ly inte­grate gen­er­a­tive AI and Large Lan­guage Mod­els (LLMs) into your exist­ing web applications.
Max Marschall will demon­strate tech­niques such as tool-call­ing and client-sided agents, pro­vid­ing users with new oppor­tu­ni­ties and tools with­in their famil­iar workflows.

The ses­sion will dis­cuss an archi­tec­ture required to incor­po­rate gen­er­a­tive AI into web appli­ca­tions, with­out requir­ing major changes. You’ll learn best prac­tices for achiev­ing a seam­less inte­gra­tion, as well as valu­able lessons from real-world implementations.

Max Marschall also explore the bal­ance between client-side exe­cu­tion and serv­er-side cal­cu­la­tions, dis­cussing var­i­ous approach­es and their pros and cons.
By the end of the ses­sion, you’ll gain a deep­er under­stand­ing of the tech­ni­cal con­sid­er­a­tions nec­es­sary for suc­cess­ful imple­men­ta­tion of AI and LLMs into your own web applications.

Full-Stack Development with Svelte & SvelteKit

Tired of sin­gle page appli­ca­tions and pure fron­tend development?
Do you final­ly want to devel­op full-stack with­out hav­ing to learn Java? Then this
this work­shop is just right for you! Here you will learn every­thing you
you need to build full-stack apps with Svel­teK­it on the Cloud­flare devel­op­er platform
to build.

We’ll start with the basics of com­po­nent devel­op­ment in Svelte 5. You’ll learn
how to cre­ate sin­gle file com­po­nents and use the Svelte tem­plate syntax.
In addi­tion, you will learn how to use Runes for fine-grained reac­tiv­i­ty and Snip­pets for reusable markup. We then con­tin­ue with the
devel­op­ment of dynam­ic Svel­teK­it apps. You will dive into fea­tures such as
file-based rout­ing and the data load­ing mechan­ics of Svel­teK­it. In addition
we’ll inte­grate the Cloud­flare D1 data­base for dynam­ic data. The final part
is the deploy­ment of the work­shop results into the Cloud­flare network.

A free Cloud­flare account is only required for the deploy­ment. The
The entire devel­op­ment takes place local­ly on your computer.

Workshop: Schools of Test-Driven-Development

Not all TDD is the same. Over the years, devel­op­ers have devel­oped dif­fer­ent styles and approach­es. Some of them have a name and are described in detail, such as Lon­don or Chica­go — the schools of test-dri­ven development.

Here we con­sid­er sev­en dif­fer­ent schools of TDD, which dif­fer fun­da­men­tal­ly in their method­ol­o­gy. Nev­er­the­less, they are not mutu­al­ly exclu­sive. In this work­shop, you will have the oppor­tu­ni­ty to learn about the dif­fer­ent schools and which approach is best suit­ed in which context.

After a short intro­duc­tion, we will try out the dif­fer­ent approach­es togeth­er in pair or mob pro­gram­ming. This way you will not only get to know the the­o­ret­i­cal basics, but also prac­tice the prac­ti­cal application.