<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.9.5">Jekyll</generator><link href="https://ocamlretreat.org/feed.xml" rel="self" type="application/atom+xml" /><link href="https://ocamlretreat.org/" rel="alternate" type="text/html" /><updated>2024-04-04T10:09:41+00:00</updated><id>https://ocamlretreat.org/feed.xml</id><title type="html">OCaml Retreat</title><subtitle></subtitle><entry><title type="html">Experiences from the first OCaml retreat</title><link href="https://ocamlretreat.org/2024/03/24/retreat-experience.html" rel="alternate" type="text/html" title="Experiences from the first OCaml retreat" /><published>2024-03-24T05:43:42+00:00</published><updated>2024-03-24T05:43:42+00:00</updated><id>https://ocamlretreat.org/2024/03/24/retreat-experience</id><content type="html" xml:base="https://ocamlretreat.org/2024/03/24/retreat-experience.html"><![CDATA[<p><img src="/assets/retreat_collage.jpg" /></p>

<h2 id="prometheansacrifice">prometheansacrifice</h2>
<p>Incredibly grateful for the retreat. Enjoyed meeting KC and all the other smart
folks. Learnt a ton about compiler internals. Loved the late night discussions
on Functional Programming, OCaml tooling. Looking forward to continue hacking on
the compiler, markdown generation of odocs, using dune to build the compiler’s
sourcetree.</p>

<h2 id="kaushik-hatti">Kaushik Hatti</h2>

<p>Imagine a bug crawling near you. You decide to squish it with your thumb. When
you lift your thumb, you realize that the bug is still alive. You show pity on
it and decide not to squish again. The bug is humbled by your strength but
decide to move forward anyway. It slowly yet steadily starts to crawl again.</p>

<p>I am the bug humbled by the awesome retreat!</p>

<p>My intention to come to the retreat was to know “What I didn’t know that I
didn’t know”. Now that I have known what I didn’t know, I will start working on
it. As a starter, I enjoyed toying with “Joy” using OCaml to draw. Now, I am
trying to understand MirageOS and its unique capabilities. This, I feel is a new
beginning to both me and our organization. Hoping to meet you again in the
following retreat.</p>

<h2 id="shakthi">Shakthi</h2>

<p>At the retreat, I had a wonderful opportunity to interact with interested OCaml
developers. While I continued to work on OCaml.org issues, I also spent time on
MirageOS projects.</p>

<p>The steps to build the <a href="https://hackmd.io/vemFYWJwRnibGz8mjmq-pA">mirage-www HTML
documentation</a> pages for the MirageOS
project and run the same on a solo5 unikernel on an x86_64 Ubuntu 22.04 LTS
system have been tested and documented. I gave a brief presentation on the
MirageOS library operating system, and also played the <a href="https://watch.ocaml.org/w/1RhQXW5NNqRtdxXgi12pD9">demo video for Raspberry
Pi</a>.</p>

<p>The CI build failures for the MirageOS packages have been reproduced on Alpine
3.19 Docker images, and possible patches for some of the packages have been
documented at <a href="https://hackmd.io/_0QAwb0rS72wDx52hkegPA">Fix MirageOS Libraries on
CI</a>.</p>

