Skip to content

Commit ac30f05

Browse files
committed
Streamline meetup cards
1 parent 1fe2a49 commit ac30f05

File tree

2 files changed

+35
-38
lines changed

2 files changed

+35
-38
lines changed

index.html.pm

Lines changed: 26 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -76,57 +76,45 @@
7676
◊par{
7777
The next meetup will take place on the 06.11.24 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12.
7878
}
79-
ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{
80-
li{18.45 Doors open & Welcome}
81-
li{◊strong{Really Functional Data Structures} (Marvin)}
82-
p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{
79+
div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{
80+
orga{18:45 Doors open & Welcome}
81+
p[#:class ""]{◊span[#:class "font-medium"]{Really Functional Data Structures} (Marvin)}
82+
abstract{
8383
Last time, David showed us functional data structures in the form of persistent data structures. In this talk, I want to show you data structures that are defined entirely by functions themselves - no classes, structs, bitmaps, etc.! Knowing about such structures not only tickles the brain, but can also lead to a better intuition for solving problems functionally. Furthermore, one of the data structures shown can be used for space-efficient encodings of fractals and fun animations.
8484
}
85-
◊li{Short break}
86-
◊li{◊strong{Decoupled by Default – Funktionale Programmierung in der Softwarearchitektur} (Markus)}
87-
◊p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{
88-
89-
Kopplung – das Maß der Abhängigkeiten zwischen Modulen – ist das
90-
zentrale Konzept der Softwarearchitektur. Die herkömmliche Sicht auf
91-
Kopplung ist die, dass hohe Kopplung dann entsteht, wenn man nicht
92-
aufpasst beim Programmieren: wenn man ◊span[#:class "font-medium"]{nicht} gegen explizite
93-
Schnittstellen programmiert, wenn man ◊span[#:class "font-medium"]{kein} Visitor-Pattern
94-
verwendet, wenn man ◊span[#:class "font-medium"]{nicht} Dependency Injection verwendet …
95-
Kopplung, so scheint es, ist das Resultat von Unterlassung. Die
96-
Kopplung wieder zu senken, erfordert dann ausdrückliche
97-
Gegenmaßnahmen. Dieser Vortrag zeigt eine alternative Sichtweise:
98-
Viele Arten von Kopplung entstehen aufgrund von Unzulänglichkeiten der
99-
Programmiersprache. In funktionalen Sprachen treten diese
100-
Kopplungsarten teilweise gar nicht auf oder zumindest ist die
101-
Werkseinstellung dieser Sprachen dergestalt, dass Kopplung vermieden
102-
wird. Das zeigen wir im Vortrag insbesondere mit Blick auf den Umgang
103-
mit geteiltem Zustand und Plattformabhängigkeiten. Am Ende zeigen
104-
wir, dass auch funktionale Programmierer nicht automatisch vor allen
105-
Arten unnötiger Kopplung sicher sind. Wir zeigen, wie der Ansatz des
106-
Denotational Design dort Abhilfe schaffen kann, indem die Semantik von
107-
Schnittstellen in den Vordergrund gerückt wird.
85+
◊orga{Short break}
86+
◊p[#:class ""]{◊span[#:class "font-medium"]{Decoupled by Default – Funktionale Programmierung in der Softwarearchitektur} (Markus)}
87+
◊abstract{
88+
◊p[#:class "my-2"]{Kopplung – das Maß der Abhängigkeiten zwischen Modulen – ist das zentrale Konzept der Softwarearchitektur. Die herkömmliche Sicht auf Kopplung ist die, dass hohe Kopplung dann entsteht, wenn man nicht aufpasst beim Programmieren: wenn man ◊span[#:class "font-medium"]{nicht} gegen explizite Schnittstellen programmiert, wenn man ◊span[#:class "font-medium"]{kein} Visitor-Pattern verwendet, wenn man ◊span[#:class "font-medium"]{nicht} Dependency Injection verwendet …
89+
}
90+
◊p[#:class "my-2"]{
91+
Kopplung, so scheint es, ist das Resultat von Unterlassung. Die Kopplung wieder zu senken, erfordert dann ausdrückliche Gegenmaßnahmen.
92+
}
93+
◊p[#:class "my-2"]{
94+
Dieser Vortrag zeigt eine alternative Sichtweise: Viele Arten von Kopplung entstehen aufgrund von Unzulänglichkeiten der Programmiersprache. In funktionalen Sprachen treten diese Kopplungsarten teilweise gar nicht auf oder zumindest ist die Werkseinstellung dieser Sprachen dergestalt, dass Kopplung vermieden wird. Das zeigen wir im Vortrag insbesondere mit Blick auf den Umgang mit geteiltem Zustand und Plattformabhängigkeiten. Am Ende zeigen wir, dass auch funktionale Programmierer nicht automatisch vor allen Arten unnötiger Kopplung sicher sind. Wir zeigen, wie der Ansatz des Denotational Design dort Abhilfe schaffen kann, indem die Semantik von Schnittstellen in den Vordergrund gerückt wird.
95+
}
10896
}
109-
li{Food, talking, coding, whatever}
110-
li{22.00 End}
97+
orga{Food, talking, coding, whatever}
98+
orga{22.00 End}
11199
}
112100
}
113101
◊meetup[#:title "28.08.24"]{
114102
◊par{
115103
This meetup took place on the 28.08.24 at the ◊link["https://itdesign.de/"]{itdesign office}, Friedrichstraße 12.
116104
}
117-
ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{
118-
li{18.45 Doors open & Welcome}
119-
li{◊link["https://haglobah.github.io/talks/2024-08-28/"]{Simple development environments with Nix} (Beat)}
120-
p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{
105+
div[#:class "mx-2 my-4 sm:text-lg leading-relaxed"]{
106+
orga{18.45 Doors open & Welcome}
107+
p{◊link["https://haglobah.github.io/talks/2024-08-28/"]{◊span[#:class "font-medium"]{Simple development environments with Nix}} (Beat)}
108+
abstract{
121109
Setting up development environments is more complex than it should be. Nix makes entering development environments as easy as running nix develop, making them simple and reproducible. This talk explores what an ideal workflow could look like and walks through a project setup with Nix, outlining its benefits and deficiencies.
122110
}
123-
li{Short break}
124-
li{◊link["https://binderdavid.github.io/talks/VortragHAMT.pdf"]{Persistent Data Structures: From Lists to Hashmaps} (David)}
125-
p[#:class "-ml-2 md:mx-8 mt-2 mb-6 italic text-base"]{
111+
orga{Short break}
112+
p{◊link["https://binderdavid.github.io/talks/VortragHAMT.pdf"]{◊span[#:class "font-medium"]{Persistent Data Structures: From Lists to Hashmaps}} (David)}
113+
abstract{
126114
Functional programmers cannot use the same data structures and algorithms that imperative programmers are used to. Functional data structures make it easier to reason about what our code does, but have different performance characteristics. This talk will introduce some of the basic and advanced techniques we use when we implement functional data structures efficiently.
127115
}
128-
li{Food, talking, coding, whatever}
129-
li{22.00 End}
116+
orga{Food, talking, coding, whatever}
117+
orga{22.00 End}
130118
}
131119
}
132120
}

pollen.rkt

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,15 @@
3838
`(h1 ([id ,(id-ify text)] [class ,"text-3xl font-fira-code text-[@{jordy}] tracking-tighter leading-snug"])
3939
,text))
4040

41+
(define (orga . body)
42+
`(div ([class "flex items-center gap-2 -mx-2 my-4"])
43+
(span ([class "border-solid border-b border-zinc-300 flex-1"]))
44+
(p ([class "italic text-zinc-500"]) ,@body)
45+
(span ([class "border-solid border-b border-zinc-300 flex-1"]))))
46+
47+
(define (abstract . body)
48+
`(div ([class "md:mx-8 mt-2 mb-4 italic text-base"]) ,@body))
49+
4150
(define (meetup #:title title #:img [img ""] . body)
4251
`(div ([class "overflow-hidden my-4 snap-center flex w-[90%] shrink-0 mx-8 sm:mx-16 shadow-lg rounded-lg"])
4352
,(if (string=? img "")

0 commit comments

Comments
 (0)