Available for hire. ReasonML, Rescript, OCaml, Javascript, Node.js, AWS, Postgres, MongoDB, React, Relay, GraphQL. github.com/idkjs,

Paris, France
mandalarian retweeted
After Elon Musk has been insinuating to turn off Starlink in Ukraine, Poland‘s Foreign Minister Radoslaw Sikorski is reminding Musk that Poland is paying for it and, furthermore, is making clear that if Musk follows through that Poland will abandon Starlink altogether for being an unreliable service.
647
4,575
25,371
1,136,004
Thank you, sponsors for your continued support. This months update on what I did/tried for Reason/OCaml OSS 1. esy's source cache is now versioned. (unreleased) This would let esy developers to bust the sources cache should anything change regarding tarballs are installed. A good example of this was how the `extra-sources` field is handled - it changed the contents of sources that get installed. When I implemented support for `extra-sources` and released it, users would see the fix work since esy would consider the older cached version valid. This was considered okay because fetching and installing sources rarely change. By prefixing the sources path with a version, we can now invalidate the old cache and ask esy, internally, to fetch the sources as per the latest implementation. 2. De-duplicate opam-repository and esy-opam-override repository sync in the new multiplat solver (WIP) As a first step towards portable dependency solutions, I had parameterised the exisiting solver function over os and arch and decided to loop over the list of supported (os, arch) tuples. This got me to a working solution quickly, but also meant it was unnecessarily running some operations. One of which was the opam-repository and esy-opam-override repository syncs. 3. esy-opam override for ocamlfind 1.9.8 The new ocamlfind 1.9.8 package needed an updated patch for Windows. This is unrelated to the earlier issue where ocamlfind incorrectly assumes it does work on Windows - to fix this users could opt into creating opam overlays and use the `opamRepositories` field in package.json. 4. Fix prefix rewriting in postinstall generated by esy/github-action `postinstall` command in the esy/github-action The github action, which generates a postinstall script so that CLI apps created with esy can running multiple platforms packaged in the same NPM tarball, needed a fix to correctly figure the ocaml version to make sure prefix rewriting works correctly. 5. Understanding why rtop was broken on OCaml 5 and writing a vanilla rtop (without depending on utop) rtop was initially broken, but cleverly fixed by anmonteiro (thanks!). However, I couldn't figure out the fix, or why it worked. Turns out, OCaml 5.2 introduced evaluation of multiple phrases in the same line, which wouldn't work with rtop's internal lexbuf state - reason parser, for some reason, resets it. I still couldn't figure this one out. You can find my exploratory patch in the next post.
Big thanks for my sponsors who continue to motivate me to work on Reason/OCaml. Here's the work done last month esy: Support for platform specific packages Packages like `libwasmtime` are platform specific and it's evident from their names libwasmtime.0.21.0+linux-x86_64 libwasmtime.0.21.0+macos-x86_64 libwasmtime.0.22.0+linux-x86_64 libwasmtime.0.22.0+macos-x86_64 Another good example is `eio_main` - this package contains dependencies field that looks like this, "eio_linux" {= version & os = "linux" & (os-distribution != "centos" | os-version > "7")} "eio_posix" {= version & os != "win32"} "eio_windows" {= version & os = "win32"} Such expressions are evaluated during package installations on the client. These individual packages, use the `available` field to hide/show themselves to the solver. For example, `eio_linux` contains the following, available: [os = "linux"] Thus, 1. On non-Linux machines, solver is supposed to ignore `eio_linux` 2. On Linux machines, `eio_main`'s dependencies field is supposed to look like this "eio_posix" {= "1.2"} "eio_windows" {= "1.2"} But on Linux, "eio_linux" {= "1.2"} "eio_posix" {= "1.2"} "eio_windows" {= "1.2"} One can see how it can pose problems for projects that are supposed to build on multiple platforms. To make things worse, some packages make only a certain version unavailable. `ocamlfind` `1.9.6` for example isn't available on Windows, but `1.9.5` is! To address these things, the package manager fetching OPAM packages must compute different solutions for each platform. However, this can slow things down significantly for the user - solutions have to be computed for all the expected (expectations set by the project owner) os-arch combinations. To avoid unnecessary computations, esy does the following: compute the solution like it used to. Scan the dependency graph for packages that wont build everywhere - compute this set of platforms where all the graph nodes aren't available, and only for those platforms re-compute the solution. A good example is esy itself - in it's dependency graph, only `ocamlfind` isn't the dependency that doesn't build uniformly (1.9.6 doesn't build on Windows, 1.9.5 does). This way, the re-computation of the solution is only triggered if necessary. Note that this work is still being tested and awaiting feedback. Feel free to try out the nightly once it's built on CI and ping me on Reason Discord esy: windows ci: fix broken inline test runner Inline test runner, that builds some c++ code failed to build because it wasn't configured to statically link with libstdc++.dll esy: minor internal documentation and maintenance chores. You can find all the relevant links in the next post.
2
1
5
1,144
mandalarian retweeted
VsCode just got the best OCaml updates :)
Full blown productivity in VSCode with OCaml: Happy New Year, OCamlers! 🎉 As we usher in another year, we have something special to celebrate — a New Year's gift that promises to make your coding experience even better! We have been… dlvr.it/TJGPw0 #OCaml #OCamlPlanet
1
5
8
631
I made a little thing. Conway's Game of Life as you've (probably) never seen it before :) colorlife.quick.jaredforsyth…
1
1
11
493
When Kyrie Irving shared a link to a controversial movie, the ADL swiftly condemned him, demanding apologies, donations, and reparative actions. Kanye West’s offensive comments about Jewish Americans resulted in him losing billionaire status. Yet when Elon Musk makes an unmistakable Nazi salute—an act they themselves acknowledge as concerning—the ADL calls it an ‘awkward gesture’ and excuses it. This double standard is glaring. When Black men make even the slightest misstep, they are vilified, condemned, and told to grovel. But when a white billionaire like Musk does something blatantly offensive, it’s brushed aside as clumsy or accidental. Where is the same energy? Why the selective outrage? The ADL’s actions show they are more invested in maintaining the privilege of those with power than holding everyone equally accountable. The hypocrisy is deafening, and Black people are tired of the disparate treatment.
1,318
5,464
19,866
1,173,909
I’ve been reflecting on this over the past day or so, and I’ve come to a realization. Many of my friends on the center-right who are upset with me for making what I believe to be very obvious observations aren’t necessarily angry at me—they’re angry at the implications of what I’m saying. The idea that neo-Nazism has entered the mainstream, potentially influencing the White House, is so alarming and existentially terrifying that it's easier to lash out at the messenger than confront the reality. If they accept this, it means that the political home they've invested so much of their identity in, the movement they've championed for years, has become something so morally repugnant that accepting it feels like breaking their own brain. The cognitive dissonance is overwhelming. What's striking to me is the selective outrage. Many of these same people are quick to call everyone communists, often with little more than circumstantial evidence. Yet, when it comes to countless instances of glaringly obvious signs of fascism in their own movement, they either look away or attack those pointing it out.
Don't let anyone gaslight you. Everyone saw what happened.
3,984
18,297
128,166
11,038,192
mandalarian retweeted
I found myself wondering the other day if biopsies create a risk of metastasis, since there's a kind of obvious mechanism there but it's something I'd never heard much about. (Just idle curiosity!) The LLMs all *insisted* they do not, especially Claude which was super preachy about it and then declined to provide any references; and the internet is also full of patient-facing content *insisting* that it is completely safe. But doing some quick looking easily turns up a bunch of literature showing it's at least complicated, and in at least some kinds of cancers plausible. To be clear I'm not saying anyone should avoid an expert-recommended biopsy followed up with comprehensive care, but I was taken aback by how basically *all* of the consumer consensus coverage on this was so confident and probably wrong, which clearly got baked into the LLMs, whereas it was easy to find doubt by spending 5 minutes looking up papers. Both for the epistemics and the idea that biopsies may have risk, kind of alarming!
8
2
84
5,346
mandalarian retweeted
Advice for Food Companies Since we launched PlasticList, we’ve been heartened to have quite a few food companies reach out and ask for help interpreting their results and tracking down and eliminating their contamination. I’ve had calls with a bunch of these. I am happy to report that no food company wants this stuff in their food and they are all eager to figure out what’s going on and how to remove it. After a while I noticed the advice we were giving was pretty similar for every company, so I thought it would be useful to write it down and share publicly. So, here are some notes: 1. To track down the source of your contamination, don’t just test a few samples of your product with varied production processes. Instead, test every single one of your inputs: every ingredient and input in the form you receive it before any processing steps, including water and any other consumables. 2. Then, test the food before and after every step in your production process. If you boil something in tap water, test before and after boiling. If you chop something on a plastic cutting board (because wood cutting boards are outlawed in commercial kitchens, apparently), test before and after chopping. 3. You may have to go deep into your supply chain to figure out the source of your contamination. One food company founder we spoke to said that some of the fruit they include in their product is picked, put into plastic bags, and then steamed in the bags before the bags are cut open and the fruit is transferred into another plastic bag, while still warm, for shipping. Whoops. 4. Run at least three samples of every test due to sample-to-sample variation. You can see in our report and in our data that sample-to-sample and lot-to-lot variation should be expected: plasticlist.org/report 5. You should also test any intermediate or final packaging that your product ships in, as leaching can also occur post-production. 6. There are a lot of steps that you need to carefully follow to prevent contaminating your samples during collection and transportation. It’s really easy to miss one of these and mess up your data. We describe many of these on our methodology page: plasticlist.org/methodology 7. You should consider running longitudinal tests, maybe quarterly, as we have heard that there can be seasonal variation in contamination from suppliers, due to things like summer heat, suppliers switching their processes, and suppliers switching their own backend suppliers for their inputs. 8. And most importantly: PICK A GOOD LAB. Unfortunately not all labs are good, and we think many ISO-certified commercial labs will not give reliable results. We rejected many certified labs because we weren’t confident in their work; all-in-all, we spent about 10 weeks finding a lab that we trust for our tests. You can see our lab’s internal methodology here: docs.google.com/document/d/1… Our lab has recently permitted us to identify them publicly, and they are IEH: iehinc.com/ We also worked with Light Labs to produce this study and they can be a big help: lightlabs.com And Million Marker is able to work with food companies to debug their supply chains as well: millionmarker.com/ 9. You should consider hiring an analytical chemist as a consultant to validate that the testing methodology is accurate and to double-check the lab’s results. We hired John Brock to do this and it was well worth it; we would not have been confident in our choice of lab or our results without John. 10. We couldn’t find a lot of evidence that the phthalate substitutes are bad; if you have high-percentile detections in phthalates or bisphenols, though, it’s probably worth figuring out how those chemicals are getting into your products.
124
372
3,741
941,317
mandalarian retweeted
Watching @FunOCaml: Progress 3/16 youtube.com/watch?v=Oy3lZl2k… Just finished "Universal React in OCaml" by @davesnx First of all, full disclosure, I'm not a frontend developer, so the entire React ecosystem is quite far from me. Still, the work @ahrefs is doing in the OCaml space is impressive! Outperforming major players with OCaml is huge. Using React from OCaml is huge. Using both OCaml on frontend and backend is huge. And the fact that the entire React model can be represented with 11 lines of OCaml code is quite neat. I especially want to mention things they do to make onboarding for non-FP and non-OCaml people smoother. Again, great work! 👏
Universal React in OCaml, all the work we put into Server-side rendering, and React running natively in production at @ahrefs Showcasing Melange and server-reason-react: Watch it youtube.com/watch?v=Oy3lZl2k…
3
9
44
6,609
every day until the election you’re going to probe how far you can push it to influence the election before doing crime at some point you’ll trip. when courts charge you, you’ll call it lawfare greatest entrepreneur of an age going to be mired and eaten up. hate to see it 😔
Every day, from now through Nov 5, @America PAC will be giving away $1M to someone in swing states who signed our petition to support free speech & the right to bear arms! We want to make sure that everyone in swing states hears about this and I suspect this will ensure they do.
53
14
418
54,617
Nou te anonse li deja, kounye a li ofisyèl: sit Bwa Kayiman an enskri nan rejis sit istwa ak memwa ki gen pou wè ak lesklavaj ak la trèt. Enskripsyon sa a ki antre nan kad 30è anivèsè pwogram @UNESCO Wout moun yo te mete nan lesklavaj, se @DphUnesco, Komisyon nasyonal pou kowoperasyon ak UNESCO, Chè UNESCO Istwa ak Patrimwàn ki anndan @UEHAITI ansanm ak Komite syantifik ayisyen Wout esklav la ki te mete li kanpe. Nan moman kriz sa yo Ayiti ap travèse, senbòl sa a dwe raple nou kiyès nou ye epi fè nou sonje se linyon ki fè la fòs.
272
120
887
63,579
mandalarian retweeted
How did I not know these work in GitHub😍
75
585
6,077
451,642
Crowdstrike Analysis: It was a NULL pointer from the memory unsafe C++ language. Since I am a professional C++ programmer, let me decode this stack trace dump for you.
2,983
19,632
96,122
34,925,814
mandalarian retweeted
I might regret it, but opam and dune can learn a lot about JS tooling.
It's hard to believe that the "setup-ocaml" and "opam install" actions take more than 3 minutes even when everything is cached. This is unacceptable in modern package managers with content addressable storage. esy.sh is still a good alternative.
2
2
16
1,427
mandalarian retweeted
The new version of styled-ppx's website is really good - Updated to latest nextra - ReScript and Reason grammars including styled-ppx syntax highlight - Language switcher between Reason/ReScript Thanks @zakybilfagih
2
4
37
1,572