[HN Gopher] Show HN: Haystack - an IDE for exploring and editing...
       ___________________________________________________________________
        
       Show HN: Haystack - an IDE for exploring and editing code on an
       infinite canvas
        
       Hi HN, we're building Haystack Editor
       (https://haystackeditor.com/), a canvas-based IDE that automates
       the boring stuff (plumbing, refactoring, and finding code) so that
       you can focus on the exciting parts of software development! You
       can see a quick overview of Haystack at
       https://www.youtube.com/watch?v=c2uZnR5D_cc!  (It's currently only
       on Mac OS but we're working on Linux and Windows.)  Haystack was
       born out of our frustrations with working in large and mature
       codebases, specifically with navigating and editing functional
       flows (e.g. the code flow for adding an item to the Amazon shopping
       cart).  Oftentimes dealing with such flows would involve navigating
       a maze of files and functions, and making any edits would involve a
       lengthy process of doing corresponding downstream/upstream
       plumbing.  Haystack attempts to address this in the following ways:
       1. It allows you to explore your codebase as a directed graph of
       functions, classes, etc on the canvas. We feel like this better
       fits how your mind understands your codebase and helps you find and
       alter functional flows more intuitively. We especially want to
       utilize this for pull request reviews!              2. It has a
       navigational copilot that makes edits across files or functions
       much easier. After you make some changes, Haystack will try to
       predict your next action and create functions/methods or refactor
       upstream/downstream code for you. Haystack will surface these
       speculative edits on the canvas in a way that you can easily
       dismiss or incorporate them, allowing you to make large changes
       with a few clicks or keystrokes.              3. Haystack will
       utilize natural language search so you don't have to play "Where's
       Waldo" to find a functional flow in your codebase. This is coming
       soon!            We're still pretty early in development and we
       really want to perfect the experience of navigating and editing
       code on a canvas. Any feedback would be much appreciated!  PSA:
       Since Haystack is a VS Code fork, you should be able to move your
       extensions and keyboard shortcuts. Please let us know if you have
       any issues with this!
        
       Author : akshaysg
       Score  : 115 points
       Date   : 2024-07-25 13:54 UTC (9 hours ago)
        
 (HTM) web link (haystackeditor.com)
 (TXT) w3m dump (haystackeditor.com)
        
       | ReleaseCandidat wrote:
       | You should definitely check out Understand
       | https://scitools.com/features, if you haven't already.
        
         | akshaysg wrote:
         | I did not know about Understand. This is really cool -- thank
         | you! I really like how Understand enables you to understand how
         | many upstream dependencies you may need to change when
         | refactoring.
         | 
         | We hope to push it to the next level by helping do those
         | refactors for you in an understandable way!
        
           | leetrout wrote:
           | You can certainly push it a different direction with
           | accessible pricing models. No matter how cool / useful
           | Understand actually is $1,000 / year for an indie dev is too
           | high.
        
       | metaketa wrote:
       | Very cool concept! Will it be possible to make "boxes" with
       | labels/titles so different frames can be grouped? And will
       | zooming of the canvas be supported?
        
         | akshaysg wrote:
         | Ooh grouping is a cool idea we didn't consider! Curious to hear
         | what you want out of grouping -- I can imagine it's useful to
         | label functionalities and move different editors at once, but
         | would love to hear from you.
         | 
         | You can zoom in/out of the canvas with CMD/CTRL + scrolling! I
         | do think this can cause blurry text, which we definitely aim to
         | fix
        
           | cyanydeez wrote:
           | Windows 11 seems to have a auto grouping feature baaed on
           | what windows are tiled
        
       | mondrian wrote:
       | Cool! Related to code bubbles:
       | https://dl.acm.org/doi/abs/10.1145/1753326.1753706
        
         | akshaysg wrote:
         | Yeah bubbles are awesome! I like the minimap concept
         | especially.
        
       | Sakos wrote:
       | Oh nooooo, this is MacOS only? This is amazing and I need this so
       | badly.
        
         | akshaysg wrote:
         | I am so sorry! Our immediate next priority is to get this on
         | Linux and Windows. May I ask which OS you use so we can get it
         | done now?
        
           | kaesve wrote:
           | I'd use this on linux as soon as it's available
        
             | akshaysg wrote:
             | Just added a Linux download!
        
           | Sakos wrote:
           | I use Windows primarily. I don't expect you to rush anything,
           | but definitely looking forward for a multi-platform release.
        
         | akshaysg wrote:
         | Just added a Linux download!
        
       | dtx1 wrote:
       | This fits my mental model when coding so well. I love it!
        
       | xyst wrote:
       | So it's a more fancy/cpu intensive neovim without the learning
       | curve?
       | 
       | I don't know, looks cool. But seems like it would get annoying
       | after a period of time. Too much dependency on a mouse for me.
        
         | akshaysg wrote:
         | You brought up a great point regarding mouse dependency. The
         | end goal is to make this keyboard navigable (I myself don't
         | like taking my hands off the keyboard), but we also need to do
         | it in an intuitive/easy-to-use way which will be tough.
        
         | cl3misch wrote:
         | Does neovim have a canvas feature? In what way is it similar to
         | Haystack, apart from also being an editor?
        
       | Der_Einzige wrote:
       | Namespace conflict, and yes it does matter. Just as "mamba" was
       | an anaconda package manager re-implementation before it got
       | commandeered by the LLM research crowd, now Haystack is being
       | stolen away from Deepset: https://github.com/deepset-ai/haystack
       | 
       | https://haystack.deepset.ai/
        
         | trevoragilbert wrote:
         | And this is on top of it being stolen away from the rightful
         | owners: hay farmers.
        
         | soulofmischief wrote:
         | This is why we have trademark systems. Name conflicts are
         | allowed for commercial use if the purpose and presentation are
         | clearly delineated from competitors. For non-commercial use...
         | who cares? No one is "stealing" words.
        
         | odiroot wrote:
         | Also this older Python package: https://django-
         | haystack.readthedocs.io/en/master/
        
           | karmajunkie wrote:
           | i remember playing with this group's work back in the early
           | '00's
           | 
           | https://haystack.csail.mit.edu/
        
         | akshaysg wrote:
         | Our intent is not to steal anyone's name, but I hope that by
         | being a very different product nobody confuses us with this
         | Haystack (or the older Haystack that other commenters pointed
         | out).
         | 
         | I do think the idea of a "needle in a haystack" is fairly
         | ubiquitous and makes sense for a ton of contexts to be fair.
        
       | bern4444 wrote:
       | I downloaded this and opened up a React based project that uses
       | functions and not classes. I'm not seeing the sideways facing
       | arrows to show the call stack of the function I'm looking at and
       | have my cursor in - the functions that call the function I'm
       | looking at and the functions that reference the function I'm
       | looking at.
       | 
       | It seems the sideways arrows in the demo only appear for class
       | based methods and not plain functions :(
       | 
       | Overall I love the idea and have wanted a graph visualization of
       | a codebase showing every function call, who calls it, and who it
       | is called by which this seems to do but for classes. Hope to see
       | this working for functions as well soon! Great work.
        
         | akshaysg wrote:
         | Sorry for the frustrating behavior. It should actually work for
         | plain functions and I just tested with a TSX component we use.
         | I think something went wrong here.
         | 
         | Are you using JSX components? I'll try to repro this on my end.
        
           | bern4444 wrote:
           | I'm using a mix of TSX/JSX/TS/JS. I wasn't seeing it working
           | for any of the functions (component or plain JS) I have
           | unfortunately. Will keep an eye out for any updates you make
           | to resolve this!
           | 
           | Awesome project and great work on it! Congrats on the launch
           | :)
        
       | KronisLV wrote:
       | This is pretty cool!
       | 
       | Reminds me of the now defunct SourceTrail tool:
       | https://github.com/CoatiSoftware/Sourcetrail
       | 
       | Actually, seeing lines between the code and where you opened it
       | from would most likely be useful!
        
         | akshaysg wrote:
         | Yes we were definitely inspired by SourceTrail! Will add to the
         | feature list!
        
       | cyanydeez wrote:
       | I posted this previously, but this, and notebook style output,
       | then flat textfile view would be the sweet spot for universal
       | development. I vasilate between notebooks and vscode to develop
       | most of my projects.
        
       | karolist wrote:
       | Congrats on the launch. I've actually been going in a totally
       | separate direction lately, it helps with my focus and ADHD
       | tendencies to jump around and get overwhelmed.
       | 
       | 1. One window. 2. Minimal everything. 3. Most importantly, no
       | tree navigation.
       | 
       | If I need to jump to a file, I either use recents menu in
       | Intellij or use file markers to jump to it, means I have to
       | remember the filemarker and have intent to go there (I'm using
       | IdeaVim plugin for vim hotkeys). This, to me, make programming
       | much more focused and pleasurable. This is part of my evolution
       | from multi screen to widesreen and then back to a single screen.
       | 
       | For large and mature codebases like you mention, I just use LLM
       | to guide me around.
        
         | akshaysg wrote:
         | Makes sense! Curious how you use LLMs to guide you around?
         | 
         | In my own experience, I ask the LLM where a functional flow is
         | and it does a great job of creating an entrypoint, but I
         | frequently have to figure out the finer details myself and
         | sometimes the LLM points to something related, but not quite
         | what I was looking for.
        
         | asp_hornet wrote:
         | > For large and mature codebases like you mention, I just use
         | LLM to guide me around.
         | 
         | How? What do you call large mature codebases? In my experience
         | LLMs already make many mistakes and assumptions just in one
         | file?
        
           | karolist wrote:
           | continue.dev with anthropic's API key
           | https://docs.continue.dev/how-to-use-continue#ask-
           | questions-...
        
       | tamimio wrote:
       | I think the title should make it clear it's macOS only, before
       | getting my hopes high to test it out, it looks interesting
       | nonetheless.
        
         | dang wrote:
         | I added that to the text above. Sentence taken from
         | https://haystackeditor.com/#faq. Hope this helps.
        
         | akshaysg wrote:
         | Very sorry about this. We hope to get in a Linux product soon
         | (building now, fingers crossed).
         | 
         | Thanks Dan for the edit!
        
         | akshaysg wrote:
         | Added a Linux download if that's the platform you're using!
        
       | Ataraxy wrote:
       | In my minds eye I've been yearning to see an IDE that focuses on
       | a zoomable interface.
       | 
       | This looks like a good start.
        
       | pavel_lishin wrote:
       | > _We do not store or log your code anywhere. We do send snippets
       | of your code to Open AI as input for our navigational copilot. We
       | 'll add an option to disable this soon._
       | 
       | I look forward to checking this out once that option is in place.
        
         | reddit_clone wrote:
         | Agreed. That should have been a opt-in from day one!
        
       | mritchie712 wrote:
       | This is awesome. Are you using tldraw?
       | 
       | We're building a canvas for data / analytics at Definite[0].
       | Quick demo[1].
       | 
       | 0 - https://www.definite.app/
       | 
       | 1 - https://youtu.be/7FAJLc3k2Fo?si=kxu0QLd4WV_jDCHw&t=79
        
       | haolez wrote:
       | Looks a little like Labview without the data flow features.
       | Interesting.
        
         | akshaysg wrote:
         | I don't and never have used Lab view, but I am interested in
         | adding features to better visualize data flow. I feel like this
         | can easily err on the side of being confusing/annoying, but do
         | you like Labview's data flow features?
        
       | cl3misch wrote:
       | I'm not sure about the AI features but the concept of working
       | with code on a canvas and having some sort of flowchart UI has
       | been a dream of mine for some time. I mainly do data processing
       | and draw lots of flowcharts for communicating pipelines and also
       | for myself. Having a development UI which goes in that direction
       | somewhat would be great for handling unwieldy codebases written
       | by non-CS folk.
        
         | Falimonda wrote:
         | Is a tool like LabView what you have in mind?
         | 
         | https://www.ni.com/en/shop/labview.html
        
         | akshaysg wrote:
         | Curious if the problem you're encountering is visualizing the
         | data flow vs. the control flow?
        
       | dahjelle wrote:
       | I've been wanting to try something like this for a long time! Is
       | there any way to sign up for updates?
       | 
       | (In particular, I'm waiting for the option to turn off the AI
       | stuff, at least for when I am trying things out.)
       | 
       | I especially love the ability to zoom into a function and hide
       | the rest of a file. I've wanted that sort of thing a surprising
       | number of times. I'm thinking one could also use this to
       | virtually rearrange a single file by pulling the functions in
       | that file that you are working on next to each other easily?
       | 
       | In addition to the editing interface, I think there are probably
       | a lot of visualization opportunities in editors:
       | 
       | - what's the interaction between my code and third-party
       | dependencies? - what are the dependencies/call graph of my code?
       | or perhaps just a portion of it? - call graphs can be nested --
       | perhaps you care for a dependency graph at the class or module
       | level, or perhaps you want to "drill down" into the call graph
       | inside an object
       | 
       | In all these cases, being able to seamlessly transition between
       | the visualization and editing -- like you seem to be aiming
       | towards -- seems like the killer feature.
       | 
       | And, of course, there are lot of other interesting visualization
       | opportunities once you have any sort of graphics in your editor:
       | 
       | - heatmaps of code churn - heatmaps of code performance - tracing
       | variable usage - and, of course, lots more
       | (https://adamtornhill.com/articles/crimescene/codeascrimescen...)
       | 
       | One last thought: if you haven't read _The Programmer's Brain_,
       | you should at least listen to this podcast. https://se-
       | radio.net/2021/06/episode-462-felienne-on-the-pro... There are a
       | bunch of editing ideas related to how our brain works that I
       | haven't seen well supported in an editor yet. You took one step
       | in that direction -- maybe there are some more opportunities?
       | 
       | Looking forward to what you come up with!
        
         | akshaysg wrote:
         | Unfortunately we haven't built a clever way to sign up for
         | updates! I'll think of the best way to do this (eventually
         | we'll push updates directly in the product).
         | 
         | Working on adding the copilot opt-out as we speak!
         | 
         | I love the ideas here and I would like to discuss some of these
         | with you. If it's OK with you, I am going email/DM you!
         | 
         | In general, we would love to engage in conversations with folks
         | (feedback@haystackeditor.com)
        
       | dakiol wrote:
       | Nice! I think this is a step in the right direction of the future
       | of IDEs. So tired of switching between dozens of tabs which are
       | either sorted by name (fixed and useless) or usage (chaotic) in
       | common IDEs like Intellij and VSCode.
        
       | fredamaral wrote:
       | it brings me a thought: is it just me who kind of hate the
       | "super-modular-files-with-10-lines" way of doing things today?
       | would love to get back to the way of doing things in the past,
       | like super well-commented files, with hooks here and there to
       | help you navigate, single file for single contexts...
        
         | CoastalCoder wrote:
         | Depends on the situation.
         | 
         | E.g., if a project's general rule is one file per class, I
         | prefer consistently following that rule, even of it makes
         | _some_ files be really short.
        
       | masteranza wrote:
       | Looks interesting, but the contrast between white background and
       | actual windows is preventing me to use it. How can it be changed?
        
         | akshaysg wrote:
         | Apologies for this! We'll make the canvas match VS Code's theme
         | eventually.
        
       | redwyvern wrote:
       | This is really neat, quite a paradigm shift from the IDEs we've
       | been using for decades
        
       | shove wrote:
       | I spent the last five+ years full-time deep diving the infinite
       | canvas UX problem space if you happen to be hiring ;)
        
       | ab_v1 wrote:
       | This is really awesome!
        
       | abhardwajv1 wrote:
       | This is really awesome!
        
       | hamasho wrote:
       | Wow, this looks wonderful!
       | 
       | I want this to integrate well with type checkers. For example, if
       | I edit a TypeScript function and it causes several type errors,
       | it's nice to open all files and jump to the errors. If more edits
       | cause other errors, open those files again. This would make code
       | changes much easier!
        
         | akshaysg wrote:
         | Yes this is something we plan on building! To confirm, you mean
         | e.g. if you edit a parameter, which causes errors in all
         | callers?
        
       ___________________________________________________________________
       (page generated 2024-07-25 23:01 UTC)