Taking a step back, if you want to see this become more widely useable I'd suggest finding ways to integrate to existing workflows.
157 karma · joined February 13, 2020
Taking a step back, if you want to see this become more widely useable I'd suggest finding ways to integrate to existing workflows.
An interface allows you to pass different "structures" to the same function so long as they adhere to the same spec. In Ocaml this is accomplished through modules, functors, and module signatures. Ocaml's module signature can play the same exact role as interfaces in Haskell, Rust or F#.
The module system is arguably more expressive than what can be accomplished to interfaces. To give an example, Ocaml suffers from the same problem as rust does with having two standard implementations of a async runtime. Just like rusts: tokio and async-std, ocaml has Lwt, Async, (and newly added to the mix Eio).
Whereas in rust most libraries just implement one of these systems, and you'll have to use compiler directives to support both. Ocaml's module system means that you can describe the async runtime as a signature and make your entire library generic to the async runtime it runs on top of. Most of the well-used libraries do this, and so you don't have to worry too much about which runtime you decide to use.
Clearly, a language that can do that must have in some place a system that can replace interfaces.
It's using text-davinci-3 mostly because I was too lazy to move to gpt-3.5-turbo since that required moving to the chat api. I'll probably make the move if people use this tool enough that I'm worried about the bill from openai.
- It being impressively fast comes from me using the streaming API. That's actually where I spent most of my effort making work. OpenAI sends their messages via SSE to my server which then instantly streams that also by SSE to the browser client. It turns out this is hard to make work because most reverse proxies want to buffer responses so you have to figure out the configuration to make sure your responses aren't buffered.
- The candidate name link problem comes from the fact that I translate GPT3's output as markdown so [Candidate Name] turns into a link to nothing (I'm gonna go and change that soon I swear).
That made me realize that since most people aren't doing it, a cover letter would help me standout. Seeing a cover letter is rare enough that people value it more. Nowadays, I make one for any role I'm very excited about.
I think saying something is not the same as something else, when evidently the difference can to reduced down to syntactic sugar is a bad way categorizing and differentiating types.