Skip to content

Commit b8bf5ca

Browse files
author
Grzegorz Kocjan
committed
Meetups pages v1
1 parent 98c3c2c commit b8bf5ca

21 files changed

+221
-16
lines changed

Diff for: assets/images/avatars/daniel-rozycki.jpeg

220 KB
Loading

Diff for: assets/images/avatars/kamil-kucharski.png

36.9 KB
Loading

Diff for: assets/images/avatars/lukasz-langa.png

226 KB
Loading

Diff for: assets/images/avatars/michal-moroz.jpg

330 KB
Loading

Diff for: assets/images/avatars/sebastian-buczynski.png

1.9 MB
Loading

Diff for: assets/images/sponsors/indiebi.png

13.5 KB
Loading

Diff for: assets/images/sponsors/sunscrapers.png

11.9 KB
Loading

Diff for: config/_default/hugo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ pagination.pagerSize = 10
1313
summaryLength = 0
1414

1515
buildDrafts = false
16-
buildFuture = false
16+
buildFuture = true
1717

1818
enableEmoji = true
1919

Diff for: config/_default/params.toml

+15-15
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ disableTextInHeader = false
2424
# defaultBackgroundImage = "IMAGE.jpg" # used as default for background images
2525
# defaultFeaturedImage = "IMAGE.jpg" # used as default for featured images in all articles
2626

27-
# highlightCurrentMenuArea = true
28-
# smartTOC = true
29-
# smartTOCHideUnfocusedChildren = true
27+
highlightCurrentMenuArea = true
28+
smartTOC = true
29+
smartTOCHideUnfocusedChildren = true
3030

3131
giteaDefaultServer = "https://git.fsfe.org"
3232
forgejoDefaultServer = "https://v8.next.forgejo.org"
@@ -38,27 +38,27 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
3838
showMenu = true
3939
showCopyright = true
4040
showThemeAttribution = true
41-
showAppearanceSwitcher = true
41+
showAppearanceSwitcher = false
4242
showScrollToTop = true
4343

4444
[homepage]
4545
layout = "background" # valid options: page, profile, hero, card, background, custom
4646
homepageImage = "images/python_lodz_logo_transparent_border.png" # used in: hero, and card
4747
showRecent = true
4848
showRecentItems = 5
49-
showMoreLink = false
49+
showMoreLink = true
5050
showMoreLinkDest = "/spotkania/"
5151
cardView = true
5252
cardViewScreenWidth = false
53-
layoutBackgroundBlur = false # only used when layout equals background
53+
layoutBackgroundBlur = true # only used when layout equals background
5454

5555
[article]
56-
showDate = true
56+
showDate = false
5757
showViews = false
5858
showLikes = false
5959
showDateOnlyInArticle = false
6060
showDateUpdated = false
61-
showAuthor = true
61+
showAuthor = false
6262
# showAuthorBottom = false
6363
showHero = false
6464
# heroStyle = "basic" # valid options: basic, big, background, thumbAndBackground
@@ -74,7 +74,7 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
7474
showPagination = true
7575
invertPagination = false
7676
showReadingTime = false
77-
showTableOfContents = false
77+
showTableOfContents = true
7878
# showRelatedContent = false
7979
# relatedContentLimit = 3
8080
showTaxonomies = false
@@ -84,16 +84,16 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
8484
showZenMode = false
8585

8686
[list]
87-
showHero = false
88-
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
87+
showHero = true
88+
heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
8989
layoutBackgroundBlur = true # only used when heroStyle equals background or thumbAndBackground
9090
layoutBackgroundHeaderSpace = true # only used when heroStyle equals background
9191
showBreadcrumbs = false
9292
showSummary = false
9393
showViews = false
9494
showLikes = false
9595
showTableOfContents = false
96-
showCards = false
96+
showCards = true
9797
orderByWeight = false
9898
groupByYear = true
9999
cardView = true
@@ -105,7 +105,7 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
105105

106106
[taxonomy]
107107
showTermCount = true
108-
showHero = false
108+
showHero = true
109109
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
110110
showBreadcrumbs = false
111111
showViews = false
@@ -114,14 +114,14 @@ forgejoDefaultServer = "https://v8.next.forgejo.org"
114114
cardView = false
115115

116116
[term]
117-
showHero = false
117+
showHero = true
118118
# heroStyle = "background" # valid options: basic, big, background, thumbAndBackground
119119
showBreadcrumbs = false
120120
showViews = false
121121
showLikes = false
122122
showTableOfContents = true
123123
groupByYear = false
124-
cardView = false
124+
cardView = true
125125
cardViewScreenWidth = false
126126

127127
[firebase]

