5 ms·
Congrats and welcome to the wonderful world of ports. I would say yes, verifying that the code not only does what you expect but also doesn't do anything of th
by jpcom 1mo ago
Congrats and welcome to the wonderful world of ports.
I would say yes, verifying that the code not only does what you expect but also doesn't do anything of the things you do not expect, is the main bottleneck.
That is: do-all-the-things, please, and don't-do-all-the-non-things, as well.
Ideally, one can reason through their application at a high-level and have a "spec" or specification that the LLM can build from and check against.
You can also have the LLM go back through and tell you about any vulnerabilities you need to address before shipping.
I don't know exactly what you are shipping, but in general: never give the LLM root access or command-line access in a deployed app. Give it the minimal permissions necessary to accomplish its work/role. Pin versions [if you're working with version 5, explicitly say that, rather than just using the "latest" one since that's a moving target].
Some things are not obvious until deployed to a live environment, so do thorough testing. You can have an LLM generate test cases and run a "test suite" to check your code does all-the-things and none-of-the-non-things [undesirable outcomes] this way.
But again, when you have many moving gears finally coming together in a product, in a real, online environment, your best bet is doing lots of testing first to give yourself confidence you've caught most of the edge-cases, and that there are no "catastrophic" edge-cases lurking, unaccounted for.
If you still have any specific questions or want to zoom in on any aspect of software creation, please ask us
- ochidaniel4 1mo agoThanks, this is really helpful. I never thought about the “doesn’t do anything I didn’t expect” part. That actually seems harder to verify than just checking if the feature works. When you say you use specs, tests and LLM reviews before shipping, how do you personally know when you’ve tested enough to actually feel confident shipping? Is there a point where you just have to trust it and ship?
- jpcom 1mo agoEvery app is a state machine. If you have not learned about Finite State Machines (FSMs) I highly recommend you take a weekend or two and watch some videos, read some stuff on them. Learn to draw your own Finite State Machines. Essentially, we identify "states" of our "program" and then we move between them via transition lines/arrows. Eventually we encounter an "accepting state" and then the "program" is done. In reality, programs don't ever really get to "done" mode, but algorithms do. Consider a simple task like eating cereal in the morning: 1) Get bowl 2) Get cereal 3) Get nondairy milk 4) Pour cereal into bowl 5) Pour just enough milk to keep cereal crunchy 6) Use spoon to take a bite 7) Crunch 8) If there is still cereal, go back to bowl with spoon, number 7; otherwise, go to 9 9) Done! Do the dishes, I guess. Now if you draw that out as circles with arrows, you end up with some state transitions going backwards, some going forwards, and some looping back on themselves. Reasoning about your app should be the same. There should be a "finite number of states" and well-understood transitions between the states. When you have tested all the states and all the transitions between them, you have tested 100% of your program. 100% when it's gritty and dirty and connected to the rest of the "real world" [is tough] because it's not existing in isolation, 100% is like the ideal but you can be happy with 80-90% certitude you've covered it "all."