Currently, not directly letting it edit source files but asking it to make isolated suggestions which I manually apply by copy and paste and tag as AI generated. That way I’m sure what part of the code came from AI. I don’t use a local LLM as I’m not sure which one would be manageable and good enough for productive work?
Might be worth distinguishing between different categories of OCaml progammer:
(1) for money
(2) for hobby projects
Also might be worth asking about which generation the respondent classes themselves in: Boomer, X, Millennial, Z, Alpha.
E.g., I’m X, only hack OCaml for hobby projects, and would never use AI. But if I were still a pro (and had the enormous fortune of being hired to hack OCaml?) I’m sure I’d feel constrained to use AI, yeah.
In my current day job, since about six months ago, software engineering has been fully integrated with a variety of LLM-powered coding assistants for over two years. It’s not an experiment, and hasn’t been for some time. My team has been using Claude Code mainly since Opus 3. We have an all-you-can-eat enterprise plan, and we are using it extensively and systematically, mostly with Scala, Rust and some Python here and there.
We are not an OCaml shop.
Around the time I was getting ready to leave my previous employers a few months ago, I signed up for a one-year subscription to Claude Pro for use with CC on my unpublished hobby projects. I wanted to see how well I could get it to drive the OCaml toolchain. On the plan I purchased, I have to be a bit parsimonious with my token spend, or I’ll blow the week’s budget in a few hours, and it’s also quite a bit slower than it is on the enterprise all-you-can-eat buffet plan. So, I’m unable to find as much use for it, but it’s still useful more than occasionally. It can often turn a 30-minute troubleshooting exercise into a 3-minute pull-the-lever and watch-the-wheels spin lootbox game, and I am old and tired and unwilling to sweat the tedious puzzles when I can skip them and work on more fun problems.
My personal setup needs more customized skills installed before it would be as useful in my hobby projects as it is in my day job. With the level of customization I have now, it can make quick work of diagnosing compile errors and test case failures when I’m struggling to get something to work. It’s not so good at turning a design spec into usable implementation plan, and it’s even less capable in going from brainstorming to design spec. Installing better skills might be an improvement.
If I were still trying to release my hobby projects as open source (I do not do that anymore), then I would think twice about using a license like MIT or BSD. The license files in my templates all now call for CC-BY-NC-ND-4.0 at this point.
It depends on the task, but yes 1 to 3, also 5: Claude Code from start to finish (just writing the prompt, he does everything else, until the commit message).
On code for which quality doesn’t really matter (e.g. Makefiles, linters) I’m using OpenCode + GitLab Duo to write code, which I may or may not review.
On code for which quality matters, I’m using OpenCode + GitLab Duo for brainstorming, reviewing my code, and answering questions, but I write the code manually.
I’m not sure about LLMs that can be run locally. If my workplace considers it secure it’s good enough for me. I don’t use any AI tools in my personal life or hobby projects.
Generally if the code is difficult for humans to reason through – because it’s nuanced, concurrent or touches topics that most engineers don’t bother with – it’s pretty difficult for the AI to one shot it. I’m have had more success to small - medium tasks where I just let it run and see if it works. I’ve had the most success with cloning large libraries / dependencies and having it read through them to find edge cases or understand how the libraries do what they do.
I do sometimes query LLMs but I don’t use them to generate code (except at some point to help me deal with the brain damaged syntactic idioms of shells and cmd.exe).
My use of LLMs is mostly to try to get broad insights on a topic, with very mixed results. I used them quite successfully to explain code to me I did not fully understand or written in legacy languages (e.g. clipper). The explanations are not always right but it helps getting past unfamiliar syntax.
I was using gpt-oss-20B on my machine (M2/16GB of ram) with quite some success but at some point it stopped working – given the update churn I guess these people doing LLM apps must be using LLMs… I tried to replaced that by qwen3.5-9B and ministral-3-14B which the machine is able to load but both do bullshit much more than I would like.
I generally don’t use the commercial offers as I’m not happy to return to a state where I’m being taken advantage of by my unesteemed colleagues. However a bad habit I recently took which I hate since it took me so long to get off google search, is that I started to use google search AI mode as it tries (again with very mixed results) to reference its answers on the web and I’m always happier to read human produced technical documentation than the crap that all this new technology vomits.
Same goes for 1. I still struggle to understand server network configuration, and even though I’m starting to recognise patterns, it’s always tricky to know where to look between iptables, ip routes, etc.I use gemini to help me with the configuration.
I also find it quite tiring reading documentation in English and sometimes struggle a bit with the jargon for certain protocols (such as NTP). DeepL is still my favourite solution, but a tool like Gemini helps confirm some of my intuitions when it comes to understanding these protocols.
On the other hand, I’m very much against the vibe-coding approach, particularly when it comes to ethical considerations. I’ve noticed on several occasions that certain contributions stemming from vibe-coding deliberately overlook the social aspect, as if we were all machines. This must surely please some employers who imagine they’re boosting productivity, but it destroys the (few) human relationships we have through all these platforms.
I do use LLMs sometimes when I want to implement some commonly used algorithm that’s missing in the stdlib and when I’m too lazy to go through the documentation. But it’s risky. This is an example I obtained from ChatGPT when I asked how I check if a list is sorted:
(* AI-generated; does not work! *)
let is_sorted lst =
List.for_all2 (<=) lst (List.tl lst)
It looks so elegant, yet simply doesn’t work: List.for_all2 expects its arguments to be of equal length.
My guess is that this mistake came from typical solutions in Haskell, which the LLM tried to translate to OCaml.
I have used Brave AI search assistant (which relies on a variety of OSS models deployed in-house). I query it with questions about algorithms and proofs about complexity and other theoretical issues. I also query it about the existence of libraries that can do things I’m searching for.
I’ve used Github Copilot (only free credits) to search for code on Github.
I haven’t prompted any AIs to generate code, evaluate/explain code, or suggest how to write code.
I’d prefer not to use AI until all ethical issues, including the ethics of the sourcing of the data, are addressed by some company or in some model. I was recently employed for about 4 years using OCaml, where I was not asked to use AI. In future employment as a software engineer, I imagine I will be more and more likely to be expected to use AI, and I hope that better AI options become available (or I find such options that I am not currently aware of).
To be clear, I would lean away from permissive open source licenses even if I weren’t using LLM-assisted tools, but until the ongoing drama around copyright of LLM-generated text and the political controversy around their ethical uses in software development are resolved, the last thing I want is to find myself in the middle of some fight because something that I prompted a shoggoth to generate got used by someone who has real money on the line if my work is deficient.
95% things that are not OCaml, I code with LLMs (I use opencode + github copilot that I get for free because I’m in academia).
I sometimes use LLMs for OCaml, though my experience hasn’t been as good (also because I care a lot more about the quality of my OCaml code). But for advanced stuff such as writing an analysis tool, it’s still not fantastic.
That being said, LLMs are good if I ever get into a type nightmare where I somehow broke a module signature because a functor is missing a with type constraint somewhere and now it’s escape-room time trying to find it. I just throw Claude at it and it’ll figure it out.
I also had Claude write a fuzzer with Qcheck. The code was of very bad quality, but it was much easier fixing up the code than doing it myself, and then I let the AI run the fuzzer in a loop until it couldn’t find any more bugs, and that was pretty cool.