Skip to content

Commit 5bc42ff

Browse files
Merge pull request #251 from haskellfoundation/ghc-2023-contrib
Add infrastructure for events, plus the GHC contributors workshop
2 parents f2d4758 + 135c3b9 commit 5bc42ff

File tree

8 files changed

+202
-5
lines changed

8 files changed

+202
-5
lines changed
Lines changed: 43 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
---
2+
title: 2023 GHC Contributors' Workshop
3+
published: 2023-03-01
4+
daterange: June 7-9, 2023
5+
status: active
6+
location: Rapperswil, Switzerland
7+
summary: A hands-on introduction to working on GHC, colocated with Zurihac 2023
8+
---
9+
10+
11+
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.
12+
13+
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.
14+
15+
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.
16+
17+
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.
18+
19+
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.
20+
21+
So far, Simon Peyton Jones has confirmed that he will present at the workshop. Watch this space for more presenters as we confirm them!
22+
23+
Due to space constraints and to enable scholarships for student participants, there will be a fee for full on-site participation.
24+
Fees will be used to cover travel costs for presenters and students who don't have other funding to attend.
25+
The fee depends on participant category:
26+
27+
* _Enrolled students_ ($$40) are participants who are enrolled full-time at an educational institution.
28+
29+
* _Individual professionals_ ($$400) are no longer students and are interested in working on GHC for their own purposes.
30+
31+
* _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.
32+
33+
All fees are in US dollars.
34+
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 [[email protected]](mailto:[email protected]) to discuss a reduced or waived fee—this goes for all three categories of participant.
35+
36+
A certificate of completion will be available on advance request to students who attend the entire event.
37+
38+
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.
39+
40+
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 [[email protected]](mailto:[email protected]).
41+
42+
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.
43+

haskell-foundation.cabal

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
name: haskell-foundation
22
version: 0.1.0.0
33
build-type: Simple
4-
cabal-version: >= 1.10
4+
cabal-version: 2.0
55

66
executable site
77
main-is: site.hs
88
build-depends: base == 4.*
9-
, hakyll
9+
, hakyll ^>=4.15
1010
, monadlist
11-
, pandoc
11+
, pandoc >=2.11 && <2.20
1212
, text
1313
ghc-options: -threaded
1414
default-language: Haskell2010

site.hs

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -210,6 +210,31 @@ main = hakyll $ do
210210
match "podcast/*/transcript.markdown" $ compile pandocCompiler
211211
match "podcast/*/links.markdown" $ compile pandocCompiler
212212

213+
-- Events
214+
215+
create ["events/index.html"] $ do
216+
route idRoute
217+
compile $ do
218+
sponsors <- buildBoilerplateCtx (Just "Events")
219+
ctx <- allEventsCtx <$> (recentFirst =<< loadAll ("events/*.markdown" .&&. hasNoVersion))
220+
221+
makeItem ""
222+
>>= loadAndApplyTemplate "templates/events/list.html" ctx
223+
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
224+
>>= relativizeUrls
225+
226+
match "events/*.markdown" $ do
227+
route $ setExtension "html"
228+
let ctxt = mconcat
229+
[ defaultContext ]
230+
compile $ do
231+
sponsors <- buildBoilerplateCtx Nothing
232+
pandocCompiler
233+
>>= applyAsTemplate sponsors
234+
>>= loadAndApplyTemplate "templates/events/page.html" ctxt
235+
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
236+
>>= relativizeUrls
237+
213238
-- Description compiler --------------------------------------------------------------------------------
214239
--
215240
-- 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
226251
careersCtx <- careersCtx . reverse <$> loadAll "careers/*.markdown"
227252
announces <- take 1 <$> (recentFirst =<< loadAll @String "news/*/**.markdown")
228253
let announceCtx = announcementsCtx announces
254+
eventsCtx <- activeEventsCtx <$> (recentFirst =<< loadAll ("events/*.markdown" .&&. hasNoVersion))
229255

