Settings

Theme

Ask HN: What would an IDE built for the Apple Vision Pro look like?

37 points by simse 3 years ago · 49 comments · 1 min read


The OS for Apple Vision Pro brings a new design language focusing on depth and utilizing space beyond a square screen.

If IDEs weren't confined to a 2D window, what would it look like? Are there any features you can think of that would make AR coding more productive than simply on a monitor?

tikimcfee 3 years ago

Can I throw my hat in the ring? I’ve been working on this for.. a long time.

AR VR iOS and macOS app for arbitrary code rendering in 3D space. Terminal like rendered glyph by glyph means perfect control over ever mesh and texture.

The iOS demo is fun. You can walk around your code like an art museum, draw lines of executed traces, and perform visual hierarchical search.

https://github.com/tikimcfee/LookAtThat

  • juliusgeo 3 years ago

    Wow, this looks very impressive. Going to check it out. Is there any plan to support languages other than Swift? I’m assuming that has quite a few technical hurdles associated.

    • tikimcfee 3 years ago

      Thank you very much, and absolutely! My hope is to convert to a treesitter implementation instead of the SwiftSyntax direct parser. There’s a file filter in there that can be turned off to load any particular file up for viewing, but the analysis stuff won’t work of course.

      The tracing is more complicated. SwiftTrace is a bit tangly, and I’m still trying to think of a way for folks to “drop in” something to their code base to produce a structured set of traces. There’s a file-backed array that is is used to read compacted run logs, so as long as I can can get the format right, it should work for most cases. I even experimented with a syntax rewriter to insert logs!

      What languages do you use? What would you like to see supported?

      • juliusgeo 3 years ago

        Thanks for the reply! The main reason I ask that is I primarily use Python and Julia, which have pretty decent tracing abilities but there are still a lot of rough edges when it comes to visualizing those traces. Particularly with Python, the default tracing packages such as cProfile are quite lacking in terms of support for visualizing and exploring the output of the profiling (most likely by design, but still frustrating nonetheless). It's necessary to bring in Snakeviz for visualizing, and it is quite good, but the HTML UI that it is run has very limited options when it comes to distinct ways of visualizing the data.

      • LordDragonfang 3 years ago

        If you're taking suggestions for languages, support for javascript+html would also be a nice addition, since it's the de facto common language at this point.

        • tikimcfee 3 years ago

          I’m with you 100% here. I don’t have support for syntax yet, and I’m going to see what I can do about that soon. The rendering support is all there, at least, and I need to make sure I call that out too. Thank you for the ping! Please feel free to keep in touch with other ideas or brain dumps!

  • simseOP 3 years ago

    Looks very interesting, thanks for sharing this.

    • tikimcfee 3 years ago

      You’re quite welcome, I’m all too glad to share my obsessions, haha. Let me know if you’re interested in a little personal demo of the latest stuff- the Metal based implementation I’ve been cooking up has pretty awesome performance, on the order of millions of glyphs at 60+ FPS.

      Thanks for asking around and letting me share

thesuperbigfrog 3 years ago

Most programming work is still text editing with various amounts of debugging, refactoring, and autocompletion.

It is not obvious to me how an AR interface would make a difference other than more virtual screen real estate. You would still need a way to enter text, build code, run tests, etc. This means a keyboard and pointing device (mouse, trackpad, etc.) are still needed unless something else can do it better.

