Untapped Way to Learn a Codebase: Build a Visualizer
53 points
4 hours ago
| 7 comments
| jimmyhmiller.com
| HN
tclancy
36 minutes ago
[-]
This is an interesting approach. I think, in a way, it mirrors what I do. Having contracted for much of my career, I’ve had to get up to speed on a number of codebases quickly. When I have a choice of how to do this, I find a recently closed issue and try to write a unit test for it. If nothing else, you learn where the tests live, assuming they exist, and how much of a safety net you have if you start hacking away at things. Once I know how to add tests and run them (which is a really good way to deal with the codebase setup problem mentioned in the article because a lot of onboarding docs only get you to the codebase running without all the plumbing you need), I feel like I can get by without a full understanding of the code as I can throw in a couple of tests to prove what I want to get to and then hope the tests or CI or hooks prevent me from doing A Bad Thing. Not perfect and it varies depending on on how well the project is built and maintained, but if I can break things easily, people are probably used to things breaking and then I have an avenue to my first meaningful contribution. Making things break less.
reply
hks0
37 minutes ago
[-]
I always thought to do this visualization in 3d and maybe with VR. Not sure how useful or pleasing experience it would be. Kudos to the author of the project to get this done!
reply
avaer
15 minutes ago
[-]
I got Minority Report vibes.

This kind of approach might be what (finally) unlocks visual programming?

I feel like most good programmers are like good chess players. They don't need to see the board (code). But for inputting the code transformation into the system this might be a good programmer's chessboard.

Though to make it work concretely for arbitrary codebases I feel like a coding agent behind the scenes is 100% required.

reply
mathgeek
7 minutes ago
[-]
> I feel like most good programmers are like good chess players.

A specific type or area of developers, I'd say. There are many types and not all of them require understanding sizeable code bases to do their work well.

reply
FailMore
2 hours ago
[-]
The building of the visualiser was less interesting to me than the result and your conclusion. I agree that finding new ways to ingest the structure and logic of software would be very useful, and I like your solution. Is there a way to test it out?
reply
luxurytent
47 minutes ago
[-]
This may be where AI coding tools unlock us. Being able to build tooling against novel concepts that change how we approach reading and writing code. I like it!
reply
Charon77
1 hour ago
[-]
In reverse engineering we often use Graph View to see execution flow as well. Glad to see it being used elsewhere
reply
touristtam
34 minutes ago
[-]
Do you automate that? If so what tooling do you use?
reply
Pay08
26 minutes ago
[-]
IDA does it by default, for example.
reply
TonyStr
59 minutes ago
[-]
You are so lucky to have git history and issues to work from!
reply
hxugufjfjf
1 hour ago
[-]
Cool project! Would you be willing to share the source code?
reply