diff --git a/resources/public/css/style.css b/resources/public/css/style.css index 3361e45..f4f856e 100644 --- a/resources/public/css/style.css +++ b/resources/public/css/style.css @@ -1,58 +1,64 @@ @font-face { - font-family: 'Cooper Hewitt'; - font-style: normal; - src: url(../fonts/CooperHewitt-Book.otf); - font-weight: 100; + font-family: 'Cooper Hewitt'; + font-style: normal; + src: url(../fonts/CooperHewitt-Book.otf); + font-weight: 100; } @font-face { - font-family: 'Cooper Hewitt'; - src: url(../fonts/CooperHewitt-Medium.otf); - font-weight: 300; + font-family: 'Cooper Hewitt'; + src: url(../fonts/CooperHewitt-Medium.otf); + font-weight: 300; } @font-face { - font-family: 'Cooper Hewitt'; - src: url(../fonts/CooperHewitt-Bold.otf); - font-weight: 600; + font-family: 'Cooper Hewitt'; + src: url(../fonts/CooperHewitt-Bold.otf); + 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; - line-height: 1.6; + font-style: normal; + font-family: 'Cooper Hewitt', 'Barlow Semi Condensed', sans-serif; + line-height: 1.6; } body.permalink { - padding-top: 140px; + padding-top: 140px; } a, a:visited { - color: #000; - text-decoration: none; - border-bottom: 2px solid #FFBA00; - transition: border-color 0.6s; + color: #000; + text-decoration: none; + border-bottom: 2px solid #FFBA00; + transition: border-color 0.6s; } a:hover, a:active { - border-color: rgba(0,0,0,0.7) !important; - color: #000 !important; + border-color: rgba(0,0,0,0.7) !important; + color: #000 !important; } hr { - border-color: #E0E8E7; - margin: 3em 0; + border-color: #E0E8E7; + margin: 3em 0; } h1 { - font-size: 32px; - font-weight: 700; - text-transform: uppercase; - letter-spacing: 0.03em; - color: #000; - position: relative; + font-size: 32px; + font-weight: 700; + text-transform: uppercase; + letter-spacing: 0.03em; + color: #000; + position: relative; } h1 a, a:visited { @@ -243,6 +249,33 @@ footer a img { text-align: right; } +.tentative-talk-table td { + font-size: 90%; + width: 30%; + padding-left: 5px; +} + +.tentative-talk-table tr { + padding-top: 20px; +} + +.tentative-talk-table th { + text-alight: left; + padding-left: 5px; +} + +.tentative-talk-table th:nth-child(2) { + padding-left: 15px; + text-align: right; +} + +.tentative-talk-table td:nth-child(2) { + font-size: 90%; + width: 25%; + padding-left: 30px; + text-align: right; +} + .feature { width: 100%; height: 30%; @@ -264,12 +297,12 @@ footer a img { .article-list { list-style: none; - margin: 20px 0 0 0; + margin: 40px 0 0 0; padding: 0; } -.article-list li { +.archive-list li, .article-list li { list-style: none; margin: 0; padding: 0 0 16px 0; @@ -307,6 +340,10 @@ footer a img { margin: 0 0 16px 16px; } +img.speakers { + object-fit: cover +} + .previously.article-image { width: 150px; height: 170px; @@ -513,242 +550,254 @@ table { background-size: contain; } - h1 span { - font-size: 16px; - letter-spacing: 0.4em; - padding-left: 3px; - } - - h2 { - text-transform: uppercase; - font-size: 25px; - color:#000; - margin: 2em 0 1em 0; - border: none; - padding: 0 0 10px 0; - letter-spacing: 0.1em; - font-weight: 500; - border-bottom: 1px dotted; - } - - h3 { - font-size: 22px; - letter-spacing: -0.03em; - } - - h4 { - font-size: 18px; - font-weight: 300; - margin: 2em 0 0.5em 0; - color: #999; - } - - p { - margin-top: 0; - line-height: 1.4; - font-weight: 100; - } - - pre { - word-wrap: break-word; - white-space: break-spaces; - } - - nav { - padding-bottom: 50px; - } - - nav a.link, - nav span { - padding: 5px 6px 0 6px; - font-size: 100%; - } - - nav .nav-links { - display: inline; - } - - .intro { - font-size: 28px; - line-height: 1.4; - margin-top: 0; - margin-bottom: 1em; - } - - .benefactor-slab img { - margin-top: 50px; - } - - .benefactor-slab.platinum img { - width: 38%; - } - - .benefactor-slab.gold img { - width: 34%; - } - - .benefactor-slab.bronze img { - width: 30%; - } - - - .benefactor-slab.community img { - width: 26% - } - - .benefactor-slab a { - vertical-align: middle; - margin: 0 5em 0 2em; - text-decoration: none; - border: none; - } - - .permalink .intro { - margin-top: 0; - } - - .mobile { - display: none; - } - - .no-mobile { - display: block; - } - - .half { - margin-left: 30%; - padding: 130px 40px 10px 40px; - border-left: 8px solid #FFE100; - box-shadow: 20px 0 30px rgba(0,0,0,0.06); - } - - .talk-table td { - font-size: 90%; - width: 15%; - padding-left: 5px; - } - - - .feature { - position: fixed; - top: 0; - left: 0; - width: 30%; - height: 100%; - background-position: 50% 50%; - background-size: contain; - box-sizing: border-box; - } - - .feature-overlay { - opacity: 0.8; - background-image: url("../images/background-texture.png"); - position: fixed; - top: 0; - left: 0; - width: 30%; - height: 100%; - background-position: 50% 50%; - background-size: contain; - box-sizing: border-box; - } - - .people img { - height: 100%; - width: 15%; - position: absolute; - left: 0; - top: 0; - background: #eee; - border-radius: 15%; - } - - .people li { - padding-left: 60px; - line-height: 1.8; - } - - .article-fine-print a img { - width: 17px; - height: 17px; - margin-right: 8px; - transition: border-color 1s; - border: 1px solid #eee; - border-radius: 100px; - padding: 3px; - background: #fff; - position: relative; - } - - .article-fine-print a:hover img { - opacity: 1; - border-color: #333; - } - - .article-list { - margin-top: 1.5em; - } - - .article-list li { - padding: 0 0 0 220px; - min-height: 200px; - margin-top: 1.5em; - } - - .article-image { - width: 200px; - height: 200px; - float: none; - position: absolute; - left: 0; - top: 0; - margin: 0; - border-radius: 10% - } - - .article-image.keynote { - width: 185px; - } - - .article-list h4 { - font-size: 120%; - letter-spacing: 0em; - margin-bottom: 0.3em; - } - - .contents { - padding: 0 40px 0px 40px; - max-width: 700px; - } - - footer { - position: absolute; - top: 32px; - right: 80px; - display: block; - } - - footer a:hover img { - opacity: 1; - border-color: #333; - } + h1 span { + font-size: 16px; + letter-spacing: 0.4em; + padding-left: 3px; + } + + h2 { + text-transform: uppercase; + font-size: 25px; + color:#000; + margin: 2em 0 1em 0; + border: none; + padding: 0 0 10px 0; + letter-spacing: 0.1em; + font-weight: 500; + border-bottom: 1px dotted; + } + + h3 { + font-size: 22px; + letter-spacing: -0.03em; + } + + h4 { + font-size: 18px; + font-weight: 300; + margin: 2em 0 0.5em 0; + color: #444; + } + + p { + margin-top: 0; + line-height: 1.4; + font-weight: 100; + } + + pre { + word-wrap: break-word; + white-space: break-spaces; + } + + nav { + padding-bottom: 50px; + } + + nav a.link, + nav span { + padding: 5px 6px 0 6px; + font-size: 100%; + } + + nav .nav-links { + display: inline; + } + + .intro { + font-size: 28px; + line-height: 1.4; + margin-top: 0; + margin-bottom: 1em; + } + + .benefactor-slab img { + margin-top: 50px; + } + + .benefactor-slab.platinum img { + width: 38%; + } + + .benefactor-slab.gold img { + width: 34%; + } + + .benefactor-slab.bronze img { + width: 30%; + } + + + .benefactor-slab.community img { + width: 26% + } + + .benefactor-slab a { + vertical-align: middle; + margin: 0 5em 0 2em; + text-decoration: none; + border: none; + } + + .permalink .intro { + margin-top: 0; + } + + .mobile { + display: none; + } + + .no-mobile { + display: block; + } + + .half { + margin-left: 30%; + padding: 130px 40px 10px 40px; + border-left: 8px solid #FFE100; + box-shadow: 20px 0 30px rgba(0,0,0,0.06); + } + + .talk-table td { + font-size: 90%; + width: 15%; + padding-left: 5px; + } + + + .feature { + position: fixed; + top: 0; + left: 0; + width: 30%; + height: 100%; + background-position: 50% 50%; + background-size: contain; + box-sizing: border-box; + } + + .feature-overlay { + opacity: 0.8; + background-image: url("../images/background-texture.png"); + position: fixed; + top: 0; + left: 0; + width: 30%; + height: 100%; + background-position: 50% 50%; + background-size: contain; + box-sizing: border-box; + } + + .people img { + height: 100%; + width: 15%; + position: absolute; + left: 0; + top: 0; + background: #eee; + border-radius: 15%; + } + + .people li { + padding-left: 60px; + line-height: 1.8; + } + + .article-fine-print a img { + width: 17px; + height: 17px; + margin-right: 8px; + transition: border-color 1s; + border: 1px solid #eee; + border-radius: 100px; + padding: 3px; + background: #fff; + position: relative; + } + + .article-fine-print a:hover img { + opacity: 1; + border-color: #333; + } + + .archive-list { + margin-top: 1.5em; + display: flex; + flex-flow: row wrap; + justify-content: space-between; + } + + .article-list { + margin-top: 1.5em; + } + + .archive-list li { + min-height: 50px; + width: max-content; + } + + .article-list li { + padding: 0 0 0 220px; + min-height: 200px; + margin-top: 1.5em; + } + + .article-image { + width: 200px; + height: 200px; + float: none; + position: absolute; + left: 0; + top: 0; + margin: 0; + border-radius: 10% + } + + .article-image.keynote { + width: 185px; + } + + .article-list h4 { + font-size: 120%; + letter-spacing: 0em; + margin-bottom: 0.3em; + } + + .contents { + padding: 0 40px 0px 40px; + max-width: 700px; + } + + footer { + position: absolute; + top: 32px; + right: 80px; + display: block; + } + + footer a:hover img { + opacity: 1; + border-color: #333; + } } /* For devices larger than 900px */ @media (max-width: 1300px) and (min-width: 900px) { - .half { - padding-left: 0; - padding-right: 0; - } - .feature { - padding-left: 30px; - padding-right: 30px; - } + .half { + padding-left: 0; + padding-right: 0; + } + .feature { + padding-left: 30px; + padding-right: 30px; + } } /* Slideshow styles */ .slideshow-container { - width: 2780px; + width: 3475px; font-size: 0; transition: 1s ease; } @@ -770,36 +819,40 @@ table { } @keyframes slide { - 12.5% { + 10% { transform: translateX(0%); } - 25% { - transform: translateX(-25%); + 20% { + transform: translateX(-20%); + } + + 30% { + transform: translateX(-20%); } - 37.5% { - transform: translateX(-25%); + 40% { + transform: translateX(-40%); } 50% { - transform: translateX(-50%); + transform: translateX(-40%); } - 62.5% { - transform: translateX(-50%); + 60% { + transform: translateX(-60%); } - 75% { - transform: translateX(-75%); + 70% { + transform: translateX(-60%); } - 87.5% { - transform: translateX(-75%); + 80% { + transform: translateX(-80%); } - 99% { - transform: translateX(-75%); + 90% { + transform: translateX(-80%); } 100% { @@ -807,6 +860,13 @@ table { } } -#boxoffice-widget { - padding-top: 0px !important; +#ticket-widget { + 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/bg-pune.jpg b/resources/public/images/bg-pune.jpg deleted file mode 100644 index cd1420d..0000000 Binary files a/resources/public/images/bg-pune.jpg and /dev/null differ diff --git a/resources/public/images/comittee/martin.jpeg b/resources/public/images/comittee/martin.jpeg deleted file mode 100644 index 5591e47..0000000 Binary files a/resources/public/images/comittee/martin.jpeg and /dev/null differ diff --git a/resources/public/images/comittee/paula.jpeg b/resources/public/images/comittee/paula.jpeg deleted file mode 100644 index da2af19..0000000 Binary files a/resources/public/images/comittee/paula.jpeg and /dev/null differ diff --git a/resources/public/images/comittee/tejas.jpeg b/resources/public/images/comittee/tejas.jpeg deleted file mode 100644 index 6fae433..0000000 Binary files a/resources/public/images/comittee/tejas.jpeg and /dev/null differ diff --git a/resources/public/images/comittee/tejas.png b/resources/public/images/comittee/tejas.png deleted file mode 100644 index 7c65da3..0000000 Binary files a/resources/public/images/comittee/tejas.png and /dev/null differ diff --git a/resources/public/images/committee/carin.jpeg b/resources/public/images/committee/carin.jpeg new file mode 100644 index 0000000..acd47c3 Binary files /dev/null and b/resources/public/images/committee/carin.jpeg differ diff --git a/resources/public/images/committee/martin.jpeg b/resources/public/images/committee/martin.jpeg deleted file mode 100644 index 8d0d9af..0000000 Binary files a/resources/public/images/committee/martin.jpeg and /dev/null differ diff --git a/resources/public/images/committee/nid.jpeg b/resources/public/images/committee/nid.jpeg new file mode 100644 index 0000000..6d79621 Binary files /dev/null and b/resources/public/images/committee/nid.jpeg differ diff --git a/resources/public/images/committee/paula.jpeg b/resources/public/images/committee/paula.jpeg deleted file mode 100644 index 340565e..0000000 Binary files a/resources/public/images/committee/paula.jpeg and /dev/null differ diff --git a/resources/public/images/committee/shantanu.jpeg b/resources/public/images/committee/shantanu.jpeg new file mode 100644 index 0000000..149a86b Binary files /dev/null and b/resources/public/images/committee/shantanu.jpeg differ diff --git a/resources/public/images/committee/shantanu.png b/resources/public/images/committee/shantanu.png new file mode 100644 index 0000000..11fd016 Binary files /dev/null and b/resources/public/images/committee/shantanu.png differ diff --git a/resources/public/images/committee/tejas.png b/resources/public/images/committee/tejas.png deleted file mode 100644 index 6434397..0000000 Binary files a/resources/public/images/committee/tejas.png and /dev/null differ diff --git a/resources/public/images/favicon.png b/resources/public/images/favicon.png new file mode 100644 index 0000000..347e424 Binary files /dev/null and b/resources/public/images/favicon.png differ diff --git a/resources/public/images/inclojure-banner-2020.png b/resources/public/images/inclojure-banner-2020.png deleted file mode 100644 index ea0b4bc..0000000 Binary files a/resources/public/images/inclojure-banner-2020.png and /dev/null 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/preview-banner-bangalore.jpg b/resources/public/images/preview-banner-bangalore.jpg new file mode 100644 index 0000000..2983882 Binary files /dev/null and b/resources/public/images/preview-banner-bangalore.jpg differ diff --git a/resources/public/images/previously/action5.jpg b/resources/public/images/previously/action5.jpg new file mode 100644 index 0000000..fb8f772 Binary files /dev/null and b/resources/public/images/previously/action5.jpg 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/sponsors/juspay-w.png b/resources/public/images/sponsors/juspay-w.png deleted file mode 100644 index cb2ad25..0000000 Binary files a/resources/public/images/sponsors/juspay-w.png and /dev/null differ diff --git a/resources/public/images/sponsors/juspay.png b/resources/public/images/sponsors/juspay.png deleted file mode 100644 index ba4a202..0000000 Binary files a/resources/public/images/sponsors/juspay.png and /dev/null differ diff --git a/resources/public/images/sponsors/namma-yatri.png b/resources/public/images/sponsors/namma-yatri.png new file mode 100644 index 0000000..edab2d4 Binary files /dev/null and b/resources/public/images/sponsors/namma-yatri.png differ diff --git a/resources/public/images/sponsors/nilenso-w.png b/resources/public/images/sponsors/nilenso-w.png deleted file mode 100644 index dd19ea4..0000000 Binary files a/resources/public/images/sponsors/nilenso-w.png and /dev/null differ diff --git a/resources/public/images/sponsors/nilenso.png b/resources/public/images/sponsors/nilenso.png index d75d4dd..59422ed 100644 Binary files a/resources/public/images/sponsors/nilenso.png and b/resources/public/images/sponsors/nilenso.png differ diff --git a/resources/public/images/sponsors/team-ohana.png b/resources/public/images/sponsors/team-ohana.png new file mode 100644 index 0000000..df5f156 Binary files /dev/null and b/resources/public/images/sponsors/team-ohana.png differ diff --git a/resources/public/images/team/akshatha.webp b/resources/public/images/team/akshatha.webp new file mode 100644 index 0000000..0aafff6 Binary files /dev/null and b/resources/public/images/team/akshatha.webp differ diff --git a/resources/public/images/team/alisha.webp b/resources/public/images/team/alisha.webp new file mode 100644 index 0000000..5cb92c6 Binary files /dev/null and b/resources/public/images/team/alisha.webp differ diff --git a/resources/public/images/team/atharva.webp b/resources/public/images/team/atharva.webp new file mode 100644 index 0000000..32816ff Binary files /dev/null and b/resources/public/images/team/atharva.webp differ diff --git a/resources/public/images/team/deepa.jpg b/resources/public/images/team/deepa.jpg new file mode 100644 index 0000000..32e93f4 Binary files /dev/null and b/resources/public/images/team/deepa.jpg differ diff --git a/resources/public/images/team/kini.jpg b/resources/public/images/team/kini.jpg new file mode 100644 index 0000000..8cf7090 Binary files /dev/null and b/resources/public/images/team/kini.jpg differ diff --git a/resources/public/images/team/mitesh.png b/resources/public/images/team/mitesh.png new file mode 100644 index 0000000..9e015da Binary files /dev/null and b/resources/public/images/team/mitesh.png differ diff --git a/resources/public/images/team/neena.webp b/resources/public/images/team/neena.webp new file mode 100644 index 0000000..be8a381 Binary files /dev/null and b/resources/public/images/team/neena.webp 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/resources/public/images/team/somya.png b/resources/public/images/team/somya.png new file mode 100644 index 0000000..8254dc0 Binary files /dev/null and b/resources/public/images/team/somya.png differ diff --git a/resources/public/images/workshops/clojurebridge-logo.png b/resources/public/images/workshops/clojurebridge-logo.png new file mode 100644 index 0000000..fe0699f Binary files /dev/null and b/resources/public/images/workshops/clojurebridge-logo.png differ diff --git a/resources/public/images/youtube.png b/resources/public/images/youtube.png new file mode 100644 index 0000000..e17d8bc Binary files /dev/null and b/resources/public/images/youtube.png differ diff --git a/resources/public/index.html b/resources/public/index.html index e6fe107..78ca583 100644 --- a/resources/public/index.html +++ b/resources/public/index.html @@ -6,8 +6,8 @@ -
Venue for the single-track day of talks.
", - :json_url nil, - :name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :title - "Crimson Hall (Day of talks at Novotel hotel)", - :url nil, - :venue - "novotel-pune-nagar-road-crimson-hall"} - {:bgcolor "D04B36", - :description - "Introductory To Clojure workshop on the 5th Floor.
", - :json_url nil, - :name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :title - "Classroom 1 (Workshop at MCCIA Trade Tower)", - :url nil, - :venue "mccia-trade-tower-icc-complex"} - {:bgcolor "675997", - :description - "Intermediate Clojure workshop on the 5th Floor
", - :json_url nil, - :name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :title - "Classroom 2 (Workshop at MCCIA Trade Tower)", - :url nil, - :venue "mccia-trade-tower-icc-complex"}], - :schedule - [{:date "2020-02-14", - :end_at "2020-02-14T18:00:00+05:30", - :slots - [{:sessions - [{:description - {:html - "Please be on time. Avoid rush traffic!
", - :text - "Please be on time. Avoid rush traffic!"}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T09:30:00+05:30", - :end_at "2020-02-14T10:00:00+05:30", - :feedback_url nil, - :title "Registration", - :is_break false, - :id 1, - :json_url nil, - :url_name_suuid - "registration-JMHWL7BDM9H5PXb56FbXHH", - :url_name "1-registration", - :url - "https://hasgeek.com/inclojure/2020/schedule/registration-JMHWL7BDM9H5PXb56FbXHH", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T09:30:00+05:30", - :end_at "2020-02-14T10:00:00+05:30", - :feedback_url nil, - :title "Registration", - :is_break false, - :id 11, - :json_url nil, - :url_name_suuid - "registration-bvLkTKiZegRMbHfo6RM9SU", - :url_name "11-registration", - :url - "https://hasgeek.com/inclojure/2020/schedule/registration-bvLkTKiZegRMbHfo6RM9SU", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} - {:description - {:html - "14th Feb is workshop day, and the workshops are going to happen at MCCIA, Senapati Road, Pune.
\nThe Novotel venue (Crimson) will see talks happen on the 15th of Feb. Submit yours now! https://hasgeek.com/inclojure/2020/proposals#call-for-proposal
", - :text - "14th Feb is workshop day, and the workshops are going to happen at MCCIA, Senapati Road, Pune.\r\n\r\nThe Novotel venue (Crimson) will see talks happen on the 15th of Feb. Submit yours now! https://hasgeek.com/inclojure/2020/proposals#call-for-proposal"}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T09:30:00+05:30", - :end_at "2020-02-14T18:00:00+05:30", - :feedback_url nil, - :title - "This venue will host talks on the 15th.", - :is_break true, - :id 40, - :json_url nil, - :url_name_suuid - "talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal-Qbqq6iuVoKwBL7hGKFpYWB", - :url_name - "40-talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal", - :url - "https://hasgeek.com/inclojure/2020/schedule/talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal-Qbqq6iuVoKwBL7hGKFpYWB", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "09:30"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T10:00:00+05:30", - :end_at "2020-02-14T10:30:00+05:30", - :feedback_url nil, - :title - "IDE/repo setup troubleshooting and Introductions", - :is_break false, - :id 12, - :json_url nil, - :url_name_suuid - "ide-repo-setup-troubleshooting-and-introductions-CFukZJvNXqEkgjbwRjmuY2", - :url_name - "12-ide-repo-setup-troubleshooting-and-introductions", - :url - "https://hasgeek.com/inclojure/2020/schedule/ide-repo-setup-troubleshooting-and-introductions-CFukZJvNXqEkgjbwRjmuY2", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T10:00:00+05:30", - :end_at "2020-02-14T10:30:00+05:30", - :feedback_url nil, - :title - "IDE / repo setup troubleshooting and Introductions", - :is_break false, - :id 2, - :json_url nil, - :url_name_suuid - "ide-repo-setup-troubleshooting-and-introductions-NeiwcVrurf7RioAkmVPXqH", - :url_name - "2-ide-repo-setup-troubleshooting-and-introductions", - :url - "https://hasgeek.com/inclojure/2020/schedule/ide-repo-setup-troubleshooting-and-introductions-NeiwcVrurf7RioAkmVPXqH", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], - :slot "10:00"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T10:30:00+05:30", - :end_at "2020-02-14T11:30:00+05:30", - :feedback_url nil, - :title - "Clojure's approach to state and identity", - :is_break false, - :id 13, - :json_url nil, - :url_name_suuid - "clojures-approach-to-state-and-identity-K5TcPtDK6HMnc9sGT7VTBg", - :url_name - "13-clojures-approach-to-state-and-identity", - :url - "https://hasgeek.com/inclojure/2020/schedule/clojures-approach-to-state-and-identity-K5TcPtDK6HMnc9sGT7VTBg", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T10:30:00+05:30", - :end_at "2020-02-14T11:30:00+05:30", - :feedback_url nil, - :title - "Basic concepts + warm-up exercises", - :is_break false, - :id 3, - :json_url nil, - :url_name_suuid - "basic-concepts-and-simple-warm-up-exercises-E8LoTuZ83y2Z7eXgdDwKPB", - :url_name - "3-basic-concepts-and-simple-warm-up-exercises", - :url - "https://hasgeek.com/inclojure/2020/schedule/basic-concepts-and-simple-warm-up-exercises-E8LoTuZ83y2Z7eXgdDwKPB", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], - :slot "10:30"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T11:30:00+05:30", - :end_at "2020-02-14T11:45:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 4, - :json_url nil, - :url_name_suuid - "tea-coffee-S9uqBAXZepU75KGEgVu2QJ", - :url_name "4-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-S9uqBAXZepU75KGEgVu2QJ", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T11:30:00+05:30", - :end_at "2020-02-14T11:45:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 19, - :json_url nil, - :url_name_suuid - "tea-coffee-9xJGy5Jnmx6Dw3kjFEcGwf", - :url_name "19-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-9xJGy5Jnmx6Dw3kjFEcGwf", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], - :slot "11:30"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T11:45:00+05:30", - :end_at "2020-02-14T13:15:00+05:30", - :feedback_url nil, - :title "Working with functions", - :is_break false, - :id 5, - :json_url nil, - :url_name_suuid - "working-with-functions-ZxFL9d5MScXhMZg3LPFax3", - :url_name "5-working-with-functions", - :url - "https://hasgeek.com/inclojure/2020/schedule/working-with-functions-ZxFL9d5MScXhMZg3LPFax3", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T11:45:00+05:30", - :end_at "2020-02-14T13:15:00+05:30", - :feedback_url nil, - :title - "Java interop and the Clojure ecosystem", - :is_break false, - :id 15, - :json_url nil, - :url_name_suuid - "java-interop-and-the-clojure-ecosystem-Cz8YVbfuS46ceo2jvxrk4o", - :url_name - "15-java-interop-and-the-clojure-ecosystem", - :url - "https://hasgeek.com/inclojure/2020/schedule/java-interop-and-the-clojure-ecosystem-Cz8YVbfuS46ceo2jvxrk4o", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], - :slot "11:45"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T13:15:00+05:30", - :end_at "2020-02-14T14:00:00+05:30", - :feedback_url nil, - :title "Lunch Break", - :is_break true, - :id 6, - :json_url nil, - :url_name_suuid - "lunch-break-v6Y4aJffCTKEAXHzMPFAXA", - :url_name "6-lunch-break", - :url - "https://hasgeek.com/inclojure/2020/schedule/lunch-break-v6Y4aJffCTKEAXHzMPFAXA", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T13:15:00+05:30", - :end_at "2020-02-14T14:00:00+05:30", - :feedback_url nil, - :title "Lunch Break", - :is_break true, - :id 20, - :json_url nil, - :url_name_suuid - "lunch-break-8GJg8Xnb3Q9e45DNLKPX6o", - :url_name "20-lunch-break", - :url - "https://hasgeek.com/inclojure/2020/schedule/lunch-break-8GJg8Xnb3Q9e45DNLKPX6o", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], - :slot "13:15"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T14:00:00+05:30", - :end_at "2020-02-14T16:00:00+05:30", - :feedback_url nil, - :title - "More work with functions and with collections", - :is_break false, - :id 7, - :json_url nil, - :url_name_suuid - "more-work-with-functions-and-with-collections-u52gDjySycVLdJq887FbB6", - :url_name - "7-more-work-with-functions-and-with-collections", - :url - "https://hasgeek.com/inclojure/2020/schedule/more-work-with-functions-and-with-collections-u52gDjySycVLdJq887FbB6", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T14:00:00+05:30", - :end_at "2020-02-14T16:00:00+05:30", - :feedback_url nil, - :title - "Effective Testing, Debugging, and REPL-driven-development", - :is_break false, - :id 16, - :json_url nil, - :url_name_suuid - "effective-testing-debugging-and-repl-driven-development-uXxUtd9MPasFwht6EBCSEC", - :url_name - "16-effective-testing-debugging-and-repl-driven-development", - :url - "https://hasgeek.com/inclojure/2020/schedule/effective-testing-debugging-and-repl-driven-development-uXxUtd9MPasFwht6EBCSEC", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], - :slot "14:00"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T16:00:00+05:30", - :end_at "2020-02-14T16:15:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 21, - :json_url nil, - :url_name_suuid - "tea-coffee-zReBeRwxW9E8DLZVRCB8cg", - :url_name "21-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-zReBeRwxW9E8DLZVRCB8cg", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T16:00:00+05:30", - :end_at "2020-02-14T16:15:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 8, - :json_url nil, - :url_name_suuid - "tea-coffee-p7s6Xy8onpjT3eDZYScue5", - :url_name "8-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-p7s6Xy8onpjT3eDZYScue5", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], - :slot "16:00"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T16:15:00+05:30", - :end_at "2020-02-14T17:45:00+05:30", - :feedback_url nil, - :title - "Advanced work with functions, collections, and function API design", - :is_break false, - :id 9, - :json_url nil, - :url_name_suuid - "advanced-work-with-functions-collections-and-function-api-design-Hj9qgXjwkD8VpiHputRvkh", - :url_name - "9-advanced-work-with-functions-collections-and-function-api-design", - :url - "https://hasgeek.com/inclojure/2020/schedule/advanced-work-with-functions-collections-and-function-api-design-Hj9qgXjwkD8VpiHputRvkh", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T16:15:00+05:30", - :end_at "2020-02-14T17:45:00+05:30", - :feedback_url nil, - :title - "Laziness & Vars (Benefits & pitfalls)", - :is_break false, - :id 17, - :json_url nil, - :url_name_suuid - "laziness-vars-benefits-pitfalls-SEtV2dBtkURcPK8VTv5C9P", - :url_name - "17-laziness-vars-benefits-pitfalls", - :url - "https://hasgeek.com/inclojure/2020/schedule/laziness-vars-benefits-pitfalls-SEtV2dBtkURcPK8VTv5C9P", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], - :slot "16:15"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T17:45:00+05:30", - :end_at "2020-02-14T18:00:00+05:30", - :feedback_url nil, - :title - "Wrap up, closing remarks, Ask Us Anything!", - :is_break false, - :id 18, - :json_url nil, - :url_name_suuid - "wrap-up-closing-remarks-ask-us-anything-dcuCBePs4hjPjmWzBzVvCn", - :url_name - "18-wrap-up-closing-remarks-ask-us-anything", - :url - "https://hasgeek.com/inclojure/2020/schedule/wrap-up-closing-remarks-ask-us-anything-dcuCBePs4hjPjmWzBzVvCn", - :room - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} - {:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-14T17:45:00+05:30", - :end_at "2020-02-14T18:00:00+05:30", - :feedback_url nil, - :title - "Wrap up, closing remarks, Ask Us Anything!", - :is_break false, - :id 10, - :json_url nil, - :url_name_suuid - "wrap-up-closing-remarks-ask-us-anything-duKmtkxewZjVuPAZ3twUaJ", - :url_name - "10-wrap-up-closing-remarks-ask-us-anything", - :url - "https://hasgeek.com/inclojure/2020/schedule/wrap-up-closing-remarks-ask-us-anything-duKmtkxewZjVuPAZ3twUaJ", - :room - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], - :slot "17:45"}], - :start_at "2020-02-14T09:30:00+05:30"} - {:date "2020-02-15", - :end_at "2020-02-15T18:00:00+05:30", - :slots - [{:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T08:45:00+05:30", - :end_at "2020-02-15T09:15:00+05:30", - :feedback_url nil, - :title "Registrations", - :is_break false, - :id 22, - :json_url nil, - :url_name_suuid - "registrations-Une5ZD2tt2ZTR4HxeYDNFk", - :url_name "22-registrations", - :url - "https://hasgeek.com/inclojure/2020/schedule/registrations-Une5ZD2tt2ZTR4HxeYDNFk", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "08:45"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T09:15:00+05:30", - :end_at "2020-02-15T09:25:00+05:30", - :feedback_url nil, - :title - "Welcome remarks and Introductions", - :is_break false, - :id 23, - :json_url nil, - :url_name_suuid - "welcome-remarks-and-introductions-LdfWu5kzQgsj5Aj5mcCRHn", - :url_name - "23-welcome-remarks-and-introductions", - :url - "https://hasgeek.com/inclojure/2020/schedule/welcome-remarks-and-introductions-LdfWu5kzQgsj5Aj5mcCRHn", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "09:15"} - {:sessions - [{:description - {:html - "Abstract
\nAh, the future! Such an exciting topic! It’s always a lot of fun to speculate on what will follow next, isn’t it? You know what’s twice as exciting (at least for programmers) - discussing the future of Clojure development tools, those underappreciated workhorses that make our lives hacking with Clojure easier, more fun and more productive.
\nIn this talk we’ll examine the current state of the broader Clojure tooling ecosystem, contrast the approaches taken by the most popular development tools out there, and try to give you a sense of their strengths and weaknesses. We’ll then skip to a discussions of some interesting efforts to improve the existing tool stack, happening right now in the community, and dream about the day they’ll come to fruition. And the day right after it.
\nIdeally, when all is set and done you’ll have a much better understanding of how popular Clojure development tools are working, and more appreciation for all the efforts that go into them. Perhaps you’ll even get inspired enough to start contributing to some tools. :-)
\nOutline
\nThe spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:
\nBozhidar 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.
", - :text - "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."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "09:25"} - {:sessions - [{:description - {:html - "NOTE: Slides WIP
", - :text - "* Introduction\r\n* Use cases\r\n * Building OLAP on top of RDBMS\r\n * Hyper scalable function triggering platform(alternative to RDBMS triggers but scalable)\r\n * Cheaper Point in time backups\r\n * Data replication across multi-variety of databases or across multi versions\r\n* Architecture\r\n * Independent building blocks which include: \r\n * Log Reader\r\n * Distributed Queue System (For eg Apache Kafka)\r\n * Cloud Storage\r\n * Query services\r\n * Visualization tools\r\n * Benefits\r\n * Components Synchronisation\r\n* Power of Clojure\r\n * Writing EMR jobs\r\n * Spawning and destroying Hadoop cluster on-demand\r\n * Support for AWS, GCP\r\n * By-default auto-scaling supported\r\n * DAG Execution\r\n * Development with REPL\r\n * Integration with Spark, Hive, Pig\r\n* Obstacles and Learnings\r\n* Low-cost Scalable platform\r\n* Conclusion\r\n* Demo showing for any operations in DB\r\n * Kafka being populated\r\n * S3 dumps\r\n * Lambda function being triggered\r\n\r\n\r\n\r\nNOTE: Slides WIP"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/building-data-platforms-from-business-stores-using-LoRgCMiZxc8kbyAbKkUKGg", - :start_at "2020-02-15T10:15:00+05:30", - :end_at "2020-02-15T11:00:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ/feedback", - :title - "Building data platforms from business stores using Clojure", - :is_break false, - :id 38, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/building-data-platforms-from-business-stores-using-LoRgCMiZxc8kbyAbKkUKGg/json", - :url_name_suuid - "building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ", - :url_name - "38-building-data-platforms-from-business-stores-using-clojure", - :url - "https://hasgeek.com/inclojure/2020/schedule/building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "LoRgCMiZxc8kbyAbKkUKGg", - :proposal_id 5221, - :speaker "Mayur Jadhav", - :speaker_bio - {:html - "Hi, I am co-founder of Dataorc, a Data oriented startup based out of Pune. I started my professional journey with Clojure at my previous company Helpshift and have been coding in same for last 6 years. Even at Dataorc, almost every project have some part developed in Clojure. I have used Clojure for architecting automation frameworks, building super scalable backends, distributed crawlers, munching TBs of data with it.
", - :text - "Hi, I am co-founder of [Dataorc](https://dataorc.in), a Data oriented startup based out of Pune. I started my professional journey with Clojure at my previous company Helpshift and have been coding in same for last 6 years. Even at Dataorc, almost every project have some part developed in Clojure. I have used Clojure for architecting [automation frameworks](https://www.youtube.com/watch?v=G-fjpO6nYPQ), building super scalable backends, [distributed crawlers](https://github.com/mj-jadhav/twitter-crawler), munching TBs of data with it."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "10:15"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T11:00:00+05:30", - :end_at "2020-02-15T11:30:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 26, - :json_url nil, - :url_name_suuid - "tea-coffee-yeRB7DBGfjzAcDaV22Vc4P", - :url_name "26-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-yeRB7DBGfjzAcDaV22Vc4P", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "11:00"} - {:sessions - [{:description - {:html - "Note: The outline and slides of the talk are very much a work-in-progress. Hopefully, this draft gives the organisers a sense of the flow of the session and some of the high-level concepts that I plan to cover.
", - :text - "* Introduction\r\n* Context - numberz & what it does \r\n* Business problem\r\n* Iterations - improving the solution \r\n * Naive implementation using threading macros and core.async\r\n * DAG-based implementation\r\n * DSL to decalaratively express DAGs and compose transformations together\r\n* Challenges faced\r\n* Conclusion\r\n\r\nNote: The outline and slides of the talk are very much a work-in-progress. Hopefully, this draft gives the organisers a sense of the flow of the session and some of the high-level concepts that I plan to cover."}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/composable-data-pipelines-for-not-so-big-data-5uBCASZmhNUFGP5Xaf4mtT", - :start_at "2020-02-15T11:30:00+05:30", - :end_at "2020-02-15T11:50:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a/feedback", - :title - "Composable Data Pipelines for not-so-Big Data", - :is_break false, - :id 45, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/composable-data-pipelines-for-not-so-big-data-5uBCASZmhNUFGP5Xaf4mtT/json", - :url_name_suuid - "composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a", - :url_name - "45-composable-data-pipelines-for-not-so-big-data", - :url - "https://hasgeek.com/inclojure/2020/schedule/composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "5uBCASZmhNUFGP5Xaf4mtT", - :proposal_id 5216, - :speaker "Akaash Patnaik", - :speaker_bio - {:html - "I’m a web developer, based out of Bangalore, India. I currently work at numberz, a financial technology startup where I lead the technology team. Most of my decade-long career in software engineering, has been in the financial technology domain, where I’ve helped build systems for invoicing, payments processing, collections automation, etc.
\nMy interest in functional programming & music led me to hacking on Overtone a few years ago. A few hours into it, I was hooked and this was my gateway into the world of Clojure. Having been something of a hobbyist in Clojure for a few years now, I have lately been involved in introducing Clojure at work, for a business-critical project. It has been a hugely insightful experience and has further reinforced my belief in the benefits of using functional programming and Clojure in real-world business applications.
", - :text - "I'm a web developer, based out of Bangalore, India. I currently work at [numberz](https://numberz.co), a financial technology startup where I lead the technology team. Most of my decade-long career in software engineering, has been in the financial technology domain, where I've helped build systems for invoicing, payments processing, collections automation, etc.\r\n\r\nMy interest in functional programming & music led me to hacking on [Overtone](https://github.com/overtone/overtone) a few years ago. A few hours into it, I was hooked and this was my gateway into the world of Clojure. Having been something of a hobbyist in Clojure for a few years now, I have lately been involved in introducing Clojure at work, for a business-critical project. It has been a hugely insightful experience and has further reinforced my belief in the benefits of using functional programming and Clojure in real-world business applications. "}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "11:30"} - {:sessions - [{:description - {:html - "Hey there, I am Aravind coming in from Bengaluru, originally from Pondicherry. I work at Swym Corp building (mostly breaking) things that help scale consumer experience globally with a small team. I started on Clojure about 5 years, and have been head-over-heels ever since, with a touch of tough love. Prior to that, I was in Hyderabad building out an enterprise mobile PaaS.
\nI have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.
\nA runner, a biker-to-everywhere (read cycle), a lover of puns, small teams and everything that helps us go remote.
", - :text - "Hey there, I am Aravind coming in from Bengaluru, originally from Pondicherry. I work at Swym Corp building (mostly breaking) things that help scale consumer experience globally with a small team. I started on Clojure about 5 years, and have been head-over-heels ever since, with a touch of tough love. Prior to that, I was in Hyderabad building out an enterprise mobile PaaS.\r\n\r\nI have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.\r\n\r\nA runner, a biker-to-everywhere (read cycle), a lover of puns, small teams and everything that helps us go remote."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "11:50"} - {:sessions - [{:description - {:html - "Hi! I’m Vedang. I live in Pune, India and work at Helpshift. Now-a-days, I head the Helpshift Core backend team and work on improving processes and workflows within the team with the help of my team mates. Previously, I was an individual contributor and helped design and write some of the code that runs Helpshift.
\nI’m passionate about programming, and some of my work can be found on GitHub. I use Emacs as my editor-for-everything, and blog about it from time to time.
", - :text - "Hi! I’m Vedang. I live in Pune, India and work at Helpshift. Now-a-days, I head the Helpshift Core backend team and work on improving processes and workflows within the team with the help of my team mates. Previously, I was an individual contributor and helped design and write some of the code that runs Helpshift.\r\n\r\nI’m passionate about programming, and some of my work can be found on GitHub. I use Emacs as my editor-for-everything, and blog about it from time to time."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "12:35"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T13:00:00+05:30", - :end_at "2020-02-15T13:55:00+05:30", - :feedback_url nil, - :title "Lunch", - :is_break true, - :id 29, - :json_url nil, - :url_name_suuid - "lunch-D3oT8EXd59UWMrXxE4QMAV", - :url_name "29-lunch", - :url - "https://hasgeek.com/inclojure/2020/schedule/lunch-D3oT8EXd59UWMrXxE4QMAV", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "13:00"} - {:sessions - [{:description - {:html - "Introduction
\nWalkthrough
\nConlusion
\nFormer illusionist, a bit of a pianist, now a psychologist. Also a hammock philosopher and tamer of electrons. After studying neuroscience, Adam Helinski became a full-time parens whisperer in the kingdom of IoT where his slight sense of scientific madness lead him to the unique choice of using Clojure for prototyping connected devices. After those few years of exile away from psychology, he now expertiments with using Clojure in psychotherapy.
", - :text - "Former illusionist, a bit of a pianist, now a psychologist. Also a hammock philosopher and tamer of electrons. After studying neuroscience, Adam Helinski became a full-time parens whisperer in the kingdom of IoT where his slight sense of scientific madness lead him to the unique choice of using Clojure for prototyping connected devices. After those few years of exile away from psychology, he now expertiments with using Clojure in psychotherapy. "}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "13:55"} - {:sessions - [{:description - {:html - "Talk will be presented by Madhu (Clojure programmer) and Rashmi (OOPs turned Clojure programmer)
\nDiscuss the paradigms - Encapsulation of data and methods vs immutable functions acting on input data and outputting new data.
\n(Examples of a simple java class vs a Clojure function)
\nTalk about how conditioned OOPs programmers are to classes and objects and at first glance it seems we are adopting a messy world of methods, procedures where there is no control over access to data.
\nImmutable functions are like mathematical functions unlike the methods, procedures of other programming languages.
\nFor an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.
\nOOPS requires management of references, their state change, it’s important to follow best practices to control the state change. References also lead to null objects.
\nImmutable functions get rid of references, explain persistent data structures for how copies of objects are avoided in Clojure.
Clojure - built on Java and uses the Lisp paradigm
\nAll underlyng Java functionality is available. at the same time the Lisp paradigm enables immutability of code.
\n(Give examples of calling a String function the Java way and the Clojure way)
Seq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.
\nDefprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)
\nClojure allows mutable state using a few data types -
\nAtoms - Based on underlying Java atomic variables. Explain.
Clojure - Ease of making changes by generating JAVA bytecode and testing.
\nConclusion - Possible to have redundant code, not follow best practices in both Java and Clojure.
", - :text - "Talk will be presented by Madhu (Clojure programmer) and Rashmi (OOPs turned Clojure programmer)\r\n\r\nDiscuss the paradigms - Encapsulation of data and methods vs immutable functions acting on input data and outputting new data.\r\n\r\n(Examples of a simple java class vs a Clojure function)\r\n\r\nTalk about how conditioned OOPs programmers are to classes and objects and at first glance it seems we are adopting a messy world of methods, procedures where there is no control over access to data.\r\n\r\nImmutable functions are like mathematical functions unlike the methods, procedures of other programming languages.\r\n\r\nFor an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.\r\n\r\nOOPS requires management of references, their state change, it’s important to follow best practices to control the state change. References also lead to null objects.\r\nImmutable functions get rid of references, explain persistent data structures for how copies of objects are avoided in Clojure.\r\n\r\nClojure - built on Java and uses the Lisp paradigm\r\nAll underlyng Java functionality is available. at the same time the Lisp paradigm enables immutability of code.\r\n(Give examples of calling a String function the Java way and the Clojure way)\r\n\r\nSeq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.\r\n\r\nDefprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)\r\n\r\nClojure allows mutable state using a few data types -\r\nAtoms - Based on underlying Java atomic variables. Explain.\r\n\r\nClojure - Ease of making changes by generating JAVA bytecode and testing. \r\n\r\nConclusion - Possible to have redundant code, not follow best practices in both Java and Clojure. "}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-for-java-oops-programmers-Kv8gtitnKvBuyw5HChgkVb", - :start_at "2020-02-15T14:40:00+05:30", - :end_at "2020-02-15T15:25:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6/feedback", - :title - "Clojure for Java (OOPS) programmers", - :is_break false, - :id 52, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-for-java-oops-programmers-Kv8gtitnKvBuyw5HChgkVb/json", - :url_name_suuid - "clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6", - :url_name - "52-clojure-for-java-oops-programmers", - :url - "https://hasgeek.com/inclojure/2020/schedule/clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "Kv8gtitnKvBuyw5HChgkVb", - :proposal_id 5267, - :speaker - "Rashmi Mittal, Madhuparna Ghosh", - :speaker_bio - {:html - "Madhuparna is a senior developer at Quintype, she builds digital tools for media publishers. She loves working on backend and frontend technologies, she mostly spends time working with Clojure, NodeJS and Javascript.
\nRashmi has over 20 years of experience in product development in various verticals including 15 years in the Silicon Valley where she primarily worked at Adobe Systems on products like Adobe Illustrator, HTML5 animation and Video Publishing. She is currently the Vice President of Engineering at Quintype.
", - :text - "Madhuparna is a senior developer at Quintype, she builds digital tools for media publishers. She loves working on backend and frontend technologies, she mostly spends time working with Clojure, NodeJS and Javascript.\r\n\r\nRashmi has over 20 years of experience in product development in various verticals including 15 years in the Silicon Valley where she primarily worked at Adobe Systems on products like Adobe Illustrator, HTML5 animation and Video Publishing. She is currently the Vice President of Engineering at Quintype."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "14:40"} - {:sessions - [{:description {:html "", :text ""}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T15:25:00+05:30", - :end_at "2020-02-15T15:55:00+05:30", - :feedback_url nil, - :title "Tea / Coffee", - :is_break true, - :id 33, - :json_url nil, - :url_name_suuid - "tea-coffee-98iU2GiuHYEwY4tk6mawkn", - :url_name "33-tea-coffee", - :url - "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-98iU2GiuHYEwY4tk6mawkn", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "15:25"} - {:sessions - [{:description - {:html - "What is Wasm and how does it work internally?
\nWhere can you run Wasm?
\nHow to run Wasm on top of JVM?
\nCalling Wasm code from Clojure.
\nCan this be a bridge between Clojure and Rust?
I am a Rust developer, currently pursuing my Bachelor’s degree. I like to tinker with stuff and know how things work internally. Stuff are those engineering marvels that we take for granted these days.
", - :text - "I am a Rust developer, currently pursuing my Bachelor's degree. I like to tinker with stuff and know how things work internally. Stuff are those engineering marvels that we take for granted these days."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "15:55"} - {:sessions + {:rooms + [{:bgcolor "990000", + :description + "Venue for the single-track day of talks.
", + :json_url nil, + :name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :title + "Crimson Hall (Day of talks at Novotel hotel)", + :url nil, + :venue + "novotel-pune-nagar-road-crimson-hall"} + {:bgcolor "D04B36", + :description + "Introductory To Clojure workshop on the 5th Floor.
", + :json_url nil, + :name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :title + "Classroom 1 (Workshop at MCCIA Trade Tower)", + :url nil, + :venue "mccia-trade-tower-icc-complex"} + {:bgcolor "675997", + :description + "Intermediate Clojure workshop on the 5th Floor
", + :json_url nil, + :name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :title + "Classroom 2 (Workshop at MCCIA Trade Tower)", + :url nil, + :venue "mccia-trade-tower-icc-complex"}], + :schedule + [{:date "2020-02-14", + :end_at "2020-02-14T18:00:00+05:30", + :slots + [{:sessions + [{:description + {:html + "Please be on time. Avoid rush traffic!
", + :text + "Please be on time. Avoid rush traffic!"}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T09:30:00+05:30", + :end_at "2020-02-14T10:00:00+05:30", + :feedback_url nil, + :title "Registration", + :is_break false, + :id 1, + :json_url nil, + :url_name_suuid + "registration-JMHWL7BDM9H5PXb56FbXHH", + :url_name "1-registration", + :url + "https://hasgeek.com/inclojure/2020/schedule/registration-JMHWL7BDM9H5PXb56FbXHH", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T09:30:00+05:30", + :end_at "2020-02-14T10:00:00+05:30", + :feedback_url nil, + :title "Registration", + :is_break false, + :id 11, + :json_url nil, + :url_name_suuid + "registration-bvLkTKiZegRMbHfo6RM9SU", + :url_name "11-registration", + :url + "https://hasgeek.com/inclojure/2020/schedule/registration-bvLkTKiZegRMbHfo6RM9SU", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} + {:description + {:html + "14th Feb is workshop day, and the workshops are going to happen at MCCIA, Senapati Road, Pune.
\nThe Novotel venue (Crimson) will see talks happen on the 15th of Feb. Submit yours now! https://hasgeek.com/inclojure/2020/proposals#call-for-proposal
", + :text + "14th Feb is workshop day, and the workshops are going to happen at MCCIA, Senapati Road, Pune.\r\n\r\nThe Novotel venue (Crimson) will see talks happen on the 15th of Feb. Submit yours now! https://hasgeek.com/inclojure/2020/proposals#call-for-proposal"}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T09:30:00+05:30", + :end_at "2020-02-14T18:00:00+05:30", + :feedback_url nil, + :title + "This venue will host talks on the 15th.", + :is_break true, + :id 40, + :json_url nil, + :url_name_suuid + "talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal-Qbqq6iuVoKwBL7hGKFpYWB", + :url_name + "40-talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal", + :url + "https://hasgeek.com/inclojure/2020/schedule/talks-will-happen-on-the-15th-at-novotel-cfp-is-open-https-hasgeek-com-inclojure-2020-proposals-call-for-proposal-Qbqq6iuVoKwBL7hGKFpYWB", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "09:30"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T10:00:00+05:30", + :end_at "2020-02-14T10:30:00+05:30", + :feedback_url nil, + :title + "IDE/repo setup troubleshooting and Introductions", + :is_break false, + :id 12, + :json_url nil, + :url_name_suuid + "ide-repo-setup-troubleshooting-and-introductions-CFukZJvNXqEkgjbwRjmuY2", + :url_name + "12-ide-repo-setup-troubleshooting-and-introductions", + :url + "https://hasgeek.com/inclojure/2020/schedule/ide-repo-setup-troubleshooting-and-introductions-CFukZJvNXqEkgjbwRjmuY2", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T10:00:00+05:30", + :end_at "2020-02-14T10:30:00+05:30", + :feedback_url nil, + :title + "IDE / repo setup troubleshooting and Introductions", + :is_break false, + :id 2, + :json_url nil, + :url_name_suuid + "ide-repo-setup-troubleshooting-and-introductions-NeiwcVrurf7RioAkmVPXqH", + :url_name + "2-ide-repo-setup-troubleshooting-and-introductions", + :url + "https://hasgeek.com/inclojure/2020/schedule/ide-repo-setup-troubleshooting-and-introductions-NeiwcVrurf7RioAkmVPXqH", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], + :slot "10:00"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T10:30:00+05:30", + :end_at "2020-02-14T11:30:00+05:30", + :feedback_url nil, + :title + "Clojure's approach to state and identity", + :is_break false, + :id 13, + :json_url nil, + :url_name_suuid + "clojures-approach-to-state-and-identity-K5TcPtDK6HMnc9sGT7VTBg", + :url_name + "13-clojures-approach-to-state-and-identity", + :url + "https://hasgeek.com/inclojure/2020/schedule/clojures-approach-to-state-and-identity-K5TcPtDK6HMnc9sGT7VTBg", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T10:30:00+05:30", + :end_at "2020-02-14T11:30:00+05:30", + :feedback_url nil, + :title + "Basic concepts + warm-up exercises", + :is_break false, + :id 3, + :json_url nil, + :url_name_suuid + "basic-concepts-and-simple-warm-up-exercises-E8LoTuZ83y2Z7eXgdDwKPB", + :url_name + "3-basic-concepts-and-simple-warm-up-exercises", + :url + "https://hasgeek.com/inclojure/2020/schedule/basic-concepts-and-simple-warm-up-exercises-E8LoTuZ83y2Z7eXgdDwKPB", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], + :slot "10:30"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T11:30:00+05:30", + :end_at "2020-02-14T11:45:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 4, + :json_url nil, + :url_name_suuid + "tea-coffee-S9uqBAXZepU75KGEgVu2QJ", + :url_name "4-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-S9uqBAXZepU75KGEgVu2QJ", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T11:30:00+05:30", + :end_at "2020-02-14T11:45:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 19, + :json_url nil, + :url_name_suuid + "tea-coffee-9xJGy5Jnmx6Dw3kjFEcGwf", + :url_name "19-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-9xJGy5Jnmx6Dw3kjFEcGwf", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], + :slot "11:30"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T11:45:00+05:30", + :end_at "2020-02-14T13:15:00+05:30", + :feedback_url nil, + :title "Working with functions", + :is_break false, + :id 5, + :json_url nil, + :url_name_suuid + "working-with-functions-ZxFL9d5MScXhMZg3LPFax3", + :url_name "5-working-with-functions", + :url + "https://hasgeek.com/inclojure/2020/schedule/working-with-functions-ZxFL9d5MScXhMZg3LPFax3", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T11:45:00+05:30", + :end_at "2020-02-14T13:15:00+05:30", + :feedback_url nil, + :title + "Java interop and the Clojure ecosystem", + :is_break false, + :id 15, + :json_url nil, + :url_name_suuid + "java-interop-and-the-clojure-ecosystem-Cz8YVbfuS46ceo2jvxrk4o", + :url_name + "15-java-interop-and-the-clojure-ecosystem", + :url + "https://hasgeek.com/inclojure/2020/schedule/java-interop-and-the-clojure-ecosystem-Cz8YVbfuS46ceo2jvxrk4o", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], + :slot "11:45"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T13:15:00+05:30", + :end_at "2020-02-14T14:00:00+05:30", + :feedback_url nil, + :title "Lunch Break", + :is_break true, + :id 6, + :json_url nil, + :url_name_suuid + "lunch-break-v6Y4aJffCTKEAXHzMPFAXA", + :url_name "6-lunch-break", + :url + "https://hasgeek.com/inclojure/2020/schedule/lunch-break-v6Y4aJffCTKEAXHzMPFAXA", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T13:15:00+05:30", + :end_at "2020-02-14T14:00:00+05:30", + :feedback_url nil, + :title "Lunch Break", + :is_break true, + :id 20, + :json_url nil, + :url_name_suuid + "lunch-break-8GJg8Xnb3Q9e45DNLKPX6o", + :url_name "20-lunch-break", + :url + "https://hasgeek.com/inclojure/2020/schedule/lunch-break-8GJg8Xnb3Q9e45DNLKPX6o", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], + :slot "13:15"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T14:00:00+05:30", + :end_at "2020-02-14T16:00:00+05:30", + :feedback_url nil, + :title + "More work with functions and with collections", + :is_break false, + :id 7, + :json_url nil, + :url_name_suuid + "more-work-with-functions-and-with-collections-u52gDjySycVLdJq887FbB6", + :url_name + "7-more-work-with-functions-and-with-collections", + :url + "https://hasgeek.com/inclojure/2020/schedule/more-work-with-functions-and-with-collections-u52gDjySycVLdJq887FbB6", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T14:00:00+05:30", + :end_at "2020-02-14T16:00:00+05:30", + :feedback_url nil, + :title + "Effective Testing, Debugging, and REPL-driven-development", + :is_break false, + :id 16, + :json_url nil, + :url_name_suuid + "effective-testing-debugging-and-repl-driven-development-uXxUtd9MPasFwht6EBCSEC", + :url_name + "16-effective-testing-debugging-and-repl-driven-development", + :url + "https://hasgeek.com/inclojure/2020/schedule/effective-testing-debugging-and-repl-driven-development-uXxUtd9MPasFwht6EBCSEC", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], + :slot "14:00"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T16:00:00+05:30", + :end_at "2020-02-14T16:15:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 21, + :json_url nil, + :url_name_suuid + "tea-coffee-zReBeRwxW9E8DLZVRCB8cg", + :url_name "21-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-zReBeRwxW9E8DLZVRCB8cg", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T16:00:00+05:30", + :end_at "2020-02-14T16:15:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 8, + :json_url nil, + :url_name_suuid + "tea-coffee-p7s6Xy8onpjT3eDZYScue5", + :url_name "8-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-p7s6Xy8onpjT3eDZYScue5", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], + :slot "16:00"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T16:15:00+05:30", + :end_at "2020-02-14T17:45:00+05:30", + :feedback_url nil, + :title + "Advanced work with functions, collections, and function API design", + :is_break false, + :id 9, + :json_url nil, + :url_name_suuid + "advanced-work-with-functions-collections-and-function-api-design-Hj9qgXjwkD8VpiHputRvkh", + :url_name + "9-advanced-work-with-functions-collections-and-function-api-design", + :url + "https://hasgeek.com/inclojure/2020/schedule/advanced-work-with-functions-collections-and-function-api-design-Hj9qgXjwkD8VpiHputRvkh", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T16:15:00+05:30", + :end_at "2020-02-14T17:45:00+05:30", + :feedback_url nil, + :title + "Laziness & Vars (Benefits & pitfalls)", + :is_break false, + :id 17, + :json_url nil, + :url_name_suuid + "laziness-vars-benefits-pitfalls-SEtV2dBtkURcPK8VTv5C9P", + :url_name + "17-laziness-vars-benefits-pitfalls", + :url + "https://hasgeek.com/inclojure/2020/schedule/laziness-vars-benefits-pitfalls-SEtV2dBtkURcPK8VTv5C9P", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"}], + :slot "16:15"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T17:45:00+05:30", + :end_at "2020-02-14T18:00:00+05:30", + :feedback_url nil, + :title + "Wrap up, closing remarks, Ask Us Anything!", + :is_break false, + :id 18, + :json_url nil, + :url_name_suuid + "wrap-up-closing-remarks-ask-us-anything-dcuCBePs4hjPjmWzBzVvCn", + :url_name + "18-wrap-up-closing-remarks-ask-us-anything", + :url + "https://hasgeek.com/inclojure/2020/schedule/wrap-up-closing-remarks-ask-us-anything-dcuCBePs4hjPjmWzBzVvCn", + :room + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower"} + {:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-14T17:45:00+05:30", + :end_at "2020-02-14T18:00:00+05:30", + :feedback_url nil, + :title + "Wrap up, closing remarks, Ask Us Anything!", + :is_break false, + :id 10, + :json_url nil, + :url_name_suuid + "wrap-up-closing-remarks-ask-us-anything-duKmtkxewZjVuPAZ3twUaJ", + :url_name + "10-wrap-up-closing-remarks-ask-us-anything", + :url + "https://hasgeek.com/inclojure/2020/schedule/wrap-up-closing-remarks-ask-us-anything-duKmtkxewZjVuPAZ3twUaJ", + :room + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower"}], + :slot "17:45"}], + :start_at "2020-02-14T09:30:00+05:30"} + {:date "2020-02-15", + :end_at "2020-02-15T18:00:00+05:30", + :slots + [{:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T08:45:00+05:30", + :end_at "2020-02-15T09:15:00+05:30", + :feedback_url nil, + :title "Registrations", + :is_break false, + :id 22, + :json_url nil, + :url_name_suuid + "registrations-Une5ZD2tt2ZTR4HxeYDNFk", + :url_name "22-registrations", + :url + "https://hasgeek.com/inclojure/2020/schedule/registrations-Une5ZD2tt2ZTR4HxeYDNFk", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "08:45"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T09:15:00+05:30", + :end_at "2020-02-15T09:25:00+05:30", + :feedback_url nil, + :title + "Welcome remarks and Introductions", + :is_break false, + :id 23, + :json_url nil, + :url_name_suuid + "welcome-remarks-and-introductions-LdfWu5kzQgsj5Aj5mcCRHn", + :url_name + "23-welcome-remarks-and-introductions", + :url + "https://hasgeek.com/inclojure/2020/schedule/welcome-remarks-and-introductions-LdfWu5kzQgsj5Aj5mcCRHn", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "09:15"} + {:sessions + [{:description + {:html + "Abstract
\nAh, the future! Such an exciting topic! It’s always a lot of fun to speculate on what will follow next, isn’t it? You know what’s twice as exciting (at least for programmers) - discussing the future of Clojure development tools, those underappreciated workhorses that make our lives hacking with Clojure easier, more fun and more productive.
\nIn this talk we’ll examine the current state of the broader Clojure tooling ecosystem, contrast the approaches taken by the most popular development tools out there, and try to give you a sense of their strengths and weaknesses. We’ll then skip to a discussions of some interesting efforts to improve the existing tool stack, happening right now in the community, and dream about the day they’ll come to fruition. And the day right after it.
\nIdeally, when all is set and done you’ll have a much better understanding of how popular Clojure development tools are working, and more appreciation for all the efforts that go into them. Perhaps you’ll even get inspired enough to start contributing to some tools. :-)
\nOutline
\nThe spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:
\nBozhidar 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.
", + :text + "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."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "09:25"} + {:sessions + [{:description + {:html + "NOTE: Slides WIP
", + :text + "* Introduction\r\n* Use cases\r\n * Building OLAP on top of RDBMS\r\n * Hyper scalable function triggering platform(alternative to RDBMS triggers but scalable)\r\n * Cheaper Point in time backups\r\n * Data replication across multi-variety of databases or across multi versions\r\n* Architecture\r\n * Independent building blocks which include: \r\n * Log Reader\r\n * Distributed Queue System (For eg Apache Kafka)\r\n * Cloud Storage\r\n * Query services\r\n * Visualization tools\r\n * Benefits\r\n * Components Synchronisation\r\n* Power of Clojure\r\n * Writing EMR jobs\r\n * Spawning and destroying Hadoop cluster on-demand\r\n * Support for AWS, GCP\r\n * By-default auto-scaling supported\r\n * DAG Execution\r\n * Development with REPL\r\n * Integration with Spark, Hive, Pig\r\n* Obstacles and Learnings\r\n* Low-cost Scalable platform\r\n* Conclusion\r\n* Demo showing for any operations in DB\r\n * Kafka being populated\r\n * S3 dumps\r\n * Lambda function being triggered\r\n\r\n\r\n\r\nNOTE: Slides WIP"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/building-data-platforms-from-business-stores-using-LoRgCMiZxc8kbyAbKkUKGg", + :start_at "2020-02-15T10:15:00+05:30", + :end_at "2020-02-15T11:00:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ/feedback", + :title + "Building data platforms from business stores using Clojure", + :is_break false, + :id 38, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/building-data-platforms-from-business-stores-using-LoRgCMiZxc8kbyAbKkUKGg/json", + :url_name_suuid + "building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ", + :url_name + "38-building-data-platforms-from-business-stores-using-clojure", + :url + "https://hasgeek.com/inclojure/2020/schedule/building-data-platforms-from-business-stores-using-clojure-LFmfWxY9ZiEdtsCK6vJ2gJ", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "LoRgCMiZxc8kbyAbKkUKGg", + :proposal_id 5221, + :speaker "Mayur Jadhav", + :speaker_bio + {:html + "Hi, I am co-founder of Dataorc, a Data oriented startup based out of Pune. I started my professional journey with Clojure at my previous company Helpshift and have been coding in same for last 6 years. Even at Dataorc, almost every project have some part developed in Clojure. I have used Clojure for architecting automation frameworks, building super scalable backends, distributed crawlers, munching TBs of data with it.
", + :text + "Hi, I am co-founder of [Dataorc](https://dataorc.in), a Data oriented startup based out of Pune. I started my professional journey with Clojure at my previous company Helpshift and have been coding in same for last 6 years. Even at Dataorc, almost every project have some part developed in Clojure. I have used Clojure for architecting [automation frameworks](https://www.youtube.com/watch?v=G-fjpO6nYPQ), building super scalable backends, [distributed crawlers](https://github.com/mj-jadhav/twitter-crawler), munching TBs of data with it."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "10:15"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T11:00:00+05:30", + :end_at "2020-02-15T11:30:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 26, + :json_url nil, + :url_name_suuid + "tea-coffee-yeRB7DBGfjzAcDaV22Vc4P", + :url_name "26-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-yeRB7DBGfjzAcDaV22Vc4P", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "11:00"} + {:sessions + [{:description + {:html + "Note: The outline and slides of the talk are very much a work-in-progress. Hopefully, this draft gives the organisers a sense of the flow of the session and some of the high-level concepts that I plan to cover.
", + :text + "* Introduction\r\n* Context - numberz & what it does \r\n* Business problem\r\n* Iterations - improving the solution \r\n * Naive implementation using threading macros and core.async\r\n * DAG-based implementation\r\n * DSL to decalaratively express DAGs and compose transformations together\r\n* Challenges faced\r\n* Conclusion\r\n\r\nNote: The outline and slides of the talk are very much a work-in-progress. Hopefully, this draft gives the organisers a sense of the flow of the session and some of the high-level concepts that I plan to cover."}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/composable-data-pipelines-for-not-so-big-data-5uBCASZmhNUFGP5Xaf4mtT", + :start_at "2020-02-15T11:30:00+05:30", + :end_at "2020-02-15T11:50:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a/feedback", + :title + "Composable Data Pipelines for not-so-Big Data", + :is_break false, + :id 45, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/composable-data-pipelines-for-not-so-big-data-5uBCASZmhNUFGP5Xaf4mtT/json", + :url_name_suuid + "composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a", + :url_name + "45-composable-data-pipelines-for-not-so-big-data", + :url + "https://hasgeek.com/inclojure/2020/schedule/composable-data-pipelines-for-not-so-big-data-Sst4TX2UnovaGwGez59j3a", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "5uBCASZmhNUFGP5Xaf4mtT", + :proposal_id 5216, + :speaker "Akaash Patnaik", + :speaker_bio + {:html + "I’m a web developer, based out of Bangalore, India. I currently work at numberz, a financial technology startup where I lead the technology team. Most of my decade-long career in software engineering, has been in the financial technology domain, where I’ve helped build systems for invoicing, payments processing, collections automation, etc.
\nMy interest in functional programming & music led me to hacking on Overtone a few years ago. A few hours into it, I was hooked and this was my gateway into the world of Clojure. Having been something of a hobbyist in Clojure for a few years now, I have lately been involved in introducing Clojure at work, for a business-critical project. It has been a hugely insightful experience and has further reinforced my belief in the benefits of using functional programming and Clojure in real-world business applications.
", + :text + "I'm a web developer, based out of Bangalore, India. I currently work at [numberz](https://numberz.co), a financial technology startup where I lead the technology team. Most of my decade-long career in software engineering, has been in the financial technology domain, where I've helped build systems for invoicing, payments processing, collections automation, etc.\r\n\r\nMy interest in functional programming & music led me to hacking on [Overtone](https://github.com/overtone/overtone) a few years ago. A few hours into it, I was hooked and this was my gateway into the world of Clojure. Having been something of a hobbyist in Clojure for a few years now, I have lately been involved in introducing Clojure at work, for a business-critical project. It has been a hugely insightful experience and has further reinforced my belief in the benefits of using functional programming and Clojure in real-world business applications. "}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "11:30"} + {:sessions + [{:description + {:html + "Hey there, I am Aravind coming in from Bengaluru, originally from Pondicherry. I work at Swym Corp building (mostly breaking) things that help scale consumer experience globally with a small team. I started on Clojure about 5 years, and have been head-over-heels ever since, with a touch of tough love. Prior to that, I was in Hyderabad building out an enterprise mobile PaaS.
\nI have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.
\nA runner, a biker-to-everywhere (read cycle), a lover of puns, small teams and everything that helps us go remote.
", + :text + "Hey there, I am Aravind coming in from Bengaluru, originally from Pondicherry. I work at Swym Corp building (mostly breaking) things that help scale consumer experience globally with a small team. I started on Clojure about 5 years, and have been head-over-heels ever since, with a touch of tough love. Prior to that, I was in Hyderabad building out an enterprise mobile PaaS.\r\n\r\nI have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.\r\n\r\nA runner, a biker-to-everywhere (read cycle), a lover of puns, small teams and everything that helps us go remote."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "11:50"} + {:sessions + [{:description + {:html + "Hi! I’m Vedang. I live in Pune, India and work at Helpshift. Now-a-days, I head the Helpshift Core backend team and work on improving processes and workflows within the team with the help of my team mates. Previously, I was an individual contributor and helped design and write some of the code that runs Helpshift.
\nI’m passionate about programming, and some of my work can be found on GitHub. I use Emacs as my editor-for-everything, and blog about it from time to time.
", + :text + "Hi! I’m Vedang. I live in Pune, India and work at Helpshift. Now-a-days, I head the Helpshift Core backend team and work on improving processes and workflows within the team with the help of my team mates. Previously, I was an individual contributor and helped design and write some of the code that runs Helpshift.\r\n\r\nI’m passionate about programming, and some of my work can be found on GitHub. I use Emacs as my editor-for-everything, and blog about it from time to time."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "12:35"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T13:00:00+05:30", + :end_at "2020-02-15T13:55:00+05:30", + :feedback_url nil, + :title "Lunch", + :is_break true, + :id 29, + :json_url nil, + :url_name_suuid + "lunch-D3oT8EXd59UWMrXxE4QMAV", + :url_name "29-lunch", + :url + "https://hasgeek.com/inclojure/2020/schedule/lunch-D3oT8EXd59UWMrXxE4QMAV", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "13:00"} + {:sessions + [{:description + {:html + "Introduction
\nWalkthrough
\nConlusion
\nFormer illusionist, a bit of a pianist, now a psychologist. Also a hammock philosopher and tamer of electrons. After studying neuroscience, Adam Helinski became a full-time parens whisperer in the kingdom of IoT where his slight sense of scientific madness lead him to the unique choice of using Clojure for prototyping connected devices. After those few years of exile away from psychology, he now expertiments with using Clojure in psychotherapy.
", + :text + "Former illusionist, a bit of a pianist, now a psychologist. Also a hammock philosopher and tamer of electrons. After studying neuroscience, Adam Helinski became a full-time parens whisperer in the kingdom of IoT where his slight sense of scientific madness lead him to the unique choice of using Clojure for prototyping connected devices. After those few years of exile away from psychology, he now expertiments with using Clojure in psychotherapy. "}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "13:55"} + {:sessions + [{:description + {:html + "Talk will be presented by Madhu (Clojure programmer) and Rashmi (OOPs turned Clojure programmer)
\nDiscuss the paradigms - Encapsulation of data and methods vs immutable functions acting on input data and outputting new data.
\n(Examples of a simple java class vs a Clojure function)
\nTalk about how conditioned OOPs programmers are to classes and objects and at first glance it seems we are adopting a messy world of methods, procedures where there is no control over access to data.
\nImmutable functions are like mathematical functions unlike the methods, procedures of other programming languages.
\nFor an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.
\nOOPS requires management of references, their state change, it’s important to follow best practices to control the state change. References also lead to null objects.
\nImmutable functions get rid of references, explain persistent data structures for how copies of objects are avoided in Clojure.
Clojure - built on Java and uses the Lisp paradigm
\nAll underlyng Java functionality is available. at the same time the Lisp paradigm enables immutability of code.
\n(Give examples of calling a String function the Java way and the Clojure way)
Seq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.
\nDefprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)
\nClojure allows mutable state using a few data types -
\nAtoms - Based on underlying Java atomic variables. Explain.
Clojure - Ease of making changes by generating JAVA bytecode and testing.
\nConclusion - Possible to have redundant code, not follow best practices in both Java and Clojure.
", + :text + "Talk will be presented by Madhu (Clojure programmer) and Rashmi (OOPs turned Clojure programmer)\r\n\r\nDiscuss the paradigms - Encapsulation of data and methods vs immutable functions acting on input data and outputting new data.\r\n\r\n(Examples of a simple java class vs a Clojure function)\r\n\r\nTalk about how conditioned OOPs programmers are to classes and objects and at first glance it seems we are adopting a messy world of methods, procedures where there is no control over access to data.\r\n\r\nImmutable functions are like mathematical functions unlike the methods, procedures of other programming languages.\r\n\r\nFor an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.\r\n\r\nOOPS requires management of references, their state change, it’s important to follow best practices to control the state change. References also lead to null objects.\r\nImmutable functions get rid of references, explain persistent data structures for how copies of objects are avoided in Clojure.\r\n\r\nClojure - built on Java and uses the Lisp paradigm\r\nAll underlyng Java functionality is available. at the same time the Lisp paradigm enables immutability of code.\r\n(Give examples of calling a String function the Java way and the Clojure way)\r\n\r\nSeq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.\r\n\r\nDefprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)\r\n\r\nClojure allows mutable state using a few data types -\r\nAtoms - Based on underlying Java atomic variables. Explain.\r\n\r\nClojure - Ease of making changes by generating JAVA bytecode and testing. \r\n\r\nConclusion - Possible to have redundant code, not follow best practices in both Java and Clojure. "}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-for-java-oops-programmers-Kv8gtitnKvBuyw5HChgkVb", + :start_at "2020-02-15T14:40:00+05:30", + :end_at "2020-02-15T15:25:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6/feedback", + :title + "Clojure for Java (OOPS) programmers", + :is_break false, + :id 52, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-for-java-oops-programmers-Kv8gtitnKvBuyw5HChgkVb/json", + :url_name_suuid + "clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6", + :url_name + "52-clojure-for-java-oops-programmers", + :url + "https://hasgeek.com/inclojure/2020/schedule/clojure-for-java-oops-programmers-QxCUJiZjLUUA6Bd9xUajT6", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "Kv8gtitnKvBuyw5HChgkVb", + :proposal_id 5267, + :speaker + "Rashmi Mittal, Madhuparna Ghosh", + :speaker_bio + {:html + "Madhuparna is a senior developer at Quintype, she builds digital tools for media publishers. She loves working on backend and frontend technologies, she mostly spends time working with Clojure, NodeJS and Javascript.
\nRashmi has over 20 years of experience in product development in various verticals including 15 years in the Silicon Valley where she primarily worked at Adobe Systems on products like Adobe Illustrator, HTML5 animation and Video Publishing. She is currently the Vice President of Engineering at Quintype.
", + :text + "Madhuparna is a senior developer at Quintype, she builds digital tools for media publishers. She loves working on backend and frontend technologies, she mostly spends time working with Clojure, NodeJS and Javascript.\r\n\r\nRashmi has over 20 years of experience in product development in various verticals including 15 years in the Silicon Valley where she primarily worked at Adobe Systems on products like Adobe Illustrator, HTML5 animation and Video Publishing. She is currently the Vice President of Engineering at Quintype."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "14:40"} + {:sessions + [{:description {:html "", :text ""}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T15:25:00+05:30", + :end_at "2020-02-15T15:55:00+05:30", + :feedback_url nil, + :title "Tea / Coffee", + :is_break true, + :id 33, + :json_url nil, + :url_name_suuid + "tea-coffee-98iU2GiuHYEwY4tk6mawkn", + :url_name "33-tea-coffee", + :url + "https://hasgeek.com/inclojure/2020/schedule/tea-coffee-98iU2GiuHYEwY4tk6mawkn", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "15:25"} + {:sessions + [{:description + {:html + "What is Wasm and how does it work internally?
\nWhere can you run Wasm?
\nHow to run Wasm on top of JVM?
\nCalling Wasm code from Clojure.
\nCan this be a bridge between Clojure and Rust?
I am a Rust developer, currently pursuing my Bachelor’s degree. I like to tinker with stuff and know how things work internally. Stuff are those engineering marvels that we take for granted these days.
", + :text + "I am a Rust developer, currently pursuing my Bachelor's degree. I like to tinker with stuff and know how things work internally. Stuff are those engineering marvels that we take for granted these days."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "15:55"} + {:sessions + [{:description + {:html + "Here is a very brief outline of my presentation:
\n- Firstly, I will start of by explaining my failures in understanding bits and pieces of Seqs. Explain with actual function calls.
\n- The second part of the presentation is on how Lisp Cons Cells work. A brief explanation of how it is a list with 2 functions ie car and cdr. There will be a lot of examples on how sublists can be created and how they can be modified.
\n- A brief explanation of how Lisp Cons Cells analogues to Clojure Lazy Seqs.
\n- Concluding with a run through of why Clojure Lazy Seqs are more efficient than normal seqs. This will be majorly talking about how Lazy Seqs does all the heavy lifting with functional computation rather than sitting in memory.
You can find a very rough outline of the presentation here https://speakerdeck.com/sharangj/lazy-sequences-why-are-they-so-lazy.
", + :text + "Here is a very brief outline of my presentation:\r\n- Firstly, I will start of by explaining my failures in understanding bits and pieces of Seqs. Explain with actual function calls.\r\n- The second part of the presentation is on how Lisp Cons Cells work. A brief explanation of how it is a list with 2 functions ie car and cdr. There will be a lot of examples on how sublists can be created and how they can be modified.\r\n- A brief explanation of how Lisp Cons Cells analogues to Clojure Lazy Seqs.\r\n- Concluding with a run through of why Clojure Lazy Seqs are more efficient than normal seqs. This will be majorly talking about how Lazy Seqs does all the heavy lifting with functional computation rather than sitting in memory.\r\n\r\nYou can find a very rough outline of the presentation here https://speakerdeck.com/sharangj/lazy-sequences-why-are-they-so-lazy."}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/lazy-seqs-why-are-they-so-lazy-xEB46CHthhEnL42BLVRMk8", + :start_at "2020-02-15T16:05:00+05:30", + :end_at "2020-02-15T16:25:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk/feedback", + :title + "Lazy Seqs - Why are they so lazy?", + :is_break false, + :id 46, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/lazy-seqs-why-are-they-so-lazy-xEB46CHthhEnL42BLVRMk8/json", + :url_name_suuid + "lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk", + :url_name + "46-lazy-seqs-why-are-they-so-lazy", + :url + "https://hasgeek.com/inclojure/2020/schedule/lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "xEB46CHthhEnL42BLVRMk8", + :proposal_id 5252, + :speaker "Ramsharan Gorur Jayaraman", + :speaker_bio + {:html + "Ramsharan has built multiple systems across different spectrums like Local Commerce, Content Publishing Space and Health Care. As a tech enthusiast, he is always on the lookout on how tech can solve real world problems. He is a sport lover and a Liverpool FC fanatic. He currently works as the Director Of Engineering at Quintype.
", + :text + "Ramsharan has built multiple systems across different spectrums like Local Commerce, Content Publishing Space and Health Care. As a tech enthusiast, he is always on the lookout on how tech can solve real world problems. He is a sport lover and a Liverpool FC fanatic. He currently works as the Director Of Engineering at Quintype."}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "16:05"} + {:sessions + [{:description + {:html + "Parentheses
\n - Not really a problem
\n - Why not
\n - Structural editing
\nDebugging
\n - Debugging when every expression is part of a chain of transformations
\n - ‘Print debugging’ not useful
\n - Tools to debug
\nFor loops
\n - Not the same as in python/java/c++
\n - List comprehension in math
\n - map/reduce/filter in c++
\n - When to actually use clojure for
\nLazy sequences
\n - Errors occuring on not realizing presence of lazy seqs
\n - REPL and how it compounds this issue
\n - Why is map returning a lazy seq
\n - Connection bw immutable data structures and lazy sequences
\nLack of examples
\n - Some cases where I wanted examples of Clojure code and it was hard to find. t(Schema, mount etc)
\n - Delving into source code, experimenting etc
\nInteraction with db
\n - Only because I was coming from python/django env
\n - ORMs in django vs sql-builders
\n - Lack of seamless integration with external applications forces you to learn more about them
\n - You move up a level in terms of programming skills.. But this make clojure hard
\nHon’ mention: Snakes vs Kebabs
\n - Why!!!
Currently engineer at nilenso, with a varied history hopping from robotics research at CMU, to greenhouse farming and back to reality with a tech lead role at Care24.
\nMostly programmed in python/django and C++ and now clojure!
Hello, I’m Pratik Karki. I’m a programmer, a lifelong learner, Light Table maintainer, open-source contributor and GSoC‘18 student. I love to pop the hood of software and look inside, move a few things and close the hood,(80% of the time, I mess something up.) I’m a polyglot programmer(IOW: Jack of all trades). I love to talk about concurrency, optimizations, language design, editors and algorithms. I work as a Software Engineer at Leapfrog Technology Inc., Nepal. When I’m not programming, I read a lot, to be a better programmer and my favorite super-hero is Ken Thompson. BTW, I ❤ Clojure!
", + :text + "Hello, I'm Pratik Karki. I'm a programmer, a lifelong learner, Light Table maintainer, open-source contributor and GSoC'18 student. I love to pop the hood of software and look inside, move a few things and close the hood,(80% of the time, I mess something up.) I'm a polyglot programmer(IOW: Jack of all trades). I love to talk about concurrency, optimizations, language design, editors and algorithms. I work as a Software Engineer at Leapfrog Technology Inc., Nepal. When I'm not programming, I read a lot, to be a better programmer and my favorite super-hero is Ken Thompson. BTW, I ❤ Clojure!"}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "16:35"} + {:sessions + [{:description + {:html + "https://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)
", + :text + "https://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)"}, + :timezone "Asia/Kolkata", + :proposal_url nil, + :start_at "2020-02-15T17:20:00+05:30", + :end_at "2020-02-15T18:00:00+05:30", + :feedback_url nil, + :title "BoF and Closing", + :is_break false, + :id 37, + :json_url nil, + :url_name_suuid + "bof-and-closing-UeuTzZ4oi8AtFt8qKNJqSf", + :url_name "37-bof-and-closing", + :url + "https://hasgeek.com/inclojure/2020/schedule/bof-and-closing-UeuTzZ4oi8AtFt8qKNJqSf", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal nil, + :proposal_id nil, + :speaker nil, + :speaker_bio {:html "", :text ""}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "17:20"}], + :start_at "2020-02-15T08:45:00+05:30"}], + :venues + [{:description {:html "", :text ""}, + :project_details + {:name "2020", + :suuid "pJYaKTaffVnaS9upmTP67F", + :title "IN/Clojure 2020"}, + :name + "novotel-pune-nagar-road-crimson-hall", + :city "Pune", + :postcode "411014", + :longitude 73.91076201573014, + :state "Maharashtra", + :title + "Novotel Pune Nagar Road, Crimson Hall", + :address1 "Nagar Rd, Sakore Nagar", + :suuid "tK8qMgL34ebiaMttPbvPC9", + :address2 "Viman Nagar", + :id 193, + :huuid "285e03f5c27746dcb5e19ace35f45112", + :latitude 18.55883089693069, + :room_list [{:description {:html - "Here is a very brief outline of my presentation:
\n- Firstly, I will start of by explaining my failures in understanding bits and pieces of Seqs. Explain with actual function calls.
\n- The second part of the presentation is on how Lisp Cons Cells work. A brief explanation of how it is a list with 2 functions ie car and cdr. There will be a lot of examples on how sublists can be created and how they can be modified.
\n- A brief explanation of how Lisp Cons Cells analogues to Clojure Lazy Seqs.
\n- Concluding with a run through of why Clojure Lazy Seqs are more efficient than normal seqs. This will be majorly talking about how Lazy Seqs does all the heavy lifting with functional computation rather than sitting in memory.
You can find a very rough outline of the presentation here https://speakerdeck.com/sharangj/lazy-sequences-why-are-they-so-lazy.
", + "Venue for the single-track day of talks.
", :text - "Here is a very brief outline of my presentation:\r\n- Firstly, I will start of by explaining my failures in understanding bits and pieces of Seqs. Explain with actual function calls.\r\n- The second part of the presentation is on how Lisp Cons Cells work. A brief explanation of how it is a list with 2 functions ie car and cdr. There will be a lot of examples on how sublists can be created and how they can be modified.\r\n- A brief explanation of how Lisp Cons Cells analogues to Clojure Lazy Seqs.\r\n- Concluding with a run through of why Clojure Lazy Seqs are more efficient than normal seqs. This will be majorly talking about how Lazy Seqs does all the heavy lifting with functional computation rather than sitting in memory.\r\n\r\nYou can find a very rough outline of the presentation here https://speakerdeck.com/sharangj/lazy-sequences-why-are-they-so-lazy."}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/lazy-seqs-why-are-they-so-lazy-xEB46CHthhEnL42BLVRMk8", - :start_at "2020-02-15T16:05:00+05:30", - :end_at "2020-02-15T16:25:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk/feedback", + "Venue for the single-track day of talks."}, + :name + "crimson-hall-day-of-talks-at-novotel-hotel", + :bgcolor "990000", :title - "Lazy Seqs - Why are they so lazy?", - :is_break false, - :id 46, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/lazy-seqs-why-are-they-so-lazy-xEB46CHthhEnL42BLVRMk8/json", - :url_name_suuid - "lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk", - :url_name - "46-lazy-seqs-why-are-they-so-lazy", - :url - "https://hasgeek.com/inclojure/2020/schedule/lazy-seqs-why-are-they-so-lazy-UwWSjgjoNTGXUtrwNGGHwk", - :room + "Crimson Hall (Day of talks at Novotel hotel)", + :suuid "gCFBMV8RukhAfSCN9BY8rP", + :id 311, + :huuid "7ac62ec71e6445ce8e5bb06ad132b119", + :venue_details + {:name + "novotel-pune-nagar-road-crimson-hall", + :suuid "tK8qMgL34ebiaMttPbvPC9", + :title + "Novotel Pune Nagar Road, Crimson Hall"}, + :uuid + "7ac62ec7-1e64-45ce-8e5b-b06ad132b119", + :seq 1, + :scoped_name "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "xEB46CHthhEnL42BLVRMk8", - :proposal_id 5252, - :speaker "Ramsharan Gorur Jayaraman", - :speaker_bio - {:html - "Ramsharan has built multiple systems across different spectrums like Local Commerce, Content Publishing Space and Health Care. As a tech enthusiast, he is always on the lookout on how tech can solve real world problems. He is a sport lover and a Liverpool FC fanatic. He currently works as the Director Of Engineering at Quintype.
", - :text - "Ramsharan has built multiple systems across different spectrums like Local Commerce, Content Publishing Space and Health Care. As a tech enthusiast, he is always on the lookout on how tech can solve real world problems. He is a sport lover and a Liverpool FC fanatic. He currently works as the Director Of Engineering at Quintype."}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "16:05"} - {:sessions + :buid "esYuxx5kRc6OW7Bq0TKxGQ"}], + :uuid + "285e03f5-c277-46dc-b5e1-9ace35f45112", + :seq 1, + :country "IN", + :buid "KF4D9cJ3Rty14ZrONfRREg", + :has_coordinates true} + {:description {:html "", :text ""}, + :project_details + {:name "2020", + :suuid "pJYaKTaffVnaS9upmTP67F", + :title "IN/Clojure 2020"}, + :name "mccia-trade-tower-icc-complex", + :city "Pune", + :postcode "411016", + :longitude 73.8544541, + :state "Maharashtra", + :title "MCCIA Trade Tower, ICC Complex", + :address1 + "Senapati Bapat Rd, Laxmi Society, Model Colony", + :suuid "X2Fubix2WNuxpqtZhbw7b4", + :address2 "Shivajinagar", + :id 194, + :huuid "0e8152a7d89a4203be2fe36dc34c06d0", + :latitude 18.521428, + :room_list [{:description {:html - "Parentheses
\n - Not really a problem
\n - Why not
\n - Structural editing
\nDebugging
\n - Debugging when every expression is part of a chain of transformations
\n - ‘Print debugging’ not useful
\n - Tools to debug
\nFor loops
\n - Not the same as in python/java/c++
\n - List comprehension in math
\n - map/reduce/filter in c++
\n - When to actually use clojure for
\nLazy sequences
\n - Errors occuring on not realizing presence of lazy seqs
\n - REPL and how it compounds this issue
\n - Why is map returning a lazy seq
\n - Connection bw immutable data structures and lazy sequences
\nLack of examples
\n - Some cases where I wanted examples of Clojure code and it was hard to find. t(Schema, mount etc)
\n - Delving into source code, experimenting etc
\nInteraction with db
\n - Only because I was coming from python/django env
\n - ORMs in django vs sql-builders
\n - Lack of seamless integration with external applications forces you to learn more about them
\n - You move up a level in terms of programming skills.. But this make clojure hard
\nHon’ mention: Snakes vs Kebabs
\n - Why!!!
Introductory To Clojure workshop on the 5th Floor.
", :text - "Parentheses \r\n - Not really a problem\r\n - Why not\r\n - Structural editing \r\nDebugging \r\n - Debugging when every expression is part of a chain of transformations\r\n - ‘Print debugging’ not useful\r\n - Tools to debug \r\nFor loops \r\n - Not the same as in python/java/c++\r\n - List comprehension in math\r\n - map/reduce/filter in c++\r\n - When to actually use clojure for\r\nLazy sequences\r\n - Errors occuring on not realizing presence of lazy seqs\r\n - REPL and how it compounds this issue\r\n - Why is map returning a lazy seq\r\n - Connection bw immutable data structures and lazy sequences\r\nLack of examples \r\n - Some cases where I wanted examples of Clojure code and it was hard to find. t(Schema, mount etc)\r\n - Delving into source code, experimenting etc\r\nInteraction with db\r\n - Only because I was coming from python/django env\r\n - ORMs in django vs sql-builders\r\n - Lack of seamless integration with external applications forces you to learn more about them\r\n - You move up a level in terms of programming skills.. But this make clojure hard\r\nHon’ mention: Snakes vs Kebabs\r\n - Why!!!"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-is-difficult-but-worth-it-7Tbm9Fm9WtXsMWjz5EtmGN", - :start_at "2020-02-15T16:25:00+05:30", - :end_at "2020-02-15T16:35:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/clojure-is-difficult-but-worth-it-5ecT3pJQRccfQPXY5F933R/feedback", + "Introductory To Clojure workshop on the 5th Floor."}, + :name + "classroom-1-workshop-at-mccia-trade-tower", + :bgcolor "D04B36", :title - "Clojure is difficult, but worth it", - :is_break false, - :id 51, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-is-difficult-but-worth-it-7Tbm9Fm9WtXsMWjz5EtmGN/json", - :url_name_suuid - "clojure-is-difficult-but-worth-it-5ecT3pJQRccfQPXY5F933R", - :url_name - "51-clojure-is-difficult-but-worth-it", - :url - "https://hasgeek.com/inclojure/2020/schedule/clojure-is-difficult-but-worth-it-5ecT3pJQRccfQPXY5F933R", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "7Tbm9Fm9WtXsMWjz5EtmGN", - :proposal_id 5264, - :speaker "sezal jain", - :speaker_bio - {:html - "Currently engineer at nilenso, with a varied history hopping from robotics research at CMU, to greenhouse farming and back to reality with a tech lead role at Care24.
\nMostly programmed in python/django and C++ and now clojure!
Intermediate Clojure workshop on the 5th Floor
", :text - "1. Introduce Light Table.\r\n - Concept, Ideas, Approach\r\n2. Clojure/Script ecosystem at that state.\r\n3. Light Table's awesome features:\r\n - BOT\r\n - Inline Eval, etc.\r\n4. Where did it get wrong?\r\n5. A new dawn, reviving Light Table.\r\n6. Learning from new ideas.\r\n7. Embracing already provided Clojure Toolings.\r\n8. Demo of new Light Table based on new architectures embracing old foundations. "}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/light-table-the-strange-and-wonderful-saga-of-a-pu-VRPeLAoiVxx9UGrVN55yNd", - :start_at "2020-02-15T16:35:00+05:30", - :end_at "2020-02-15T17:20:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/light-table-the-strange-and-wonderful-saga-of-a-pure-clojure-editor-uMZkEjupyQJEW4tyatco7c/feedback", + "Intermediate Clojure workshop on the 5th Floor"}, + :name + "classroom-2-workshop-at-mccia-trade-tower", + :bgcolor "675997", :title - "Light Table: The strange and wonderful saga of a pure Clojure editor", - :is_break false, - :id 42, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/light-table-the-strange-and-wonderful-saga-of-a-pu-VRPeLAoiVxx9UGrVN55yNd/json", - :url_name_suuid - "light-table-the-strange-and-wonderful-saga-of-a-pure-clojure-editor-uMZkEjupyQJEW4tyatco7c", - :url_name - "42-light-table-the-strange-and-wonderful-saga-of-a-pure-clojure-editor", - :url - "https://hasgeek.com/inclojure/2020/schedule/light-table-the-strange-and-wonderful-saga-of-a-pure-clojure-editor-uMZkEjupyQJEW4tyatco7c", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "VRPeLAoiVxx9UGrVN55yNd", - :proposal_id 5249, - :speaker "Pratik Karki", - :speaker_bio - {:html - "Hello, I’m Pratik Karki. I’m a programmer, a lifelong learner, Light Table maintainer, open-source contributor and GSoC‘18 student. I love to pop the hood of software and look inside, move a few things and close the hood,(80% of the time, I mess something up.) I’m a polyglot programmer(IOW: Jack of all trades). I love to talk about concurrency, optimizations, language design, editors and algorithms. I work as a Software Engineer at Leapfrog Technology Inc., Nepal. When I’m not programming, I read a lot, to be a better programmer and my favorite super-hero is Ken Thompson. BTW, I ❤ Clojure!
", - :text - "Hello, I'm Pratik Karki. I'm a programmer, a lifelong learner, Light Table maintainer, open-source contributor and GSoC'18 student. I love to pop the hood of software and look inside, move a few things and close the hood,(80% of the time, I mess something up.) I'm a polyglot programmer(IOW: Jack of all trades). I love to talk about concurrency, optimizations, language design, editors and algorithms. I work as a Software Engineer at Leapfrog Technology Inc., Nepal. When I'm not programming, I read a lot, to be a better programmer and my favorite super-hero is Ken Thompson. BTW, I ❤ Clojure!"}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "16:35"} - {:sessions - [{:description - {:html - "https://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)
", - :text - "https://en.wikipedia.org/wiki/Birds_of_a_feather_(computing)"}, - :timezone "Asia/Kolkata", - :proposal_url nil, - :start_at "2020-02-15T17:20:00+05:30", - :end_at "2020-02-15T18:00:00+05:30", - :feedback_url nil, - :title "BoF and Closing", - :is_break false, - :id 37, - :json_url nil, - :url_name_suuid - "bof-and-closing-UeuTzZ4oi8AtFt8qKNJqSf", - :url_name "37-bof-and-closing", - :url - "https://hasgeek.com/inclojure/2020/schedule/bof-and-closing-UeuTzZ4oi8AtFt8qKNJqSf", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal nil, - :proposal_id nil, - :speaker nil, - :speaker_bio {:html "", :text ""}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "17:20"}], - :start_at "2020-02-15T08:45:00+05:30"}], - :venues - [{:description {:html "", :text ""}, - :project_details - {:name "2020", - :suuid "pJYaKTaffVnaS9upmTP67F", - :title "IN/Clojure 2020"}, - :name - "novotel-pune-nagar-road-crimson-hall", - :city "Pune", - :postcode "411014", - :longitude 73.91076201573014, - :state "Maharashtra", - :title - "Novotel Pune Nagar Road, Crimson Hall", - :address1 "Nagar Rd, Sakore Nagar", - :suuid "tK8qMgL34ebiaMttPbvPC9", - :address2 "Viman Nagar", - :id 193, - :huuid "285e03f5c27746dcb5e19ace35f45112", - :latitude 18.55883089693069, - :room_list - [{:description - {:html - "Venue for the single-track day of talks.
", - :text - "Venue for the single-track day of talks."}, - :name - "crimson-hall-day-of-talks-at-novotel-hotel", - :bgcolor "990000", - :title - "Crimson Hall (Day of talks at Novotel hotel)", - :suuid "gCFBMV8RukhAfSCN9BY8rP", - :id 311, - :huuid "7ac62ec71e6445ce8e5bb06ad132b119", - :venue_details - {:name - "novotel-pune-nagar-road-crimson-hall", - :suuid "tK8qMgL34ebiaMttPbvPC9", - :title - "Novotel Pune Nagar Road, Crimson Hall"}, - :uuid - "7ac62ec7-1e64-45ce-8e5b-b06ad132b119", - :seq 1, - :scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :buid "esYuxx5kRc6OW7Bq0TKxGQ"}], - :uuid - "285e03f5-c277-46dc-b5e1-9ace35f45112", - :seq 1, - :country "IN", - :buid "KF4D9cJ3Rty14ZrONfRREg", - :has_coordinates true} - {:description {:html "", :text ""}, - :project_details - {:name "2020", - :suuid "pJYaKTaffVnaS9upmTP67F", - :title "IN/Clojure 2020"}, - :name "mccia-trade-tower-icc-complex", - :city "Pune", - :postcode "411016", - :longitude 73.8544541, - :state "Maharashtra", - :title "MCCIA Trade Tower, ICC Complex", - :address1 - "Senapati Bapat Rd, Laxmi Society, Model Colony", - :suuid "X2Fubix2WNuxpqtZhbw7b4", - :address2 "Shivajinagar", - :id 194, - :huuid "0e8152a7d89a4203be2fe36dc34c06d0", - :latitude 18.521428, - :room_list - [{:description - {:html - "Introductory To Clojure workshop on the 5th Floor.
", - :text - "Introductory To Clojure workshop on the 5th Floor."}, - :name - "classroom-1-workshop-at-mccia-trade-tower", - :bgcolor "D04B36", - :title - "Classroom 1 (Workshop at MCCIA Trade Tower)", - :suuid "uziaFicrXhbhQvg4anug6m", - :id 308, - :huuid "f22450b2a6d6448ca88d74fb3bad33d4", - :venue_details - {:name "mccia-trade-tower-icc-complex", - :suuid "X2Fubix2WNuxpqtZhbw7b4", - :title "MCCIA Trade Tower, ICC Complex"}, - :uuid - "f22450b2-a6d6-448c-a88d-74fb3bad33d4", - :seq 1, - :scoped_name - "mccia-trade-tower-icc-complex/classroom-1-workshop-at-mccia-trade-tower", - :buid "8iRQsqbWRIyojXT7O60z1A"} - {:description - {:html - "Intermediate Clojure workshop on the 5th Floor
", - :text - "Intermediate Clojure workshop on the 5th Floor"}, - :name - "classroom-2-workshop-at-mccia-trade-tower", - :bgcolor "675997", - :title - "Classroom 2 (Workshop at MCCIA Trade Tower)", - :suuid "ktd9SzA98gUkpvQPPANvUd", - :id 309, - :huuid "c75ee473f89e4bd2814ccfe6d076cda4", - :venue_details - {:name "mccia-trade-tower-icc-complex", - :suuid "X2Fubix2WNuxpqtZhbw7b4", - :title "MCCIA Trade Tower, ICC Complex"}, + "Classroom 2 (Workshop at MCCIA Trade Tower)", + :suuid "ktd9SzA98gUkpvQPPANvUd", + :id 309, + :huuid "c75ee473f89e4bd2814ccfe6d076cda4", + :venue_details + {:name "mccia-trade-tower-icc-complex", + :suuid "X2Fubix2WNuxpqtZhbw7b4", + :title "MCCIA Trade Tower, ICC Complex"}, + :uuid + "c75ee473-f89e-4bd2-814c-cfe6d076cda4", + :seq 2, + :scoped_name + "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", + :buid "x17kc_ieS9KBTM_m0HbNpA"}], :uuid - "c75ee473-f89e-4bd2-814c-cfe6d076cda4", + "0e8152a7-d89a-4203-be2f-e36dc34c06d0", :seq 2, - :scoped_name - "mccia-trade-tower-icc-complex/classroom-2-workshop-at-mccia-trade-tower", - :buid "x17kc_ieS9KBTM_m0HbNpA"}], - :uuid - "0e8152a7-d89a-4203-be2f-e36dc34c06d0", - :seq 2, - :country "IN", - :buid "DoFSp9iaQgO-L-Ntw0wG0A", - :has_coordinates true}]}) + :country "IN", + :buid "DoFSp9iaQgO-L-Ntw0wG0A", + :has_coordinates true}]}) diff --git a/src/cljs/inclojure_website/links.cljs b/src/cljs/inclojure_website/links.cljs new file mode 100644 index 0000000..a018c61 --- /dev/null +++ b/src/cljs/inclojure_website/links.cljs @@ -0,0 +1,6 @@ +(ns inclojure-website.links + (:require [inclojure-website.data :as data])) + +(defonce email (str "mailto:" data/email)) +(defonce sponsorship-deck "pdf/inclojure-2024-sponsorship-deck.pdf") +(defonce youtube-png "/images/youtube.png") diff --git a/src/cljs/inclojure_website/page.cljs b/src/cljs/inclojure_website/page.cljs index 68cab38..a2c239a 100644 --- a/src/cljs/inclojure_website/page.cljs +++ b/src/cljs/inclojure_website/page.cljs @@ -1,13 +1,14 @@ (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] - [inclojure-website.talks :as talks] - [accountant.core :as accountant] [reagent.core :as reagent :refer [atom create-class]])) (declare home) (declare workshops) +(declare workshop-table) (defonce sub-page (atom nil)) ;; @@ -44,10 +45,13 @@ ;; (def nav-links {"Tickets" "tickets" - "Talks" "talks" - "Workshops" "workshops" - "Sponsors" "sponsorship" - "Venue" "venue"}) + "Venue" "venue" + "Schedule" "schedule" + "Talks" "speaker-list" + "Workshop" "workshops" + "Sponsors" "sponsorship"}) + +(def talk-links ["keynote" "amogh" "vedang" "aldo" "akshat" "anuj" "abhinav" "dheeraj" "prabhanshu"]) (defn nav [] [:nav @@ -70,53 +74,45 @@ (defn workshops [] [:section {:id "workshop-details"} [:div - [:p.intro "IN/Clojure 2020 will have two full-day workshops."] - [:p "An introductory Clojure workshop and an intermediate Clojure - workshop. The lessons apply to ClojureScript as well. Note that - both the workshops will be conducted simultaneously on the 14" - [:sup "th"] " of February, 2020."] + [:p.intro data/conf-with-year " is co-hosting a free, beginner friendly workshop with ClojureBridge on 22nd March. + There will be a virtual setup session for this workshop on 21st March."] + [:p "ClojureBridge is a free, beginner-friendly Clojure programming workshop that aims + to increase diversity within the Clojure community."] + [:p "You will learn fundamental programming concepts in Clojure through practical examples + and exercises. Teachers and assistants will be there to guide you."] [:h3 {:id "introduction"} - "Introduction to Clojure"] - [:h4 "Audience"] - [:p "Practising programmers and/or CS undergrads/grads who are new to Clojure, LISPs or functional programming but not absolute beginners - at programming. We recommend that attendees be familiar with at least one programming language."] + "ClojureBridge: Introduction to Clojure"] + [:h4 "Who can apply?"] + [:ul [:li "This workshop will be for women and non-binary attendees."] + [:li "Male attendees may attend as guests of women or non-binary attendees."]] + [:p "The workshop is open to people who are completely new to programming, as well as existing developers + new to Clojure."] + [:h4 "Schedule"] + (workshop-table) + [:h4 "What do I need to bring to the workshop?"] + [:p "Please bring " [:strong "your own laptop"] " for the workshop. Everything else, including WiFi, drinking water, + lunch and tea will be provided at the venue."] [:h4 "Session outline"] + [:p "The session itself will take place on 22nd March from 10am to 6pm and will be divided into two parts—" [:strong "Learning"] " and " [:strong "Doing"] "."] [:div - [:p "This will be a day-long hands-on workshop. We will progressively work through a series of exercises by building concept upon concept."] - [:p "We will try to achieve this with:"] + [:p "Learning:"] [:ul - [:li "A small set of core ideas,"] - [:li "a handful of Clojure primitives,"] - [:li "a few API design techniques, and"] - [:li "an interactive (REPL-driven) programming workflow."]] - [:p "We will do the following:"] + [:li "What is programming?"] + [:li "What is Clojure? Why choose Clojure?"] + [:li "Understanding the REPL"] + [:li "Clojure Syntax—the anatomy of an S-expression"] + [:li "Data types, functions, and sequences"] + [:li "Context and lexical bindings"] + [:li "Control flow and logic"] + [:li "Functional composition"]] + [:p "Doing (in smaller groups, with assigned guides):"] [:ul - [:li "Model things with pure data,"] - [:li "design clean functional APIs,"] - [:li "compose purely functional logic, and"] - [:li "use the REPL to interactively grow, inspect and debug code."]] - [: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 - how to solve problems in Clojure. The workshop should serve as a springboard from which attendees can launch their own exploration - of the language and its ecosystem. Fully documented workshop material will be available for use at home."]] - - [:h3 - {:id "intermediate"} - "Intermediate Clojure"] - [:h4 "Audience"] - [:p "This workshop is aimed at practising programmers who have some exposure to Clojure, but are looking to accomplish non trivial tasks using Clojure."] - [:h4 "Session outline"] - [:p "This will be a day-long hands-on workshop."] - [:p "The aim of this workshop is to help the attendee work in Clojure more effectively. We will learn about:"] - [:ul - [:li "Repl driven development"] - [:li "Clojure's approach to state and identity"] - [:li "Laziness & Vars (Benefits & pitfalls)"] - [:li "Java interop"] - [:li "Testing"] - [:li "Debugging Effectively"] - [:li "Clojure ecosystem"]] - [: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."] - [:p "We will not be covering macros or advanced clojure concurrency primitives in this workshop."]]]) + [:li "Land of Wizards"]] + [:h4 "Register here!"] + [:p "To register for this workshop, select the ClojureBridge Pass and click proceed."] + [:div#ticket-widget + [:iframe {:id "ts-iframe", :src "https://www.townscript.com/v2/widget/inclojure-2024/booking", :frameborder "0", :height "600", :width "100%"}] + [:link {:rel "stylesheet", :href "https://www.townscript.com/static/Bookingflow/css/ts-iframe.style.css"}]]]]]) ;; ;; ------------------ @@ -128,124 +124,85 @@ (defn intro [] [:section {:id "intro"} - [:p.intro "IN/Clojure is India's annual Clojure and ClojureScript - conference, and Asia's first."] + [:p.intro data/conf " is India's annual Clojure conference."] [:p "Our focus: the free exchange of ideas between new and experienced Clojure programmers alike. We are volunteer-run, and - not-for-profit."]]) + not-for-profit."] + [:p "When: 22nd and 23rd March."]]) (defn venue [] [:section {:id "venue"} [:h2 "Venue"] - [:p "The very first IN/Clojure was held in Pune in 2016 and after two editions in " - [:em "namma "] - "Bengaluru, we're delighted to return to " - [:em "apla "] - "Pune! Now, where are those " - [:em "bakarwadis and modaks?"]] + [:p "We are back in Namma Bengaluru!"] [:img {:style {:width "100%" :border-radius "2%"} - :alt "Pune", - :src "images/bg-pune.jpg"}] + :alt "Bengaluru", + :src "images/bg-bangalore.jpg"}] [:h3 "The Conference"] - [:p "The conference will be held in a relatively centrally and well-connected on Nagar Rd, just 3kms off of the Pune International Airport (PNQ)."] - [:iframe - {:height "450", - :width "100%", - :src "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3782.3359264715677!2d73.90860541495768!3d18.558887972844822!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3bc2c13f953dc837%3A0xb6782032b34e422e!2sNovotel%20Pune%20Nagar%20Road!5e0!3m2!1sen!2sin!4v1575908729886!5m2!1sen!2sin"}] - [:address "Crimson Hall, Novotel" - [:br] - "Nagar Rd, Sakore Nagar" + [:p "The conference will be held near the heart of Bengaluru at Bangalore International Center (BIC)."] + [:address + "7, 4th Main Road" [:br] - "Viman Nagar" + "Domlur II Stage" [:br] - "Pune - 411014" + "Bengaluru 560 071" [:br] - "Maharashtra, IN" + "Karnataka, IN" [:br]] - [:h4 "Getting there"] - [:p [:strong "By Air:"] " Pune International Airport (PNQ) is a 10 - minute taxi ride from the venue."] - [:p [:strong "By Train:"] " Pune is well connected by train to all - major cities of India. Pune Station is about 25 minutes from the - venue by car."] - [:p [:strong "By Road:"] " Pune is also well connected by bus. If - you are coming from Mumbai, we highly recommend taking the Shivneri - bus from Dadar, Chembur, Vashi or Borivali (this is a government - service)."] - [:h4 "Getting around"] - [:p "Uber and Ola Cabs are both active in Pune city. You should - have no trouble using these. Local autorickshaws are also easily - available."] - [:p "There are quite a few restaurants, pubs and small cafes in the - Koregaon Park neighborhood, which is a 15 minute ride from the - venue."] - [:h3 "The Workshops"] [:iframe {:height "450", :width "100%", - :src "https://www.google.com/maps/embed?pb=!1m14!1m8!1m3!1d15131.39434095538!2d73.8298557!3d18.5357433!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x0%3A0xd8f30539fc95f1b4!2sMCCIA%20Trade%20Tower!5e0!3m2!1sen!2sin!4v1576334854079!5m2!1sen!2sin"}] - [:address "MCCIA Trade Tower" - [:br] - "ICC Complex, Senapati Bapat Rd" - [:br] - "Laxmi Society, Model Colony" - [:br] - "Shivajinagar" - [:br] - "Pune - 411016" - [:br] - "Maharashtra, IN" - [:br]]]) + :src "https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d3888.078985580048!2d77.63307921584516!3d12.966797490859014!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x3bae15c2415198a1%3A0x9367b30a9bcd14fe!2sBangalore+International+Centre+(New+Building)!5e0!3m2!1sen!2sin!4v1550159709143"}] + [:h4 "Getting there"] + [:p [:strong "By Air:"] + " Kempegowda International Airport (KIA) is a 1 hour taxi ride from the venue."] + [:p [:strong "By Train:"] + " Bengaluru is well connected by train to all major cities of India. + KSR Station is about 30 minutes from the venue by car."] + [:h4 "Getting around"] + [:p "Uber and Ola Cabs are both active in Bengaluru. You should + have no trouble using these. Local autorickshaws are also easily available."] + [:p "The venue is adjacent to Indiranagar, which is a vibrant hub for dining and nightlife— + you will find everything from street food to high-end international cuisine."]]) (defn sponsorship [] [:section {:id "sponsorship"} [:h2 "Sponsorship"] [:p] [:p "Help foster the growing Clojure community in India/Asia."] - [:p "Over the years, IN/Clojure has helped kick-start a series of + [:p "Over the years, " data/conf " has helped kick-start a series of Clojure workshops and meet-ups across the country. It has helped organizations hiring Clojurists to reach out to a wonderful community. And has helped attendees make a strong case for Clojure/Clojurescript adoption in their companies."] - [:p "With your help, we hope to make IN/Clojure 2020 bigger than + [:p "With your help, we hope to make " data/conf-with-year " bigger than before and continue our efforts to help foster the growing - Clojure community in India/Asia."] - [:p "To sponsor IN/Clojure 2020, review sponsorship details in the" - [:a {:href "pdf/inclojure-2020-sponsorship-deck.pdf"} " prospectus "] + Clojure community in India and Asia."] + [:p "To sponsor " data/conf-with-year ", review sponsorship details in the" + [:a {:href links/sponsorship-deck} " prospectus "] "and contact us at our mailing list" - [:a {:href "mailto:2020@inclojure.org"} " 2020@inclojure.org."]] + [:a {:href links/email} " " data/email] "."] [:div.benefactor-slab.platinum [:h3 "Platinum"] [:a {:href "https://nilenso.com"} - [:img {:alt "nilenso", :src "images/sponsors/nilenso.png"}]] - [:a {:href "https://www.helpshift.com"} - [:img {:alt "helpshift", :src "images/sponsors/helpshift.png"}]]] + [:img {:alt "nilenso", :src "images/sponsors/nilenso.png"}]]] [:div.benefactor-slab.gold [:h3 "Gold"] - [:a {:href "https://juspay.in/"} - [:img {:alt "juspay", :src "images/sponsors/juspay.png"}]] - - [:a {:href "https://www.gojek.io/"} - [:img {:alt "gojek", :src "images/sponsors/gojek.svg"}]]] - - [:div.benefactor-slab.bronze - [:h3 "Bronze"] - - [:a {:href "https://www.quintype.com/"} - [:img {:alt "quintype", :src "images/sponsors/quintype.png"}]]] + [:a {:href "https://nammayatri.in/"} + [:img {:alt "Namma Yatri" , :src "images/sponsors/namma-yatri.png"}]] + [:a {:href "https://www.teamohana.com"} + [:img {:alt "TeamOhana", :src "images/sponsors/team-ohana.png"}]]] - [:div.benefactor-slab.community - [:h3 "Community"] + #_[:div.benefactor-slab.bronze + [:h3 "Bronze"]] - [:div - [:a {:href "https://cognitect.com"} - [:img {:alt "cognitect", :src "images/sponsors/cognitect.png"}]]]]]) + #_[:div.benefactor-slab.community + [:h3 "Community"]]]) (defn coc [] [:section {:id "coc"} @@ -263,7 +220,6 @@ sanctioned or expelled from the conference without a refund at the discretion of the organisers."]]) - (defn team-member [name github twitter avatar] [:li [:a @@ -271,9 +227,9 @@ name [:img {:alt name, :src (str avatar)}]] [:div.small.article-fine-print.no-mobile - [:a - {:href github} - [:img {:alt "Github", :src "images/github.png"}]]]]) + [:a + {:href github} + [:img {:alt "Github", :src "images/github.png"}]]]]) (defn team [] [:section {:id "team"} @@ -314,46 +270,64 @@ [: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."] + {: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://twitter.com/bbatsov"} - [:img {:alt "Twitter", :src "images/twitter.png"}]] + {:href "https://fantastic.earth/@deobald"} + [:img {:alt "Twitter", :src "images/mastodon.ico"}]] [:a - {:href "https://github.com/bbatsov"} + {:href "https://github.com/deobald"} [:img {:alt "Github", :src "images/github.png"}]]]]]]) (defn tickets [] - [:section {:id "tickets"} - [:h2 "Tickets"] - [:div - [:div#boxoffice-widget [:pre "Loading..."]]]]) + [:section {:id "tickets"} + [:h2 "Tickets"] + [:div#ticket-widget + [:iframe {:id "ts-iframe", :src "https://www.townscript.com/v2/widget/inclojure-2024/booking", :frameborder "0", :height "600", :width "100%"}] + [:link {:rel "stylesheet", :href "https://www.townscript.com/static/Bookingflow/css/ts-iframe.style.css"}]] + [:p "Issues with booking? Try " [:a {:href "https://www.townscript.com/v2/e/inclojure-2024/booking"} "this page"] "."]]) (defn action-shots [] [:section {:id "action-shots"} [:h2 "Previous editions"] [:div {:style {:overflow "hidden"}} [:div.slideshow-container.slide.no-mobile + [:img {:src "images/previously/action5.jpg"}] [:img {:src "images/previously/action1.jpg"}] [:img {:src "images/previously/action4.jpg"}] [:img {:src "images/previously/action2.jpg"}] [:img {:src "images/previously/action3.jpg"}]]] - [:ol.article-list + [:ol.archive-list [:li - [:img.previously.article-image.location - {:alt "bangalore" - :src "images/bangalore-map-caption.jpg"}] + [:div.previously + [:strong "2020"] + [:p.article-subtitle + [:a.button.city + {:href "https://www.youtube.com/watch?v=dZ4xczP5zDI&list=PLlAML-kjpXY7ZGj6anXfKSqN1XGTCEmmw"} + [:img + {:style {:height "25px" :width "25px" :vertical-align "middle" :margin-right "10px"} + :alt "", + :src links/youtube-png}] + "Talks"] + [:a.button.city + {:href "https://inclojure.org/archive/2020/#schedule"} + [:img + {:style {:height "25px" :width "25px" :vertical-align "middle", :margin-right "10px"} + :alt "", + :src "images/calendar.svg"}] + "Schedule"]]]] + [:li [:div.previously [:strong "2019"] [:p.article-subtitle @@ -362,7 +336,7 @@ [:img {:style {:height "25px" :width "25px" :vertical-align "middle" :margin-right "10px"} :alt "" - :src "https://www.simple.org/images/youtube.png"}] + :src links/youtube-png}] "Talks"] [:a.button.city {:href "https://inclojure.org/archive/2019/#schedule"} @@ -370,8 +344,9 @@ {:style {:height "25px" :width "25px" :vertical-align "middle" :margin-right "10px"} :alt "", :src "images/calendar.svg"}] - "Schedule"]]] + "Schedule"]]]] + [:li [:div.previously [:strong "2018"] [:p.article-subtitle @@ -380,7 +355,7 @@ [:img {:style {:height "25px" :width "25px" :vertical-align "middle", :margin-right "10px"} :alt "", - :src "https://www.simple.org/images/youtube.png"}] + :src links/youtube-png}] "Talks"] [:a.button.city {:href "https://inclojure.org/archive/2018/#schedule"} @@ -391,10 +366,6 @@ "Schedule"]]]] [:li - [:img.previously.article-image.location - {:alt "pune", - :src "images/pune-map-caption.jpg"}] - [:div.previously [:strong "2016"] [:p.article-subtitle @@ -403,7 +374,7 @@ [:img {:style {:height "25px" :width "25px" :vertical-align "middle" :margin-right "10px"} :alt "", - :src "https://www.simple.org/images/youtube.png"}] + :src links/youtube-png}] "Talks"] [:a.button.city {:href "https://inclojure.org/archive/2016/#schedule"} @@ -414,78 +385,130 @@ "Schedule"]]]]]]) (defn workshop-table [] - [:table.u-full-width.talk-table + [:table.u-full-width + {:style {:font-size "90%"}} [:thead - [:tr [:th "Time"] [:th "Event"]]] + [:tr [:th "Date"] [:th "Time"] [:th "Event"]]] [:tbody - [:tr.selected - [:td "9:30 am"] - [:td "Registrations"]] - - [:tr - [:td "10:00 am – 6 pm"] - [:td "Introductory workshop" - [:br] - "(Conference Room 5, 5th Floor, A-wing, MCCIA trade towers)"]] - [:tr - [:td "10:00 am – 6 pm"] - [:td "Intermediate workshop" - [:br] - "(Conference Room 6, 5th Floor, A-wing, MCCIA trade towers)"]] - + [:td "21-03-2024"] + [:td "6:00 pm – 7:30 pm"] + [:td [:strong "Online"] " session for installation and editor setup."]] [:tr - [:td "7 pm onwards"] - [:td "Pre-conference party @ " [:a {:href "https://g.page/royal-orchid-central-pune"} "Royal Orchid Central (at Tiger Trail, 4th Floor)"]]]]]) + [:td "22-03-2024"] + [:td "10:00 am – 6:00 pm"] + [:td [:strong "In-person"] " workshop at Bangalore International Centre."]]]]) (defn talks-table [] [:table.u-full-width.talk-table [:thead [:tr [:th "Time"] [:th "Event"] [:th "Speaker"]]] [:tbody - (for [slot (mapcat :sessions (-> data/talks - :schedule - second - :slots))] - ^{:key (str (random-uuid))} - [:tr {:class (when (or (nil? (:proposal_url slot)) - (:is_break slot)) - "selected")} - - [:td (sundry/format-date (:start_at slot))] - [:td (if (:proposal_url slot) - - [:a {:href (:proposal_url slot)} - (:title slot)] - - (:title slot))] - - [:td (:speaker slot)]])]]) - -(defn talks [] - [:section {:id "talks"} - [:h2 "Talks"] - [:p "We're excited by the rich and diverse set of proposals submitted for the -4th edition of IN/Clojure 2020."] - [:p "The " [:strong "CFP closed on 20 Jan 2020 "] " (revised from 01 Jan 2020)."] - [:p "This year, selected speakers will enjoy sharing - the stage with the perennially effervescent Bozhidar Batsov, and - a lovely set of speakers from across the globe."] - [:p "While only some proposals will make it to the final schedule, all talk proposers receive a complimentary pass for conference day, irrespective of selection status."] - [:p "Speaking of which, tickets are going, going, going... " - [:strong [:a {:href "#" :on-click #(sundry/goto-link "tickets")} "get yours now"]]"!"]]) - + [:tr.selected + [:td "9:30 am"] + [:td "Registrations"] + [:td ""]] + [:tr.selected + [:td "9:50 am"] + [:td "Welcome remarks and introductions"] + [:td ""]] + [:tr + [: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 "11:45 am"] + [:td [:a {:href "#vedang"} "Developer Tooling for Speed and Productivity in 2024"]] + [:td "Vedang Manerikar"]] + [:tr + [:td "12:30 pm"] + [:td [:a {:href "#aldo"} "Personal Identity Information (PII) Detection with Clojure"]] + [:td "Aldo Sujin"]] + [:tr + [: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 "2:45 pm"] + [:td [:a {:href "#anuj"} "Navigating Data Models: A Journey into Unified, Scalable, and Composable Data Architecture"]] + [:td "Anuj Kumar"]] + [:tr + [: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 "4:35 pm"] + [:td [:a {:href "#dheeraj"} "Exploring Electric Clojure"]] + [:td "Dheeraj Kumar"]] + [:tr + [:td "5:20 pm"] + [:td [:a {:href "#prabhanshu"} "Building a spreadsheet from the ground up"]] + [:td "Prabhanshu Gupta"]]]]) + +(defn cfp [] + [:section {:id "cfp"} + [:h2 "Call For Proposals"] + [:p "We welcome talk submissions for " data/conf-with-year "."] + [:p [:strong "CFP closes on 30th Jan 2024."]] + [:p "Talk proposers each receive a complimentary pass for conference day, + irrespective of selection status."] + [:p [:strong [:a {:href "https://forms.gle/1eyanrgJypwksoz27"} + "Learn more and propose a talk now!"]]]]) (defn schedule [] [:section {:id "schedule"} [:h2 "Schedule"] - [:p "IN/Clojure 2020 will happen over two days. On the 14" [:sup "th"] " and the 15" [:sup "th"] " of February."] + [:p "IN/Clojure 2024 will happen on 22nd and 23rd March, 2024. + The first day will have the workshops, and the second day will have the talks."] - [:h6 {:style {:border-bottom "1px dotted"}} [:strong "Friday, 14.02.2020"] " | " [:a {:href "https://www.google.com/maps?ll=18.535633,73.82988&z=14&t=m&hl=en&gl=IN&mapclient=embed&cid=15632844478142083508"} "Workshops (@ MCCIA Trade Towers)"]] + [:h6 {:style {:border-bottom "1px dotted"}} [:strong "ClojureBridge"] " | " [:strong "21st - 22nd March"]] (workshop-table) - [:h6 {:style {:border-bottom "1px dotted"}} [:strong "Saturday, 15.02.2020"] " | " [:a {:href "https://www.google.com/maps?ll=18.558883,73.910794&z=16&t=m&hl=en&gl=IN&mapclient=embed&cid=13148294514236867118"} "Talks (@ Novotel Hotel)"]] + [: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"}]]) @@ -495,11 +518,8 @@ [:ul [:li "the sidebar artwork is procedurally generated and inspired by" [:a {:href - "https://gitlab.com/inclojure/inclojure.gitlab.io/blob/redesign/src/cljs/inclojure_website/morellet.cljs"} - " François Morellet."]] - - [:li "this edition of IN/Clojure is organized in partnership with" - [:a {:href "https://hasgeek.com"} " HasGeek."]] + "https://gitlab.com/inclojure/inclojure.gitlab.io/blob/redesign/src/cljs/inclojure_website/morellet.cljs"} + " François Morellet."]] [:li "source code to this website and other conference organizational material is available" @@ -511,8 +531,7 @@ (defn footer [] [:footer - [:a - {:href "mailto:2020@inclojure.org"} + [:a {:href links/email} [:img {:alt "Flickr", :src "images/mailbox.svg"}]] [:a {:href "https://twitter.com/in_clojure"} @@ -523,53 +542,27 @@ (defn workshops-section [] [:section {:id "workshops"} - [:h2 "Workshops"] + [:h2 "Workshop"] [:div - [:p"IN/Clojure 2020 will have two full-day workshops."] - [:p "An introductory Clojure workshop and an intermediate Clojure - workshop. The lessons apply to ClojureScript as well. Note that - both the workshops will be conducted simultaneously on the 14" - [:sup "th"] " of February, 2020."] + [:p data/conf-with-year " is co-hosting a free, beginner friendly workshop with ClojureBridge on 22nd March."] [:ol.article-list - [:li - [:img.article-image - {:alt "introductory" - :src "images/workshops/introductory.png"}] - - [:h4 {:id "introductory-workshop"} + [:li [:a {:href "#workshop-details"} - "Introduction to Clojure"]] - - [:p.article-subtitle "Practising programmers and/or CS - undergrads/grads who are new to Clojure, LISPs or functional - programming but not absolute beginners at programming. We - recommend that attendees be familiar with at least one - programming language."] - - [:div.article-fine-print.no-mobile - [:a - {:href "https://github.com/inclojure-org/clojure-by-example"} - [:img {:alt "Github", :src "images/github.png"}]]]] - - [:li - [:img.article-image - {:alt "intermediate", - :src "images/workshops/intermediate.png"}] + [:img.article-image + {:alt "introductory" + :src "images/workshops/clojurebridge-logo.png"}]] - [:h4 {:id "intermediate-workshop"} - [:a {:href "#" - :on-click (fn [] - (reset! sub-page (workshops)))} "Intermediate Clojure"]] + [:h4 {:id "introductory-workshop"} + [:a {:href "#workshop-details"} + "Introduction To Clojure »"]] - [:p.article-subtitle "This workshop is aimed at practising - programmers who have some exposure to Clojure, but are looking to - accomplish non trivial tasks using Clojure."] - - [:div.article-fine-print.no-mobile - [:a - {:href "https://github.com/inclojure-org/intermediate-clojure-workshop"} - [:img {:alt "Github", :src "images/github.png"}]]]]]]]) + [:p.article-subtitle "ClojureBridge is a free, beginner-friendly Clojure + programming workshop that aims to increase diversity within the Clojure + community. You will learn fundamental programming concepts in Clojure + through practical examples and exercises. This workshop will be for + women and non-binary attendees. Male attendees may attend as guests + of women or non-binary attendees."]]]]]) ;; ;; --------- @@ -583,13 +576,15 @@ [:div [intro] [keynote] - [talks] + #_[talks] + [venue] [schedule] - [talk-selectors] - [workshops-section] [tickets] + #_[cfp] + [speaker-list] + [talk-selectors] [sponsorship] - [venue] + [workshops-section] [action-shots] [coc] [team]])