|
42 | 42 | ;; ---------- |
43 | 43 | ;; |
44 | 44 |
|
45 | | -(def nav-links { |
46 | | - "Venue" "venue" |
| 45 | +(def nav-links {"Venue" "venue" |
47 | 46 | "Sponsors" "sponsorship" |
| 47 | + "Workshop" "workshops" |
48 | 48 | "Call For Proposals" "cfp"} |
49 | 49 | #_{"Tickets" "tickets" |
50 | | - "Talks" "talks" |
51 | | - "Workshops" "workshops" |
52 | | - "Sponsors" "sponsorship" |
53 | | - "Venue" "venue"}) |
| 50 | + "Talks" "talks" |
| 51 | + "Workshops" "workshops" |
| 52 | + "Sponsors" "sponsorship" |
| 53 | + "Venue" "venue"}) |
54 | 54 |
|
55 | 55 | (defn nav [] |
56 | 56 | [:nav |
|
71 | 71 | ;; |
72 | 72 |
|
73 | 73 | (defn workshops [] |
74 | | - #_[:section {:id "workshop-details"} |
| 74 | + [:section {:id "workshop-details"} |
75 | 75 | [:div |
76 | | - [:p.intro data/conf-with-year " will have two full-day workshops."] |
77 | | - [:p "An introductory Clojure workshop and an intermediate Clojure |
78 | | - workshop. The lessons apply to ClojureScript as well. Note that |
79 | | - both the workshops will be conducted simultaneously on the same day."] |
| 76 | + [:p.intro data/conf-with-year " is co-hosting a free, beginner friendly workshop with ClojureBridge."] |
| 77 | + [:p "ClojureBridge is a free, beginner-friendly Clojure programming workshop that aims |
| 78 | + to increase diversity within the Clojure community."] |
| 79 | + [:p "You will learn fundamental programming concepts in Clojure through practical examples |
| 80 | + and exercises. Teachers and assistants will be there to guide you."] |
80 | 81 | [:h3 {:id "introduction"} |
81 | | - "Introduction to Clojure"] |
82 | | - [:h4 "Audience"] |
83 | | - [:p "Practising programmers and/or CS undergrads/grads who are new to Clojure, LISPs or functional programming but not absolute beginners |
84 | | - at programming. We recommend that attendees be familiar with at least one programming language."] |
| 82 | + "ClojureBridge: Introduction to Clojure"] |
| 83 | + [:h4 "Who can apply?"] |
| 84 | + [:p "This workshop will be for women and non-binary attendees. Women and non-binary attendees are |
| 85 | + permitted to bring along a male guest attendee."] |
| 86 | + [:p "The workshop is open to people who are completely new to programming, as well as existing developers |
| 87 | + new to Clojure."] |
| 88 | + [:h4 "What do I need to bring?"] |
| 89 | + [:p "Please bring your own laptop for the workshop. Everything else, including wifi, drinking water, |
| 90 | + lunch and tea will be provided at the venue."] |
85 | 91 | [:h4 "Session outline"] |
| 92 | + [:p "We will split the attendees two groups—Beginner and Intermediate. |
| 93 | + The intermediate group will have more challenging exercises to delve into."] |
| 94 | + [:p "The session itself will be divided into two parts—" [:strong "Learning"] " and " [:strong "Doing"]] |
86 | 95 | [:div |
87 | | - [:p "This will be a day-long hands-on workshop. We will progressively work through a series of exercises by building concept upon concept."] |
88 | | - [:p "We will try to achieve this with:"] |
| 96 | + [:p "Learning:"] |
89 | 97 | [:ul |
90 | | - [:li "A small set of core ideas,"] |
91 | | - [:li "a handful of Clojure primitives,"] |
92 | | - [:li "a few API design techniques, and"] |
93 | | - [:li "an interactive (REPL-driven) programming workflow."]] |
94 | | - [:p "We will do the following:"] |
| 98 | + [:li "What is programming?"] |
| 99 | + [:li "What is Clojure? Why choose Clojure?"] |
| 100 | + [:li "Understanding the REPL"] |
| 101 | + [:li "Clojure Syntax—the anatomy of an S-expression"] |
| 102 | + [:li "Data types, functions, and sequences"] |
| 103 | + [:li "Context and lexical bindings"] |
| 104 | + [:li "Control flow and logic"] |
| 105 | + [:li "Functional composition"]] |
| 106 | + [:p "Doing (in smaller groups, with assigned guides):"] |
95 | 107 | [:ul |
96 | | - [:li "Model things with pure data,"] |
97 | | - [:li "design clean functional APIs,"] |
98 | | - [:li "compose purely functional logic, and"] |
99 | | - [:li "use the REPL to interactively grow, inspect and debug code."]] |
100 | | - [:p "By the end of the workshop, attendees should have an understanding of what Clojure has to offer, as well as a basic understanding of |
101 | | - how to solve problems in Clojure. The workshop should serve as a springboard from which attendees can launch their own exploration |
102 | | - of the language and its ecosystem. Fully documented workshop material will be available for use at home."]] |
103 | | - |
104 | | - [:h3 |
105 | | - {:id "intermediate"} |
106 | | - "Intermediate Clojure"] |
107 | | - [:h4 "Audience"] |
108 | | - [:p "This workshop is aimed at practising programmers who have some exposure to Clojure, but are looking to accomplish non trivial tasks using Clojure."] |
109 | | - [:h4 "Session outline"] |
110 | | - [:p "This will be a day-long hands-on workshop."] |
111 | | - [:p "The aim of this workshop is to help the attendee work in Clojure more effectively. We will learn about:"] |
112 | | - [:ul |
113 | | - [:li "Repl driven development"] |
114 | | - [:li "Clojure's approach to state and identity"] |
115 | | - [:li "Laziness & Vars (Benefits & pitfalls)"] |
116 | | - [:li "Java interop"] |
117 | | - [:li "Testing"] |
118 | | - [:li "Debugging Effectively"] |
119 | | - [:li "Clojure ecosystem"]] |
120 | | - [:p "To help us illustrate and understand the application of these concepts, we will build a simple web app that will tie all these concepts together."] |
121 | | - [:p "We will not be covering macros or advanced clojure concurrency primitives in this workshop."]]]) |
| 108 | + [:li "Exercise 1: (Almost) Play Quidditch with Clojure"] |
| 109 | + [:li "Exercise 2: Land of Wizards"] |
| 110 | + [:li "Exercise 3: Operating a Mars Rover"]] |
| 111 | + #_[:p "By the end of the workshop, attendees should have an understanding of what Clojure has to offer, as well as a basic understanding of |
| 112 | + how to solve problems in Clojure. The workshop should serve as a springboard from which attendees can launch their own exploration |
| 113 | + of the language and its ecosystem. Fully documented workshop material will be available for use at home."]]]]) |
122 | 114 |
|
123 | 115 | ;; |
124 | 116 | ;; ------------------ |
|
195 | 187 | [:img {:alt "nilenso", :src "images/sponsors/nilenso.png"}]]] |
196 | 188 |
|
197 | 189 | #_[:div.benefactor-slab.gold |
198 | | - [:h3 "Gold"]] |
| 190 | + [:h3 "Gold"]] |
199 | 191 |
|
200 | 192 | [:div.benefactor-slab.bronze |
201 | 193 | [:h3 "Bronze"] |
|
225 | 217 | sanctioned or expelled from the conference without a refund at |
226 | 218 | the discretion of the organisers."]]) |
227 | 219 |
|
228 | | - |
229 | 220 | (defn team-member [name github twitter avatar] |
230 | 221 | [:li |
231 | 222 | [:a |
232 | 223 | {:href twitter} |
233 | 224 | name |
234 | 225 | [:img {:alt name, :src (str avatar)}]] |
235 | 226 | [:div.small.article-fine-print.no-mobile |
236 | | - [:a |
237 | | - {:href github} |
238 | | - [:img {:alt "Github", :src "images/github.png"}]]]]) |
| 227 | + [:a |
| 228 | + {:href github} |
| 229 | + [:img {:alt "Github", :src "images/github.png"}]]]]) |
239 | 230 |
|
240 | 231 | (defn team [] |
241 | 232 | [:section {:id "team"} |
|
270 | 261 |
|
271 | 262 | (defn keynote [] |
272 | 263 | #_[:section {:id "keynote"} |
273 | | - [:h2 "Keynote"] |
274 | | - [:ol.article-list |
275 | | - [:li |
276 | | - [:a |
277 | | - {:href "#"} |
278 | | - [:img.article-image.keynote |
279 | | - {:alt "bbatsov", |
280 | | - :src "images/speakers/bozhidar-batsov.jpg"}]] |
281 | | - [:h4 |
282 | | - [:a {:href "https://metaredux.com"} "Bozhidar Batsov"]] |
283 | | - [:p.article-subtitle "Bozhidar is the maintainer of CIDER, nREPL, |
| 264 | + [:h2 "Keynote"] |
| 265 | + [:ol.article-list |
| 266 | + [:li |
| 267 | + [:a |
| 268 | + {:href "#"} |
| 269 | + [:img.article-image.keynote |
| 270 | + {:alt "bbatsov", |
| 271 | + :src "images/speakers/bozhidar-batsov.jpg"}]] |
| 272 | + [:h4 |
| 273 | + [:a {:href "https://metaredux.com"} "Bozhidar Batsov"]] |
| 274 | + [:p.article-subtitle "Bozhidar is the maintainer of CIDER, nREPL, |
284 | 275 | a dozen related projects, and the editor of the community |
285 | 276 | Clojure style guide. Most people would probably describe him as |
286 | 277 | an Emacs zealot (and they would be right). He's also quite fond |
287 | 278 | of the Lisp family of languages, functional programming in |
288 | 279 | general and Clojure in particular."] |
289 | | - [:div.article-fine-print.no-mobile |
290 | | - [:a |
291 | | - {:href "https://twitter.com/bbatsov"} |
292 | | - [:img {:alt "Twitter", :src "images/twitter.png"}]] |
293 | | - [:a |
294 | | - {:href "https://github.com/bbatsov"} |
295 | | - [:img {:alt "Github", :src "images/github.png"}]]]]]]) |
| 280 | + [:div.article-fine-print.no-mobile |
| 281 | + [:a |
| 282 | + {:href "https://twitter.com/bbatsov"} |
| 283 | + [:img {:alt "Twitter", :src "images/twitter.png"}]] |
| 284 | + [:a |
| 285 | + {:href "https://github.com/bbatsov"} |
| 286 | + [:img {:alt "Github", :src "images/github.png"}]]]]]]) |
296 | 287 |
|
297 | 288 | (defn tickets [] |
298 | 289 | #_[:section {:id "tickets"} |
299 | | - [:h2 "Tickets"]]) |
| 290 | + [:h2 "Tickets"]]) |
300 | 291 |
|
301 | 292 | (defn action-shots [] |
302 | 293 | [:section {:id "action-shots"} |
|
388 | 379 |
|
389 | 380 | (defn workshop-table [] |
390 | 381 | #_[:table.u-full-width.talk-table |
391 | | - [:thead |
392 | | - [:tr [:th "Time"] [:th "Event"]]] |
393 | | - [:tbody |
394 | | - [:tr.selected |
395 | | - [:td "9:30 am"] |
396 | | - [:td "Registrations"]] |
| 382 | + [:thead |
| 383 | + [:tr [:th "Time"] [:th "Event"]]] |
| 384 | + [:tbody |
| 385 | + [:tr.selected |
| 386 | + [:td "9:30 am"] |
| 387 | + [:td "Registrations"]] |
397 | 388 |
|
398 | | - [:tr |
399 | | - [:td "10:00 am – 6 pm"] |
400 | | - [:td "Introductory workshop"]] |
| 389 | + [:tr |
| 390 | + [:td "10:00 am – 6 pm"] |
| 391 | + [:td "Introductory workshop"]] |
401 | 392 |
|
402 | | - [:tr |
403 | | - [:td "10:00 am – 6 pm"] |
404 | | - [:td "Intermediate workshop"]] |
| 393 | + [:tr |
| 394 | + [:td "10:00 am – 6 pm"] |
| 395 | + [:td "Intermediate workshop"]] |
405 | 396 |
|
406 | | - [:tr |
407 | | - [:td "7 pm onwards"] |
408 | | - [:td "Pre-conference party"]]]]) |
| 397 | + [:tr |
| 398 | + [:td "7 pm onwards"] |
| 399 | + [:td "Pre-conference party"]]]]) |
409 | 400 |
|
410 | 401 | (defn talks-table [] |
411 | 402 | [:p "TBD"]) |
|
440 | 431 | [:ul |
441 | 432 | [:li "the sidebar artwork is procedurally generated and inspired by" |
442 | 433 | [:a {:href |
443 | | - "https://gitlab.com/inclojure/inclojure.gitlab.io/blob/redesign/src/cljs/inclojure_website/morellet.cljs"} |
444 | | - " François Morellet."]] |
| 434 | + "https://gitlab.com/inclojure/inclojure.gitlab.io/blob/redesign/src/cljs/inclojure_website/morellet.cljs"} |
| 435 | + " François Morellet."]] |
445 | 436 |
|
446 | 437 | [:li "source code to this website and other conference |
447 | 438 | organizational material is available" |
|
463 | 454 | [:img {:alt "Flickr", :src "images/flickr.png"}]]]) |
464 | 455 |
|
465 | 456 | (defn workshops-section [] |
466 | | - #_[:section {:id "workshops"} |
467 | | - [:h2 "Workshops"] |
| 457 | + [:section {:id "workshops"} |
| 458 | + [:h2 "Workshop"] |
468 | 459 | [:div |
469 | | - [:p data/conf-with-year " will have two full-day workshops."] |
470 | | - [:p "An introductory Clojure workshop and an intermediate Clojure |
471 | | - workshop. The lessons apply to ClojureScript as well. Note that |
472 | | - both the workshops will be conducted simultaneously on the same day."] |
| 460 | + [:p data/conf-with-year " is co-hosting a free, beginner friendly workshop with ClojureBridge."] |
473 | 461 |
|
474 | 462 | [:ol.article-list |
475 | | - [:li |
476 | | - [:img.article-image |
477 | | - {:alt "introductory" |
478 | | - :src "images/workshops/introductory.png"}] |
479 | | - |
480 | | - [:h4 {:id "introductory-workshop"} |
481 | | - [:a {:href "#workshop-details"} |
482 | | - "Introduction to Clojure"]] |
483 | | - |
484 | | - [:p.article-subtitle "Practising programmers and/or CS |
485 | | - undergrads/grads who are new to Clojure, LISPs or functional |
486 | | - programming but not absolute beginners at programming. We |
487 | | - recommend that attendees be familiar with at least one |
488 | | - programming language."] |
489 | | - |
490 | | - [:div.article-fine-print.no-mobile |
491 | | - [:a |
492 | | - {:href "https://github.com/inclojure-org/clojure-by-example"} |
493 | | - [:img {:alt "Github", :src "images/github.png"}]]]] |
494 | | - |
495 | | - [:li |
496 | | - [:img.article-image |
497 | | - {:alt "intermediate", |
498 | | - :src "images/workshops/intermediate.png"}] |
499 | | - |
500 | | - [:h4 {:id "intermediate-workshop"} |
501 | | - [:a {:href "#" |
502 | | - :on-click (fn [] |
503 | | - (reset! sub-page (workshops)))} "Intermediate Clojure"]] |
504 | | - |
505 | | - [:p.article-subtitle "This workshop is aimed at practising |
506 | | - programmers who have some exposure to Clojure, but are looking to |
507 | | - accomplish non trivial tasks using Clojure."] |
508 | | - |
509 | | - [:div.article-fine-print.no-mobile |
510 | | - [:a |
511 | | - {:href "https://github.com/inclojure-org/intermediate-clojure-workshop"} |
512 | | - [:img {:alt "Github", :src "images/github.png"}]]]]]]]) |
| 463 | + [:li |
| 464 | + [:img.article-image |
| 465 | + {:alt "introductory" |
| 466 | + :src "images/workshops/clojurebridge-logo.png"}] |
| 467 | + |
| 468 | + [:h4 {:id "introductory-workshop"} |
| 469 | + [:a {:href "#workshop-details"} |
| 470 | + "Introduction To Clojure"]] |
| 471 | + |
| 472 | + [:p.article-subtitle "ClojureBridge is a free, beginner-friendly Clojure |
| 473 | + programming workshop that aims to increase diversity within the Clojure |
| 474 | + community. You will learn fundamental programming concepts in Clojure |
| 475 | + through practical examples and exercises. This workshop will be for |
| 476 | + women and non-binary attendees. Women and non-binary attendees are |
| 477 | + permitted to bring along a male guest attendee."]]]]]) |
513 | 478 |
|
514 | 479 | ;; |
515 | 480 | ;; --------- |
|
0 commit comments