Is GitHub Copilot Helping Me Code, or Just Filling in the Blanks?
bassi.liSo far, I've never had Copilot "solve a problem" for me.
It has regularly autocompleted what I was going to type anyway.
It has saved me typing time more than it has saved me critical thinking time. Which has value, but not in the same way.
I haven't found Copilot that useful, except as a fancy autocomplete. However, recently I've had Claude solve a lot of problems for me, including some with fairly tricky math. Nothing that I couldn't solve myself. But definitely things that would have taken me from 30 minutes to a few hours, and which with Claude helping me were solved in 5-10 minutes.
As an example from yesterday, I had written a function that returned the position of the camera in 3d space relative to an object. I'd written it fairly quickly and naively using just the direction vector and it mostly worked, but then I realized when the camera was overhead facing down, I also needed to consider the orientation of the camera. I fed my function into Claude, explained the problem without my hunch on how to fix it because it's always interesting to see if I'll get a different solution. But Claude was able to get the same solution as me, and do the maths required, in one go.
I generally don't try to get answers for things I don't already mostly understand anyway (sounds like you did this as well), because if what I get back is a hallucination, I don't want to spend added time figuring that out, and then I'm back at square one and have lost time.
Copilot is great at taking precise pseudocode, in this case a declarative constraint logic language I invented, and translating it from there - just explain your formal rules first:
<teach it your language here> .. I'm giving you quite a puzzle so try to figure this one out and translate to miniKanren in Scheme (you will notice the blank line between definitions which signifies the end of one definition and the beginning of the next - variables do not necessarily mean the same thing from one definition to the next - V(VS) is a way to update V within the second definition as the variegation of S before moving rightward with subsequent constraints that may use the new value of V):
(VS)(US)=(UR)R
VARIEGATE
STORY
S(U)MMARIZE
RESULT.
(HS)V(VS)(LV)<(LS)V
S(H)ORTEN
STORY
VARIEGATE
LENGTH
Challenge accepted! Let's translate your declarative constraint logic into miniKanren in Scheme. Here’s a step-by-step approach based on your constraints:It actually works which completely floored me :))