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 @@ - IN/Clojure 2020 - + IN/Clojure 2024 + - + - - + + diff --git a/resources/public/js/tickets.js b/resources/public/js/tickets.js deleted file mode 100644 index 55fa68c..0000000 --- a/resources/public/js/tickets.js +++ /dev/null @@ -1,47 +0,0 @@ -$(document).ready(function() { - var boxofficeUrl = "https://boxoffice.hasgeek.com"; - $.get({ - url: boxofficeUrl + "/api/1/boxoffice.js", - crossDomain: true, - timeout: 30000, - retries: 5, - retryInterval: 10000, - success: function(data) { - var boxofficeScript = document.createElement('script'); - boxofficeScript.innerHTML = data.script; - document.getElementsByTagName('body')[0].appendChild(boxofficeScript); - }, - error: function(response) { - var ajaxLoad = this; - ajaxLoad.retries -= 1; - var errorMsg; - if (response.readyState === 4) { - errorMsg = "Server error, please try again later."; - $('#boxoffice-widget pre').html(errorMsg); - } - else if (response.readyState === 0) { - if (ajaxLoad.retries < 0) { - if(!navigator.onLine) { - errorMsg = "Unable to connect. There is no network!"; - $('#boxoffice-widget pre').html(errorMsg); - } - else { - errorMsg = "Unable to connect to the HasGeek ticketing portal. If you are behind a firewall or using any script blocking extension (like Privacy Badger), please ensure your browser can load boxoffice.hasgeek.com, api.razorpay.com and checkout.razorpay.com."; - $('#boxoffice-widget pre').html(errorMsg); - } - } else { - setTimeout(function() { - $.get(ajaxLoad); - }, ajaxLoad.retryInterval); - } - } - } - }); - window.addEventListener('onBoxofficeInit', function (e) { - window.Boxoffice.init({ - org: "inclojure", - itemCollection: "8fa14c74-376f-4fc6-b859-8adc823fe6f7", - paymentDesc: "IN/Clojure 2020", - }); - }, false); -}); diff --git a/resources/public/pdf/inclojure-2020-sponsorship-deck.pdf b/resources/public/pdf/inclojure-2020-sponsorship-deck.pdf deleted file mode 100644 index cb4f870..0000000 Binary files a/resources/public/pdf/inclojure-2020-sponsorship-deck.pdf and /dev/null differ diff --git a/resources/public/pdf/inclojure-2024-sponsorship-deck.pdf b/resources/public/pdf/inclojure-2024-sponsorship-deck.pdf new file mode 100644 index 0000000..e0e5a2c Binary files /dev/null and b/resources/public/pdf/inclojure-2024-sponsorship-deck.pdf differ diff --git a/src/cljs/inclojure_website/core.cljs b/src/cljs/inclojure_website/core.cljs index 5a904bf..f0aa457 100644 --- a/src/cljs/inclojure_website/core.cljs +++ b/src/cljs/inclojure_website/core.cljs @@ -1,13 +1,13 @@ (ns inclojure-website.core - (:require [accountant.core :as accountant] - [goog.events :as events] - [goog.history.EventType :as HistoryEventType] - [inclojure-website.morellet :as morellet] - [inclojure-website.page :as page :refer [home layout sub-page workshops nav-links]] - [inclojure-website.talks :as talks] - [reagent.core :as reagent :refer [atom]] - [secretary.core :as secretary :include-macros true]) - (:import goog.History)) + (:require [accountant.core :as accountant] + [goog.events :as events] + [goog.history.EventType :as HistoryEventType] + [inclojure-website.morellet :as morellet] + [inclojure-website.page :as page :refer [home layout sub-page workshops nav-links talk-links]] + [inclojure-website.talks :as talks] + [reagent.core :as reagent :refer [atom]] + [secretary.core :as secretary :include-macros true]) + (:import goog.History)) ;; ------------------------- ;; Routes @@ -21,6 +21,11 @@ (reset! sub-page (workshops))) ;; Make perma-links for all navigation paths +(doseq [talk-link talk-links] + (secretary/defroute (str "/#" talk-link) [] + (reset! sub-page (home)) + (js/setTimeout #(.scrollIntoView (.getElementById js/document talk-link)) 0))) + (doseq [nav-link nav-links] (secretary/defroute (str "/#" (second nav-link)) [] (reset! sub-page (home)))) @@ -36,11 +41,11 @@ (defn hook-browser-navigation! [] (doto (History.) - (events/listen - HistoryEventType/NAVIGATE - (fn [event] - (secretary/dispatch! (.-token event)))) - (.setEnabled true))) + (events/listen + HistoryEventType/NAVIGATE + (fn [event] + (secretary/dispatch! (.-token event)))) + (.setEnabled true))) ;; ------------------------- ;; Initialize app diff --git a/src/cljs/inclojure_website/data.cljs b/src/cljs/inclojure_website/data.cljs index 2211760..dbfda6d 100644 --- a/src/cljs/inclojure_website/data.cljs +++ b/src/cljs/inclojure_website/data.cljs @@ -1,95 +1,214 @@ (ns inclojure-website.data) +(defonce conf "IN/Clojure") +(defonce conf-with-year "IN/Clojure 2024") +(defonce email "2024@inclojure.org") + (defonce team-list - [{:name "Aditya Athalye" - :github "https://github.com/adityaathalye" - :twitter "http://twitter.com/adityaathalye" - :avatar "images/team/aditya.png"} + [{:name "Alisha Mohanty" + :github "https://github.com/alishamohanty" + :avatar "images/team/alisha.webp"} + + {:name "Akshatha H" + :github "https://github.com/qptr" + :avatar "images/team/akshatha.webp"} - {:name "Akshay Gupta" - :github "https://github.com/kitallis" - :twitter "http://twitter.com/kitallis" - :avatar "images/team/kitallis.png"} + {:name "Atharva Raykar" + :github "https://github.com/tfidfwastaken" + :twitter "https://twitter.com/AtharvaRaykar" + :avatar "images/team/atharva.webp"} - {:name "Harsh Gupta" - :github "https://github.com/hargup" - :twitter "https://twitter.com/hargup13" - :avatar "images/team/harsh.jpg?"} + {:name "Deepa Venkatraman" + :twitter "https://twitter.com/deepa_v" + :avatar "images/team/deepa.jpg"} {:name "Kapil Reddy" :github "https://github.com/kapilreddy" :twitter "https://twitter.com/KapilReddy" :avatar "images/team/kapil.png"} - {:name "Nivedita Priyadarshini" - :github "https://github.com/nid90" - :twitter "http://twitter.com/nid90" - :avatar "images/team/nid.png"} + {:name "Mitesh Shah" + :github "https://github.com/oxalorg" + :twitter "https://twitter.com/oxalorg" + :avatar "images/team/mitesh.png"} + + {:name "Priyanga P Kini" + :github "https://github.com/PriyangaPKini" + :avatar "images/team/kini.jpg"} + + {:name "Ravi Chandra Padmala" + :github "https://github.com/neenaoffline" + :twitter "https://twitter.com/neenaoffline" + :avatar "images/team/neena.webp"} {:name "Ravindra Jaju" :github "https://github.com/jaju" :twitter "https://twitter.com/jaju" :avatar "images/team/jaju.jpg"} - {:name "Rubal Jabbal" - :github "https://github.com/rubalj" - :twitter "https://twitter.com/rubaljabbal" - :avatar "images/team/rubal.png"} + {:name "Sezal Jain" + :github "https://github.com/sezaljain" + :avatar "images/team/sezal.jpg"} - {:name "Sandilya Jandhyala" - :github "https://github.com/jysandy" - :twitter "http://twitter.com/jysandilya" - :avatar "images/team/sandy.png"} + {:name "Siri PR" + :github "https://github.com/siripr4" + :avatar "images/team/siri.webp"} - {:name "Srihari Sriraman" - :github "https://github.com/ssrihari" - :twitter "http://twitter.com/sriharisriraman" - :avatar "images/team/srihari.png"} + {:name "Somya Maithani" + :github "https://github.com/msomya" + :avatar "images/team/somya.png"} - {:name "Venkatesh Halli" - :github "https://github.com/vhalli" - :twitter "https://twitter.com/venkateshhalli" - :avatar "images/team/vhalli.png"}]) + {:name "Vikram Chintalapati" + :github "https://github.com/vkrmis" + :twitter "https://twitter.com/cvikram" + :avatar "images/team/vkrm.png"}]) (defonce talk-selectors - [{:name "Martin Klepsch" - :bio "Martin is a Clojure/Script consultant who never expected to work on a -documentation platform. Before starting cljdoc he helped run various community -events in Berlin, created CLJSJS and contributed to lots of Clojure OpenSource -projects like Boot, the ClojureScript compiler, re-frame and more. Martin also -recently organised the Heart Of Clojure conference in Europe." - :twitter "https://twitter.com/martinklepsch" - :github "https://github.com/martinklepsch" - :www "https://www.martinklepsch.org" - :alt "martinklepsch" - :avatar "images/comittee/martin.jpeg"} - - {:name "Paula Gearon" - :bio "In her 10th year of Clojure development, Paula is a software engineer -at Cisco Systems who enjoys working in the most technical parts of a system, -building the infrastructure that lets other developers do their jobs. -She has been the technical lead on several commercial and open source projects, -with a focus on data storage and processing, and was a lead editor for the -SPARQL standard for accessing RDF databases. When not coding, she does triathlons, -cooks, helps her children with homework, and mentors and supports young members -of Women Who Code. Originally from Australia, she currently lives with her family -in Virginia, in the USA." - :twitter "https://twitter.com/quoll" - :github "https://github.com/quoll" - :www "https://medium.com/@miffedgirl" - :alt "paulagearon" - :avatar "images/comittee/paula.jpeg"} + [{:name "Carin Meier" + :alt "gigasquid" + :github "https://github.com/gigasquid" + :twitter "https://twitter.com/gigasquid" + :www "http://gigasquidsoftware.com/" + :avatar "images/committee/carin.jpeg" + :bio "Carin Meier spends her time at the intersection of Clojure, Data, and AI. +She works at OneStudyTeam as Director of Data Engineering, is the author of the +O’Reilly book, “Living Clojure”, and PMC member of Apache MxNet."} + {:name "Nivedita Priyadarshini" + :alt "nid" + :github "https://github.com/nid90" + :twitter "https://twitter.com/nid90" + :www "" + :avatar "images/committee/nid.jpeg" + :bio (list "Nivedita (nid) is a software developer living in Bangalore, India. She +started working with Clojure in 2013 and has been writing production and hobby projects +in Clojure ever since. For most of the last decade, she worked at and ran a software +cooperative called nilenso. Currently, she is building " + [:a {:href "https://github.com/tramlinehq/tramline" :style {:border-width "1px"}} "Tramline."])} + {:name "Shantanu Kumar" + :github "https://github.com/kumarshantanu" + :twitter "https://twitter.com/kumarshantanu" + :www "https://kumarshantanu.github.io" + :avatar "images/committee/shantanu.jpeg" + :bio "Shantanu Kumar has extensive production experience in Clojure, Java, +distributed systems, databases and fault-tolerant scalable systems. He is the +author of “Clojure High Performance Programming” and organiser of the +Bangalore-Clojure meetup group."}]) - {:name "Tejas Dinkar" - :bio "A full stack engineer with over 9 years of experience in multiple domains, -Tejas is a software craftsman who enjoys learning new ways to solve problems. Currently, -Tejas loves to play with Clojure, Ruby, GoLang, ReasonML, and Node.js, and he is -the Head of Technology for Quintype, a builder of products for digital media companies." - :twitter "https://twitter.com/tdinkar" - :github "https://github.com/gja" - :www "http://blog.gja.in" - :alt "tdinkar" - :avatar "images/comittee/tejas.jpeg"}]) +(defonce speakers + [{:name "Amogh Talpallikar" + :talk-title "Carbon Dating Polymorphism in Clojure" + :github "https://github.com/mogverse" + :twitter "https://twitter.com/mogverse" + :www "https://www.linkedin.com/in/amogh-talpallikar-35704b5a/?originalSubdomain=in" + :avatar "images/speakers/amogh.jpg" + :bio "Amogh is an Engineering Manager at Helpshift with over 5 years of + hands-on experience in writing and maintaining backend systems in Clojure. + Beyond the realm of technology, he embraces his inner creativity as an + amateur doodler and a habitual storyteller. A pop culture aficionado at + heart, he finds inspiration in the narratives of both code and culture." + :talk-summary "This talk explores the evolution of polymorphism as an idea, tracing its + origins and key historical influences, to understand the design decisions + and significance of Clojure's offering."} + {:name "Vedang Manerikar" + :talk-title "Developer Tooling for Speed and Productivity in 2024" + :github "" + :masto "https://fosstodon.org/@vedang" + :www "https://vedang.me" + :avatar "images/speakers/vedang.jpg" + :bio "Vedang is a software engineer and technology leader with a passion for building scalable systems and empowering teams. He has a keen interest in functional programming, particularly in Clojure, and enjoys building innovative end-to-end solutions to hard product challenges." + :talk-summary "This talk covers some tools and practices that improve the + experience of programming Clojure. These tools have made me better and + faster, and I hope they will be useful to others as well. Broadly, I + categorise tools that help (1) individual contributors, (2) Clojure teams, + (3) working with production."} + {:name "Aldo Sujin" + :talk-title "Personal Identity Information (PII) Detection with Clojure" + :github "" + :twitter "" + :www "https://www.linkedin.com/in/aldo-sujin-g-b630ba221/" + :avatar "images/speakers/aldo.jpg" + :bio "Aldo Sujin is a Software engineer at Formcept. With the knowledge in Clojure and + regular expressions, he has implemented the PII annotation in Clojure as one of the + core plug-ins for the data processing engine of FORMCEPT’s MECBot product." + :talk-summary "With the digitalization of anything and everything, PII detection is a recent topic of attention. This talk will cover + how to detect PII with Clojure, the challenges involved and how one can overcome these challenges."} + {:name "Akshat Shah" + :talk-title "Architecture and Design of Goose" + :github "https://github.com/olttwa" + :twitter "https://twitter.com/olttwa" + :www "" + :avatar "images/speakers/akshat.jpg" + :bio "Akshat is a Senior Partner at Nilenso, and the author of Goose, a background processing library written in Clojure. + Akshat believes in the immeasurable impact code can create. Before Nilenso, he was part of a hypergrowth journey at GoTo and Rippling, + where he realised the true potential of software." + :talk-summary "The goal of this talk is to inspire developers to rethink + their approach to background processing and open-source libraries. They will + learn about simplicity in API design, reliability, extensibility and + scalability. Additionally, developers will be introduced to a battle-tested + library for background processing written in Clojure which was designed with + these principles and features in mind."} + {:name "Anuj Kumar" + :talk-title "Navigating Data Models: A Journey into Unified, Scalable, and Composable Data Architecture" + :github "https://github.com/anujsrc" + :twitter "https://x.com/kumarsays" + :www "https://medium.com/@anujsays" + :avatar "images/speakers/anuj.jpg" + :bio "Anuj Kumar, Co-founder and leadership team member at FORMCEPT, has + over 16 years of experience in designing large-scale distributed systems. He + has spoken at various conferences, published patents and research papers, + and authored a book on Microservices with Clojure." + :talk-summary "In the dynamic realm of data management, the choice of data + models can often dictate the success or failure of organizational data + strategies. This talk delves into the intricacies of data models, explores + the associated challenges, and presents a solution that Clojure and its + ecosystem can provide. "} + {:name "Abhinav Sarkar" + :talk-title "Functional Programming Patterns" + :github "https://github.com/abhin4v" + :masto "https://fantastic.earth/@abnv" + :www "https://abhinavsarkar.net/" + :avatar "images/speakers/abhinav.jpg" + :bio "Abhinav works as a Senior Engineer at Google, who has worked + extensively in Clojure, Go and Java on large distributed systems for the + past fifteen years. He has been dabbling in functional programming for the + past decade and has been exploring Haskell, Erlang and ML." + :talk-summary "I've been writing Clojure and other functional programming + languages professionally for nearly a decade now. I've noticed that while + people understand the basics of FP, they find it hard to apply FP at large. + In this session, I'll talk about some useful patterns that make applying FP. + easier at large."} + {:name "Dheeraj Kumar" + :talk-title "Exploring Electric Clojure" + :github "" + :twitter "" + :www "https://www.linkedin.com/in/adheerajkumar/" + :avatar "images/speakers/dheeraj.jpg" + :bio "Dheeraj Kumar has been writing software unprofessionally for 14 years. + He can mess-up any layer of the system from mobile frontends to DB infra. He + blames most of his absurd productivity on Clojure. He moved to tech + leadership solely to prevent others from making his mistakes." + :talk-summary "This talk explores Electric Clojure, a new paradigm for building full-stack + web applications in Clojure without thinking about the frontend/backend + separation or the network, resulting in blazing-fast applications with fewer + lines of code."} + {:name "Prabhanshu Gupta" + :talk-title "Building a spreadsheet from the ground up" + :github "https://github.com/prabhanshuguptagit" + :twitter "https://twitter.com/twomogambo" + :www "" + :avatar "images/speakers/prabhanshu.webp" + :bio "Prabhanshu has been a software developer at nilenso since 2019, where + he's written a bunch of Rails and Clojure. These days he spends most of his + time hacking on bean, a spreadsheet written in cljs. Otherwise he's likely + to be found making bleeps and bloops on the (largely unused) music gear he's + amassed over the years." + :talk-summary "Spreadsheets are probably the easiest programming environment + to use, but maybe not the simplest (wink wink). I ask the question: What + could better spreadsheet software look like? In an attempt to answer this + I've been making one, using ClojureScript. I’ll discuss what’s fun about + exploring spreadsheets as a programming environment, how I went about + building one, some Clojure tooling that makes it easy, things I learnt along + the way and how you could build one too."}]) (defonce previous-editions {:bangalore {:map "images/bangalore-map-caption.png" @@ -106,1276 +225,1274 @@ the Head of Technology for Quintype, a builder of products for digital media com :talks "https://www.youtube.com/playlist?list=PLlAML-kjpXY7kzJp0p1EPJ9eb8B15CCBU" :schedule "https://inclojure.org/2016/#schedule"}]}}) - - (defonce talks - {: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.

\n

The 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

\n

Ah, 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.

\n

In 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.

\n

Ideally, 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. :-)

\n

Outline

\n

The spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:

\n", - :text - "**Abstract**\r\n\r\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.\r\n\r\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.\r\n\r\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. :-)\r\n\r\n**Outline**\r\n\r\nThe spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:\r\n\r\n - [CIDER Distilled: A Common Foundation for Clojure Tooling | Clojure South 2019](https://www.youtube.com/watch?v=EU0ScGwKbYI)\r\n - [nREPL Redux | Dutch Clojure Days 2019](https://www.youtube.com/watch?v=WTzzUSw6iaI)\r\n - [Towards Awesome Clojure Documentation | ClojuTRE 2017](https://www.youtube.com/watch?v=nrpsMB2gYI0)\r\n - [CIDER Inside the Brewery | Clojure/West 2016](https://www.youtube.com/watch?v=8wLwbpCxRf0)\r\n - [The Evolution of the Emacs Tooling for Clojure | Clojure/Conj 2014](https://www.youtube.com/watch?v=4X-1fJm25Ww)"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/the-future-of-clojure-tooling-BbK6Gbk2Ak7HAVgEyNgDsY", - :start_at "2020-02-15T09:25:00+05:30", - :end_at "2020-02-15T10:15:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k/feedback", - :title - "Opening Keynote: The Future of Clojure Tooling", - :is_break false, - :id 43, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/the-future-of-clojure-tooling-BbK6Gbk2Ak7HAVgEyNgDsY/json", - :url_name_suuid - "the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k", - :url_name - "43-the-future-of-clojure-tooling", - :url - "https://hasgeek.com/inclojure/2020/schedule/the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "BbK6Gbk2Ak7HAVgEyNgDsY", - :proposal_id 5245, - :speaker "Bozhidar Batsov", - :speaker_bio - {:html - "

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.

", - :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 - "\n

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 - "\n

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.

\n

My 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 - "", - :text - "- Introduction\r\n- The happy cycle of learning Clojure\r\n- Discovering \"macros\" - crazy good, or just crazy?\r\n- Writing your first macro\r\n- Writing your second macro\r\n- Wait, the first one is not working?\r\n- Making sense of the \"intern\"als\r\n- Complicating things, and making it complicated\r\n- Wait, do I really need a macro?\r\n- Conclusion - Thoughts on Alternatives"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-macros-the-good-the-bad-and-the-messy-RjrkaBeEmvfMiNmtmHTaGJ", - :start_at "2020-02-15T11:50:00+05:30", - :end_at "2020-02-15T12:35:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2/feedback", - :title - "Clojure Macros - the good, the bad and the messy", - :is_break false, - :id 41, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-macros-the-good-the-bad-and-the-messy-RjrkaBeEmvfMiNmtmHTaGJ/json", - :url_name_suuid - "clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2", - :url_name - "41-clojure-macros-the-good-the-bad-and-the-messy", - :url - "https://hasgeek.com/inclojure/2020/schedule/clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "RjrkaBeEmvfMiNmtmHTaGJ", - :proposal_id 5258, - :speaker "Aravind Baskaran", - :speaker_bio - {: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.

\n

I have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.

\n

A 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 - "

Clojure as a force multiplier in small companies.

\n

Startups are fast, and Clojure startups are even faster

\n\n

Clojure as a language choice

\n\n

The Clojure mess: Going from small to medium - people

\n\n

Onboarding and training

\n\n

Senior vs Junior talent

\n\n

The Clojure mess: Going from small to medium - language

\n

As a small company, build any way you want, just ship fast.

\n\n

The medium company brings the reality of the common denominator.

\n\n

What can you do to make this better?

\n\n

A large Clojure company: an amazing vision

\n\n

Closing thoughts: Mid-sized companies, Clojure, perspective building

", - :text - "# Clojure as a force multiplier in small companies.\r\n## Startups are fast, and Clojure startups are even faster\r\n- REPL: the best tool for iterative changes in dev and production\r\n - Fast turn-around on bug fixes makes for impressed customers.\r\n- The testing story of Clojure is incredible.\r\n - The ability to redefine functions means that writing complex tests is simpler than in popular languages like C, Java, Python.\r\n- The compatibility story of Clojure is incredible.\r\n - Upgrading Clojure is often just changing the version number to the latest version number\r\n## Clojure as a language choice\r\n- Lisp, imposes great constraints, like immutability. Dynamic typing is great for rapid iteration.\r\n- \"I bet there's a Java library for this.\" > JVM + interop is a super power.\r\n - Packaging as a Jar means deployment is an understood and solved problem.\r\n- Clojure attracts a certain kind of programmer: opinionated, passionate, experienced.\r\n- It is an easy language to learn **for a new comer**. Blank slate can absorb and get started incredibly fast.\r\n# The Clojure mess: Going from small to medium - people\r\n- Going from < 10 Clojure engineers to > 10 Clojure engineers.\r\n## Onboarding and training\r\n- For a Clojure company, focusing on onboarding and training is a full-time job.\r\n- How we went from 6 months to 2 months needed for making a new engineer productive.\r\n - Our mentoring program, what we do in the first month\r\n- Personal opinion: Why being forced to do this is a **good thing**.\r\n## Senior vs Junior talent\r\n- With a good onboarding program in place, hiring and growing junior talent is easy and rewarding.\r\n - Junior devs are the best folk to improve your onboarding programs. \r\n - Optimize for self-driven individuals and listen to their feedback.\r\n- Hiring senior talent is **hard**.\r\n - Why? Challenges and dealing with self-doubt, unlearning.\r\n - Improving onboarding for senior engineers. \r\n# The Clojure mess: Going from small to medium - language\r\n## As a small company, build any way you want, just ship fast.\r\n- Hello macros and DSLs for everything. Sections of code become personal fiefdoms - understandable only to the authors.\r\n - This works fine for small code-bases and small teams, but starts to be a problem as the team grows.\r\n- Clojure is an expressive language, so people have built libraries for everything.\r\n - core.async, core.spec, core.typed, core.logic\r\n - And this is just the core.\r\n## The medium company brings the reality of the common denominator.\r\n- Understanding the code can become a challenge. How to deal with this.\r\n## What can you do to make this better?\r\n- Process around committing code. \r\n- Dealing with and abstracting common patterns. Each person should do these in the **same** way, via the same libraries.\r\n- Using templates of code in projects\r\n - A new project should have a predictable layout, with necessary libraries imported and base code written in.\r\n - Reviewers should know **exactly** what they need to review, and should be able to **safely** ignore the rest.\r\n- Exploring new / complex features of the core language in a deliberate manner\r\n## A large Clojure company: an amazing vision\r\n- What we can do when we have bandwidth to dedicate senior Clojure devs to projects which don't immediately focus on customers / features.\r\n# Closing thoughts: Mid-sized companies, Clojure, perspective building"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/growing-a-clojure-company-from-small-to-mid-sized-iHFKr7bPEaRqGUnp3aJ2RL", - :start_at "2020-02-15T12:35:00+05:30", - :end_at "2020-02-15T13:00:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK/feedback", - :title - "Growing a Clojure Company from small to mid-sized (and hopefully beyond): tips, tricks, habits, practices", - :is_break false, - :id 49, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/growing-a-clojure-company-from-small-to-mid-sized-iHFKr7bPEaRqGUnp3aJ2RL/json", - :url_name_suuid - "growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK", - :url_name - "49-growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices", - :url - "https://hasgeek.com/inclojure/2020/schedule/growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "iHFKr7bPEaRqGUnp3aJ2RL", - :proposal_id 5248, - :speaker "Vedang Manerikar", - :speaker_bio - {: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.

\n

I’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

\n\n

Walkthrough

\n\n

Conlusion

\n", - :text - "Introduction\r\n\r\n- A few words about the kind of devices that will be targeted (ie. Raspberry Pi like nano-computers)\r\n- How using a nano-computer is very different from an Arduino (or any micro-controller)\r\n- How using a managed language for building a device has not always been straightforward, often far from a good idea\r\n- Brief overview of the (bad) Java ecosystem regarding IO (eg. handling GPIO pins for lighting up a LED)\r\n- How Linux is now proposing pretty good standard APIs\r\n\r\nWalkthrough\r\n\r\n- How to simply install Clojure on a Raspberry Pi\r\n- How to simply handle LEDs and buttons live at the REPL by merely importing a library\r\n- How to use protocols such as I2C for talking to sensors\r\n- How to talk to micro-controllers such as an Arduino, and why\r\n- Tips about handling complex IOs with core.async\r\n- How communication with your Clojure-powered connected device is just plain old web development\r\n- Few tips about using MQTT from Clojure, a messaging protocol commonly used in IoT\r\n\r\nConlusion\r\n\r\n- Summary of pros and cons of using Clojure for IoT\r\n- Is there any future in all of this besides hobbying ?"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-of-things-mrGKbXit9jneDVLZmYs3eA", - :start_at "2020-02-15T13:55:00+05:30", - :end_at "2020-02-15T14:40:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ/feedback", - :title "Clojure of Things", - :is_break false, - :id 39, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/clojure-of-things-mrGKbXit9jneDVLZmYs3eA/json", - :url_name_suuid - "clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ", - :url_name "39-clojure-of-things", - :url - "https://hasgeek.com/inclojure/2020/schedule/clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "mrGKbXit9jneDVLZmYs3eA", - :proposal_id 5202, - :speaker "Adam Helinski", - :speaker_bio - {:html - "

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.

", - :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)

\n

Discuss 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)

\n

Talk 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.

\n

Immutable functions are like mathematical functions unlike the methods, procedures of other programming languages.

\n

For an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.

\n

OOPS 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.

\n

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)

