|
3 | 3 | ◊(require string-interpolation) |
4 | 4 |
|
5 | 5 | ◊`(div ([class ,"flex bg-[@{raisin-black}]"]) |
6 | | - (div ([class "hidden my-2 md:flex flex-col items-center shrink-0 justify-around ml-6 lg:ml-12 xl:ml-36"]) |
7 | | - ,(badge "Locality of Behavior") |
8 | | - (a ([href "https://nixos.org"]) |
9 | | - (img ([src "assets/logos/nix.png"] [class "aspect-auto w-16 lg:w-24"]))) |
10 | | - ,(badge "Simplicity") |
11 | | - (a ([href "https://clojure.org"]) |
12 | | - (img ([src "assets/logos/clojure.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
13 | | - ,(badge "Functional Optics") |
14 | | - (a ([href "https://rust-lang.org"]) |
15 | | - (img ([src "assets/logos/ferris.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
16 | | - ,(badge "Reproducibility") |
| 6 | + (div ([class "hidden my-2 md:flex flex-col items-center shrink-0 justify-around ml-6 lg:ml-12 xl:ml-36"]) |
| 7 | + ,(badge "Locality of Behavior") |
| 8 | + (a ([href "https://nixos.org"]) |
| 9 | + (img ([src "assets/logos/nix.png"] [class "aspect-auto w-16 lg:w-24"]))) |
| 10 | + ,(badge "Simplicity") |
| 11 | + (a ([href "https://clojure.org"]) |
| 12 | + (img ([src "assets/logos/clojure.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
| 13 | + ,(badge "Functional Optics") |
| 14 | + (a ([href "https://rust-lang.org"]) |
| 15 | + (img ([src "assets/logos/ferris.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
| 16 | + ,(badge "Reproducibility") |
| 17 | + ) |
| 18 | + (div ([class ,"flex flex-col justify-between mx-auto min-h-screen max-w-screen-xl px-4 pt-12 md:px-8 md:pt-20 lg:px-16 text-zinc-300"]) |
| 19 | + (div ([class "my-6"]) |
| 20 | + (h1 ([class ,"my-4 text-4xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug text-center"]) |
| 21 | + "Coding is hard —") |
| 22 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 23 | + "Many tools and languages make it easy to add accidental complexity.") |
| 24 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 25 | + "Accidental complexity creates unnecessary cognitive load.") |
| 26 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 27 | + "If we constantly battle cognitive load, we get exhausted, unhappy and frustrated.") |
17 | 28 | ) |
18 | | - (div ([class ,"flex flex-col justify-between mx-auto min-h-screen max-w-screen-xl px-4 pt-12 md:px-8 md:pt-20 lg:px-16 text-zinc-300"]) |
19 | | - (div ([class "my-6"]) |
20 | | - (h1 ([class ,"my-4 text-4xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug text-center"]) |
21 | | - "Coding is hard —") |
22 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
23 | | - "Many tools and languages make it easy to add accidental complexity.") |
24 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
25 | | - "Accidental complexity creates unnecessary cognitive load.") |
26 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
27 | | - "If we constantly battle cognitive load, we get exhausted, unhappy and frustrated.") |
28 | | - ) |
29 | | - (div ([class "my-6"]) |
30 | | - (h1 ([class ,"my-4 text-4xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug text-center"]) |
31 | | - "but does it have to be " (span ([class "italic"]) "that") " hard?") |
32 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
33 | | - "There are tools and techniques that manage complexity well.") |
34 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
35 | | - "Using those tools and techniques " (span ([class "italic"]) "reduces") " cognitive load.") |
36 | | - (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
37 | | - "So that you can be energetic, happy and joyful while coding.") |
38 | | - ) |
39 | | - (div ([class "mx-auto"]) |
40 | | - (a ([href "#meetup"] |
41 | | - [class ,"mb-4 flex flex-col gap-2 items-center hover:text-[@{jordy}] focus-visible:text-[@{jordy}] duration-300"]) |
42 | | - (span ([class "text-xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug"])"Interested?") |
43 | | - (svg ([xmlns "http://www.w3.org/2000/svg"] [fill "none"] [viewBox "0 0 24 24"] [stroke-width "1"] [stroke "currentColor"] [class "size-16"]) |
44 | | - (path ([stroke-linecap "round"] [stroke-linejoin "round"] [d "m19.5 8.25-7.5 7.5-7.5-7.5"])))) |
45 | | - ) |
| 29 | + (div ([class "my-6"]) |
| 30 | + (h1 ([class ,"my-4 text-4xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug text-center"]) |
| 31 | + "but does it have to be " (span ([class "italic"]) "that") " hard?") |
| 32 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 33 | + "There are tools and techniques that manage complexity well.") |
| 34 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 35 | + "Using those tools and techniques " (span ([class "italic"]) "reduces") " cognitive load.") |
| 36 | + (p ([class "my-2 sm:text-lg leading-relaxed text-center"]) |
| 37 | + "So that you can be energetic, happy and joyful while coding.") |
46 | 38 | ) |
47 | | - (div ([class "hidden my-2 md:flex flex-col items-center shrink-0 justify-around mr-6 lg:mr-12 xl:mr-36"]) |
48 | | - ,(badge "Functional Data Structures") |
49 | | - (a ([href "https://www.haskell.org/"]) |
50 | | - (img ([src "assets/logos/haskell.svg"] [class "aspect-auto w-16 lg:w-28"]))) |
51 | | - ,(badge "Category Theory") |
52 | | - (a ([href "https://elixir-lang.org"]) |
53 | | - (img ([src "assets/logos/elixir.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
54 | | - ,(badge "Distributed Systems") |
55 | | - (a ([href "https://racket-lang.org"]) |
56 | | - (img ([src "assets/logos/racket.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
57 | | - ,(badge "Low Coupling") |
| 39 | + (div ([class "mx-auto"]) |
| 40 | + (a ([href "#meetup"] |
| 41 | + [class ,"mb-4 flex flex-col gap-2 items-center hover:text-[@{jordy}] focus-visible:text-[@{jordy}] duration-300"]) |
| 42 | + (span ([class "text-xl text-[@{jordy}] font-fira-code tracking-tighter leading-snug"])"Interested?") |
| 43 | + (svg ([xmlns "http://www.w3.org/2000/svg"] [fill "none"] [viewBox "0 0 24 24"] [stroke-width "1"] [stroke "currentColor"] [class "size-16"]) |
| 44 | + (path ([stroke-linecap "round"] [stroke-linejoin "round"] [d "m19.5 8.25-7.5 7.5-7.5-7.5"])))) |
58 | 45 | ) |
| 46 | + ) |
| 47 | + (div ([class "hidden my-2 md:flex flex-col items-center shrink-0 justify-around mr-6 lg:mr-12 xl:mr-36"]) |
| 48 | + ,(badge "Functional Data Structures") |
| 49 | + (a ([href "https://www.haskell.org/"]) |
| 50 | + (img ([src "assets/logos/haskell.svg"] [class "aspect-auto w-16 lg:w-28"]))) |
| 51 | + ,(badge "Category Theory") |
| 52 | + (a ([href "https://elixir-lang.org"]) |
| 53 | + (img ([src "assets/logos/elixir.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
| 54 | + ,(badge "Distributed Systems") |
| 55 | + (a ([href "https://racket-lang.org"]) |
| 56 | + (img ([src "assets/logos/racket.svg"] [class "aspect-auto w-16 lg:w-24"]))) |
| 57 | + ,(badge "Low Coupling") |
| 58 | + ) |
59 | 59 | ) |
60 | 60 |
|
61 | 61 | ◊div[#:class "bg-white"]{ |
62 | 62 | ◊div[#:id "meetup" #:class "min-h-[94vh] text-zinc-700 mx-auto h-full max-w-screen-md px-6 pt-12 md:px-12 md:pt-20 lg:px-24"]{ |
63 | | - ◊heading["About"] |
64 | | - ◊par{Hi 👋} |
65 | | - ◊par{ |
66 | | - We're ◊(link "Dirk" "https://www.linkedin.com/in/dirk-hüsken-414b8b101"), ◊(link "Thomas" "https://www.linkedin.com/in/thomas-graf-253629ba"), ◊(link "David" "https://binderdavid.github.io") and ◊(link "Beat" "https://me.beathagenlocher.com") and we thought it would be nice if the wonderful city of Tübingen had a functional programming meetup (again!). |
67 | | - } |
68 | | - ◊par{ |
69 | | - We want to create a space where people interested in functional programming can meet and learn from each other. To achieve this, we will start off with talks, followed by food and an open exchange between the participants. |
70 | | - } |
| 63 | + ◊heading["About"] |
| 64 | + ◊par{Hi 👋} |
| 65 | + ◊par{ |
| 66 | + We're ◊(link "Dirk" "https://www.linkedin.com/in/dirk-hüsken-414b8b101"), ◊(link "Thomas" "https://www.linkedin.com/in/thomas-graf-253629ba"), ◊(link "David" "https://binderdavid.github.io") and ◊(link "Beat" "https://me.beathagenlocher.com") and we thought it would be nice if the wonderful city of Tübingen had a functional programming meetup (again!). |
| 67 | + } |
| 68 | + ◊par{ |
| 69 | + We want to create a space where people interested in functional programming can meet and learn from each other. To achieve this, we will start off with talks, followed by food and an open exchange between the participants. |
| 70 | + } |
| 71 | + ◊par{ |
| 72 | + Looking forward to see you at the next edition of ◊(link "Tü.λ—Functional Programming Night Tübingen" "https://www.meetup.com/tu-lambda/")! |
| 73 | + } |
| 74 | + ◊meetups{ |
| 75 | + ◊meetup[#:title "06.11.24"]{ |
71 | 76 | ◊par{ |
72 | | - Looking forward to see you at the next edition of ◊(link "Tü.λ—Functional Programming Night Tübingen" "https://www.meetup.com/tu-lambda/")! |
| 77 | + The next meetup will take place at the 06.11.24 at the ◊link["itdesign office" "https://itdesign.de/"], Friedrichstraße 12. |
73 | 78 | } |
| 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{Talk 1 (maybe you?)} |
| 82 | + ◊; ◊p[#:class "ml-10 my-2 italic text-base"]{ |
74 | 83 |
|
75 | | - ◊heading["Schedule"] |
| 84 | + ◊; } |
| 85 | + ◊li{Short break} |
| 86 | + ◊li{Talk 2 (maybe you?)} |
| 87 | + ◊; ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 88 | + |
| 89 | + ◊; } |
| 90 | + ◊li{Food, talking, coding, whatever} |
| 91 | + ◊li{22.00 End} |
| 92 | + } |
| 93 | + } |
| 94 | + ◊meetup[#:title "28.08.24"]{ |
76 | 95 | ◊par{ |
77 | | - The next event will take place at the 28.08.24 at the ◊link["itdesign office" "https://itdesign.de/"], Friedrichstraße 12. |
| 96 | + This meetup took place at the 28.08.24 at the ◊link["itdesign office" "https://itdesign.de/"], Friedrichstraße 12. |
78 | 97 | } |
79 | 98 | ◊ul[#:class "list-disc list-inside mx-2 my-4 sm:text-lg leading-relaxed"]{ |
80 | | - ◊li{18.45 Doors open & Welcome} |
81 | | - ◊li{Simple development environments with Nix (Beat)} |
82 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
83 | | - 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. |
84 | | - } |
85 | | - ◊li{Short break} |
86 | | - ◊li{Persistent Data Structures: From Lists to Hashmaps (David)} |
87 | | - ◊p[#:class "ml-10 my-2 italic text-base"]{ |
88 | | - 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. |
89 | | - } |
90 | | - ◊li{Food, talking, coding, whatever} |
91 | | - ◊li{22.00 End} |
92 | | - } |
93 | | - ◊par{ |
94 | | - If you want to attend the meetup, please ◊(link "tell us about it" "https://www.meetup.com/tu-lambda/") so that we can plan accordingly 😊 |
| 99 | + ◊li{18.45 Doors open & Welcome} |
| 100 | + ◊li{Simple development environments with Nix (Beat)} |
| 101 | + ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 102 | + 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. |
| 103 | + } |
| 104 | + ◊li{Short break} |
| 105 | + ◊li{Persistent Data Structures: From Lists to Hashmaps (David)} |
| 106 | + ◊p[#:class "ml-10 my-2 italic text-base"]{ |
| 107 | + 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. |
| 108 | + } |
| 109 | + ◊li{Food, talking, coding, whatever} |
| 110 | + ◊li{22.00 End} |
95 | 111 | } |
| 112 | + } |
| 113 | + } |
| 114 | + |
| 115 | + ◊par{ |
| 116 | + If you want to attend the meetup, please ◊(link "tell us about it" "https://www.meetup.com/tu-lambda/") so that we can plan accordingly 😊 |
| 117 | + } |
96 | 118 |
|
97 | 119 | ◊heading["Contact"] |
98 | 120 | ◊div[#:class "pb-6"]{ |
|
0 commit comments