Granted, for the same cost as the Vision Pro you could get several large, high resolution monitors and have lots of screen to work on.

  • kabirgoel 3 years ago

    > Most programming work is still text editing [...]

    Text no longer needs to be the primary way of conveying programs. There are practical reasons text works best on screens, but if your coding environment is boundless then there’s no reason to believe you can’t do fancier things like direct manipulation of ASTs pretty easily. Imagine "grabbing" an AST node and attaching it to a different parent, all in space.

    Beyond simple AST manipulation, the Vision Pro will probably enable Dynamicland-esque "programming spaces" where you manipulate objects in your virtual environment to construct programs.

    • stoniejohnson 3 years ago

      This seems like a very literal interpretation of "spatial computing"; I don't think anyone will be physically manipulating ASTs with any regularity.

    • pixel_tracing 3 years ago

      This sounds neat and all but I can “create” much faster with my fingers.

      I think it boils down to it being a “programming language”

      What we need for AR / VR is “programming gestures”

      This way there is no syntax but visual mediums you manipulate via gestures. And this would get compiled to a binary which can be executed.

    • jazzyjackson 3 years ago

      This was one of my first thoughts when I tried Hololens back in the day -- it would be great to watch the execution of my software, or visualize all the messages being passed between functions or different services on my network, and go all in on block-based programming in 3D (trees can be packed more densely in 3 dimensions, even moreso in 4)

      I was expressing this to a friend who was involved in VR in the 80s (VPL research) and was simultaneously elated and disheartened to learn that they had the same idea ! Googling around for it now I suppose he was telling me about "Body Electric" or "Bounce" and looks like any other 2D data flow language [0]. Maybe just ahead of its time. A patent about it [1] describes the problem with wires going everywhere and needing to provide the user the option to hide any set of connections. I'd want to accomplish this by representing the whole connectome in 4D space, and then shifting the projection into 3D to hide and reveal a subset of connections. Further visual filtering could be performed with a depth of field focus and fog effect, controlling all these parameters to isolate the subset of the system you want to inspect.

      [0] http://www.art.net/~hopkins/Don/lang/bounce/SpaceSeedCircuit...

      [1] https://patents.google.com/patent/US5588104 (bonus, figure 3 shows the dataglove as just a hand plugging into the PC)

    • ehutch79 3 years ago

      Literal spaghetti code?

      How do you deal with references? Like defining a variable and using it later in multiple places?

    • klyrs 3 years ago

      We already have plenty of these, and they suck at doing anything serious.

      • jazzyjackson 3 years ago

        Sounds like a good reason to try to do better. Unless you suppose the UI of programming is solved and everyone who wants to have control over a machine just needs to bite down and learn vim ?

        • klyrs 3 years ago

          Grabbing AST nodes and dragging them around is never the bottleneck when I'm programming. Cut/paste is plenty efficient even in notepad and doesn't require gross arm movements. Feel free to try it, but I maintain doubt that a literal forest of code is going to be anything more than a gimmick. By all means, prove me wrong!

          • jazzyjackson 3 years ago

            :D I'm with you on gross arm movements, I'm just trying to expand the code-viewing experience beyond "strings stacked on top of one another"

            While all the VR goggles try to embed your body into virtual space (putting the graphics "around you") I'm prototyping with a stereo-microscope, with it's nice heavy knobs for course and fine adjustment, such that you're looking into the virtual world from the outside. No illusions to pull off, no motion sickness, and nothing strapped to your face.

  • kevinmershon 3 years ago

    Agreed. So, in a word, Emacs. It's just Emacs buffers everywhere

  • veidr 3 years ago

    I do have several large high-resolution monitors (8K, 4K, 4K, 4K, and a small 3K), and I have a workflow that relies on that.

    But that setup definitely doesn't fit in a backpack. So the idea of duplicating this inside a spatial computing environment is really exciting, even though everything released so far doesn't quite cut it.

    But aside from the portability angle, another way to leverage the possibilities would be make the OS, probably using applied statistics trained-model techniques, really good at helping move the 2D planes through space (basically, re-arranging the windows or "screens"). 4 monitors is really all I can get on my desk. In theory I could like, ceiling-mount a row of three more above the main row of left-center-right but IRL that would be way too much work and too low-benefit to be worth doing.

    But in a virtual, spatial-compute environment, all kinds of things might be worth doing. Maybe I have 40 or 50 2D planes for editors, debuggers, design schematics, and a team of flying robot ninjas with jetpacks who can instantly move them in and out of position.

    The main rationale for a multi-monitor setup like mine is to "see everything at once". I do know how to press Alt-Tab and use virtual desktops, and I understand some people even prefer that workflow.

    But for me the ability to keep the main work front and center, but everything in my field of view and glanceable, eliminates hundreds of instances of what would otherwise be window/desktop switching, every day.

    If I had Jedi powers, would I just fling a few more monitors to hover in the corner of my room near the ceiling? Sure I would. Why do I need btop taking up space on my main screens? Or my chat thing that I will only use a couple times?

    The only reason is that I only have these monitors, right on my desk. In theory I could like, wall-mount more displays for those things I don't really care about, but the effort and time investment to do that is totally not worth it.

    But in theory a spatial compute environment could go hog-wild putting less relevant info farther away, but still in view, using space in the room that we just can't practically make use of today. All my screens are 60cm or so from my face.

    I suspect we will see novel ideas around how to position these 2D planes, and use applied statistics/trained-model techniques to make the OS better at helping manage them (in a useful, but perhaps also delightful, way) before we transcend the 2D-plane "window" metaphor.

    I also don't see avoiding keyboard, for programming or other text-input-heavy tasks. The mouse, though... I mean, we'll see how the eye tracking works once they really ship it. I could see the mouse becoming obsolete on computers that are 20mm away from your eyeballs and know exactly what you are looking at....