<p>The changes required to build OCaml documentation from webman/<compiler-version>
and webman/api folders in the OCaml sources have been made, and the
corresponding [ocaml/ocaml/12976](https://github.com/ocaml/ocaml/pull/12976) PR
was updated.</compiler-version></p>

<p>Although we were on a limited Internet connection, I managed to stream twice and
covered the “Basic Data Types and Pattern Matching” documentation from the
<a href="https://ocaml.org/docs/basic-data-types">Basic Data Types</a> OCaml.org site. The
video recordings of <a href="https://www.youtube.com/watch?v=ky7dmhjVe4E">Part I</a> and
<a href="https://www.youtube.com/watch?v=ehU9u4-yAic">Part II</a> are available.</p>

<p>See you in the next retreat!</p>

<h2 id="shubham">Shubham</h2>

<h3 id="motive">Motive</h3>

<p>From the Hackacamel list I picked up working on the cdf plotter using TUI.
Now I have never developed TUIs or GUIs so I thought this would be the
perfect thing to do.</p>

<p>The initial hurdle was choosing the library, I wanted to try use OCaml 5 so
I chose Minttea which is TUI framework inspired by Bubble Tea implemented in
Golang and uses the The elm architecture.</p>

<h3 id="biggest-hurdles">Biggest Hurdles</h3>

<p>Learning Minttea, Esy and Fmt.</p>

<p>Since Minttea is a nascent framework I knew it would be a little difficut to
learn but the examples provided helped me get to a working mvp quickly although
I added some of my own hurdles just to learn stuff. This was not my motive but I
like shock therapy.</p>

<p>And I have tinkering with esy for a while and I thought let’s try and build a
esy-dune workflow to build my projects.</p>

<p>And it was simple to build and play with things. I realised I don’t need to have
a <code class="language-plaintext highlighter-rouge">.merlin</code> file if I am using dune.  Dune has a nice way of getting the LSP up
and running even with esy. One only needs to specify the dependencies and dev
dependencies : Tools that one plans to use like ocaml-lsp-server, ocamlformat
etc.</p>

<p>And one more thing : just use <code class="language-plaintext highlighter-rouge">esy</code> prefix to build stuff like : <code class="language-plaintext highlighter-rouge">esy dune build
./bin/main.exe</code> to build and <code class="language-plaintext highlighter-rouge">esy dune exec ./bin/main.exe</code></p>

<p>I was also scared with the Fmt library I have never been able to use the
<code class="language-plaintext highlighter-rouge">Format</code> library because a lot of things don’t make sense and I think this blurb
wouldn’t be enough for explaining that but I realised <code class="language-plaintext highlighter-rouge">Fmt</code> is a nice way to use
<code class="language-plaintext highlighter-rouge">Format</code> because there are ways to sanity check using
<code class="language-plaintext highlighter-rouge">Fmt.Dump.&lt;data-structure&gt;</code>. Later I got to know about <code class="language-plaintext highlighter-rouge">pp</code> pretty printer.
Which is something that I didn’t know and I am thankful for Thibbaut for that.</p>

<h3 id="was-i-able-to-achieve-my-goal">Was I able to achieve my goal?</h3>

<p>Nope, it was hard for me to get a dot printed on the first day because I
realised a lot of special characters weren’t supported in my outdated version of
alacritty.</p>

<p>And then the second day I was able to get the cartesian axis but I couldn’t go
further in day 3 and day 4.</p>

<p>Mostly because I was kind of having a hard time able to resize the axis for
different sizes of terminals and also is there a better way to do it.</p>

<h3 id="what-does-it-look-like-now">What does it look like now</h3>
<p><a href="https://ibb.co/VmR6m3w">This</a> the repo is
<a href="https://github.com/shubhamkumar13/cdf-plotter">here</a>. But I think even it looks
like nothing (because it is nothing) I am happy that I started working on this.</p>

<h3 id="what-next">What next?</h3>

<p>Well for one, if you clone this repo there are things that might not work
because I am trying to parse the output olly generates.  My plan is to get the
repo useful for plotting multiple benchmarks on TUI.</p>

<p>And I am seriously considering working on more GUIs and TUIs because it was fun.</p>

<p>I am hoping to it finish this weekend. At least plotting a static graph.
Resizing seems like a non-trivial problem but I am sure the TUI communities
might have solved it.</p>

<h3 id="thanks">Thanks</h3>

<p>I want to thank KC, Sudha and Ganesh for organizing OCamlretreat, it was a blast
I wish to come again next time.</p>

<h2 id="karthik-ravikanti">Karthik Ravikanti</h2>

<p>I found the retreat when I was at the bottom of a pit, motivationally. I’ve been
trying to get out of a multi year rut and it seemed like something that could do
the trick.</p>

<p>While my recovery is still a work in progress, I did walk away with a lot of
value from the short retreat.</p>

<p>Coming from a Haskell and Rust background, I struggled to see the additional
value I’d get from OCaml, so this was a perfect venue for me to explore it.
Getting the facts straight from the source was very valuable. Seeing the faith
and energy everybody put into this language was very inspiring.</p>

<p>Other than that, connecting to other functional programmers/learners in person
after a long time felt amazing. Also great was being able to interact with
people from my own culture with similar taste. The atmosphere at the retreat was
very collegiate and I came out of my (recent) shell and felt like I could be
useful again.</p>

<p>Going forward, I hope to contribute to the community in the form of meetups in
Singapore and future collaboration with the peers I met at the retreat.</p>

<p>While I mostly spent the time going through tutorials and briefly teaching
Haskell (gasp!), I’ll be forever grateful for the very welcoming and generous
disposition everyone displayed. Almost every conversation I had was either very
therapeutic, encouraging, engaging or inspiring.</p>

<p>I can’t wait for the next one.</p>

<h2 id="kc-sivaramakrishnan">KC Sivaramakrishnan</h2>

<p>My goal at the retreat was to spend some quality time hacking on a long list of
things including the OCaml compiler (to break a long hiaitus of no OCaml
compiler contributions), trying to port my CS3100 lecture notes to purely
client-side pages using js_of_ocaml / wasm_of_ocaml, spend time playing around
with LLMs and OCaml. As with any ambitious plan, I got nowhere close to working
on everything that I had planned :-) But I did manage to break my OCaml compiler
contribution rut by reviewing a couple of PRs and rebasing the
<a href="https://github.com/ocaml/ocaml/pull/12309">PR</a> that adds syntax support for
effect handlers in OCaml. Generally, it was great to be surrounded by people who
were keen to learn about OCaml and its ecosystem.</p>

