Y
HN HRCB new | past | comments | ask | show | by right | domains | dashboard | about hrcb
+0.16 Untapped Way to Learn a Codebase: Build a Visualizer (jimmyhmiller.com)
243 points by andreabergia 4 days ago | 45 comments on HN | Mild positive Editorial · vv3.4 · 2026-02-24
Article Heatmap
Preamble: ND — Preamble Preamble: No Data — Preamble P Article 1: ND — Freedom, Equality, Brotherhood Article 1: No Data — Freedom, Equality, Brotherhood 1 Article 2: +0.05 — Non-Discrimination 2 Article 3: ND — Life, Liberty, Security Article 3: No Data — Life, Liberty, Security 3 Article 4: ND — No Slavery Article 4: No Data — No Slavery 4 Article 5: ND — No Torture Article 5: No Data — No Torture 5 Article 6: ND — Legal Personhood Article 6: No Data — Legal Personhood 6 Article 7: ND — Equality Before Law Article 7: No Data — Equality Before Law 7 Article 8: ND — Right to Remedy Article 8: No Data — Right to Remedy 8 Article 9: ND — No Arbitrary Detention Article 9: No Data — No Arbitrary Detention 9 Article 10: ND — Fair Hearing Article 10: No Data — Fair Hearing 10 Article 11: ND — Presumption of Innocence Article 11: No Data — Presumption of Innocence 11 Article 12: ND — Privacy Article 12: No Data — Privacy 12 Article 13: ND — Freedom of Movement Article 13: No Data — Freedom of Movement 13 Article 14: ND — Asylum Article 14: No Data — Asylum 14 Article 15: ND — Nationality Article 15: No Data — Nationality 15 Article 16: ND — Marriage & Family Article 16: No Data — Marriage & Family 16 Article 17: ND — Property Article 17: No Data — Property 17 Article 18: ND — Freedom of Thought Article 18: No Data — Freedom of Thought 18 Article 19: +0.23 — Freedom of Expression 19 Article 20: ND — Assembly & Association Article 20: No Data — Assembly & Association 20 Article 21: ND — Political Participation Article 21: No Data — Political Participation 21 Article 22: ND — Social Security Article 22: No Data — Social Security 22 Article 23: ND — Work & Equal Pay Article 23: No Data — Work & Equal Pay 23 Article 24: ND — Rest & Leisure Article 24: No Data — Rest & Leisure 24 Article 25: ND — Standard of Living Article 25: No Data — Standard of Living 25 Article 26: +0.18 — Education 26 Article 27: +0.10 — Cultural Participation 27 Article 28: ND — Social & International Order Article 28: No Data — Social & International Order 28 Article 29: ND — Duties to Community Article 29: No Data — Duties to Community 29 Article 30: ND — No Destruction of Rights Article 30: No Data — No Destruction of Rights 30
Negative Neutral Positive No Data
Aggregates
Weighted Mean +0.16 Unweighted Mean +0.14
Max +0.23 Article 19 Min +0.05 Article 2
Signal 4 No Data 27
Confidence 5% Volatility 0.07 (Low)
Negative 0 Channels E: 0.6 S: 0.4
SETL +0.09 Editorial-dominant
Evidence: High: 0 Medium: 2 Low: 2 No Data: 27
Theme Radar
Foundation Security Legal Privacy & Movement Personal Expression Economic & Social Cultural Order & Duties Foundation: 0.05 (1 articles) Security: 0.00 (0 articles) Legal: 0.00 (0 articles) Privacy & Movement: 0.00 (0 articles) Personal: 0.00 (0 articles) Expression: 0.23 (1 articles) Economic & Social: 0.00 (0 articles) Cultural: 0.14 (2 articles) Order & Duties: 0.00 (0 articles)
Domain Context Profile
Element Modifier Affects Note
Privacy
No privacy policy or data collection practices observable on-domain.
Terms of Service
No terms of service observable on-domain.
Accessibility +0.05
Article 2
Page includes dark mode support and basic semantic HTML, indicating moderate accessibility consideration.
Mission
No explicit mission statement observable on-domain.
Editorial Code
No editorial code of conduct observable on-domain.
Ownership
Personal blog; ownership not explicitly stated but implied by domain.
Access Model +0.10
Article 19
Content appears freely accessible without paywall or registration requirement.
Ad/Tracking
No advertising or tracking observable in page content.
HN Discussion 18 top-level comments
FailMore 2026-02-20 10:53 UTC link
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?
Charon77 2026-02-20 11:59 UTC link
In reverse engineering we often use Graph View to see execution flow as well. Glad to see it being used elsewhere
luxurytent 2026-02-20 12:28 UTC link
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!
hks0 2026-02-20 12:38 UTC link
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!
tclancy 2026-02-20 12:39 UTC link
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.
Quiark 2026-02-20 13:26 UTC link
Do you guys remember the smalltalk toolkit posted here a while ago which their creators made specifically for help understanding new codebases?
satheeshds 2026-02-20 13:34 UTC link
- But I'll admit, this isn't precisely how I would do it today