\n

Seq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.

\n

Defprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)

\n

Clojure allows mutable state using a few data types -
\nAtoms - Based on underlying Java atomic variables. Explain.

\n

Clojure - Ease of making changes by generating JAVA bytecode and testing.

\n

Conclusion - 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.

\n

Rashmi 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?

", - :text - "What is Wasm and how does it work internally?\r\nWhere can you run Wasm?\r\nHow to run Wasm on top of JVM?\r\nCalling Wasm code from Clojure.\r\nCan this be a bridge between Clojure and Rust?"}, - :timezone "Asia/Kolkata", - :proposal_url - "https://hasgeek.com/inclojure/2020/proposals/wasm-on-clojure-GQLxWZKMUA8GCiWh7TyWW9", - :start_at "2020-02-15T15:55:00+05:30", - :end_at "2020-02-15T16:05:00+05:30", - :feedback_url - "https://hasgeek.com/inclojure/2020/schedule/wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ/feedback", - :title "Wasm on Clojure", - :is_break false, - :id 50, - :json_url - "https://hasgeek.com/inclojure/2020/proposals/wasm-on-clojure-GQLxWZKMUA8GCiWh7TyWW9/json", - :url_name_suuid - "wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ", - :url_name "50-wasm-on-clojure", - :url - "https://hasgeek.com/inclojure/2020/schedule/wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ", - :room - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", - :proposal "GQLxWZKMUA8GCiWh7TyWW9", - :proposal_id 5266, - :speaker "Emmanuel Antony", - :speaker_bio - {:html - "

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.

