Hacker News new | ask | show | jobs
by tikimcfee 39 days ago
I have a working fully 3D glyph based text rendering system I can't seem to get people to look at.

It's this. Every character is a 3d placed quad, instanced rendered, so you get tens of millions and then some. They are individually addressable and mutable like any polygon. I use it to render entire GitHub repos in one go. I have two versions, native Apple and web. Web has the basics of an ide setup. Would love insight or thoughts.

https://ivanlugo.dev/ide

5 comments

Is there a reliable way to pan around? Middle click + drag doesn't pan if my screen is covered by an object, it just moves the object itself. Scrollwheel pans up and down but I can't figure out how to go left and right. The minimap is too coarse - when I'm zoomed in close enough to read any text, very tiny movements of my mouse on the minimap pan around massively, too massively to be useful.
Two things, one is wrote, the other is direct: Thank you, sincerely, an immeasurably appreciative amount for trying something new, sharing your time and opinion, and being honest with it. This is how we become better tool builders and engineers: different perspectives, different ways of thinking, and honesty with others. Again - thank you.

Ok, now for you: Interaction is absolutely not ideal. I've tried a number of 'defaults' across the years and across platforms, and this isn't the one I want to settle on. At the moment, the 'shortcuts' and bindings page is also a bit out of date, but you can change scroll / zoom directions with keyboard modifiers, and they keyboard itself (if on a device that has one) can be used to navigate around. Agreed that scaled interaction is the trick to this when reading individual files, and that's why I have tried to allow this to be configurable and dynamic while testing. Some people want big picture motions first to get a mental map, some want to focus on small groups of individual files to read. I'll be taking this into account!

I opened and it said to use a repo tab. There are no tabs so I pushed a button. It had a list with Linux so I clicked that. It redirected to a 404 page on github and I gave up.

I don’t know what this is supposed to do, let alone how to use it. But I looked at it for you!

There's a menu bar on the left in which the third option is labelled repository, no?

firefox 150 here.

Not on mobile safari
Two things, one is wrote, the other is direct: Thank you, sincerely, an immeasurably appreciative amount for trying something new, sharing your time and opinion, and being honest with it. This is how we become better tool builders and engineers: different perspectives, different ways of thinking, and honesty with others. Again - thank you.

For you: The 'tab' layout is pretty atrocious even as a one-shot run through of fitting most of the control areas to mobile and desktop screens. It's not easy, and a lot of 'feature' bloat makes it worse. Knowing what your first-time drop in was like and how you found that link is incredibly useful insight, and I'll be updating the layouts more to accompany first timers and instructions like the original source material I'm rebuilding from on the Apple side.

it opens source files in an unreadable small size, presumably to fir the whole file into the window. i can zoom in, but i can't properly scroll around or select text. and i don't see the benefit of using 3d here. it doesn't seem useful.
Two things, one is wrote, the other is direct: Thank you, sincerely, an immeasurably appreciative amount for trying something new, sharing your time and opinion, and being honest with it. This is how we become better tool builders and engineers: different perspectives, different ways of thinking, and honesty with others. Again - thank you.

For you: You're probably right about "not seeming useful", but I do wanna gently nudge you toward what this is a proof of concept about again. Most folks look at this like it's a bigger, flatter emacs/vim/Sublime/VSCode or whatever. I do support editing in my current workbranch, as well as command-based selection, but most of the work spins out because the tool is half "adopt what tools are useful to an interactive development environment of today" and "allow the display of the canvas to overlap with the spatial relationships of directories, files, and colocation to help generate mental mappings of a code space".

These things have often been in conflict, and years (decades) of prior art show this. This is my attempt at it, and since it's my 3rd attempt in twice as many years to make it work in a new environment, you're hitting this particular instance's walls. Would love more feedback or questions!

the question i am interested in is "what is your vision?". what problem are you trying to solve?

