diff --git a/events/2023-ghc-development-workshop.markdown b/events/2023-ghc-development-workshop.markdown new file mode 100644 index 00000000..ece19408 --- /dev/null +++ b/events/2023-ghc-development-workshop.markdown @@ -0,0 +1,43 @@ +--- +title: 2023 GHC Contributors' Workshop +published: 2023-03-01 +daterange: June 7-9, 2023 +status: active +location: Rapperswil, Switzerland +summary: A hands-on introduction to working on GHC, colocated with Zurihac 2023 +--- + + +We are excited to announce the **2023 GHC Contributors' Workshop, June 7-9 2023**, organized by the GHC developers, the Haskell Foundation, and the OST Eastern Switzerland University of Applied Sciences! This is a workshop for those who want to get started working on GHC, those who want to understand GHC's internals to better diagnose issues with their own code, and those who want to transfer lessons learned in GHC to other compilers. The primary aim of the workshop is to broaden the base of contributors to GHC. + +In this three-day event, held on the lakeside campus of OST in lovely Rapperswil, Switzerland, you can learn what you need to know in order to get started working on GHC, right from the core team itself. Because the workshop is immediately prior to [Zurihac 2023](https://zfoh.ch/zurihac2023/), there will be time to work on your project and ask questions. + +At this workshop, you can learn the ins and outs of working on GHC, including practical techniques for minimizing rebuilds and diagnosing compiler bugs. The fundamental concepts and idioms of key compiler subsystems will be presented, along with tips and tricks for understanding how they are working in a running compiler. This is a practical workshop: any theory presented will be in service of building things, and we expect that you will arrive with a checkout and build of the source tree ready to go. + +Additionally, the speakers will be available to answer questions and to provide mentorship during Zurihac itself, so this is a great opportunity to finish your first MR. + +We expect that participants already know Haskell and have worked on some form of programming language implementation in the past, whether as students, at work, or just for fun. Concepts such as parsing, type checking, unification, and code generation should be familiar, but we don't expect participants to already be experts. + +So far, Simon Peyton Jones has confirmed that he will present at the workshop. Watch this space for more presenters as we confirm them! + +Due to space constraints and to enable scholarships for student participants, there will be a fee for full on-site participation. +Fees will be used to cover travel costs for presenters and students who don't have other funding to attend. +The fee depends on participant category: + + * _Enrolled students_ ($$40) are participants who are enrolled full-time at an educational institution. + + * _Individual professionals_ ($$400) are no longer students and are interested in working on GHC for their own purposes. + + * _Corporate participants_ ($$1200) are being paid by their employer to attend so that they can use the knowledge that they gain on the job. Corporate participants will have their company name on their name tag and their company will be listed on the event web page as a supporter of the event. + +All fees are in US dollars. +We want the event to be as accessible as possible, given our limitations, so if the fee is a barrier to attending, please contact David Thrane Christiansen at [david@haskell.foundation](mailto:david@haskell.foundation) to discuss a reduced or waived fee—this goes for all three categories of participant. + +A certificate of completion will be available on advance request to students who attend the entire event. + +Remote participation will make use of the Zurihac infrastructure. We will do our best to stream presentations and to post recordings as quickly as possible, and we will also have a chat system for remote participants. + +If you or your company would like to sponsor the event, enabling more students to have financial support to attend, please contact David Thrane Christiansen at [david@haskell.foundation](mailto:david@haskell.foundation). + +Registration will open as soon as a few more speakers are confirmed. In the meantime, please register your interest by filling out [this survey](https://www.surveylegend.com/s/4piz), where you can also sign up to be notified when registration opens. Due to the limited space available, participants will be chosen based on their background and interests. + diff --git a/haskell-foundation.cabal b/haskell-foundation.cabal index 8ab82ff7..81000eb9 100644 --- a/haskell-foundation.cabal +++ b/haskell-foundation.cabal @@ -1,14 +1,14 @@ name: haskell-foundation version: 0.1.0.0 build-type: Simple -cabal-version: >= 1.10 +cabal-version: 2.0 executable site main-is: site.hs build-depends: base == 4.* - , hakyll + , hakyll ^>=4.15 , monadlist - , pandoc + , pandoc >=2.11 && <2.20 , text ghc-options: -threaded default-language: Haskell2010 diff --git a/site.hs b/site.hs index d6dd689d..5795c9f9 100644 --- a/site.hs +++ b/site.hs @@ -210,6 +210,31 @@ main = hakyll $ do match "podcast/*/transcript.markdown" $ compile pandocCompiler match "podcast/*/links.markdown" $ compile pandocCompiler +-- Events + + create ["events/index.html"] $ do + route idRoute + compile $ do + sponsors <- buildBoilerplateCtx (Just "Events") + ctx <- allEventsCtx <$> (recentFirst =<< loadAll ("events/*.markdown" .&&. hasNoVersion)) + + makeItem "" + >>= loadAndApplyTemplate "templates/events/list.html" ctx + >>= loadAndApplyTemplate "templates/boilerplate.html" sponsors + >>= relativizeUrls + + match "events/*.markdown" $ do + route $ setExtension "html" + let ctxt = mconcat + [ defaultContext ] + compile $ do + sponsors <- buildBoilerplateCtx Nothing + pandocCompiler + >>= applyAsTemplate sponsors + >>= loadAndApplyTemplate "templates/events/page.html" ctxt + >>= loadAndApplyTemplate "templates/boilerplate.html" sponsors + >>= relativizeUrls + -- Description compiler -------------------------------------------------------------------------------- -- -- This identifier compiles the body the file to plain text, to be used in the OpenGraph description field @@ -226,9 +251,10 @@ main = hakyll $ do careersCtx <- careersCtx . reverse <$> loadAll "careers/*.markdown" announces <- take 1 <$> (recentFirst =<< loadAll @String "news/*/**.markdown") let announceCtx = announcementsCtx announces + eventsCtx <- activeEventsCtx <$> (recentFirst =<< loadAll ("events/*.markdown" .&&. hasNoVersion)) makeItem "" - >>= loadAndApplyTemplate "templates/homepage.html" (podcastsCtx <> careersCtx <> announceCtx) + >>= loadAndApplyTemplate "templates/homepage.html" (podcastsCtx <> careersCtx <> announceCtx <> eventsCtx) >>= loadAndApplyTemplate "templates/boilerplate.html" sponsors >>= relativizeUrls @@ -269,7 +295,7 @@ main = hakyll $ do >>= loadAndApplyTemplate "templates/boilerplate.html" sponsors >>= relativizeUrls --- Careers --------------------------------------------------------------------------------------------- +-- careers --------------------------------------------------------------------------------------------- create ["careers/index.html"] $ do route idRoute compile $ do @@ -423,6 +449,18 @@ announcementsCtx :: [Item String] -> Context String announcementsCtx ads = listField "announcements" defaultContext (pure ads) +-- Events + +allEventsCtx :: [Item String] -> Context String +allEventsCtx evts = + listField "events" defaultContext (pure evts) <> + defaultContext + +activeEventsCtx :: [Item String] -> Context String +activeEventsCtx evts = + listField "events" defaultContext (ofMetadataField "status" "active" evts) <> + defaultContext + -------------------------------------------------------------------------------------------------------- -- UTILS ----------------------------------------------------------------------------------------------- -------------------------------------------------------------------------------------------------------- diff --git a/templates/event.html b/templates/event.html new file mode 100644 index 00000000..d3e8de89 --- /dev/null +++ b/templates/event.html @@ -0,0 +1,17 @@ +
+
+