How would you do it today?

esafak 2026-02-20 14:24 UTC link
A use case that interests me is dynamic visualization for debugging, when there are interacting systems.
hyperific 2026-02-20 14:36 UTC link
its-kostya 2026-02-20 14:43 UTC link
I am quite skeptical and reserved when it comes to AI, particularly as it relates to impacts of the next generation of engineers. But using AI to learn a code base has been life-changing. Using a crutch to feel your way around. Then ditching the crutch when things are familiar, like using a map until you learn the road yourself.
catapart 2026-02-20 18:23 UTC link
Your visualizer looks great! I really like that it queues up tasks to run instead of only operating on the code during runtime attachment. I haven't seen that kind of thing before.

I built my own node graph utility to do this for my code, after using Unreal's blueprints for the first time. Once it clicked for me that the two are different views of the same codebase, I was in love. It's so much easier for me to reason about node graphs, and so much easier for me to write code as plain text (with an IDE/language server). I share your wish that there were a more general utility for it, so I could use it for languages other than js/ts.

Anyway, great job on this!

glaslong 2026-02-20 19:02 UTC link
Very cool! For all its faults, seeing control and value change flows through execution is one of the things I really liked about Unreal's Blueprint viz scripting system. This looks like a better take on that.

And for huge git repos I always like to generate a Gource animation to understand how the repo grew, when big rearrangements and refactors happened, what the most active parts of the codebase are, etc.

gowld 2026-02-20 19:21 UTC link
Where's the visualizer the blog post talks about?

How is it different from regular code browser/indexers?

cyberpunk 2026-02-20 20:44 UTC link
Doesn’t anyone use debuggers anymore?

When I have a codebase I dont know or didn’t touch in some time and there’s a bug, first step is reproduce it an then set a breakpoint early on somewhere, crab some coffee and spend some time to step through it looking at state until I know what’s happening and from there its usually kind of obvious.

Why would one need a graph view to learn a codebase when you can just slap a red dot next to the route and step a few times?

criddell 2026-02-20 21:52 UTC link
Is this similar to what you can get with Doxygen?

https://en.wikipedia.org/wiki/Doxygen#/media/File:Doxygen-1....

indiestack 2026-02-20 23:02 UTC link
The unit test approach from the contractor in the thread is gold: "find a recently closed issue and try to write a unit test for it." This forces you to understand the test infrastructure, the module boundaries, and the actual behavior — not just the code structure.

I'd add one more technique that's worked well for me: trace a single request from HTTP endpoint to database and back. In a FastAPI app, that means starting at the route handler, following the dependency injection chain, seeing how the ORM/query layer works, and understanding the response serialization. You touch every layer of the stack by following one real path instead of trying to understand the whole codebase at once.

Visualizers are nice for the "big picture" but they rarely help you understand why the code works the way it does. The why is in the git history and the closed issues, not in a dependency graph.

socketcluster 2026-02-21 01:35 UTC link
The problem with most people's code is that it's full of unnecessary complexity and creates a ton of work. I swear at least 90% of projects from 'top' companies, by 'top' engineers is full of unnecessary complexity which slows everything down significantly. They literally need a team of 20+ engineers to do the work which could have been done more effectively with 1 good engineer.

Based on modern metrics for code quality, almost nobody will realize that they're looking at bad code. I've seen a lot of horrible codebases which looked pretty good superficially; good linting, consistent naming, functional programming, static typing, etc... But architecturally, it's just shockingly bad; it's designed such that you need to refactor the code constantly; there is no clear business layer; business logic traverses all components including all the supposedly generic ones.