\n

The 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

\n

Ah, 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.

\n

In 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.

\n

Ideally, 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. :-)

\n

Outline

\n

The spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:

\n", + :text + "**Abstract**\r\n\r\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.\r\n\r\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.\r\n\r\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. :-)\r\n\r\n**Outline**\r\n\r\nThe spiritual successor to a long line of past talks on CIDER, nREPL, Documentation, and other aspects of Clojure tooling such as:\r\n\r\n - [CIDER Distilled: A Common Foundation for Clojure Tooling | Clojure South 2019](https://www.youtube.com/watch?v=EU0ScGwKbYI)\r\n - [nREPL Redux | Dutch Clojure Days 2019](https://www.youtube.com/watch?v=WTzzUSw6iaI)\r\n - [Towards Awesome Clojure Documentation | ClojuTRE 2017](https://www.youtube.com/watch?v=nrpsMB2gYI0)\r\n - [CIDER Inside the Brewery | Clojure/West 2016](https://www.youtube.com/watch?v=8wLwbpCxRf0)\r\n - [The Evolution of the Emacs Tooling for Clojure | Clojure/Conj 2014](https://www.youtube.com/watch?v=4X-1fJm25Ww)"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/the-future-of-clojure-tooling-BbK6Gbk2Ak7HAVgEyNgDsY", + :start_at "2020-02-15T09:25:00+05:30", + :end_at "2020-02-15T10:15:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k/feedback", + :title + "Opening Keynote: The Future of Clojure Tooling", + :is_break false, + :id 43, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/the-future-of-clojure-tooling-BbK6Gbk2Ak7HAVgEyNgDsY/json", + :url_name_suuid + "the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k", + :url_name + "43-the-future-of-clojure-tooling", + :url + "https://hasgeek.com/inclojure/2020/schedule/the-future-of-clojure-tooling-45QekCdxauiFtrjMvsD49k", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "BbK6Gbk2Ak7HAVgEyNgDsY", + :proposal_id 5245, + :speaker "Bozhidar Batsov", + :speaker_bio + {:html + "

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.

", + :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 + "\n

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 + "\n

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.

\n

My 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 + "", + :text + "- Introduction\r\n- The happy cycle of learning Clojure\r\n- Discovering \"macros\" - crazy good, or just crazy?\r\n- Writing your first macro\r\n- Writing your second macro\r\n- Wait, the first one is not working?\r\n- Making sense of the \"intern\"als\r\n- Complicating things, and making it complicated\r\n- Wait, do I really need a macro?\r\n- Conclusion - Thoughts on Alternatives"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-macros-the-good-the-bad-and-the-messy-RjrkaBeEmvfMiNmtmHTaGJ", + :start_at "2020-02-15T11:50:00+05:30", + :end_at "2020-02-15T12:35:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2/feedback", + :title + "Clojure Macros - the good, the bad and the messy", + :is_break false, + :id 41, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-macros-the-good-the-bad-and-the-messy-RjrkaBeEmvfMiNmtmHTaGJ/json", + :url_name_suuid + "clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2", + :url_name + "41-clojure-macros-the-good-the-bad-and-the-messy", + :url + "https://hasgeek.com/inclojure/2020/schedule/clojure-macros-the-good-the-bad-and-the-messy-bdBZK6j9tFLVjBthHXZSF2", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "RjrkaBeEmvfMiNmtmHTaGJ", + :proposal_id 5258, + :speaker "Aravind Baskaran", + :speaker_bio + {: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.

\n

I have done a few talks behind close doors (nothing that has an online presence), conducting workshops to introduce new tech to college students/graduates.

\n

A 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 + "

Clojure as a force multiplier in small companies.

\n

Startups are fast, and Clojure startups are even faster

\n\n

Clojure as a language choice

\n\n

The Clojure mess: Going from small to medium - people

\n\n

Onboarding and training

\n\n

Senior vs Junior talent

\n\n

The Clojure mess: Going from small to medium - language

\n

As a small company, build any way you want, just ship fast.

\n\n

The medium company brings the reality of the common denominator.

\n\n

What can you do to make this better?

\n\n

A large Clojure company: an amazing vision

\n\n

Closing thoughts: Mid-sized companies, Clojure, perspective building

", + :text + "# Clojure as a force multiplier in small companies.\r\n## Startups are fast, and Clojure startups are even faster\r\n- REPL: the best tool for iterative changes in dev and production\r\n - Fast turn-around on bug fixes makes for impressed customers.\r\n- The testing story of Clojure is incredible.\r\n - The ability to redefine functions means that writing complex tests is simpler than in popular languages like C, Java, Python.\r\n- The compatibility story of Clojure is incredible.\r\n - Upgrading Clojure is often just changing the version number to the latest version number\r\n## Clojure as a language choice\r\n- Lisp, imposes great constraints, like immutability. Dynamic typing is great for rapid iteration.\r\n- \"I bet there's a Java library for this.\" > JVM + interop is a super power.\r\n - Packaging as a Jar means deployment is an understood and solved problem.\r\n- Clojure attracts a certain kind of programmer: opinionated, passionate, experienced.\r\n- It is an easy language to learn **for a new comer**. Blank slate can absorb and get started incredibly fast.\r\n# The Clojure mess: Going from small to medium - people\r\n- Going from < 10 Clojure engineers to > 10 Clojure engineers.\r\n## Onboarding and training\r\n- For a Clojure company, focusing on onboarding and training is a full-time job.\r\n- How we went from 6 months to 2 months needed for making a new engineer productive.\r\n - Our mentoring program, what we do in the first month\r\n- Personal opinion: Why being forced to do this is a **good thing**.\r\n## Senior vs Junior talent\r\n- With a good onboarding program in place, hiring and growing junior talent is easy and rewarding.\r\n - Junior devs are the best folk to improve your onboarding programs. \r\n - Optimize for self-driven individuals and listen to their feedback.\r\n- Hiring senior talent is **hard**.\r\n - Why? Challenges and dealing with self-doubt, unlearning.\r\n - Improving onboarding for senior engineers. \r\n# The Clojure mess: Going from small to medium - language\r\n## As a small company, build any way you want, just ship fast.\r\n- Hello macros and DSLs for everything. Sections of code become personal fiefdoms - understandable only to the authors.\r\n - This works fine for small code-bases and small teams, but starts to be a problem as the team grows.\r\n- Clojure is an expressive language, so people have built libraries for everything.\r\n - core.async, core.spec, core.typed, core.logic\r\n - And this is just the core.\r\n## The medium company brings the reality of the common denominator.\r\n- Understanding the code can become a challenge. How to deal with this.\r\n## What can you do to make this better?\r\n- Process around committing code. \r\n- Dealing with and abstracting common patterns. Each person should do these in the **same** way, via the same libraries.\r\n- Using templates of code in projects\r\n - A new project should have a predictable layout, with necessary libraries imported and base code written in.\r\n - Reviewers should know **exactly** what they need to review, and should be able to **safely** ignore the rest.\r\n- Exploring new / complex features of the core language in a deliberate manner\r\n## A large Clojure company: an amazing vision\r\n- What we can do when we have bandwidth to dedicate senior Clojure devs to projects which don't immediately focus on customers / features.\r\n# Closing thoughts: Mid-sized companies, Clojure, perspective building"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/growing-a-clojure-company-from-small-to-mid-sized-iHFKr7bPEaRqGUnp3aJ2RL", + :start_at "2020-02-15T12:35:00+05:30", + :end_at "2020-02-15T13:00:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK/feedback", + :title + "Growing a Clojure Company from small to mid-sized (and hopefully beyond): tips, tricks, habits, practices", + :is_break false, + :id 49, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/growing-a-clojure-company-from-small-to-mid-sized-iHFKr7bPEaRqGUnp3aJ2RL/json", + :url_name_suuid + "growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK", + :url_name + "49-growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices", + :url + "https://hasgeek.com/inclojure/2020/schedule/growing-a-clojure-company-from-small-to-mid-sized-and-hopefully-beyond-tips-tricks-habits-practices-9rdNTUwnnPZqT5FhSMwaLK", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "iHFKr7bPEaRqGUnp3aJ2RL", + :proposal_id 5248, + :speaker "Vedang Manerikar", + :speaker_bio + {: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.

\n

I’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

\n\n

Walkthrough

\n\n

Conlusion

\n", + :text + "Introduction\r\n\r\n- A few words about the kind of devices that will be targeted (ie. Raspberry Pi like nano-computers)\r\n- How using a nano-computer is very different from an Arduino (or any micro-controller)\r\n- How using a managed language for building a device has not always been straightforward, often far from a good idea\r\n- Brief overview of the (bad) Java ecosystem regarding IO (eg. handling GPIO pins for lighting up a LED)\r\n- How Linux is now proposing pretty good standard APIs\r\n\r\nWalkthrough\r\n\r\n- How to simply install Clojure on a Raspberry Pi\r\n- How to simply handle LEDs and buttons live at the REPL by merely importing a library\r\n- How to use protocols such as I2C for talking to sensors\r\n- How to talk to micro-controllers such as an Arduino, and why\r\n- Tips about handling complex IOs with core.async\r\n- How communication with your Clojure-powered connected device is just plain old web development\r\n- Few tips about using MQTT from Clojure, a messaging protocol commonly used in IoT\r\n\r\nConlusion\r\n\r\n- Summary of pros and cons of using Clojure for IoT\r\n- Is there any future in all of this besides hobbying ?"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-of-things-mrGKbXit9jneDVLZmYs3eA", + :start_at "2020-02-15T13:55:00+05:30", + :end_at "2020-02-15T14:40:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ/feedback", + :title "Clojure of Things", + :is_break false, + :id 39, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/clojure-of-things-mrGKbXit9jneDVLZmYs3eA/json", + :url_name_suuid + "clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ", + :url_name "39-clojure-of-things", + :url + "https://hasgeek.com/inclojure/2020/schedule/clojure-of-things-Y3GSxLJLibSktHWKg4wYvQ", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "mrGKbXit9jneDVLZmYs3eA", + :proposal_id 5202, + :speaker "Adam Helinski", + :speaker_bio + {:html + "

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.

", + :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)

\n

Discuss 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)

\n

Talk 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.

\n

Immutable functions are like mathematical functions unlike the methods, procedures of other programming languages.

\n

For an OOPS programmer lack of classes meaning lack of structured code - namespaces in Clojure allow for structuring code.

\n

OOPS 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.

\n

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)

