slides, slides, slides

This commit is contained in:
thomashamburg 2025-11-13 11:58:02 +01:00
parent 176345e65a
commit db7ed91158

View File

@ -109,10 +109,62 @@ $$
class: text-center
---
# My name is
# My name is
# Thomas Hedeler
##
<v-click>
<p class="mt-20">
In the spirit of the late and great Douglas Adams, I call myself
</p>
<h1 class="mt-20">
A holistic developer
</h1>
</v-click>
---
class: default
---
# My Motivation: Build a Minimal Viable Web App
##
<v-click>
<p>
It is not a compromise — this is a fully functioning web application, including database, application code, and deployment, implemented with the minimal number of lines of code.
</p>
</v-click>
<v-click>
<p>
To embrace the <strong>Creativity Paradox</strong> and stay within our <strong>Complexity Budget</strong>, we apply a few constraints:
- Use as few third-party libraries as possible
- Avoid a front-end build step (no npm)
- Follow the principle of least power: “Favor simple, declarative solutions over complex code.”
</p>
</v-click>
<v-click>
<p>
The benefits are clear:
- Less code → faster performance and fewer bugs
- Reduced technical debt → easier long-term maintenance
- Lower cognitive load → simpler to understand and extend
- Fewer dependencies → more robust and secure
- Leverage browser specifications and built-in capabilities
</p>
</v-click>
<v-click>
<p>
In short: minimal code, maximal clarity, and a fully functional web app.
</p>
</v-click>
# A holistic developer
---
class: default
@ -445,42 +497,39 @@ class: default
| Example | `{{.Title}}` → “Article” | `<a href="{{.Links.Edit}}">Edit</a>` |
---
layout: center
class: text-center
class: default
---
# Putting Everything Together
##
---
clicks: 6
---
<v-click>
<p>
At the core, the <strong>backend holds the application state</strong> — typically in a database.
All decisions about data, relationships, and transitions originate here.
</p>
</v-click>
# Smooth paragraph → circle flow
<v-click>
<p>
The backend generates pages by combining <strong>data (state)</strong>, <strong>presentation</strong>, and <strong>transitions (actions)</strong> using a templating engine.
This approach follows <strong>HATEOAS</strong>, a hypermedia-driven design where each page contains links and instructions describing valid next steps.
</p>
</v-click>
<div>
<p v-click="1">
This is the first paragraph with an
<span v-mark="{ at: 2, type: 'circle', color: '#ff7b72' }">
important phrase
</span>.
</p>
<v-click>
<p>
The backend can also actively drive the frontend using <strong>Server-Sent Events (SSE)</strong>.
SSE allows updates to be pushed to the client in real-time, keeping the application synchronized without full page reloads.
</p>
</v-click>
<p v-click="3">
Here comes the second paragraph with
<span v-mark="{ at: 4, type: 'circle', color: '#4cb0ff' }">
key words
</span>
to highlight.
</p>
<p v-click="5">
Finally, the third paragraph shows and then
<span v-mark="{ at: 6, type: 'circle', color: '#6ce5b6' }">
the spotlight
</span>
appears.
</p>
</div>
<v-click>
<p>
On the frontend, <strong>Datastar</strong> enables fine-grained interactivity and incremental page updates.
Instead of replacing entire pages like simple hypermedia, Datastar updates only the elements affected by the state changes, keeping the interface responsive and dynamic.
</p>
</v-click>
---
@ -525,6 +574,7 @@ el.dataset.whatEver = "you've got it!";
---
class: default
clicks: 5
---
# Datastar and `data-*` Attributes
@ -553,7 +603,7 @@ Each expression describes what should happen when data or events change, turning
<v-click>
<p>
By keeping logic inside the elements they affect, Datastar achieves <strong>locality of behavior</strong>
By keeping logic inside the elements, Datastar achieves <strong>locality of behavior</strong>
where markup, data, and interactivity remain close together.
This makes components easier to read, reason about, and maintain.
</p>