Skip to content

Add infrastructure for events, plus the GHC contributors workshop #251

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Mar 1, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 43 additions & 0 deletions events/2023-ghc-development-workshop.markdown
Original file line number Diff line number Diff line change
@@ -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.

6 changes: 3 additions & 3 deletions haskell-foundation.cabal
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
name: haskell-foundation
version: 0.1.0.0
build-type: Simple
cabal-version: >= 1.10
cabal-version: 2.0
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Needed for ^>=


executable site
main-is: site.hs
build-depends: base == 4.*
, hakyll
, hakyll ^>=4.15
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The cabal solver was picking absurd solutions on my machine that involved ancient Hakyll versions and very new Pandoc versions and that would not build together. This seems to fix it.

, monadlist
, pandoc
, pandoc >=2.11 && <2.20
, text
ghc-options: -threaded
default-language: Haskell2010
42 changes: 40 additions & 2 deletions site.hs
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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

Expand Down Expand Up @@ -269,7 +295,7 @@ main = hakyll $ do
>>= loadAndApplyTemplate "templates/boilerplate.html" sponsors
>>= relativizeUrls

-- Careers ---------------------------------------------------------------------------------------------
-- careers ---------------------------------------------------------------------------------------------
create ["careers/index.html"] $ do
route idRoute
compile $ do
Expand Down Expand Up @@ -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 -----------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------
Expand Down
17 changes: 17 additions & 0 deletions templates/event.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,17 @@
<div class="max-w-screen-xl mx-auto py-16 md:py-24">
<div class="text-center pt-12 md:pt-20 px-12 sm:px-16 md:px-24 lg:px-36 ">
<h1 class="text-2xl-5xl">$title$</h1>
</div>

<div class="max-w-screen-xl mx-auto">
<div class="px-4 sm:px-8 md:px-12 lg:px-16">
<div class="mx-auto prose md:prose-lg">
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12 bg-gray-100">
<div class="text-lg"><strong>Posted:</strong> </div>
<div class="text-lg"><strong>Status:</strong> </div>
</div>
$body$
</div>
</div>
</div>
</div>
55 changes: 55 additions & 0 deletions templates/events/list.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: Events
---
<div class="max-w-screen-xl mx-auto py-16 md:py-24">
<div class="sm:px-6 lg:px-16">
<div class="relative">
<div class="absolute top-0 left-0 border-t border-l border-purple-50 h-10 md:h-20 w-10 md:w-20">
<div
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">
<div
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">
<div
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">
<div
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">
<div
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">
</div>
</div>
</div>
</div>
</div>
</div>
<div class="absolute top-0 right-0 border-t border-r border-purple-50 h-10 md:h-20 w-10 md:w-20">
<div
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">
<div
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">
<div
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">
<div
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">
<div
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">
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="text-center pt-12 md:pt-20 px-12 sm:px-16 md:px-24 lg:px-36 ">
<h1 class="text-2xl-5xl">Events</h1>
</div>
$if(events)$
<div class="mt-16 md:mt-24">
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12">
$for(events)$
$partial("templates/events/tile.html")$
$endfor$
</div>
</div>
$endif$
</div>
21 changes: 21 additions & 0 deletions templates/events/page.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
<div class="max-w-screen-xl mx-auto">
<div class="xl:max-w-screen-xl mx-auto md:px-12 lg:px-16 py-16 md:py-24">
<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">
<h2 class="text-gray-50 font-normal text-3xl-4xl text-center">$title$</h2>
<p class="mt-10 lg:text-xl text-gray-300 leading-relaxed text-center">
$summary$
</p>
</div>
</div>
</div>
<div class="max-w-screen-xl mx-auto">
<div class="px-4 sm:px-8 md:px-12 lg:px-16">
<div class="mx-auto prose md:prose-lg">
<div class="max-w-screen-xl mx-auto grid gap-8 lg:grid-cols-2 md:px-12 bg-gray-100">
<div class="text-lg"><strong>Location:</strong> $location$ </div>
<div class="text-lg"><strong>Dates:</strong> $daterange$ </div>
</div>
$body$
</div>
</div>
</div>
16 changes: 16 additions & 0 deletions templates/events/tile.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
<div class="bg-white border border-gray-300 rounded py-8 px-6 sm:px-12 text-center">
<div class="bg-gray-100 px-6 sm:px-12 lg:px-16 py-6 lg:py-24">
<div class="space-y-4">
<h2 class="text-center text-2xl-4xl font-normal">$title$</h2>
<p>$summary$</p>
<table>
<!-- the p tags here are to work around Tailwind being incomprehensible - DTC 2023-03-01 -->
<tr><th scope="row" style="text-align: right;">Dates:</th><td><p>$daterange$</p></td></tr>
<tr><th scope="row" style="text-align: right;">Location:</th><td><p>$location$</p></td></tr>
</table>
<div class="mt-4">
<a class="arrow-link" href="$url$">&gt;&gt; Read more</a>
</div>
</div>
</div>
</div>
7 changes: 7 additions & 0 deletions templates/homepage.html
Original file line number Diff line number Diff line change
Expand Up @@ -44,6 +44,13 @@ <h2 class="text-center text-2xl-4xl font-normal">
</div>
</div>
$endfor$

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

</div>
</div>

Expand Down