|
A different angle: I think a lot of software is not accessible due to friction points and interfaces. Non-compatible interfaces, and simply being proprietary for business/incentive reasons. So, you might ask "Why are you building X when Y exists". The answer is usually something to the effect of "I can't interface with Y". Programming languages themselves are one of these obstacle. So is linking to system libraries. (e.g. many C and C++ code bases) C-FFI sometimes makes this easier though. I value low-friction interfaces in software, and I think this is usually not done well. Another example: I think this is why I dislike Async rust so much. It places a barrier within the language. Some concrete anecdotes from the past few days: Why am I writing SPME algorithms, asking an LLM to implement a linear constraint solver, etc? Those and many more algorithms that have existed and been heavily used for decades? No/shitty rust libs, and the C/C++ libs have no good way I can interface with, aren't documented well, license concerns etc. I.e., I could try to re-use, but instead re-write because it's, surprisingly, the lower-friction option. People lament re-inventing wheels, but often miss that the off-the-shelf wheels each have their own bolt patterns, brake interfaces, and dimensions. And sometimes they look solid, but have subtle defects. |