you mention "spatial relationships of directories, files, and colocation to help generate mental mappings of a code space" which i guess is the ability to zoom out and get a visual representation of the relationship as opposed to just looking at a directory tree. that makes sense. i have seen different attempts at doing that, some better than others. to make that practical however i guess it would help to be able to edit text in that space too. zoom in to one column, allow scrolling to jump from one column to the next. and then parse the code, add highlighting, connect function calls. imagine zooming out from a selected function and suddenly you get arrows from all over the codebase where that function is referenced to visualize the relationship.

as far as the proof of concept goes it shows that there are no performance issues this way (at least as far my brief test has shown), now the next step is probably to make it work practically. and for that i guess the key feature is to quickly jump around in the code.

i hope this is useful. i am less interested in IDEs myself so i looked just out of curiosity. my primary interest is in a more powerful commandline tool/terminal that can visualize files and data.

looked at it. I don't think it works, as the other person said.
Two things, one is wrote, the other is direct: Thank you, sincerely, an immeasurably appreciative amount for trying something new, sharing your time and opinion, and being honest with it. This is how we become better tool builders and engineers: different perspectives, different ways of thinking, and honesty with others. Again - thank you.

Second up: I'd love some input as to what didn't work! Did a shader fail to load? Desktop or mobile? Did you load a repository that was too large and OOM'd out in the browser? Did it cause your monitor to spin 360 degrees and speak tongues? Do tell!

It works.
Two things, one is wrote, the other is direct: Thank you, sincerely, an immeasurably appreciative amount for trying something new, sharing your time and opinion, and being honest with it. This is how we become better tool builders and engineers: different perspectives, different ways of thinking, and honesty with others. Again - thank you.

Second: Thanks for the confirmation! If you've got any thoughts or feedback, please be as direct as you'd like - I've already started cleaning up some of the more 'user friendly' notes I've been neglecting in an effort to stick to the internals.

> I use it to render entire GitHub repos in one go

Nifty.

Some scattered thoughts...

First-time visitors easily bounce away if there's friction. My experience was: After reloading the page to reread the "load a repo" message, it took a search to find it. Two-fingers unexpectedly panned not zoomed. I consulted the keyboard shortcuts found earlier. My scroll panned. Keys zoomed, but speed was limited by key autorepeat. No response when clicking on shortcuts, suggesting they can't be changed. I eventually noticed shift-two-finger zoomed.

So perhaps add an initial popup, as with browser games, giving basic orientation/keys? And perhaps have some default repo already loaded?

Is antialiasing turned off? The text is less readable than I'd expect, and there's flicker during zoom.

I didn't find the usual github-icon link to the repo. Add it?

Perhaps try google/bing maps-like zooming towards cursor location, rather than always towards center?

Perhaps clamp zoom-out and scroll so one can't reach no-text-visible blank black screen? Perhaps clamp zoom-in earlier, so "slam inward" stops short of the current one-line-high screen?

Clicking README.md brings up a 3 column render, which is too small to read on my screen without further zooming. I'm unclear on what I'd like instead.

A big picture observation. Early phone apps did skeuomorphic UIs - a calendar app might render a wire binder spine, and animate paper page turning, with sound effects. It helped onboard a user population unfamiliar with phones. We don't do that anymore. It'd be silly. Most VR UIs seem to me skeuomorphic transients. Why hobble ourselves by unnecessarily importing the severe constraints of a Euclidean physical world?

So for example, file presentation might combine content-aware and location based scaling. A README might show up with the header lines enlarged, as in some md editors, and perhaps with fisheye-like distortion (when at the top, the top is rendered normally, but with increasing shrink below). Or mix in outliner-like expand/collapse. And so on. Whatever dynamic geometries are task helpful for the human. Once text colorization is working, it might be fun to work little exercises (make videos?) - with files X and task Y, how might they be most helpfully presented? When skimming agentic markdown as it scrolls by, I keep wishing for a couple of cloud-fast small models that watch it with me, and adjust the text size/color/annotation/etc to guide my attention to notable bits.

In the vein of making functionality easy to explore, perhaps give diff a default pr?

It's neat to see a repo slurped into something like this. Thanks for sharing.