I was planning on posting this but <@UCUSW7WVD> q...
# thinking-together
y
I was planning on posting this but @Kartik Agaram query for "sourceless programming" is a good reason. Please check out (still in Beta) www.kodou.io for an example of an API-first programming model with no downloaded source or dependencies. The Documentation page describes it. We are looking for feedback. Accounts only by request at this time.
k
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.
y
Hey, thanks for taking the time to look and give your feedback. Yes, this took a few years. The koduo.io ideas extends our usual use of functions from the Operating System (better-be-excellent functions), common Libraries (again better-be-excellent), and APIs (excellent-but-sometimes things go wrong due to the network or something else). Yes, you can find "great" functions but you still need to know that they do what you want. What makes this highly probable is we live in a post-open-source world where engineers have learned to write as if many people will look at it. Code is either documented at the source or through usage by others. So you are right that users can't go only by the name and argument types. They must either check the documentation or follow what other used it for. This is just like using a Python/whatever library. The DevOps is replaced because you can compose whatever you want without thinking of the deployment or infrastructure. It complements your existing infrastructure, whether that is a web browser or server. Also, it is useful to think of the functions as being disassembled from the repository and isolated, yet easily reassembled into the whole, if desired. Like a binaries level AST.