How long have you been working on it? Has a certain baseline level of polish that is great.
This isn't quite what the "sourceless programming" discussion is about. Still separately interesting.
I didn't find the initial carousel very illuminating. But
https://docs.kodou.io was helpful.
I have a philosophical objection to this whole endeavor. Code isn't some finite set of doors behind which you find great working functions. Code is more like Borges's infinite library (
https://maskofreason.files.wordpress.com/2011/02/the-library-of-babel-by-jorge-luis-borges.pdf), where 'good' functions are surrounded by all combinations of bugs, incoherence and malice. Don't worry about it for now, but maybe save my comment in a folder titled "ideas to consider when planning the next pivot" 🙂
Even if you managed somehow to focus only on 'good' functions, the value of a function depends on its environment. Based on
https://docs.kodou.io/docs/workflows, it sounds like each of your functions lives in a hermetically sealed environment. That implies that they're pure functions without side effects. Do you have some way to ensure that the only functions you expose are pure ones?
The links at the bottom of the docs page are broken. Ah, I click on 'get started' (
https://docs.kodou.io/docs/home/) and then the links on the left work.
I'm curious to see an example of a failed call. Say I call redis's
hex_to_int
with two arguments, or an argument of the wrong type. What does the response look like?
From
https://docs.kodou.io/docs/code_samples it looks like you can query not just specific functions in specific codebases but also just run a REPL for arbitrary languages. But I don't see how it replaces DevOps, since I have to specify what dependencies I want. Don't I need to specify the version of
numpy
and so on? At that point this feels like just a different syntax for talking to Python.
One problem your customers will almost immediately run into is mismatches between functions from different codebases. Say you have a function that emits a list of points for a line, and another function that intersects lines. One may represent points as tuples and the other as structs. Similarly you will see code in different repos use arrays of structs vs structs of arrays for the same tasks.