<h2 id="c-r-anish">C R Anish</h2>

<p>I was very happy when I got the email offering a spot to attend the OCaml
retreat at Auroville as I was not sure if I was qualified for it.</p>

<p>Being an OCaml newbie, I was not sure what to work on. The HackaCamel list of
ideas to work on during the retreat (and beyond) helped me. I choose to go
through the OCaml5 tutorial, Parallel Programming in multicore OCaml tutorial
and OCaml Effects tutorial.</p>

<p>There was high energy level in the guest house. I was very productive and learnt
much more OCaml in those four days than past few weeks. I could complete the
first two tutorials and half of the Effects tutorial.</p>

<p>Interaction with KC helped me to understand Effects better and faster.</p>

<p>I consider myself an introvert and was apprehensive about spending four days
with strangers. But the moment I stepped into the guest house, seeing the
welcoming attitude of all, I knew I will enjoy the company. All were very
friendly and approchable.</p>

<p>Thanks to Ganesh and Sudha for making excellant arrangements.</p>

<p>I wish I knew more OCaml to ask questions to the various experts who were
present. Hope to do it in the next retreat.</p>

<p>My plan is to learn OCaml and contribute to its opensource projects this year.
The retreat has provided enough motivation and ideas for this.</p>

<p>Thanks to the organisers for allowing my wife to work on her official project
(not related to OCaml). She too had a great time.</p>

<h2 id="kaustubh">Kaustubh</h2>

<p>I went to the retreat not knowing what to expect. All I had thought of was that
there would be no distractions and this would be a good week to focus on getting
something done. That was there, but the retreat was so much more than that. All
the informal interactions - asking for help, discussing each other’s work,
talking about X interesting thing - were instead the highlight for me.  There
was so much to learn from each other and with each other.</p>

<p>Being at a job where I don’t write OCaml full-time, it was pleasant to have a
week where I did not have any distractions and could easily ask for help when I
needed it.</p>

<p>It was wonderful being in such company. I am glad I signed up.</p>

<h2 id="puneeth">Puneeth</h2>

<p>I really enjoyed being at the retreat with people who do cool things everyday,
and are eager to learn and teach OCaml and FP.</p>

<p>It gave me a chance to explore corners of the OCaml world that I’m usually not
in – I really enjoyed deep diving into Effects and Effect handlers into OCaml,
and came out have a bunch of follow-up reading and coding to do. I spent a bunch
of time digging into things like OCaml’s Format and the Fmt library too, trying
to understand the smart line breaks support.</p>

<p>I made a couple of small contributions to OCaml Joy while helping Ganesh make
his first contribution. Ganesh and I made a small contribution to Okra, as well,
along with some personal workflow improvements for Ganesh by incorporating local
okra runs into it.</p>

<p>I’ve an incomplete attempt at creating a template repo for YOCaml, along with a
nice theme, which I’ll probably “finish” at some point. My experiments with
<a href="https://github.com/logseq/mldoc">mldoc</a> as a parser for org-mode files didn’t
go very well, and paused on them.</p>

<p>It was a really nice and friendly learning experience; I would sign-up again!</p>

<h2 id="ganesh">Ganesh</h2>

<p>The OCaml retreat at Auroville was a memorable one, especially for me. I made my
first contribution to OCaml during this retreat.</p>

<p>I came to this retreat to learn how Okra works. Since I’m working on extracting
the raw data from the engineers’ weekly reports, I wanted to understand how the
tool(Okra) works, which could be helpful for me later.</p>

<p>I was new to coding. So, Puneeth suggested starting with OCaml Joy. Thanks to
Sudha and Kaustubh, I started learning OCaml Joy. It was fun playing with Joy.
Later, I created a new <a href="https://github.com/Sudha247/ocaml-joy/pull/124">PR</a> with
the help of Puneeth, Sudha and Kaustubh to draw a smile emoji using Joy.</p>

<p>I also worked on a couple of issues on Okra with Puneeth. Puneeth helped me
understand how the code works. I shadowed his work while closing the issues on
Okra. It was nice working with Puneeth.</p>

<p>It was nice to learn OCaml during this retreat. I was pleased that the retreat
went very well. Thanks to Sudha for taking the initiative to organise the
accommodation, stay, food and the architecture tour that we attended.</p>

<p>In a time when it is challenging to meet your peers regularly, it was lovely to
spend time together for a week and learn new things.</p>