Diff for: content/spotkania/55.md

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
---
2+
title: "Meetup #55"
3+
date: 2024-11-27
4+
time: "18:00"
5+
place: "Hi Piotrkowska, Łódź"
6+
meetup_link: "https://www.meetup.com/python-lodz/events/303808956/"
7+
sponsors: [indiebi, sunscrapers]
8+
9+
talks:
10+
- speaker_id: "sebastian-buczynski"
11+
talk_title: "Zabawa z Pydantic i pattern matching"
12+
talk_description: "Pattern matching jest z nami od wersji Python 3.10. Od momentu wprowadzenia instrukcji match-case, otrzymaliśmy potężne i eleganckie narzędzie do kontroli przepływu programu. Ta prezentacja ma na celu pokazanie rzeczywistego scenariusza obsługi różnych wiadomości pochodzących od brokera, przy użyciu match-case i Pydantic."
13+
language: "pl"
14+
youtube: "N2MWc033pHg"
15+
16+
- speaker_id: "daniel-rozycki"
17+
talk_title: "Jak logi mogą ocalić Twój dzień? Czyli Loguru w akcji"
18+
talk_description: "W tej prezentacji omówimy różnice między standardowym loggerem a Loguru, pokażemy, jak efektywnie wykorzystać ustrukturyzowane logi w projekcie oraz podkreślimy znaczenie logów w procesie tworzenia oprogramowania dla zapewnienia wysokiej jakości i niezawodności aplikacji."
19+
language: "pl"
20+
youtube: "xA6o40uxuso"
21+
22+
---
23+
24+
{{< meetup-details >}}
25+

Diff for: content/spotkania/56.md

+17
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
title: "Meetup #56"
3+
date: 2025-01-29
4+
time: "18:00"
5+
place: "Hi Piotrkowska, Łódź"
6+
meetup_link: "https://www.meetup.com/python-lodz/events/305328267/"
7+
sponsors: [indiebi, sunscrapers]
8+
9+
talks:
10+
- speaker_id: "lukasz-langa"
11+
talk_title: "Nowość w Pythonie 3.14 oraz PyScript"
12+
language: "pl"
13+
youtube: "9POijqwrHuw"
14+
---
15+
16+
{{< meetup-details >}}
17+

Diff for: content/spotkania/57.md

+40
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
---
2+
title: "Meetup #57"
3+
date: 2025-03-26
4+
time: "18:00"
5+
place: "Hi Piotrkowska, Łódź"
6+
meetup_link: "https://www.meetup.com/python-lodz/events/305850516/"
7+
live_stream: ""
8+
sponsors: [indiebi, sunscrapers]
9+
tags: ["Następne spotkanie!"]
10+
featured: true
11+
12+
talks:
13+
- speaker_id: "michal-mroz"
14+
talk_title: "Czego o product developmencie uczy 5 lat rozwoju własnej aplikacji do journalingu"
15+
talk_description: |
16+
Rozwijam produkt, którego sam jestem klientem i product ownerem. I na pierwszy rzut oka, to powinno dawać mi natychmiastowy feedback. W końcu nie ma narzutów komunikacyjnych, czekania aż ktoś zaakceptuje jakiś pomysł. A jednak, często idee walidują się miesiącami. Dlaczego tak jest?
17+
18+
Modeluję dziedzinę, w której stabilny model przekłada się bezpośrednio na mój dobrostan. Precyzyjnie zdefiniowana domena – przełożona na komendy i zapytania – powinna przełożyć się na rzadko zmieniający się kod, w którym wszystko jest jasno opisane. To dlaczego niektóre funkcje okazały się zbędne po dwóch użyciach, a inne przechodziły już kilka przemian?
19+
20+
Event Sourcing czasami wtłaczany jest młodym programistom jak mantra. Immutability is a king, sam nawet się na to złapałem i stwierdziłem “dobra, zobaczmy jak to robi w Django". W praktyce jednak nadal od czasu do czasu poprawiam rekordy w Django Adminie. A samo wprowadzenie eventów umożliwiło mi głębszą refleksje nad moim życiem, więc okazuje się, że Event Sourcing może dawać nie tylko techniczne korzyści.
21+
22+
Obecnie mam w dzienniku 3380 wpisów. A tekże moje ulubione słowo w jednym z modeli bazy danych: „Rekontekstualizacja”. To historia przypominająca realia wielu start-upów: nie zawsze wiemy, co dokładnie tworzymy, ale działamy pomimo ograniczonego budżetu i czasu.
23+
24+
Czego się z niej dowiesz?
25+
26+
- Gdzie leży różnica między „manage” a „menage”.
27+
- Co oznacza „pivot” w świecie start-upów.
28+
- Jak domena może ewoluować w czasie.
29+
- Jak zamienić „legacy” w „opportunity”.
30+
- Jak prowadzić dziennik, by korzystnie wpłynął na życie.
31+
language: "pl"
32+
33+
- speaker_id: "kamil-kucharski"
34+
talk_title: "Detektyw w świecie Pythona"
35+
talk_description: "Wcielimy się w rolę detektywów, którzy z użyciem narzędzi do profilowania odkryją tajemnice tych narzędzi. Opowiem czym są takie narzędzia oraz jak działają. Dodatkowo wspólnie przejdziemy przez różne codebase-y, na których pokaże jak korzystać z tych narzędzi aby efektywnie rozwiązać problem z wydajnością i przyspieszyć działanie naszego kodu. Wszystkie osoby zainteresowane optymalizacją aplikacji i rozwiązywaniem problemów z wydajnością są mile widziane!"
36+
language: "pl"
37+
38+
---
39+
40+
{{< meetup-details >}}