With bad code, any business requirement change requires a deep refactoring... And people will be like "so glad we use TypeScript so that I don't accidentally forget to update a reference across 20 different files required as part of this refactoring" - Newsflash: Your tiny business requirement change requires you to update 20+ files because your code sucks! Sure TypeScript helps in this case, but type safety should be the least of your concerns. If code is well architected, complex abstractions don't generally end up stretching across more than one or two files.

There's a reason we say "Leaky abstraction" - If a complex abstraction leaks through many file boundaries; it's an abstraction and it's leaky!

xtiansimon 2026-02-21 14:36 UTC link
> "...how I learn an unfamiliar codebase"

There should be more writing and discussion in this area for several reasons. Simplest reason because we're curious about how others do this. But also because it's an interesting topic, IMHO, because layers of abstraction--code designed to run other code--can be difficult to talk about, because the referents get messy. How do you rhetorically step through layers of abstraction?

Score Breakdown
ND
Preamble Preamble

Content is technical tutorial with no observable alignment or misalignment with UDHR preamble values.

ND
Article 1 Freedom, Equality, Brotherhood

No observable content addressing equal dignity and rights.

+0.05
Article 2 Non-Discrimination
Low Practice
Editorial
ND
Structural
+0.05
SETL
ND
Combined
ND
Context Modifier
ND

Dark mode accessibility feature represents mild positive structural practice for non-discrimination; modest evidence.

ND
Article 3 Life, Liberty, Security

No observable content addressing right to life, liberty, security.

ND
Article 4 No Slavery

No observable content addressing slavery or servitude.

ND
Article 5 No Torture

No observable content addressing torture or cruel treatment.

ND
Article 6 Legal Personhood

No observable content addressing right to recognition as person before law.

ND
Article 7 Equality Before Law

No observable content addressing equality before law.

ND
Article 8 Right to Remedy

No observable content addressing effective remedy for rights violations.

ND
Article 9 No Arbitrary Detention

No observable content addressing arbitrary arrest or detention.

ND
Article 10 Fair Hearing

No observable content addressing fair trial or judicial process.

ND
Article 11 Presumption of Innocence

No observable content addressing criminal procedure or presumption of innocence.

ND
Article 12 Privacy

No observable content addressing privacy or family interference.

ND
Article 13 Freedom of Movement

No observable content addressing freedom of movement.

ND
Article 14 Asylum

No observable content addressing asylum or refugee protection.

ND
Article 15 Nationality

No observable content addressing nationality or state membership.

ND
Article 16 Marriage & Family

No observable content addressing marriage or family rights.

ND
Article 17 Property

No observable content addressing property rights.

ND
Article 18 Freedom of Thought

No observable content addressing freedom of thought, conscience, religion.

+0.23
Article 19 Freedom of Expression
Medium Advocacy Practice
Editorial
+0.15
Structural
+0.10
SETL
+0.09
Combined
ND
Context Modifier
ND

Content demonstrates freedom of expression through detailed technical writing sharing knowledge. Free access without gatekeeping reflects positive structural stance on information freedom.

ND
Article 20 Assembly & Association

No observable content addressing freedom of assembly or association.

ND
Article 21 Political Participation

No observable content addressing political participation or voting.

ND
Article 22 Social Security

No observable content addressing social security or welfare.

ND
Article 23 Work & Equal Pay

No observable content addressing work, employment, or labor rights.

ND
Article 24 Rest & Leisure

No observable content addressing rest, leisure, or working hours.

ND
Article 25 Standard of Living

No observable content addressing standard of living, health, or social services.

+0.18
Article 26 Education
Medium Advocacy Practice
Editorial
+0.20
Structural
+0.15
SETL
+0.10
Combined
ND
Context Modifier
ND

Content promotes education and skill development through technical knowledge sharing. Explicit teaching methodology reflects commitment to education accessible to readers.

+0.10
Article 27 Cultural Participation
Low Framing
Editorial
+0.10
Structural
ND
SETL
ND
Combined
ND
Context Modifier
ND

Content engages with software development community and intellectual endeavors, though not explicitly cultural. Modest positive framing.

ND
Article 28 Social & International Order

No observable content addressing social and international order to realize rights.

ND
Article 29 Duties to Community

No observable content addressing duties to community or limitations on rights.

ND
Article 30 No Destruction of Rights

No observable content addressing prevention of destruction of rights.

About HRCB | By Right | HN Guidelines | HN FAQ | Source | UDHR
build 40c3f5d+6bbr · 2026-02-25 01:36 UTC