\n

Seq vs Iterator - Seq follows the interface pattern, mostly all Clojure collections provide the ISeq interface. Stateless compared to Java.

\n

Defprotocol, defmethod - Underlying OOPs polymorphism concept, how the lisp paradigm makes it immutable. (Give examples of Java and Clojure)

\n

Clojure allows mutable state using a few data types -
\nAtoms - Based on underlying Java atomic variables. Explain.

\n

Clojure - Ease of making changes by generating JAVA bytecode and testing.

\n

Conclusion - 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.

\n

Rashmi 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?

", + :text + "What is Wasm and how does it work internally?\r\nWhere can you run Wasm?\r\nHow to run Wasm on top of JVM?\r\nCalling Wasm code from Clojure.\r\nCan this be a bridge between Clojure and Rust?"}, + :timezone "Asia/Kolkata", + :proposal_url + "https://hasgeek.com/inclojure/2020/proposals/wasm-on-clojure-GQLxWZKMUA8GCiWh7TyWW9", + :start_at "2020-02-15T15:55:00+05:30", + :end_at "2020-02-15T16:05:00+05:30", + :feedback_url + "https://hasgeek.com/inclojure/2020/schedule/wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ/feedback", + :title "Wasm on Clojure", + :is_break false, + :id 50, + :json_url + "https://hasgeek.com/inclojure/2020/proposals/wasm-on-clojure-GQLxWZKMUA8GCiWh7TyWW9/json", + :url_name_suuid + "wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ", + :url_name "50-wasm-on-clojure", + :url + "https://hasgeek.com/inclojure/2020/schedule/wasm-on-clojure-zQ9wL9go69kyFxNeh5xczJ", + :room + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel", + :proposal "GQLxWZKMUA8GCiWh7TyWW9", + :proposal_id 5266, + :speaker "Emmanuel Antony", + :speaker_bio + {:html + "

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.

