10 ms·
Thanks for posting, and great work so far! Unfortunately, I encountered a few deal-breaker issues with Zed. So here are a few criticisms, if this helps you impr
by electrograv 13y ago
Thanks for posting, and great work so far! Unfortunately, I encountered a few deal-breaker issues with Zed. So here are a few criticisms, if this helps you improve the project (but by no means let this detract from the current success of a great project!):
1. IMO you're using the wrong text matching algorithm for file search. This is pretty critical, considering it's the main interface for opening files.
Zed seems to search for simple text substrings only, whereas both Sublime Text 2 and Xcode look for the longest common subsequence. This is huge, for me at least; in Xcode or ST2 I can type the first few letters of one of my files, followed by a few more letters from different words in it, followed by ".cpp" and it finds the file.
Zed (as is) is completely unusable to me, because my project folder contains many similarly named files (.h, .cpp) as well as a ton of other source files from external libraries/modules with similar sub-words with what I'm searching for which for some reason always show up first and saturate the search results. With Zed there's no way to narrow down to what I'm looking for besides typing in the full name of the file. With ST2 or Xcode this is not a problem due to LCS.
2. This is not your fault necessarily, but it's a big deal to me: Text rendering is slow in Zed (and in every other web-technology-based code editor I've tried, e.g. Light Table).
For example, scrolling is even choppier than Xcode. The primary (if not sole) reason I moved away from Xcode to ST2 was because Xcode's horribly laggy UI was driving me crazy.
This is a bit of a personal rant, but we're living in an age with multi-gigaflop CPUs and multi-terraflop GPUs, yet we have somehow regressed to a point where scrolling (of all things) is laggy? IMO this is absurd, as an industry trend in general. For this reason, I generally dislike the trend to write everything (including local apps) in HTML/CSS/JS. These technologies really weren't designed to support this sort of complex dynamic UI. While it's quite impressive what's possible despite this, the stress of forcibly warping HTML/CSS/JS to accomplish some of these UI feats shows through as horrible inefficiency.
- zef_hemel 13y agoThank you for your constructive comments. I can work with this :)
- mc_hammer 13y agofwiw the search is called fuzzy matching also, gl on the project
- crashandburn4 13y agoAnd here's an explanation with some code examples: http://www.quora.com/Algorithms/How-is-the-fuzzy-search-algorithm-in-Sublime-Text-designed?share=1 http://www.quora.com/Algorithms/How-is-the-fuzzy-search-algo...
- doorhammer 13y agoAnother interesting algorithm for fuzzy searching is this one: http://www.catalysoft.com/articles/StrikeAMatch.html http://www.catalysoft.com/articles/StrikeAMatch.html It essentially compares the number of matching two letter pairs in strings. I used it in a C# app that did a fuzzy instant search as the user typed more letters in. On a dataset of about six thousand names it performed really well, but it was a pretty simple app. I also used a javascript version on the same list to see how it performed on an X120e netbook, and again, it was instantaneous. No idea how the performance would compare to the methods for common substring. I like the pairs matching because I can screw up letter positioning and accidentally type a letter or two that doesn't exist in the string, but still get back strongly matching results and usually find what I want. I used it because we had a huge issue at work with people brutalizing names they entered into our employee database. Here's an implementation I wrote in javascript: https://gist.github.com/doorhammer/3016ecaac5313a87804b https://gist.github.com/doorhammer/3016ecaac5313a87804b I never used it in production, and it's not optimized really at all, but it shows how straight forward a typical version can be.
- hboon 13y agoI took a quick look. What he described is essentially a specific case of n-grams (n=2, bigrams). http://en.wikipedia.org/wiki/N-gram http://en.wikipedia.org/wiki/N-gram
- 13y ago
- Edmond 13y ago>This is a bit of a personal rant, but we're living in an age with multi-gigaflop CPUs and multi-terraflop GPUs, and we have somehow regressed to a point where scrolling is laggy again? IMO this is absurd, as an industry trend in general. For this reason, I generally dislike the trend to write everything (including local apps) in HTML/CSS/JS. These technologies really weren't designed to support this sort of complex dynamic UI. While it's quite impressive what's possible despite this, the stress of forcibly warping HTML/CSS/JS to accomplish some of these UI feats shows through as horrible inefficiency. I doubt the issue is simply the use of web technologies...the fact is the more powerful our computers become the more demand is placed on them. Your web browser is just one more thing running on your computer, there are a bunch of other things influencing overall performance. You could replace the entire web stack of technologies and you would probably end up in the same place performance-wise. I envision a future where we have even faster computers but then maybe your OS would have integrated a bunch of AI that'll bring performance to a crawl :)
- venomsnake 13y agoI can barely push my pc above 10% usage and yet I enjoy from time to time laggy interfaces and locks. Worst offender right now - Eclipse after being out of focus for more than 10-12 hours.
- RyanZAG 13y agoI've noticed that too on OSX - it's not just Eclipse, any memory heavy app such as xcode causes the same. I don't get this happening in Eclipse on either my Windows or Linux installs. I think it's just very aggressive paging to disk or something similar.
- venomsnake 13y agoIt is on SSD ... and I have 32 Gigs of ram. And some of the intelij products I use have no problems - and they are java based. Windows 8.1. But anyway on current PCs any kinds of unresponsive UI-s are inexcusable.
- Dolimiter 13y agoI understand your frustration. This is the 3rd editor I've got excited about by looking at screenshots (see also Atom and Brackets). Then was disappointed when I realised they render using a browser. =Slow. Not slow enough to be unuseable. But slow enough to drive you crazy after working with it for a day. And perhaps 30% reduction in laptop battery life, because of increased power requirements. I moved to Sublime Text. Millions of us did. It provided both fantastic usability and rocket-fast speed. That's the baseline. Any new editor needs to at least have BOTH those features!
- kristiandupont 13y ago>These technologies really weren't designed to support this sort of complex dynamic UI I used to think of this when I saw UI developed in C++ (instead of pure assembler. Jesus, they would just multiply with a scan width instead of shifting!). I thought it when I switched to Windows (they're running everything through a giant abstraction layer here! That will never perform!). And yes, I find myself thinking this again now that the final bits of software seem to be moving into the browser. But this time, I'm going to assume that I'm probably wrong :-)
- electrograv 13y agoBottom line: What is the end user experience? I don't care how many abstraction layers, VMs, and scripting languages you do or don't use. I care that my UI doesn't lag or have choppy scroll animations, and that the battery doesn't drain 2x faster than expected. Yeah, eventually these problems will likely disappear with more powerful hardware. But we're not the yet, and a good engineer realizes hardware limitations and designs software appropriately to achieve a great user experience.
- oneweekwonder 13y ago"software is getting slower more rapidly than hardware becomes faster"[1] I was showing a junior some plpgsql yesterday and he asked me what languages use BEGIN, END etc. So I pointed him to Pascal and ended up myself on wikipedia where I (re)found the above quote. One of the points people normally make for HTML/JS/CSS is that the browser is sandboxed and there is already a well defined standard on how to serve dynamic content to a browser, across ALL platforms. This might change with all platforms moving to a package manager or walled garden, and we then might start to see some "native" code again. But even the new platforms op-in for web tech like Metro etc. But meh I'm rambling again so I will leave who ever will read this comment with a link to vsftpd[2] security section because I liked the idea of sandboxing a application with chroot and with that you can start to build a "Secure" native app. [1]: https://en.wikipedia.org/wiki/Wirth%27s_law https://en.wikipedia.org/wiki/Wirth%27s_law [2]: https://security.appspot.com/vsftpd.html#security https://security.appspot.com/vsftpd.html#security
- 13y ago
- zem 13y agoit makes me somewhere between depressed and angry whenever i type into an entry widget that cannot keep up with my keystrokes. i really don't know why this is not a drop-everything-and-fix-this bug, but the computing world seems to have accepted it as one of those things that happens.
- chr1 13y agoI think this is because developers tend to have fairly fast computers, and simply don't realize that their program is slow on old hardware. But does this happen with Zed? For me it works well even on old pentium4 desktop.
- zem 13y agowasn't talking about zed specifically, just about text entry software in general. the worst offenders seem to be IDEs and web-based forms that want to do per-character callbacks.