Diff for: data/speakers/daniel-rozycki.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: "Daniel Różycki"
2+
avatar: "images/avatars/daniel-rozycki.jpeg"
3+
bio: "Daniel Różycki rozpoczął swoją karierę od budowania aplikacji do zarządzania tokenami ERC-20, koncentrując się na platformach ICO i technologii blockchain. Aktualnie pracuje jako Senior Python Developer w STX Next, gdzie kieruje rozwojem wysoko konfigurowalnej platformy AI Governance, która ma na celu usprawnienie procesów zarządzania i zwiększenie efektywności operacyjnej."
4+
social: [
5+
{ facebook: "https://www.facebook.com/altosterino" },
6+
{ linkedin: "https://www.linkedin.com/in/daniel-rozycki" }
7+
]

Diff for: data/speakers/kamil-kucharski.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: "Kamil Kucharski"
2+
avatar: "images/avatars/kamil-kucharski.png"
3+
bio: "Programista Pythona nastawiony na rozwiązywanie problemów, z talentem do przekładania złożonych wymagań biznesowych na eleganckie i wydajne architektury chmurowe AWS. Specializuję się w budowaniu bezpiecznych, odpornych i skalowanych systemów w chmurach. Uwielbiam debugować problemy związane z wydajnością programów oraz zarządzania pamięcią."
4+
social: [
5+
{ facebook: "https://github.com/kaniak274" },
6+
{ linkedin: "https://www.linkedin.com/in/kucharski-kamil" }
7+
]

Diff for: data/speakers/lukasz-langa.yaml

+7
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
name: "Łukasz Langa"
2+
avatar: "images/avatars/lukasz-langa.png"
3+
bio: "Developer rezydent CPython. Aspirujący muzyk. Manager wydania Python 3.8 i 3.9. Współprowadzący podcast core.py. Twórca oryginalnej wersji Black."
4+
social: [
5+
{ link: "https://lukasz.langa.pl" },
6+
{ linkedin: "https://www.linkedin.com/in/llangal" }
7+
]

Diff for: data/speakers/michal-mroz.yaml

+9
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
name: "Michał Moroz"
2+
avatar: "images/avatars/michal-moroz.jpg"
3+
bio: "Michał Moroz - Chief Innovation Officer i współzałożyciel Makimo – IT Consultancy & Software Services. Programista od ponad 15 lat, na co dzień zajmuje się pracą z systemami legacy i rozwojem firmy Makimo. Umiejętności przywódcze rozwijał również w organizacjach non-profit – na studiach w Niezależnym Zrzeszeniu Studentów Regionu Łódzkiego, obecnie w klubie Toastmasters Speakers of Łódź. Poza programowaniem ćwiczy się w przemawianiu publicznym, a także zbiera idee i nowe pojęcia, które może włączyć do swojego postrzegania świata."
4+
social: [
5+
{ facebook: "https://www.facebook.com/michalpiotrmoroz" },
6+
{ linkedin: "https://www.linkedin.com/in/michalpiotrmoroz/" },
7+
{ link: "https://michalmoroz.com/" },
8+
{ link: "https://makimo.com/" }
9+
]

Diff for: data/speakers/sebastian-buczynski.yaml

+10
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
name: "Sebastian Buczyński"
2+
avatar: "images/avatars/sebastian-buczynski.png"
3+
bio: "W branży od 12 lat z doświadczeniami lidera technicznego i architekta. Trener/konsultant w Bottega IT Minds, specjalizacja - Python. Architekt w firmie Sauce Labs. Zafascynowany zwinnym wytwarzaniem oprogramowania bez kompromisów w kwestii jakości."
4+
social: [
5+
{ facebook: "https://www.facebook.com/sebastian.buczynski.tsn" },
6+
{ linkedin: "https://www.linkedin.com/in/sebastianbuczynski" },
7+
{ link: "https://michalmoroz.com/" },
8+
{ link: "https://makimo.com/" }
9+
]
10+

Diff for: data/sponsors/indiebi.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name: "IndieBI"
2+
logo: "images/sponsors/indiebi.png"
3+
website: "https://indiebi.com"

