Skip to content

Commit

Permalink
Add FPIndia Advent 2025 to the events page. Reorganise a bunch of things
Browse files Browse the repository at this point in the history
  • Loading branch information
ajnsit committed Dec 23, 2024
1 parent 090ff4a commit 6537e5e
Show file tree
Hide file tree
Showing 10 changed files with 401 additions and 37 deletions.
48 changes: 48 additions & 0 deletions markdown/advent/2025.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,48 @@
# FPIndia Advent 2025!

[FPIndia Advent Calendar January 2025](advent/2025.html) is a month long event to share functional programming stories, experiences, and resources by the FPIndia community. The event is inspired by the [F# Advent Calendar](https://sergeytihon.com/2024/10/26/f-advent-calendar-in-english-2024/).

The rules are -

- Choose a Functional Programming related topic for your blog post or youtube video and reserve the slot by messaging on [Telegram](https://t.me/fpncr), or [Twitter](https://x.com/functionalindia). Please note that you do not have to announce the topic until the date (but you can).
- Open a PR on the [repository for this website](https://github.com/fpindia/fpindia-site) to add your slot to the table below.
- **OR** Wait for someone from the FPIndia community to accept your slot and add it to the table below.
- Prepare a blog post or video in English or any regional Indian language.
- Publish your post on a specified date (according to the calendar).
- Post the link to your post on Telegram or Twitter with hashtags <a>#FPIndia</a> and <a>#FPIndiaAdvent</a>.


| ID | Date | Author | Post Title |
| ------- | -------------------- | ------ | ---------- |
| #01 | Jan 01, 2025 (Wed) | | |
| #02 | Jan 02, 2025 (Thurs) | | |
| #03 | Jan 03, 2025 (Fri) | | |
| #04 | Jan 04, 2025 (Sat) | | |
| #05 | Jan 05, 2025 (Sun) | | |
| #06 | Jan 06, 2025 (Mon) | | |
| #07 | Jan 07, 2025 (Tue) | | |
| #08 | Jan 08, 2025 (Wed) | | |
| #09 | Jan 09, 2025 (Thurs) | | |
| #10 | Jan 10, 2025 (Fri) | | |
| #11 | Jan 11, 2025 (Sat) | | |
| #12 | Jan 12, 2025 (Sun) | | |
| #13 | Jan 13, 2025 (Mon) | | |
| #14 | Jan 14, 2025 (Tue) | | |
| #15 | Jan 15, 2025 (Wed) | | |
| #16 | Jan 16, 2025 (Thurs) | | |
| #17 | Jan 17, 2025 (Fri) | | |
| #18 | Jan 18, 2025 (Sat) | | |
| #19 | Jan 19, 2025 (Sun) | | |
| #20 | Jan 20, 2025 (Mon) | | |
| #21 | Jan 21, 2025 (Tue) | | |
| #22 | Jan 22, 2025 (Wed) | | |
| #23 | Jan 23, 2025 (Thurs) | | |
| #24 | Jan 24, 2025 (Fri) | | |
| #25 | Jan 25, 2025 (Sat) | | |
| #26 | Jan 26, 2025 (Sun) | | |
| #27 | Jan 27, 2025 (Mon) | | |
| #28 | Jan 28, 2025 (Tue) | | |
| #29 | Jan 29, 2025 (Wed) | | |
| #30 | Jan 30, 2025 (Thurs) | | |
| #31 | Jan 31, 2025 (Fri) | | |

59 changes: 33 additions & 26 deletions markdown/events.md
Original file line number Diff line number Diff line change
@@ -1,51 +1,57 @@
## Upcoming and Current Events
## Upcoming Meetups

We hold regular meetups, details will be uploaded soon.

### FP Web Conf (Ongoing) (In-person + Remote)
## Current events

FPWeb Conf is a Functional Programming conference for web development professionals. The conference will comprise of several events, both in-person and online, and will feature industry professionals who will share their experiences with adopting functional programming for web development in production.
### FPIndia Advent Calendar January 2025

FPIndia is an official community partner, and the conference is edited by the organiser of FPIndia.
[FPIndia Advent Calendar January 2025](advent/2025.html) is a month long event to share functional programming stories, experiences, and resources by the FPIndia community. The event is inspired by the [F# Advent Calendar](https://sergeytihon.com/2024/10/26/f-advent-calendar-in-english-2024/).

Please visit the [FPWebConf HasGeek event page](https://hasgeek.com/jsfoo/fp-webconf/) for more information.
The rules are -

- Choose a Functional Programming related topic for your blog post or youtube video and reserve the slot by messaging on [Telegram](https://t.me/fpncr), or [Twitter](https://x.com/functionalindia). Please note that you do not have to announce the topic until the date (but you can).
- Prepare a blog post or video in English or any regional Indian language.
- Publish your post on a specified date (according to the calendar).
- Post the link to your post on Telegram or Twitter with hashtags #FpIndia and #FPIndiaAdvent.

## Past Events

### FPIndia Learn Haskell Meetups (In-person)

FPIndia Learn Haskell Meetups are a series of informal meetups to introduce people to Haskell. These took place in 2023-2024 in Gurgaon/Delhi NCR. They may be revived at some point if there is enough interest.


### FP Web Conf (Remote)

[FP Web Conf](https://hasgeek.com/jsfoo/fp-webconf/) was a series of events targeting FP web development professionals. The conference featured industry professionals who shared their experiences with adopting functional programming for web development in production. FPIndia was an official community partner, and the conference was edited by the organiser of FPIndia.

| Date | Event | Details |
| -------------- | ---------------------------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Feb 27, 2023 | Use PureScript a build your own UI framework | George James from Juspay, talks about how they use PureScript in production |
| May 26, 2023 | Learnings from using F# in production at Clear | A conversation with Ankit Solanki, co-founder at Clear, about using F# in production at Clear (formerly Cleartax). The conversation is moderated by BG, founder at TeamOhana |
| June 24, 2023 | In-person event in Bangalore at Juspay | TBA |
### FPIndia Delhi Meetup (In-person)

FPIndia will organise their first in-person meetup in Delhi after a gap of several years. The venue and agenda will be announced closer to the date.

| Date | Event | Details |
| -------------- | -------------------- | ------- |
| July 22, 2023 | FPIndia Delhi Meetup | TBA |
### Effect Systems Reading Group (Remote)

### Effect Systems Reading Group (Ongoing) (Remote)
[Effect Systems Reading Group](https://hasgeek.com/fpindia/effect-systems-reading-group/) was a reading group to discuss effect systems in functional programming languages.

A reading group to discuss effect systems in functional programming languages.
Topics included - What is an “Effect System”? Why do they matter, what is the motivation and the theory behind them. How do you implement them in Functional Programming languages?

What is an “Effect System”? Why do they matter, what is the motivation and the theory behind them. How do you implement them in Functional Programming languages?
The online meetup took place once every two weeks on Saturdays.

This is a reading / study group to discuss these topics, and more.
The [FPIndia Telegram group](https://t.me/fpncr) has a dedicated channel to discuss material related to this reading group. You can participate in the discussion there even if you miss the online meetup.

The online meetup shall take place once every two weeks on Saturdays. The link to join shall be shared on the [Effect Systems Meetup HasGeek Page](https://hasgeek.com/fpindia/effect-systems-reading-group/).
These meetups may be revived in the future if there's enough interest.

The FPIndia Telegram group has a dedicated channel to discuss material related to this reading group. You can participate in the discussion there even if you miss the online meetup.
### Algorithm Design with Haskell Reading Group (Remote)

### Algorithm Design with Haskell Reading Group (Ongoing) (Remote)
[Algorithms Meetup Group](https://hasgeek.com/fpindia/algorithm-design-with-haskell-reading-group/) was a reading group to discuss algorithms and data structure design in Haskell (and other functional programming languages).

A reading group to discuss algorithms and data structure design in Haskell (and other functional programming languages).
Topics included - What are the principles of designing pure functional algorithms? How do we implement them, and optimise them. Theoretical as well as practical concerns.

What are the principles of designing pure functional algorithms? How do we implement them, and optimise them. We’ll discuss theoretical as well as practical concerns.
The meetups started by by going through the “Algorithm Design with Haskell” book by Richard Bird and Jeremy Gibbons. And the online meetups took place once every two weeks on Saturdays.

To start with, we’ll be going through the “Algorithm Design with Haskell” book by Richard Bird and Jeremy Gibbons.

The online meetup shall take place once every two weeks on Saturdays. The link to join shall be shared on the [Algorithms Meetup HasGeek Page](https://hasgeek.com/fpindia/algorithm-design-with-haskell-reading-group/).

The FPIndia Telegram group has a dedicated channel called “Algorithms Meetup” to discuss material related to this reading group. You can participate in the discussion there even if you miss the online meetup.
The [FPIndia Telegram group](https://t.me/fpncr) has a dedicated channel called “Algorithms Meetup” to discuss material related to this reading group. You can participate in the discussion there even if you miss the online meetup.

## Past Events

Expand Down Expand Up @@ -80,3 +86,4 @@ RustyMonad was a Rust and FP focused event organised in collaboration with Mozil
| Date | Time | Venue |
| ------------ | ---------------- | -------------------------------------------------------------------------------------- |
| Mar 14, 2020 | 11 AM to 1:30 PM | Janakpuri, Delhi (Precise Venue details shared with registered participants via email. |

11 changes: 8 additions & 3 deletions markdown/index.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,11 @@
## Welcome to FPIndia

### The homepage for the Indian Functional Programming community
<section class="text-center">
<h1 class="text-center text-5xl font-serif !leading-tight">
Welcome to the<br/> Indian Functional Programming Community
</h1>
<div class="pb-4">
<a href="/advent/2025.html" class="rounded-2xl bg-yellow-100 px-4 py-1.5 font-serif text-red-700">NEW: Join the FPIndia Advent 2025!</a>
</div>
</section>

<div style="display:flex">
<div style="flex:50%; padding: 0 2em 0 0">
Expand Down
2 changes: 1 addition & 1 deletion package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"scripts": {
"start": "concurrently --kill-others \"ghcid\" \"npm run tailwind:watch\"",
"start": "concurrently --kill-others \"ghcid\" \"npm run tailwind\"",
"build": "cabal build",
"gen": "mkdir -p prod && cabal run fpindia-site -- gen prod",
"tailwind": "tailwind -i input.css -o static/tailwind.css --watch"
Expand Down
2 changes: 2 additions & 0 deletions src/FPIndia/Route.hs
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ data HtmlRoute
| HtmlRoute_Communities
| HtmlRoute_FpJobsInIndia
| HtmlRoute_Resources
| HtmlRoute_Advent_2025
deriving stock (Show, Eq, Ord, Generic, Enum, Bounded)

deriveGeneric ''HtmlRoute
Expand All @@ -29,6 +30,7 @@ deriveIsRoute
, FileRoute "communities.html"
, FileRoute "jobs.html"
, FileRoute "resources.html"
, FileRoute "advent/2025.html"
]
]
|]
Expand Down
2 changes: 2 additions & 0 deletions src/FPIndia/View.hs
Original file line number Diff line number Diff line change
Expand Up @@ -64,6 +64,8 @@ renderBody rp model r = do
renderMarkdown model "jobs.md"
HtmlRoute_Resources -> do
renderMarkdown model "resources.md"
HtmlRoute_Advent_2025 -> do
renderMarkdown model "advent/2025.md"
renderFooter rp model

renderFooter :: Prism' FilePath Route -> Model -> H.Html
Expand Down
26 changes: 22 additions & 4 deletions src/FPIndia/View/NavBar.hs
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,22 @@ import Text.Blaze.Html5 (
)
import Text.Blaze.Html5.Attributes (class_, href, id, src, type_)

navbarItems :: [HtmlRoute]
navbarItems =
[ HtmlRoute_Events
, HtmlRoute_ConnectWithUs
, HtmlRoute_Communities
, HtmlRoute_FpJobsInIndia
, HtmlRoute_Resources
]

routeToNavbarSection :: HtmlRoute -> HtmlRoute
routeToNavbarSection route
| route `elem` navbarItems = route
| otherwise = case route of
HtmlRoute_Advent_2025 -> HtmlRoute_Events
_ -> HtmlRoute_Index

renderNavbar :: Prism' FilePath Route -> Model -> HtmlRoute -> Html
renderNavbar rp model currentRoute =
header ! class_ "flex items-center justify-between py-10" $ do
Expand All @@ -31,16 +47,18 @@ renderNavbar rp model currentRoute =
div ! class_ "hidden h-6 text-2xl font-semibold sm:block" $ "FPIndia"
div ! class_ "flex items-center text-base leading-5" $ do
div ! class_ "hidden sm:block" $ do
forM_ universe $ \r ->
let navItem = if r == currentRoute then NavItem_Active else NavItem_Normal
forM_ navbarItems $ \r ->
let navItem = if r == currentNav then NavItem_Active else NavItem_Normal
in renderNavItem rp r navItem
div ! class_ "sm:hidden" $ do
button ! type_ "button" ! id "burger-button" ! class_ "ml-1 mr-1 h-8 w-8 rounded py-1" $ do img ! src (staticRouteUrl rp model "burger.svg")
div ! id "burger-menu" ! class_ "fixed top-0 left-0 z-10 h-full w-full transform bg-gray-200 opacity-95 duration-300 ease-in-out dark:bg-gray-800 translate-x-full" $ do
nav ! class_ "fixed mt-8 h-full" $ do
forM_ universe $ \r ->
let navItem = if r == currentRoute then NavItem_Active else NavItem_Normal
forM_ navbarItems $ \r ->
let navItem = if r == currentNav then NavItem_Active else NavItem_Normal
in renderNavItemButton rp r navItem
where
currentNav = routeToNavbarSection currentRoute

data NavItem = NavItem_Active | NavItem_Normal
deriving stock (Eq, Show)
Expand Down
5 changes: 3 additions & 2 deletions src/FPIndia/View/Util.hs
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,10 @@ routeTitle r = case r of
HtmlRoute_Index -> "Home"
HtmlRoute_Events -> "Events"
HtmlRoute_Resources -> "Resources"
HtmlRoute_Advent_2025 -> "Advent"

-- | Link to a file under ./static
staticRouteUrl :: IsString r => Prism' FilePath Route -> Model -> FilePath -> r
staticRouteUrl :: (IsString r) => Prism' FilePath Route -> Model -> FilePath -> r
staticRouteUrl rp m =
SR.staticRouteUrl (rp % (_As @"Route_Static")) (modelStatic m)

Expand All @@ -41,7 +42,7 @@ renderMarkdown m fp =
proseStyle = "rounded p-4 text-stone-800 prose-a:underline prose-a:decoration-rose-600 prose-a:decoration-solid prose-a:decoration-1 hover:prose-a:decoration-2"

-- | Like `renderMarkdown` but without the prose styling
renderMarkdown' :: HasCallStack => Model -> String -> H.Html
renderMarkdown' :: (HasCallStack) => Model -> String -> H.Html
renderMarkdown' m fp =
case PR.lookupPandocRoute (modelMarkdown m) (fromString fp) of
Nothing -> error $ "renderMarkdown: not a Pandoc ext: " <> toText fp
Expand Down
Loading

0 comments on commit 6537e5e

Please sign in to comment.