230256
makeItem ""
231-
>>= loadAndApplyTemplate "templates/homepage.html" (podcastsCtx <> careersCtx <> announceCtx)
257+
>>= loadAndApplyTemplate "templates/homepage.html" (podcastsCtx <> careersCtx <> announceCtx <> eventsCtx)
232258
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
233259
>>= relativizeUrls
234260

@@ -269,7 +295,7 @@ main = hakyll $ do
269295
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
270296
>>= relativizeUrls
271297

272-
-- Careers ---------------------------------------------------------------------------------------------
298+
-- careers ---------------------------------------------------------------------------------------------
273299
create ["careers/index.html"] $ do
274300
route idRoute
275301
compile $ do
@@ -423,6 +449,18 @@ announcementsCtx :: [Item String] -> Context String
423449
announcementsCtx ads =
424450
listField "announcements" defaultContext (pure ads)
425451

452+
-- Events
453+
454+
allEventsCtx :: [Item String] -> Context String
455+
allEventsCtx evts =
456+
listField "events" defaultContext (pure evts) <>
457+
defaultContext
458+
459+
activeEventsCtx :: [Item String] -> Context String
460+
activeEventsCtx evts =
461+
listField "events" defaultContext (ofMetadataField "status" "active" evts) <>
462+
defaultContext
463+
426464
--------------------------------------------------------------------------------------------------------
427465
-- UTILS -----------------------------------------------------------------------------------------------
428466
--------------------------------------------------------------------------------------------------------

templates/event.html

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<div class="max-w-screen-xl mx-auto py-16 md:py-24">
2+
<div class="text-center pt-12 md:pt-20 px-12 sm:px-16 md:px-24 lg:px-36 ">
3+
<h1 class="text-2xl-5xl">$title$</h1>
4+
</div>
5+
6+
<div class="max-w-screen-xl mx-auto">
7+
<div class="px-4 sm:px-8 md:px-12 lg:px-16">
8+
<div class="mx-auto prose md:prose-lg">
9+
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12 bg-gray-100">
10+
<div class="text-lg"><strong>Posted:</strong> </div>
11+
<div class="text-lg"><strong>Status:</strong> </div>
12+
</div>
13+
$body$
14+
</div>
15+
</div>
16+
</div>
17+
</div>

templates/events/list.html

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
---
2+
title: Events
3+
---
4+
<div class="max-w-screen-xl mx-auto py-16 md:py-24">
5+
<div class="sm:px-6 lg:px-16">
6+
<div class="relative">
7+
<div class="absolute top-0 left-0 border-t border-l border-purple-50 h-10 md:h-20 w-10 md:w-20">
8+
<div
9+
class="absolute top-1 md:top-2 left-1 md:left-2 border-t border-l border-purple-100 h-10 md:h-20 w-10 md:w-20">
10+
<div
11+
class="absolute top-1 md:top-2 left-1 md:left-2 border-t border-l border-purple-200 h-10 md:h-20 w-10 md:w-20">
12+
<div
13+
class="absolute top-1 md:top-2 left-1 md:left-2 border-t border-l border-purple-300 h-10 md:h-20 w-10 md:w-20">
14+
<div
15+
class="absolute top-1 md:top-2 left-1 md:left-2 border-t border-l border-purple-400 h-10 md:h-20 w-10 md:w-20">
16+
<div
17+
class="absolute top-1 md:top-2 left-1 md:left-2 border-t border-l border-purple-500 h-10 md:h-20 w-10 md:w-20">
18+
</div>
19+
</div>
20+
</div>
21+
</div>
22+
</div>
23+
</div>
24+
<div class="absolute top-0 right-0 border-t border-r border-purple-50 h-10 md:h-20 w-10 md:w-20">
25+
<div
26+
class="absolute top-1 md:top-2 right-1 md:right-2 border-t border-r border-purple-100 h-10 md:h-20 w-10 md:w-20">
27+
<div
28+
class="absolute top-1 md:top-2 right-1 md:right-2 border-t border-r border-purple-200 h-10 md:h-20 w-10 md:w-20">
29+
<div
30+
class="absolute top-1 md:top-2 right-1 md:right-2 border-t border-r border-purple-300 h-10 md:h-20 w-10 md:w-20">
31+
<div
32+
class="absolute top-1 md:top-2 right-1 md:right-2 border-t border-r border-purple-400 h-10 md:h-20 w-10 md:w-20">
33+
<div
34+
class="absolute top-1 md:top-2 right-1 md:right-2 border-t border-r border-purple-500 h-10 md:h-20 w-10 md:w-20">
35+
</div>
36+
</div>
37+
</div>
38+
</div>
39+
</div>
40+
</div>
41+
</div>
42+
</div>
43+
<div class="text-center pt-12 md:pt-20 px-12 sm:px-16 md:px-24 lg:px-36 ">
44+
<h1 class="text-2xl-5xl">Events</h1>
45+
</div>
46+
$if(events)$
47+
<div class="mt-16 md:mt-24">
48+
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12">
49+
$for(events)$
50+
$partial("templates/events/tile.html")$
51+
$endfor$
52+
</div>
53+
</div>
54+
$endif$
55+
</div>