<h2 id="sudha">Sudha</h2>

<p>I had a wonderful time at the OCaml retreat! I wanted to use the time at the
retreat to do some stuff on <a href="https://github.com/Sudha247/ocaml-joy">joy</a>. I
ended up reviewing some PRs, and we got many new users and contributors. With
Kaustubh, we also played around a bit with mandelbrot simulations using joy.</p>

<p>I wanted to create a wasm backend for joy, similarly to the js_of_ocaml backend.
I initially had some trouble installing wasm_of_ocaml on my machine, and later
found workarounds to it and fixed it in the upstream repository too. It’d still
be nice to experiment with joy on wasm.</p>

<p>I also ended up writing a Dream version of <a href="https://web-frameworks-benchmark.netlify.app/result">Web Frameworks
Benchmarks</a> (that I need to
upstream!).</p>

<p>Apart from all the hacking, it was great to be amongst a bunch of OCaml and FP
enthusiasts and learn from them. Looking forward to more OCaml retreats in the
future!</p>]]></content><author><name></name></author><summary type="html"><![CDATA[]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://ocamlretreat.org/assets/retreat_collage.jpg" /><media:content medium="image" url="https://ocamlretreat.org/assets/retreat_collage.jpg" xmlns:media="http://search.yahoo.com/mrss/" /></entry><entry><title type="html">The first OCaml retreat</title><link href="https://ocamlretreat.org/2024/03/06/first-ocaml-retreat.html" rel="alternate" type="text/html" title="The first OCaml retreat" /><published>2024-03-06T05:43:42+00:00</published><updated>2024-03-06T05:43:42+00:00</updated><id>https://ocamlretreat.org/2024/03/06/first-ocaml-retreat</id><content type="html" xml:base="https://ocamlretreat.org/2024/03/06/first-ocaml-retreat.html"><![CDATA[<p><img src="/assets/OCamlMatrimandir.png" alt="OCamlMatrimandir" style="width: 240px; float: right; padding-right: 0.5rem; padding-left: 0.5rem; padding-top: 0.4rem;" /> 
Welcome to the first OCaml Retreat at <a href="https://auroville.org/">Auroville</a>,
India.</p>

<p>This is a week-long hacking retreat, organised by
<a href="https://tarides.com/">Tarides</a>, and inspired by the <a href="https://retreat.mirage.io/">Mirage
Retreats</a>. During the event, we hope to work on a
variety of OCaml projects, including but not limited to the compiler,
concurrency libraries, platform tooling, and benchmarking. It’s perfectly fine
if you’d like to work on your own project.</p>

<p><a href="https://github.com/tarides/HackaCamel">HackaCamel</a> is a collection of ideas,
small and large, to work on during the retreat and beyond.</p>

<h2 id="venue">Venue</h2>

<p><a href="https://www.holychichomes.com/auroville">La Vie en Rose, Auroville</a>. Google map
pin:
<a href="https://maps.app.goo.gl/SjnuwuMD8qTGsFp6A">https://maps.app.goo.gl/SjnuwuMD8qTGsFp6A</a>.</p>

<h2 id="dates">Dates</h2>

<p>March 10th 2024 to March 15th 2024</p>

<h2 id="target-audience">Target audience</h2>

<p>This retreat is designed for those interested in working on OCaml projects.
While OCaml experience is not strictly necessary, familiarity with coding in
OCaml is beneficial. We recommend reviewing the <a href="https://github.com/kayceesrk/cs3100_m20/blob/gh-pages/README.md">CS3100 course
assignments</a>
beforehand.</p>

<h2 id="registration">Registration</h2>

<p>Registrations are closed for the current retreat. Watch out this space for
future retreats.</p>

<h2 id="for-attendees">For attendees</h2>

<ul>
  <li><a href="https://calendar.google.com/calendar/u/0/embed?src=c_03b59115611cc71702e3547c9442062d42f2cfd9562b9230d6336a64dc9f83ce@group.calendar.google.com&amp;ctz=Asia/Kolkata">Google Calendar with the schedule</a>.</li>
  <li><a href="https://github.com/tarides/HackaCamel">HackaCamel</a> hacking ideas.</li>
  <li><a href="https://ocamlretreatauroville.slack.com/">Event Slack</a>.</li>
</ul>]]></content><author><name></name></author><summary type="html"><![CDATA[Welcome to the first OCaml Retreat at Auroville, India.]]></summary><media:thumbnail xmlns:media="http://search.yahoo.com/mrss/" url="https://ocamlretreat.org/assets/OCamlMatrimandir.png" /><media:content medium="image" url="https://ocamlretreat.org/assets/OCamlMatrimandir.png" xmlns:media="http://search.yahoo.com/mrss/" /></entry></feed>