This is really interesting. When I first looked at some of the examples, I initially dismissed it, but then I realized there was some additional work being done in addition to some of the more obvious interpretations..
I ran some of my own code snippets and the results were pretty impressive. I was having a lot of fun before I got rate limited. Bummer!
I am still not sure of the exact business case. It this for non-technical people to get a plain language explanation of the code? For junior developers? I would like to try larger chunks of code to see how the system performs.
Which explanations did you like best? What about them impressed you?
I'll raise the rate limit to a very high amount in a moment!
> I am still not sure of the exact business case.
You ask a good question. I'm hoping HN helps figure that out! I think it can help Senior and Junior Developers to onboard to new codebases, especially those with new concepts.
The language used in the descriptions is easy to understand. It reads like standard conversational English.
It is minor, but I would like to see better text layout.
What I think I would really, really want, is integration with VSCode/Sublime/etc. where the interpretations were interleaved within the actual source code and could be folded down. I would like to be able to correlate the source codes lines to the interpretations.
Thanks, I will update our info to say "conversational English."
Can you explain what you mean by text layout? Do you want it justified? Formatted differently?
> What I think I would really, really want, is integration with VSCode/Sublime/etc. where the interpretations were interleaved within the actual source code and could be folded down. I would like to be able to correlate the source codes lines to the interpretations.
Cool idea. Something like Literate Programming, where the explanations are stored in the code file? Or more like a dynamic tool that just shows dynamically generated explanations inline?
If you want to go down the Literate Programming rabbit hole with me, I have a lot of ideas around that. Your system could be applied to parsing source code and coming up with conversational descriptions, or even more exciting, going from conversation, descriptive text into source code. You are in the process of building a corpus that can used in both directions.
As for the text layout, just something a little prettier with improved spacing between descriptive blocks, bullet point and links that reference to the parsed source code. It should be just as pleasant to look at as any well-designed piece of online prose. I realize that design is subjective.
Hi HN! I created this to help decipher complex game engine logic. Instead of a literal translation, what it does is get at the core ideas in the code.
Programmers spend 30-90% of their time reading code. With Denigma, I hope to help programmers read unfamiliar code faster.
By accident, my alpha tester group was mainly kernel and embedded developers. Surprisingly, it works well and fairly accurately on most code in obscure domains like kernel and embedded.
When possible, it helps show what concepts are in the code. The AI model following was written to explain part of a kernel's boot process:
- longmode - Indicates whether or not we are running in 64 bit mode
- lv5 - Indicates whether or not we are running with L1V5 support enabled (if you're unsure what this means google "Intel VT-x" and "L1D cache")
- pagemap - The address of our page table entry array (this is where all of our virtual addresses go)
- x2apic - Indicates whether or not we are using an Intel X2APIC controller
It likes to explain business logic.
Here is part of an explanation of a C++ function, called "AttackSystem::update." The full code is next to "Focus on what's important." on the landing page, which uses two nested closures– quite complex.
- Each attacker has an associated position and attack object which contains information about how much damage they have done to the victim so far (base_damages) as well as their cooldown timer (cooldown).
- When an attacker's cooldown timer reaches zero they can no longer attack for another 8 frames.
- If there are any victims then each one will be updated with their current health minus the amount of damage done by the attacker up until now (current).
- This process repeats itself until either there are no more victims or there is only one left - when this happens then we know that our last victim was our enemy who attacked us!
Of course, AI isn't a silver bullet. It needs sufficient context cues– such as variable names. The variable names don't need to be perfect, however– it can work with and infer the meaning of vague, single-word names in legacy code.
I'm sure that if it can explain the code from the STIVALE2 boot protocol, it can explain simpler code!
Denigma isn't perfect. On code that occurs rarely in its dataset, its accuracy becomes questionable. Sometimes it takes 2-3 tries to get a good explanation. And it only understands some parts of the Linux kernel- and can't explain Verilog HDL at all. Over time with feedback, the model will get bigger and better.
I ran some of my own code snippets and the results were pretty impressive. I was having a lot of fun before I got rate limited. Bummer!
I am still not sure of the exact business case. It this for non-technical people to get a plain language explanation of the code? For junior developers? I would like to try larger chunks of code to see how the system performs.