templates/events/page.html

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<div class="max-w-screen-xl mx-auto">
2+
<div class="xl:max-w-screen-xl mx-auto md:px-12 lg:px-16 py-16 md:py-24">
3+
<div class="bg-gray-800 shadow-lg shadow-xl shadow-md shadow-sm px-6 sm:px-12 md:px-12 lg:px-16 py-16 md:py-20">
4+
<h2 class="text-gray-50 font-normal text-3xl-4xl text-center">$title$</h2>
5+
<p class="mt-10 lg:text-xl text-gray-300 leading-relaxed text-center">
6+
$summary$
7+
</p>
8+
</div>
9+
</div>
10+
</div>
11+
<div class="max-w-screen-xl mx-auto">
12+
<div class="px-4 sm:px-8 md:px-12 lg:px-16">
13+
<div class="mx-auto prose md:prose-lg">
14+
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12 bg-gray-100">
15+
<div class="text-lg"><strong>Location:</strong> $location$ </div>
16+
<div class="text-lg"><strong>Dates:</strong> $daterange$ </div>
17+
</div>
18+
$body$
19+
</div>
20+
</div>
21+
</div>

templates/events/tile.html

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
<div class="bg-white border border-gray-300 rounded py-8 px-6 sm:px-12 text-center">
2+
<div class="bg-gray-100 px-6 sm:px-12 lg:px-16 py-6 lg:py-24">
3+
<div class="space-y-4">
4+
<h2 class="text-center text-2xl-4xl font-normal">$title$</h2>
5+
<p>$summary$</p>
6+
<table>
7+
<!-- the p tags here are to work around Tailwind being incomprehensible - DTC 2023-03-01 -->
8+
<tr><th scope="row" style="text-align: right;">Dates:</th><td><p>$daterange$</p></td></tr>
9+
<tr><th scope="row" style="text-align: right;">Location:</th><td><p>$location$</p></td></tr>
10+
</table>
11+
<div class="mt-4">
12+
<a class="arrow-link" href="$url$">&gt;&gt; Read more</a>
13+
</div>
14+
</div>
15+
</div>
16+
</div>

templates/homepage.html

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,13 @@ <h2 class="text-center text-2xl-4xl font-normal">
4444
</div>
4545
</div>
4646
$endfor$
47+
48+
$if(events)$
49+
$for(events)$
50+
$partial("templates/events/tile.html")$
51+
$endfor$
52+
$endif$
53+
4754
</div>
4855
</div>
4956

0 commit comments

Comments
 (0)