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@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@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.schm...@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/>
_______________________________________________ caml-news-weekly mailing list caml-news-weekly@lists.idyll.org http://lists.idyll.org/listinfo/caml-news-weekly