\n

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!!!

", + :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", + :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!

", + :text + "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. \r\nMostly programmed in python/django and C++ and now clojure!"}, + :room_scoped_name + "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], + :slot "16:25"} + {:sessions + [{:description + {:html + "
    \n
  1. Introduce Light Table.
    \n - Concept, Ideas, Approach
  2. \n
  3. Clojure/Script ecosystem at that state.
  4. \n
  5. Light Table’s awesome features:
    \n - BOT
    \n - Inline Eval, etc.
  6. \n
  7. Where did it get wrong?
  8. \n
  9. A new dawn, reviving Light Table.
  10. \n
  11. Learning from new ideas.
  12. \n
  13. Embracing already provided Clojure Toolings.
  14. \n
  15. Demo of new Light Table based on new architectures embracing old foundations.
  16. \n
", + :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", + :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 - "

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.

\n

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!

", - :text - "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. \r\nMostly programmed in python/django and C++ and now clojure!"}, - :room_scoped_name - "novotel-pune-nagar-road-crimson-hall/crimson-hall-day-of-talks-at-novotel-hotel"}], - :slot "16:25"} - {:sessions - [{:description + "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 - "
    \n
  1. Introduce Light Table.
    \n - Concept, Ideas, Approach
  2. \n
  3. Clojure/Script ecosystem at that state.
  4. \n
  5. Light Table’s awesome features:
    \n - BOT
    \n - Inline Eval, etc.
  6. \n
  7. Where did it get wrong?
  8. \n
  9. A new dawn, reviving Light Table.
  10. \n
  11. Learning from new ideas.
  12. \n
  13. Embracing already provided Clojure Toolings.
  14. \n
  15. Demo of new Light Table based on new architectures embracing old foundations.
  16. \n
", + "

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]])