colinplamondon 3 years ago

I would expect extracting out more of the meta-logic via GPT, and showing relevant panes dynamically.

If you get an error, automatically search for the answer and propose the change.

If you add a new flow uncovered by tests, propose the test.

Generally, have panes that are dynamic to what you are doing, and tightly couple them.

I could imagine looking at different zoom levels of a code file, folder, or architecture, and working primarily on abstractions, approving / rejecting the resulting proposed edits.

Strategic coding more akin to a game like Supreme Commander or Planetary Annihilation.

  • icapybara 3 years ago

    This sounds kind of frustrating because it would be hard to predict or trigger. “Last time I ran into this error a super helpful window popped up, this time I’m getting nothing?”

lurker137 3 years ago

I think it might make large scale code visualization in a similar way to how SourceTrail does it more feasible: https://github.com/CoatiSoftware/Sourcetrail

jungturk 3 years ago

Thinking about depth:

Using it to present stacks of information (version history, undo/redo chain)

Using it to render background information that doesn't need to be swapped into the foreground to be useful - the architecture/module that the code you're working in serves, the remote services that fulfill certain commands, the test coverage available to you in this module.

ehutch79 3 years ago

Neovim, but curved slightly

jones1618 3 years ago

I'd want a 3D node editor interface much like Blender's texture or geometry creation interface. The nodes would be 3D objects (cubes, cylinders, etc) and nested groups of objects w/ physical ports that could be wired together.

Nodes would include class/object/method nodes w/ code blocks. So, an important AR/VR UX feature would be the ability to collapse/dive-into nodes & groups of nodes much like code-outliners in 2D IDEs.

Another awesome feature would be the ability to affix dials/gauges and other displays to the outside of nodes & node groups that would provide indicators of the unit's state: How "full" is a collection node, how often/frequently was this node invoked, the health of the node (errors, exceptions, slow-execution times), etc.

satvikpendem 3 years ago

It would look like a 3D world, like this: https://www.youtube.com/watch?v=z4FGzE4endQ

zingerlio 3 years ago

I think a robust eye-tracking functionality for code editors has a ton of potential for the Vision Pro. A lot of the barriers and benefits of vim/emacs style navigation can be replaced or augmented by smart, interpretive eye tracking. It’s like digging into the future where machine starts to read our minds, and an intimate integration of where you look is a big step.

esafak 3 years ago

"Design for spatial input": https://developer.apple.com/videos/play/wwdc2023/10073/

armchairhacker 3 years ago

More open windows.

But in all seriousness, you can have a tree of small code windows connected by various dependencies. So it will be much easier to see a piece of code and it’s uses / definitions, and thus understand a codebase’s architecture

mindcrash 3 years ago

I think it will be a wholesome natural interface, so I imagine some form of a LLM will be included which can be used to actually make the interface elements work and connect them to the outside world, while having the possibility to design and modify the interface you are building with your hands/fingers (think Interface Builder, but spatial).

If they manage to pull something like this off and be first to market I guess Magic Leap, HoloLens, and whatever Meta is cooking up (if they still are doing something in that space anyway) will very likely be pretty much dead, by the way.

giantg2 3 years ago

I've heard about people using Unity for other AR/VR stuff. Not sure if they might expand to include it. I've played around with Unity a little bit. I guess we have to see if Apple is using it's own proprietary stuff (as usual), or if they will be closer to the industry standards, or at least providing support for including their language in existing IDEs.