$title$

+
+ +
+
+
+
+
Posted:
+
Status:
+
+ $body$ +
+
+
+
diff --git a/templates/events/list.html b/templates/events/list.html new file mode 100644 index 00000000..a231537c --- /dev/null +++ b/templates/events/list.html @@ -0,0 +1,55 @@ +--- +title: Events +--- +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+

Events

+
+ $if(events)$ +
+
+ $for(events)$ + $partial("templates/events/tile.html")$ + $endfor$ +
+
+ $endif$ +
diff --git a/templates/events/page.html b/templates/events/page.html new file mode 100644 index 00000000..25f20284 --- /dev/null +++ b/templates/events/page.html @@ -0,0 +1,21 @@ +
+
+
+

$title$

+

+ $summary$ +

+
+
+
+
+
+
+
+
Location: $location$
+
Dates: $daterange$
+
+ $body$ +
+
+
diff --git a/templates/events/tile.html b/templates/events/tile.html new file mode 100644 index 00000000..4f80c524 --- /dev/null +++ b/templates/events/tile.html @@ -0,0 +1,16 @@ +
+
+
+

$title$

+

$summary$

+ + + + +
Dates:

$daterange$

Location:

$location$

+ +
+
+
diff --git a/templates/homepage.html b/templates/homepage.html index 459d316e..1e50ba35 100644 --- a/templates/homepage.html +++ b/templates/homepage.html @@ -44,6 +44,13 @@

$endfor$ + + $if(events)$ + $for(events)$ + $partial("templates/events/tile.html")$ + $endfor$ + $endif$ +