Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
181–190 of 227 posts
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#182Earlier quoted context omitted.
> I feel like the OS window manager should provide this kind of experience GIMP (the OSS Photoshop-style tool) had this idea for literally over a decade and eventually gave up on it because they never got it to work well.
They didn't give up on it, they simply added alternative options for those that didn't like it.
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#183The landing demo really needs to show off the "infinite" part, instead it's just showing that windows in windows are clutter and need manual resizing to fit inside the box. E.g. show how it helps structure clusters of a hundred files all open at the same time, on an infinite canvas, in a way that is quickly traversed?
This is good feedback. The problem we encountered is that everything gets incredibly tiny if you zoom out, but we'll iterate on making the landing demo better.
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#184Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#185Earlier quoted context omitted.
This appears to run within VSCode from the demo videos, as opposed to being standalone. You get everything you get there. If you use Idea tools you're out of luck I guess.
> out of luck Idea can already do everything Haystack can do (open several editor windows, only open single method, code navigation, callers...). On large screens (quad 32" 4k) it is quite useful. But a bit more refined experience would be nice.
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#186This looks really interesting and well thought out. Nonetheless, I feel like the OS window manager should provide this kind of experience, with appropriate hooks so that an IDE can implement this sort of experience with native windows. I really liked using PaperWM¹ for a while, however, I'm still waiting for it to get more stable. Another system that is sort of similar to this concept, Pipeworld² (part of the Arcan p…
OS windows are a hindrance for any workflow needing semi-permanent layout. It's ok to place two or three monolithic apps side by side, and maybe to pull apart separate working sessions at different virtual spaces. It also requires constant bookkeping to clean up all the individual windows you no longer need. That's very different from a spatial layout, where you can juxtapose related code elements near each other, an…
Further, just from the shown animation I can already see the same problems you'd encounter with a lot of screen space and old style window managers: you grow tired _very fast_ of moving and resizing additional windows yourself to fit more on the screen. "Maximize (on current screen)" is the only automation step in this direction and it is decades old. Windows' "snap to edges" is a semi-manual attempt at assisted window management.
* in Win32 terms, a rectangle encompassing the entire region with all visible screens
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#187Use case 1, which you solve, is traversing your own - rather large - code base to do editing, but then there is also the usecase of traversing a new code base base and understanding it by reading/writing a unit test. And also the case of a person who is new to a language but is trying to understand a project. All while that memory pressure is causing him to forget/tire.
In general, I feel one comprehensive way to solve this is using the Theory Of Mind idea from AI-Planning:
1. Set the goal and subgoal of what you are trying to do: Typically these are: Edit code base to add feature, Edit, the code base to add tests, Understand code base by reading/executing a test. But there could be more based on goals and intentions of the person reading the code. These goals come with a set of Actions the system is capable of.
2. Your system can generate/propose a set of actions to meet that goal. Starting with the basics. LLMs could be used to generate "ideas" based on the goals which could be converted to a formal plan which could then be presented to a human in NL [1]. These plans could be just steps based on call graphs at first(very deterministic). But it could also mean that changes could affect other functionalities that you previously understood and now the understanding is obsolete because of those changes. Implementing an Agent that knows what you know and doing it well is a Theory of Min(ToM) implementation that is the holy grail of AI.
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#188I published a paper comparing navigation time with a canvas-based editor (Code Bubbles) vs. traditional tab-based editor (Eclipe) vs. a carousel-based editor (Patchworks, a tool I designed). We found the canvas provided too much freedom. https://austinhenley.com/pubs/Henley2014CHI_Patchworks.pdf
This is cool - I haven’t really thought much about the spatial organization of my IDE before. Reflecting on it now, I realize I don’t even use the tabs in VS Code anymore because I have way too many files open. I just look at one file at a time, and when I need to switch I use Cmd-P to search or jump between recent files. Works well but requires me to keep the names of files/directories in my head all the time.
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#189Earlier quoted context omitted.
This is cool - I haven’t really thought much about the spatial organization of my IDE before. Reflecting on it now, I realize I don’t even use the tabs in VS Code anymore because I have way too many files open. I just look at one file at a time, and when I need to switch I use Cmd-P to search or jump between recent files. Works well but requires me to keep the names of files/directories in my head all the time.
I mainly use ctrl-tab to switch between tabs for the same reason. Recently active tabs are first on the list so it's a fast way to switch between recent tabs. For not-recent tabs, I still don't use the tab bar but press ctrl-tab and then select a file using mouse in the ctrl-tab dialog (or just tabbing many times)
Re: Show HN: Haystack – an IDE for exploring and editing code on an infinite canvas
#190This is really cool! I like the fact that when you navigate to a method/declaration/whatever, it only contains the relevant snippet, rather than opening a secondary tab with the whole file scrolled to where the definition is. I often end up in a situation where I keep losing track of whatever method I'm reading since I need to compare where a method is called vs its definition, which is frustrating. I like that I can…
I see why you like it, but I suspect it could be sum negative in a long run. I believe it's beneficial to just be aware of what and where is in the code. Can it be that few years went with a project, and you still don't know what all those files are about because you has been working only with small chunks?