solomatov 3 years ago

> would make AR coding more productive than simply on a monitor

One obvious thing is much more space. I.e. unlimited number of extra monitors, or entities which work as such.

sturza 3 years ago

I imagine something like https://pharo.org/

tetek 3 years ago

Vim but you can quit with hand gesture

womitt 3 years ago

Make the window active you look at - tried to make it with oculus developer kit didn't work that time, maybe with this hw

dzhiurgis 3 years ago

Go to definition/usage opens new window but lets you easily toggle between previous windows easily (using eyeballs)

giancarlostoro 3 years ago

Sounds to me like you want to use the old Delphi IDE where all the editor windows are separate.

Austin_Conlon 3 years ago

Xcode's view debugger in 3D would be great.

vdievsowgdj 3 years ago

just look at what IDEs that runs exclusively on ios are like: crap.

nobody invest into a closed platform. i expect jetbrains to came up with something marvelous for ar/vr, but it will run on the upcoming version of Microsoft or HP glasses. you know, the only ones today that works just like an external monitor without a locked in ecosystem like apple or facebook.

the silly apps and games and such will net millions tho.

  • veidr 3 years ago

    I just want VS Code floating in my 100-room magical memory palace mansion.

    With tools like Remote Development extensions, VS Code already works superbly from a desktop or laptop, editing locally but using a remote machine (your own or some cloud thing) for the filesystem, git, compilation, dependency management, development server if its a web/network app, etc.

    It also works pretty great on the iPad, other than the tiny screen (which yeah, is a dealbreaker IMHO, but wouldn't be on a many-screens device like Vision Pro).

    It also works pretty fabulously in a web browser with that same setup (e.g. Github Codespaces, but you can roll your own, too).

    I doubt we will see a great IDE that does everything locally on the device. But a great IDE client is eminently doable; it's basically already done.

    The IDE is one application type where the tooling around offloading all the compute, and just keeping the UI local, has flourished. VS Code was the first to really do it so it was just as good or better as developing 100% locally. JetBrains is right behind them. Others are doing it too.

    This was the only way iPad OS became usable as development machines. I don't expect there to be any good native IDEs for Vision OS, either.

    But if you can deal with requiring a network connection, and using VS Code, you will be able to use Vision Pro to develop on a remote Linux machine (or Mac or Windows, if that is your thing).

    Whether JetBrains will make an IDE client for it, enable third parties to make that, or not support it at all remains to be seen, I guess.

  • omeze 3 years ago

    This is flame-baity but honestly what Id also expect. No one is going to invest in developing IDEs for this thing to rival VS Code or whatever if Apple wants a stranglehold on its ecosystem. Maybe there will be extensions to existing editors since people can ise it as a display extension for their macs. We didn’t see this happen on windows with game dev and the quest though.

    • tikimcfee 3 years ago

      I mean.. I’ve been doing exactly this for a while, and I fully plan on releasing something when I can actually find the time to superhero it to completion or find help.

      https://github.com/tikimcfee/LookAtThat

      • omeze 3 years ago

        This is very cool!

        I was thinking of a VS code extension that lets me put files or directories “physically” on my desk. Itd be emulating the way that I read text books. Instead of keeping notes and bookmarks physically in the book I could drop sticky notes that represent files directly on my desk and show a preview by by just shifting my eye focus to the AR/VR note.

        • tikimcfee 3 years ago

          Wow this is an awesome use case I hadn’t thought of and it makes so much darn sense! In fact, the APIs include automatic plane detection, which means being able to look at your table, directly in front of you and “popping a note down“ shouldn’t be too terribly impossible! In fact I can see you doing things like duplicating snippets of code, and putting the scratchpad next to your monitor, your keyboard, or anywhere else you would stick a stickie. What a great idea, I hope you don’t mind if I ruminate on it some more!

  • simseOP 3 years ago

    Totally. Any iOS, or in this case realityOS, IDE would necessarily have to be remote only to actually be useful.

Keyboard Shortcuts

j
Next item
k
Previous item
o / Enter
Open selected item
?
Show this help
Esc
Close modal / clear selection