Diff for: data/sponsors/sunscrapers.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
name: "Sunscrapers"
2+
logo: "images/sponsors/sunscrapers.png"
3+
website: "https://sunscrapers.com"

Diff for: i18n/pl.yaml

+5
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
global:
2+
language: "PL"
3+
4+
shortcode:
5+
recent_articles: "Nasze spotkania"

Diff for: layouts/shortcodes/meetup-details.html

+72
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,72 @@
1+
{{ $youtubeLiteJS := resources.Get "lib/lite-youtube-embed/lite-yt-embed.js" | resources.Fingerprint "sha512" }}
2+
{{ $youtubeLiteCSS := resources.Get "lib/lite-youtube-embed/lite-yt-embed.css" }}
3+
<link rel="stylesheet" href="{{ $youtubeLiteCSS.RelPermalink }}" integrity="{{ $youtubeLiteCSS.Data.Integrity }}"/>
4+
<script src="{{ $youtubeLiteJS.RelPermalink }}" integrity="{{ $youtubeLiteJS.Data.Integrity }}"></script>
5+
6+
<h2 id="prelekcje">Informacje</h2>
7+
<div class="header border-b pb-2">
8+
<p class="text-gray-600"><strong>Data:</strong> {{ .Page.Params.date | time.Format ":date_full" }}</p>
9+
<p class="text-gray-600"><strong>Godzina:</strong> {{ .Page.Params.time }}</p>
10+
<p class="text-gray-600"><strong>Miejsce:</strong> {{ .Page.Params.place }}</p>
11+
<p class="text-gray-600"><strong>Zapisy:</strong> <a href="{{ .Page.Params.meetup_link }}" target="_blank" >Meetup.com</a></p>
12+
</div>
13+
14+
<h2 id="prelekcje">Prelekcje</h2>
15+
{{ range .Page.Params.talks }}
16+
<div class="talk border-b last:border-none pb-3">
17+
<h2 id="{{ anchorize .talk_title }}" class="text-xl font-semibold text-gray-700 relative group">
18+
{{ .talk_title }} ({{ .language }})
19+
</h2>
20+
{{ $speaker := index site.Data.speakers .speaker_id }}
21+
<div class="flex items-center space-x-3 mt-2">
22+
{{ $speakerAvatar := resources.Get $speaker.avatar }}
23+
<img src="{{ $speakerAvatar.Permalink }}" alt="{{ $speaker.name }}" class="w-24 h-24 rounded-full object-cover" >
24+
<div>
25+
<p class="text-sm text-gray-500">Prelegent: <strong>{{ $speaker.name }}</strong></p>
26+
27+
<div class="flex flex-wrap text-neutral-400 dark:text-neutral-500">
28+
{{ range $links := $speaker.social }}
29+
{{ range $name, $url := $links }}
30+
<a
31+
class="px-1 hover:text-primary-700 dark:hover:text-primary-400"
32+
href="{{ $url | safeURL }}"
33+
target="_blank"
34+
aria-label="{{ $name | title }}"
35+
rel="me noopener noreferrer"
36+
><span class="inline-block align-text-bottom">{{ partial "icon.html" $name }}</span></a
37+
>
38+
{{ end }}
39+
{{ end }}
40+
</div>
41+
</div>
42+
</div>
43+
{{ if .talk_description}}
44+
{{ .talk_description | markdownify }}
45+
{{ end }}
46+
47+
{{ if .youtube}}
48+
{{ printf "{{< youtubeLite id=\"%s\" label=\"%s\" >}}" .youtube "Label" | markdownify }}
49+
{{ end }}
50+
</div>
51+
{{ end }}
52+
53+
{{ if .Page.Params.live_stream }}
54+
<h2 id="prelekcje">Live Stream</h2>
55+
{{ printf "{{< youtubeLite id=\"%s\" label=\"%s\" >}}" .Page.Params.live_stream "Label" | markdownify }}
56+
{{ end }}
57+
58+
{{ if .Page.Params.sponsors }}
59+
<h2 id="prelekcje">Sponsorzy</h2>
60+
<div class="flex flex-col gap-4 mt-3">
61+
{{ range .Page.Params.sponsors }}
62+
{{ with index site.Data.sponsors . }}
63+
<a href="{{ .website }}" target="_blank" rel="noopener" class="flex items-center user-scalable=no">
64+
{{ $sponsorLogo := resources.Get .logo }}
65+
<img src="{{ $sponsorLogo.Permalink }}" alt="{{ .name }}" class="h-16 w-auto max-w-[200px] pointer-events-none">
66+
</a>
67+
{{ end }}
68+
{{ end }}
69+
</div>
70+
{{ end }}
71+
72+

0 commit comments

Comments
 (0)