[cwn] Attn: Development Editor, Latest OCaml Weekly News
Alan Schmitt
alan.schmitt at polytechnique.org
Tue Mar 7 01:02:33 PST 2023
Hello
Here is the latest OCaml Weekly News, for the week of February 28 to
March 07, 2023.
Table of Contents
─────────────────
Watch.ocaml.org: out of beta, and a call for new videos
Companies using OCaml–staffing/recruitment/training?
Dune 3.7.0’s native support for watch mode on Windows (blog post)
Introduction to Eio (video)
MirageOS retreat in Marrakech May 1st - 7th
Liquidsoap 2.1.4 and rolling release 2.2.x are out!
Users of opam-repo: what sort of change tracking would you like?
VS Code Expect and Inline Tests extension
`ppx_minidebug' automates the printf in printf-style debugging
VS Code testing extension for Alcotest and inline Alcotest PPX 0.1.0 - initial release
Old CWN
Watch.ocaml.org: out of beta, and a call for new videos
═══════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/watch-ocaml-org-out-of-beta-and-a-call-for-new-videos/11561/1>
Anil Madhavapeddy announced
───────────────────────────
The *<https://watch.ocaml.org>* video site is now promoted to a
production quality ocaml.org site, as [discussed] at the start of the
year (doesn’t that seem like a long time ago?) For those interested,
this means that the software stack is now part of the
deploy.ci.ocaml.org pipeline (see [ocaml/infrastructure#23] and the
[infra at ocaml blogpost].)
Now that this is done, it’s a good time to put a call out to any other
interested OCaml meetups, workshops or conferences that also want to
host OCaml related content. See the [watch/about] page for more
information about how that works. If you do have a stream of videos
(historical, or recent, both are good), then we can mirror it there or
host it directly. As a reminder, anyone on a ActivityPub-compliant
service (such as Mastodon) can follow channels hosted on the service
and leave comments.
Thanks to @mtelvers @patricoferris @cuihtlauac @sabine for loads of
ocaml.org updates as well to make this possible! That was lots of
work, but <https://ocaml.org/community> now links to the site and each
workshop page should be up-to-date back to 2012.
[discussed]
<https://discuss.ocaml.org/t/ocaml-org-recapping-2022-and-queries-on-the-fediverse/11099>
[ocaml/infrastructure#23]
<https://github.com/ocaml/infrastructure/issues/23>
[infra at ocaml blogpost]
<http://infra.ocaml.org/2023/02/27/watch-ocaml-org.html>
[watch/about] <https://watch.ocaml.org/about/instance#terms>
Companies using OCaml–staffing/recruitment/training?
════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/companies-using-ocaml-staffing-recruitment-training/11562/2>
Yawar Amin asked and Nicolas Ojeda Bar replied
──────────────────────────────────────────────
I am curious about something. There are many companies
using OCaml, some of them very successful and famous.
Others more obscure. They all obviously have one thing in
common–they need to employ developers to maintain their
OCaml codebase.
I can tell you a little bit from my experience at LexiFi. (This is
strictly my personal opinion, and in no way it should be understood as
an official statement of any kind.)
My question is, how have they been finding developers for
a niche language?
Most programmers hired at LexiFi already know some (or a lot) of
OCaml. Often, they have a two-year Master program in CS (called “M2”
in France) or an Engineering degree under their belt, where they learn
OCaml, but this is not a requirement. Typically, we advertise the
position in the usual places, and candidates send in their
applications. A few remarks:
• For the last couple of years, hiring was noticeably tight. My
feeling is that this was in large part due to certain
blockchain-backed companies in France siphoning a disproportionally
large number of OCaml programmers off the market. I say “was”
because since the recent bitcoin downturn, we have seen a noticeable
increase in the number of good candidates, and hiring has loosened
up again.
• We are a small team, so don’t need to hire more than one or two
people at a time. I am not sure what the situation would look like
if we wished to hire tens of programmers at one time.
Also, our experience may be a bit particular because we are based in
France, where (I guess) the supply of OCaml programmers is higher than
average.
I’ve heard that Jane Street has developed a 2-week crash
course and many internal tools, idioms, and best
practices.
We haven’t had to onboard many programmers who did not know OCaml
before, so we don’t have a dedicated training program. We try to
document workflows, but the truth is that a lot of the institutional
knowledge about the code is not written down anywhere, and new hires
learn it by talking to people around them. This probably works as long
as your team is relatively small, but will not scale beyond a certain
point, which is why more structured onboarding processes are needed in
larger companies.
As another data point, our “quant” team, which consists entirely of
quantitative programmers which typically arrive to LexiFi with little
or no OCaml experience, developed a “crash course in OCaml”. New
arrivals typically go through it to get up to speed so that they can
start contributing to the codebase. On the other hand, quant
programmers have very specific skills and don’t typically “roam” over
the whole codebase, so it is easier to tune their training for the
kind of tasks they will be doing.
I’ve also heard of some companies which had to move away
from OCaml (or Reason/ReScript) codebases due to the
usually cited reason–lack of support.
This would be unthinkable at LexiFi; we use OCaml for everything, are
are fully invested in it. But I can see how this could be a problem in
a company where OCaml knowledge is the reserve of a small number of
people.
How are companies in general convincing good developers to
join, learn OCaml, stay on in the job instead of flying to
greener pastures, and building up engineering continuity
with training/documentation so that their whole OCaml
codebase is not at the mercy of one or two engineers
deciding to stay or leave?
I can only hypothesize about my colleagues, but my personal feeling is
that I’m quite happy to be able to make a living programming in OCaml,
so this acts as an incentive to remain, rather than to leave. More
generally, for whatever reason, the turnover at LexiFi is extremely
low, so we haven’t had to deal with issues stemming from high churn
rate. I think it would definitively be a problem if this were to
happen.
Dune 3.7.0’s native support for watch mode on Windows (blog post)
═════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/dune-3-7-0s-native-support-for-watch-mode-on-windows-blog-post/11566/1>
Nicolas Ojeda Bar announced
───────────────────────────
The [recently released] Dune 3.7.0 includes native support for _watch
mode_ on Windows. This feature was implemented by a student, Uma
Kothuri of the US, who interned at LexiFi last year for this project.
To mark the [upstreaming] of the feature, we wrote a brief technical
note about it, which you can find at
<https://www.lexifi.com/blog/ocaml/dune-watch-mode-windows/>. Don’t
hesitate to take a look if you would like to get an overview of how
the feature is implemented.
[recently released] <https://discuss.ocaml.org/t/ann-dune-3-7-0/11474>
[upstreaming] <https://github.com/ocaml/dune/pull/7010>
Introduction to Eio (video)
═══════════════════════════
Archive:
<https://discuss.ocaml.org/t/introduction-to-eio-video/11571/1>
Thomas Leonard announced
────────────────────────
I gave an introduction to Eio talk at Tarides last week, and
afterwards we thought it might be worth sharing it more widely. I
covered more about how Eio compares with Lwt than the README does, and
the video includes a short example at the start of me converting some
existing code to use effects:
<https://watch.ocaml.org/w/02a7accc-2a2c-44d5-889e-d75e1489946e>
MirageOS retreat in Marrakech May 1st - 7th
═══════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/mirageos-retreat-in-marrakech-may-1st-7th/11572/1>
Hannes Mehnert announced
────────────────────────
Dear (aspiring) [MirageOS] hacker,
it is my please to announce that there will be the 12th MirageOS
retreat in early October in Marrakech, Morocco. Please find more
details, including writeups of earlier retreats at
<https://retreat.mirage.io>.
Everyone is welcome, be kind to each other. There won’t be much
Internet connectivity – but there’s plenty of sun, discussions,
impromptu talks, and a local network mainly constructed by MirageOS
unikernels.
If you have questions, don’t hesitate to ask them here in this thread,
or contact me directly via eMail “my first name” at mehnert DOT org
[MirageOS] <https://mirage.io>
Liquidsoap 2.1.4 and rolling release 2.2.x are out!
═══════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/liquidsoap-2-1-4-and-rolling-release-2-2-x-are-out/11576/1>
Romain Beauxis announced
────────────────────────
Hi all!
Liquidsoap `2.1.4' is out:
<https://github.com/savonet/liquidsoap/releases/tag/v2.1.4> ! 🎉
Liquidsoap Rolling Release `2.2.x' is now available:
<https://github.com/savonet/liquidsoap/releases/tag/rolling-release-v2.2.x>
! 🎉
The `2.1.4' release contains important bug fixes, including a
last-minute memory issue with http requests and queries that was
introduced in `2.1.3'. All users are encouraged to migrate to it but
make sure to use a staging environment before pushing to production
just in case! Full changelog is [here]
Next, we would like to shift our focus to the `2.2.x' release cycle.
We are done with the changes there and will now focus on fixing issues
there. We do encourage new projects to start with it and users to
report issues. We will prioritize these issues over other ones.
The `2.2.x' release contains some exciting changes, in particular a
switch to `dune' as the build system and a new support for multitrack
decoder/demuxing/muxing/encoding. You can read more about it [here].
Full changelog is [here].
[here]
<https://github.com/savonet/liquidsoap/blob/v2.1.4/CHANGES.md#214-2022-03-01>
[here] <https://www.liquidsoap.info/doc-dev/multitrack.html>
[here]
<https://github.com/savonet/liquidsoap/blob/main/CHANGES.md#220-unreleased>
Users of opam-repo: what sort of change tracking would you like?
════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/users-of-opam-repo-what-sort-of-change-tracking-would-you-like/11590/1>
Anil Madhavapeddy asked
───────────────────────
Dear users (of the opam-repository in particular, but also of the
container images and various other pieces of infrastructure that we
publish from ocaml.org),
After that mouthful of an intro, just a brief note to solicit opinions
over at [ocaml/infrastructure#20] on what would be most useful to
users of the opam-repo on what sort of change tracking would be most
useful for you to find out what’s breaking (or has been fixed) as the
live infrastructure evolves.
There’s a lot of improvements going in thanks to all the contributions
to the [various CIs], and your inputs on that issue, or this thread,
would be welcome.
[ocaml/infrastructure#20]
<https://github.com/ocaml/infrastructure/issues/20#issuecomment-1455150998>
[various CIs] <https://github.com/ocurrent/overview>
VS Code Expect and Inline Tests extension
═════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-vs-code-expect-and-inline-tests-extension/11593/1>
Roland Csaszar announced
────────────────────────
Hi, I’ve just released a VS Code extension to integrate [PPX Expect]
and [PPX Inline Test] to VS Code. It also works in combination with
[Alcotest Test Explorer]
[Expect and Inline Tests] [GitHub: VS Code Expect and Inline Tests]
It always adds/updates/deletes expect and inline tests when opening or
saving an OCaml source file. By default, it also runs all inline tests
of all inline test runners to discover tests on startup. If this takes
too long or you don’t like that, you can disable that behavior in the
settings. The `Refresh Tests' button in the upper right of the Test
Explorer view also runs all expect and inline tests to fill the tree.
[PPX Expect] <https://github.com/janestreet/ppx_expect>
[PPX Inline Test] <https://github.com/janestreet/ppx_inline_test>
[Alcotest Test Explorer]
<https://marketplace.visualstudio.com/items?itemName=release-candidate.vscode-ocaml-alcotest-test-adapter>
[Expect and Inline Tests]
<https://marketplace.visualstudio.com/items?itemName=release-candidate.vscode-ocaml-expect-inline>
[GitHub: VS Code Expect and Inline Tests]
<https://github.com/Release-Candidate/vscode-ocaml-expect-inline>
Roland Csaszar later added
──────────────────────────
Hi, a new version - 0.2.0 - of the Expect and Inline PPX extension
with minor cosmetic changes is ready for you.
[Expect and Inline Tests ] [GitHub: VS Code Expect and Inline Tests ]
I’ve also released a new version - 0.3.0 - of the Alcotest extension
(with more substantial changes). See:
<https://discuss.ocaml.org/t/ann-vs-code-testing-extension-for-alcotest-and-inline-alcotest-ppx-0-1-0-initial-release/11514/6?u=release-candidate>
Changelog:
[Expect and Inline Tests ]
<https://marketplace.visualstudio.com/items?itemName=release-candidate.vscode-ocaml-expect-inline>
[GitHub: VS Code Expect and Inline Tests ]
<https://github.com/Release-Candidate/vscode-ocaml-expect-inline>
Version 0.2.0 (2023-03-06)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Remove unnecessary node ’Expect and Inline Tests’ in the Test
Explorer tree.
• Change the name of the test profile to ’Run Expect and Inline PPX
tests’.
• Add documentation of ’Run Profiles’.
• Add GitHub Issue Template.
`ppx_minidebug' automates the printf in printf-style debugging
══════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ppx-minidebug-automates-the-printf-in-printf-style-debugging/11596/1>
Lukasz Stafiniak announced
──────────────────────────
I’m happy to announce [`ppx_minidebug']:
• Which is a syntax extension to instrument type-annotated bindings
and functions with logging.
• The extension supports 3 value conversion mechanisms: `pp' and
`show' from `deriving.show', and `sexp' from `ppx_sexp_conv'.
• The `minidebug_runtime' package provides 3 logging backends:
`Format' based purely on formatters, `Flushing' that converts to
strings first and flushes output after every entry, and `PrintBox'
that pretty-prints as trees using the `printbox' package.
• I reference a VS Code extension that builds flame graphs for the
`Flushing' logger out-of-the-box.
<https://global.discourse-cdn.com/business7/uploads/ocaml/optimized/2X/a/ac09beb5cf9a8aee34c5ead29c26a2c26a988c6c_2_1380x592.png>
[`ppx_minidebug'] <https://github.com/lukstafi/ppx_minidebug>
VS Code testing extension for Alcotest and inline Alcotest PPX 0.1.0 - initial release
══════════════════════════════════════════════════════════════════════════════════════
Archive:
<https://discuss.ocaml.org/t/ann-vs-code-testing-extension-for-alcotest-and-inline-alcotest-ppx-0-1-0-initial-release/11514/6>
Roland Csaszar announced
────────────────────────
Hi, a new version of the Alcotest extension, 0.3.0, now retries
running dune every 2.5s if another process holds the directory lock.
There are also some additional, minor, changes.
I’ve also released a new version - 0.2.0 - of the Expect and Inline
PPX extension. See:
<https://discuss.ocaml.org/t/ann-vs-code-expect-and-inline-tests-extension/11593/2?u=release-candidate>
Changelog:
Version 0.3.0 (2023-03-06)
╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌╌
• Retry dune commands every 2.5s if another process holds the dune
directory lock.
• Change the name of the test profile to ’Run Alcotest tests’.
• Set the tests state to ’run’ before processing the tests.
• Add documentation of ’Run Profiles’.
◊ Internal Changes
• Add GitHub test action.
• Add GitHub Issue Template.
• Add jsdoc plugin for Eslint.
• Fix various jsdoc errors.
• Use function `workspaceLabel' to set the workspace node label and
id.
Old CWN
═══════
If you happen to miss a CWN, you can [send me a message] and I’ll mail
it to you, or go take a look at [the archive] or the [RSS feed of the
archives].
If you also wish to receive it every week by mail, you may subscribe
[online].
[Alan Schmitt]
[send me a message] <mailto:alan.schmitt at polytechnique.org>
[the archive] <https://alan.petitepomme.net/cwn/>
[RSS feed of the archives] <https://alan.petitepomme.net/cwn/cwn.rss>
[online] <http://lists.idyll.org/listinfo/caml-news-weekly/>
[Alan Schmitt] <https://alan.petitepomme.net/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.idyll.org/pipermail/caml-news-weekly/attachments/20230307/cf2e2f07/attachment.htm>
More information about the caml-news-weekly
mailing list