diff --git a/resources/public/css/style.css b/resources/public/css/style.css index 5cc76ba..f4f856e 100644 --- a/resources/public/css/style.css +++ b/resources/public/css/style.css @@ -17,6 +17,12 @@ font-weight: 600; } +@font-face { + font-family: 'Poppins'; + src: url('../fonts/Poppins-SemiBold.ttf'); + font-weight: 600; +} + body { font-style: normal; font-family: 'Cooper Hewitt', 'Barlow Semi Condensed', sans-serif; @@ -334,6 +340,10 @@ footer a img { margin: 0 0 16px 16px; } +img.speakers { + object-fit: cover +} + .previously.article-image { width: 150px; height: 170px; @@ -854,3 +864,9 @@ table { border: 1px dotted black; margin-bottom: 1.5em; } + +.devanagari { + font-family: 'Poppins', sans-serif; + margin-left: 0.2%; + font-size: 90%; +} diff --git a/resources/public/fonts/Poppins-SemiBold.ttf b/resources/public/fonts/Poppins-SemiBold.ttf new file mode 100644 index 0000000..74c726e Binary files /dev/null and b/resources/public/fonts/Poppins-SemiBold.ttf differ diff --git a/resources/public/images/mastodon.ico b/resources/public/images/mastodon.ico new file mode 100644 index 0000000..b09a98b Binary files /dev/null and b/resources/public/images/mastodon.ico differ diff --git a/resources/public/images/speakers/abhinav.jpg b/resources/public/images/speakers/abhinav.jpg new file mode 100644 index 0000000..e5e467d Binary files /dev/null and b/resources/public/images/speakers/abhinav.jpg differ diff --git a/resources/public/images/speakers/akshat.jpg b/resources/public/images/speakers/akshat.jpg new file mode 100644 index 0000000..7c3a6a2 Binary files /dev/null and b/resources/public/images/speakers/akshat.jpg differ diff --git a/resources/public/images/speakers/aldo.jpg b/resources/public/images/speakers/aldo.jpg new file mode 100644 index 0000000..bb7b62f Binary files /dev/null and b/resources/public/images/speakers/aldo.jpg differ diff --git a/resources/public/images/speakers/amogh.jpg b/resources/public/images/speakers/amogh.jpg new file mode 100644 index 0000000..6e30fa2 Binary files /dev/null and b/resources/public/images/speakers/amogh.jpg differ diff --git a/resources/public/images/speakers/anuj.jpg b/resources/public/images/speakers/anuj.jpg new file mode 100644 index 0000000..47ef266 Binary files /dev/null and b/resources/public/images/speakers/anuj.jpg differ diff --git a/resources/public/images/speakers/bozhidar-batsov.jpg b/resources/public/images/speakers/bozhidar-batsov.jpg deleted file mode 100644 index 4c04bdd..0000000 Binary files a/resources/public/images/speakers/bozhidar-batsov.jpg and /dev/null differ diff --git a/resources/public/images/speakers/dheeraj.jpg b/resources/public/images/speakers/dheeraj.jpg new file mode 100644 index 0000000..311a200 Binary files /dev/null and b/resources/public/images/speakers/dheeraj.jpg differ diff --git a/resources/public/images/speakers/prabhanshu.webp b/resources/public/images/speakers/prabhanshu.webp new file mode 100644 index 0000000..1713f6e Binary files /dev/null and b/resources/public/images/speakers/prabhanshu.webp differ diff --git a/resources/public/images/speakers/steven.jpg b/resources/public/images/speakers/steven.jpg new file mode 100644 index 0000000..28b1243 Binary files /dev/null and b/resources/public/images/speakers/steven.jpg differ diff --git a/resources/public/images/speakers/steven.png b/resources/public/images/speakers/steven.png new file mode 100644 index 0000000..0078a00 Binary files /dev/null and b/resources/public/images/speakers/steven.png differ diff --git a/resources/public/images/speakers/vedang.jpg b/resources/public/images/speakers/vedang.jpg new file mode 100644 index 0000000..80e537d Binary files /dev/null and b/resources/public/images/speakers/vedang.jpg differ diff --git a/resources/public/images/team/sezal.jpg b/resources/public/images/team/sezal.jpg new file mode 100644 index 0000000..42ff382 Binary files /dev/null and b/resources/public/images/team/sezal.jpg differ diff --git a/resources/public/images/team/siri.webp b/resources/public/images/team/siri.webp new file mode 100644 index 0000000..7df98de Binary files /dev/null and b/resources/public/images/team/siri.webp differ diff --git a/src/cljs/inclojure_website/core.cljs b/src/cljs/inclojure_website/core.cljs index 5a904bf..f0aa457 100644 --- a/src/cljs/inclojure_website/core.cljs +++ b/src/cljs/inclojure_website/core.cljs @@ -1,13 +1,13 @@ (ns inclojure-website.core - (:require [accountant.core :as accountant] - [goog.events :as events] - [goog.history.EventType :as HistoryEventType] - [inclojure-website.morellet :as morellet] - [inclojure-website.page :as page :refer [home layout sub-page workshops nav-links]] - [inclojure-website.talks :as talks] - [reagent.core :as reagent :refer [atom]] - [secretary.core :as secretary :include-macros true]) - (:import goog.History)) + (:require [accountant.core :as accountant] + [goog.events :as events] + [goog.history.EventType :as HistoryEventType] + [inclojure-website.morellet :as morellet] + [inclojure-website.page :as page :refer [home layout sub-page workshops nav-links talk-links]] + [inclojure-website.talks :as talks] + [reagent.core :as reagent :refer [atom]] + [secretary.core :as secretary :include-macros true]) + (:import goog.History)) ;; ------------------------- ;; Routes @@ -21,6 +21,11 @@ (reset! sub-page (workshops))) ;; Make perma-links for all navigation paths +(doseq [talk-link talk-links] + (secretary/defroute (str "/#" talk-link) [] + (reset! sub-page (home)) + (js/setTimeout #(.scrollIntoView (.getElementById js/document talk-link)) 0))) + (doseq [nav-link nav-links] (secretary/defroute (str "/#" (second nav-link)) [] (reset! sub-page (home)))) @@ -36,11 +41,11 @@ (defn hook-browser-navigation! [] (doto (History.) - (events/listen - HistoryEventType/NAVIGATE - (fn [event] - (secretary/dispatch! (.-token event)))) - (.setEnabled true))) + (events/listen + HistoryEventType/NAVIGATE + (fn [event] + (secretary/dispatch! (.-token event)))) + (.setEnabled true))) ;; ------------------------- ;; Initialize app diff --git a/src/cljs/inclojure_website/data.cljs b/src/cljs/inclojure_website/data.cljs index 072f82e..dbfda6d 100644 --- a/src/cljs/inclojure_website/data.cljs +++ b/src/cljs/inclojure_website/data.cljs @@ -9,7 +9,7 @@ :github "https://github.com/alishamohanty" :avatar "images/team/alisha.webp"} - {:name "Akshatha Herle" + {:name "Akshatha H" :github "https://github.com/qptr" :avatar "images/team/akshatha.webp"} @@ -46,6 +46,14 @@ :twitter "https://twitter.com/jaju" :avatar "images/team/jaju.jpg"} + {:name "Sezal Jain" + :github "https://github.com/sezaljain" + :avatar "images/team/sezal.jpg"} + + {:name "Siri PR" + :github "https://github.com/siripr4" + :avatar "images/team/siri.webp"} + {:name "Somya Maithani" :github "https://github.com/msomya" :avatar "images/team/somya.png"} @@ -86,6 +94,122 @@ distributed systems, databases and fault-tolerant scalable systems. He is the author of “Clojure High Performance Programming” and organiser of the Bangalore-Clojure meetup group."}]) +(defonce speakers + [{:name "Amogh Talpallikar" + :talk-title "Carbon Dating Polymorphism in Clojure" + :github "https://github.com/mogverse" + :twitter "https://twitter.com/mogverse" + :www "https://www.linkedin.com/in/amogh-talpallikar-35704b5a/?originalSubdomain=in" + :avatar "images/speakers/amogh.jpg" + :bio "Amogh is an Engineering Manager at Helpshift with over 5 years of + hands-on experience in writing and maintaining backend systems in Clojure. + Beyond the realm of technology, he embraces his inner creativity as an + amateur doodler and a habitual storyteller. A pop culture aficionado at + heart, he finds inspiration in the narratives of both code and culture." + :talk-summary "This talk explores the evolution of polymorphism as an idea, tracing its + origins and key historical influences, to understand the design decisions + and significance of Clojure's offering."} + {:name "Vedang Manerikar" + :talk-title "Developer Tooling for Speed and Productivity in 2024" + :github "" + :masto "https://fosstodon.org/@vedang" + :www "https://vedang.me" + :avatar "images/speakers/vedang.jpg" + :bio "Vedang is a software engineer and technology leader with a passion for building scalable systems and empowering teams. He has a keen interest in functional programming, particularly in Clojure, and enjoys building innovative end-to-end solutions to hard product challenges." + :talk-summary "This talk covers some tools and practices that improve the + experience of programming Clojure. These tools have made me better and + faster, and I hope they will be useful to others as well. Broadly, I + categorise tools that help (1) individual contributors, (2) Clojure teams, + (3) working with production."} + {:name "Aldo Sujin" + :talk-title "Personal Identity Information (PII) Detection with Clojure" + :github "" + :twitter "" + :www "https://www.linkedin.com/in/aldo-sujin-g-b630ba221/" + :avatar "images/speakers/aldo.jpg" + :bio "Aldo Sujin is a Software engineer at Formcept. With the knowledge in Clojure and + regular expressions, he has implemented the PII annotation in Clojure as one of the + core plug-ins for the data processing engine of FORMCEPT’s MECBot product." + :talk-summary "With the digitalization of anything and everything, PII detection is a recent topic of attention. This talk will cover + how to detect PII with Clojure, the challenges involved and how one can overcome these challenges."} + {:name "Akshat Shah" + :talk-title "Architecture and Design of Goose" + :github "https://github.com/olttwa" + :twitter "https://twitter.com/olttwa" + :www "" + :avatar "images/speakers/akshat.jpg" + :bio "Akshat is a Senior Partner at Nilenso, and the author of Goose, a background processing library written in Clojure. + Akshat believes in the immeasurable impact code can create. Before Nilenso, he was part of a hypergrowth journey at GoTo and Rippling, + where he realised the true potential of software." + :talk-summary "The goal of this talk is to inspire developers to rethink + their approach to background processing and open-source libraries. They will + learn about simplicity in API design, reliability, extensibility and + scalability. Additionally, developers will be introduced to a battle-tested + library for background processing written in Clojure which was designed with + these principles and features in mind."} + {:name "Anuj Kumar" + :talk-title "Navigating Data Models: A Journey into Unified, Scalable, and Composable Data Architecture" + :github "https://github.com/anujsrc" + :twitter "https://x.com/kumarsays" + :www "https://medium.com/@anujsays" + :avatar "images/speakers/anuj.jpg" + :bio "Anuj Kumar, Co-founder and leadership team member at FORMCEPT, has + over 16 years of experience in designing large-scale distributed systems. He + has spoken at various conferences, published patents and research papers, + and authored a book on Microservices with Clojure." + :talk-summary "In the dynamic realm of data management, the choice of data + models can often dictate the success or failure of organizational data + strategies. This talk delves into the intricacies of data models, explores + the associated challenges, and presents a solution that Clojure and its + ecosystem can provide. "} + {:name "Abhinav Sarkar" + :talk-title "Functional Programming Patterns" + :github "https://github.com/abhin4v" + :masto "https://fantastic.earth/@abnv" + :www "https://abhinavsarkar.net/" + :avatar "images/speakers/abhinav.jpg" + :bio "Abhinav works as a Senior Engineer at Google, who has worked + extensively in Clojure, Go and Java on large distributed systems for the + past fifteen years. He has been dabbling in functional programming for the + past decade and has been exploring Haskell, Erlang and ML." + :talk-summary "I've been writing Clojure and other functional programming + languages professionally for nearly a decade now. I've noticed that while + people understand the basics of FP, they find it hard to apply FP at large. + In this session, I'll talk about some useful patterns that make applying FP. + easier at large."} + {:name "Dheeraj Kumar" + :talk-title "Exploring Electric Clojure" + :github "" + :twitter "" + :www "https://www.linkedin.com/in/adheerajkumar/" + :avatar "images/speakers/dheeraj.jpg" + :bio "Dheeraj Kumar has been writing software unprofessionally for 14 years. + He can mess-up any layer of the system from mobile frontends to DB infra. He + blames most of his absurd productivity on Clojure. He moved to tech + leadership solely to prevent others from making his mistakes." + :talk-summary "This talk explores Electric Clojure, a new paradigm for building full-stack + web applications in Clojure without thinking about the frontend/backend + separation or the network, resulting in blazing-fast applications with fewer + lines of code."} + {:name "Prabhanshu Gupta" + :talk-title "Building a spreadsheet from the ground up" + :github "https://github.com/prabhanshuguptagit" + :twitter "https://twitter.com/twomogambo" + :www "" + :avatar "images/speakers/prabhanshu.webp" + :bio "Prabhanshu has been a software developer at nilenso since 2019, where + he's written a bunch of Rails and Clojure. These days he spends most of his + time hacking on bean, a spreadsheet written in cljs. Otherwise he's likely + to be found making bleeps and bloops on the (largely unused) music gear he's + amassed over the years." + :talk-summary "Spreadsheets are probably the easiest programming environment + to use, but maybe not the simplest (wink wink). I ask the question: What + could better spreadsheet software look like? In an attempt to answer this + I've been making one, using ClojureScript. I’ll discuss what’s fun about + exploring spreadsheets as a programming environment, how I went about + building one, some Clojure tooling that makes it easy, things I learnt along + the way and how you could build one too."}]) + (defonce previous-editions {:bangalore {:map "images/bangalore-map-caption.png" :editions [{:year "2019" diff --git a/src/cljs/inclojure_website/page.cljs b/src/cljs/inclojure_website/page.cljs index f35db8a..a2c239a 100644 --- a/src/cljs/inclojure_website/page.cljs +++ b/src/cljs/inclojure_website/page.cljs @@ -1,5 +1,6 @@ (ns inclojure-website.page - (:require [inclojure-website.data :as data] + (:require [clojure.string :as string] + [inclojure-website.data :as data] [inclojure-website.links :as links] [inclojure-website.morellet :as morellet] [inclojure-website.sundry :as sundry] @@ -46,13 +47,11 @@ (def nav-links {"Tickets" "tickets" "Venue" "venue" "Schedule" "schedule" - "Sponsors" "sponsorship" - "Workshop" "workshops"} - #_{"Tickets" "tickets" - "Talks" "talks" - "Workshops" "workshops" - "Sponsors" "sponsorship" - "Venue" "venue"}) + "Talks" "speaker-list" + "Workshop" "workshops" + "Sponsors" "sponsorship"}) + +(def talk-links ["keynote" "amogh" "vedang" "aldo" "akshat" "anuj" "abhinav" "dheeraj" "prabhanshu"]) (defn nav [] [:nav @@ -190,11 +189,8 @@ [:a {:href "https://nilenso.com"} [:img {:alt "nilenso", :src "images/sponsors/nilenso.png"}]]] - #_[:div.benefactor-slab.gold - [:h3 "Gold"]] - - [:div.benefactor-slab.bronze - [:h3 "Bronze"] + [:div.benefactor-slab.gold + [:h3 "Gold"] [:a {:href "https://nammayatri.in/"} [:img {:alt "Namma Yatri" , :src "images/sponsors/namma-yatri.png"}]] @@ -202,6 +198,9 @@ [:a {:href "https://www.teamohana.com"} [:img {:alt "TeamOhana", :src "images/sponsors/team-ohana.png"}]]] + #_[:div.benefactor-slab.bronze + [:h3 "Bronze"]] + #_[:div.benefactor-slab.community [:h3 "Community"]]]) @@ -264,30 +263,30 @@ [:img {:alt "Github", :src "images/github.png"}]]]])]]) (defn keynote [] - #_[:section {:id "keynote"} - [:h2 "Keynote"] - [:ol.article-list - [:li - [:a - {:href "#"} - [:img.article-image.keynote - {:alt "bbatsov", - :src "images/speakers/bozhidar-batsov.jpg"}]] - [:h4 - [:a {:href "https://metaredux.com"} "Bozhidar Batsov"]] - [:p.article-subtitle "Bozhidar is the maintainer of CIDER, nREPL, - a dozen related projects, and the editor of the community - Clojure style guide. Most people would probably describe him as - an Emacs zealot (and they would be right). He's also quite fond - of the Lisp family of languages, functional programming in - general and Clojure in particular."] - [:div.article-fine-print.no-mobile - [:a - {:href "https://twitter.com/bbatsov"} - [:img {:alt "Twitter", :src "images/twitter.png"}]] - [:a - {:href "https://github.com/bbatsov"} - [:img {:alt "Github", :src "images/github.png"}]]]]]]) + [:section {:id "keynote"} + [:h2 "Keynote"] + [:ol.article-list + [:li + [:a + {:href "#"} + [:img.article-image.keynote + {:alt "deobald", + :src "images/speakers/steven.jpg"}]] + [:h4 "The Grift, the Grind, and the " [:span.devanagari "ग्रंथ"]] + [:p.article-subtitle + "By " [:a {:href "https://www.deobald.ca/"} "Steven Deobald"]] + "Programming used to be fun. What happened?" + [:p.article-subtitle [:strong "About the speaker"] ": Steven helped start nilenso, India's first software + cooperative. These days he works on Endatabas, the world's first + immutable HTAP SQL document database. He likes canoeing, bicycles, and + walkable cities."] + [:div.article-fine-print.no-mobile + [:a + {:href "https://fantastic.earth/@deobald"} + [:img {:alt "Twitter", :src "images/mastodon.ico"}]] + [:a + {:href "https://github.com/deobald"} + [:img {:alt "Github", :src "images/github.png"}]]]]]]) (defn tickets [] [:section {:id "tickets"} @@ -401,33 +400,65 @@ [:td [:strong "In-person"] " workshop at Bangalore International Centre."]]]]) (defn talks-table [] - [:table.u-full-width.tentative-talk-table + [:table.u-full-width.talk-table [:thead - [:tr [:th "Event"] [:th "Speaker"]]] + [:tr [:th "Time"] [:th "Event"] [:th "Speaker"]]] [:tbody + [:tr.selected + [:td "9:30 am"] + [:td "Registrations"] + [:td ""]] + [:tr.selected + [:td "9:50 am"] + [:td "Welcome remarks and introductions"] + [:td ""]] [:tr - [:td "Carbon Dating Polymorphism in Clojure"] + [:td "10:00 am"] + [:td [:a {:href "#keynote"} "Opening Keynote: The Grift, the Grind, and the ग्रंथ"]] + [:td "Steven Deobald"]] + [:tr + [:td "11:05 am"] + [:td [:a {:href "#amogh"} "Carbon Dating Polymorphism in Clojure"]] [:td "Amogh Talpallikar"]] + [:tr.selected + [:td "11:25 am"] + [:td "Chai-Kaapi Break"] + [:td ""]] [:tr - [:td "Developer Tooling for Speed and Productivity in 2024"] + [:td "11:45 am"] + [:td [:a {:href "#vedang"} "Developer Tooling for Speed and Productivity in 2024"]] [:td "Vedang Manerikar"]] [:tr - [:td "Personal Identity Information (PII) Detection with Clojure"] + [:td "12:30 pm"] + [:td [:a {:href "#aldo"} "Personal Identity Information (PII) Detection with Clojure"]] [:td "Aldo Sujin"]] [:tr - [:td "Architecture and Design of Goose"] + [:td "1:15 pm"] + [:td [:a {:href "#akshat"} "Architecture and Design of Goose"]] [:td "Akshat Shah"]] + [:tr.selected + [:td "1:40 pm"] + [:td "Lunch & Networking"] + [:td ""]] [:tr - [:td "Navigating Data Models: A Journey into Unified, Scalable, and Composable Data Architecture"] + [:td "2:45 pm"] + [:td [:a {:href "#anuj"} "Navigating Data Models: A Journey into Unified, Scalable, and Composable Data Architecture"]] [:td "Anuj Kumar"]] [:tr - [:td "Functional Programming Patterns"] + [:td "3:30 pm"] + [:td [:a {:href "#abhinav"} "Functional Programming Patterns"]] [:td "Abhinav Sarkar"]] + [:tr.selected + [:td "4:15 pm"] + [:td "Chai-Kaapi Break"] + [:td ""]] [:tr - [:td "Exploring Electric Clojure"] + [:td "4:35 pm"] + [:td [:a {:href "#dheeraj"} "Exploring Electric Clojure"]] [:td "Dheeraj Kumar"]] [:tr - [:td "Building a spreadsheet from the ground up"] + [:td "5:20 pm"] + [:td [:a {:href "#prabhanshu"} "Building a spreadsheet from the ground up"]] [:td "Prabhanshu Gupta"]]]]) (defn cfp [] @@ -448,9 +479,36 @@ [:h6 {:style {:border-bottom "1px dotted"}} [:strong "ClojureBridge"] " | " [:strong "21st - 22nd March"]] (workshop-table) - [:h6 {:style {:border-bottom "1px dotted"}} [:strong "Talks (confirmed so far)"] " | " [:strong "23rd March"]] + [:h6 {:style {:border-bottom "1px dotted"}} [:strong "Talks"] " | " [:strong "23rd March"]] (talks-table)]) +(defn speaker-list [] + [:section {:id "speaker-list"} + [:h2 "Talks"] + [:ol.article-list + (for [{:keys [name talk-title github masto twitter www avatar bio talk-summary]} data/speakers] + ^{:key (str (random-uuid))} + [:li {:id (-> name (string/split " ") first str string/lower-case)} + [:a + {:href "#"} + [:img.speakers.article-image.location + {:src avatar}]] + [:h4 talk-title] + [:p.article-subtitle "By " [:a {:href (or www masto twitter github)} name]] + [:p.article-subtitle [:strong "About the talk"] ": " talk-summary] + (when (not-empty bio) [:p.article-subtitle [:strong "About the speaker"] ": " bio]) + [:div.article-fine-print.no-mobile + (cond + (not-empty twitter) [:a + {:href twitter} + [:img {:alt "Twitter", :src "images/twitter.png"}]] + (not-empty masto) [:a + {:href masto} + [:img {:alt "Mastodon", :src "images/mastodon.ico"}]]) + (when (not-empty github) [:a + {:href github} + [:img {:alt "Github", :src "images/github.png"}]])]])]]) + (defn ending-ornament [] [:section {:id "ornament"} [:img {:alt "", :src "images/footer-ornament.svg"}]]) @@ -523,6 +581,7 @@ [schedule] [tickets] #_[cfp] + [speaker-list] [talk-selectors] [sponsorship] [workshops-section]