Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I'm not sure I agree with the final point

  All you need these days to build great things is a
  browser, a text editor, and the programming language
  or tool of your choice.
Even when developing web apps there's sometimes need to use a network traffic analyzer, a debugger... Not to mention a plethora of tools for reading/analyzing/parsing log files, graphing benchmark results, generating test SSL certificates and a lot of other things that are not equally available on all platforms.

And there's another consideration: if you're deploying your software on Linux it's just plain easier to develop it on Linux as well.



If you design chips, you might wonder how anyone gets by without an FPGA. If you develop a kernel, you might wonder how anyone gets by without remote debugging. If you develop drivers, you might wonder how anyone gets by without a C compiler or assembler.

The problem with your critique is that you're thinking at the wrong level of abstraction. If (and, yes, this is a big if) you are developing a web app on a platform where all of the low-level concerns are taken care of for you, then the final point is completely valid. I'd even go so far as to strike the text editor from that list. Already today, you could (in theory) develop a Rails or Node app in Cloud9, store the code on Github, and deploy to Heroku with little more than a ChromeBook.

Ok, we're not quite there yet, but I hope you get my point... That said, there are still chip designers, kernel programmers, and driver developers. And there will always be "backend engineers" (though I think we need a better term) who need debuggers, benchmark utilities, packet analyzers, etc.


Your point is valid, of course - developing specialized software requires a specialized platform. But what I wanted to say is that even developing a web app (and that's what I do these days) I sometimes need to use Wireshark.

Sure, there was that guy that used an iPad, a wireless keyboard and a Linode as his PC so it's viable. But I think that's an exceptional case and it's more common to need quite a lot of supporting tools to develop things.

And of course, you know, our designer can work with just a notebook (as in: a paper notebook) :)


I develop mobile game software (Android/iOS), but what kills me (and keeps me on Windows, unfortunately) is the fact that I can't find an editor that keeps me as productive as the one I use on Windows (Visual SlickEdit).

It's honestly not perfect, but for C++ and Lua it's unequaled in getting references and autocompletion correct.

And since I also have a Windows target, I can take full advantage of the very clean debugger that Microsoft Developer Studio provides (for the cross-platform code). I spent a year with Linux on my desktop, trying every debugger tool available, and nothing comes close to working as well.

Yes, I've tried vim and emacs. I even use vim when I need to edit over an ssh link to a server. And I could imagine getting my fingers used to the many-more keys I'd need to hit to do everything I do in SlickEdit in vim, but vim is STILL is missing two of the most important features I use (the cross-referencing/smart completion I mentioned above, and an auto-completion from the same file that I get by hitting shift-ctrl-< or ->). The features vim does support require more keys -- and keeping track of editing "modes", which is something else I don't want to have to do. And since I can write code much faster using those features (and fewer keypresses), I can't imagine switching.

I used SlickEdit on Linux for the year I was there, but it's based on X, and doesn't integrate with modern desktops as well as a result. It even has a built-in gdb wrapper, but unfortunately it can't do as much as Developer Studio on Windows. :(


You don't really need to keep track of the vim mode, you start typing text and either your text is entered or you now have half of you code all in capital letters. But seriously, as with everything it has a learning curve which is quite minor when you use it as your main editor. It becomes quite essential when you have the need to ssh into different machines on different platforms for distributed testing etc.


I use vim when I ssh into machines for doing quick-and-dirty edits. I know how to use it.

It's pretty well established that forcing a user to keep track of mode is just bad UI design. I actually use vi relatively frequently, to the point of having internalized the mode concept, and I STILL occasionally make mistakes. If you've got vi in six different shells, how CAN you remember what mode they're all in? You can't. You need to look. Which interrupts the flow of development, at least for me.

And I can't forgive the extra characters you need to type to do just about anything. I was just using gvim on Linux, for example, and to paste from the system clipboard took 4? 5? character presses. You simply can't defend that as reasonable.

For serious development I would NEVER switch to vim/gvim, at least without some major keyboard remapping to, well, the defaults that you'd find in any modern editor. It's more than getting used to it--more keys means slower development, period.

Just now I was able to select the previous sentence with about 3 keypresses. Copy and paste would be a standard ctrl-c/ctrl-v. No worrying about mode, or counting characters -- and I'm in the edit window in Chrome. It shouldn't take me more characters and a completely different set of finger reflexes to do the same thing in my programming editor.


  Just now I was able to select the previous sentence with about 3 keypresses. Copy and paste would be a standard ctrl-c/ctrl-v. No worrying about mode, or counting characters
j-V-p = 4 which is a lot less than 3+2+2 of what you described. So your point about vim requiring more keypresses seems moot.


First, I was inserting, so it would be ESC-up-V-something, and ESC requires my hand to leave the wrist rest. Problem is, I occasionally don't notice I'm inserting (or not), and as you pointed out above, that means that half my buffer is now screwed up and I have to shift mental gears to fix the damage. That alone is unforgivable.

Second, I hit Shift-Up-Ctrl-Left-(Release Shift)-C. I wasn't selecting the LINE, I was selecting the sentence, which ended in the middle of the line. And the keys are all grouped usefully AND ergonomically. Between the arrows, shift, control, home, and end, I can select characters, words, lines, here to the start of line (or buffer), here to the end of line (or buffer), and throw in insert and delete and I can copy, cut, and paste, as well. All using keys that are standard to almost every app on Windows (and Linux, for that matter). When it's that easy, why would I also feel the need to train for a completely different set of key strokes?

I was giving as an example how MOST of my finger key memory works even when in Chrome, and the same is true of almost any Windows application I'm in. I don't need two vastly different sets of keyboard skills depending on whether I'm programming or writing on HN.

When I AM in SlickEdit, I can hit 'up' 'ctrl-c' to copy the previous line (copy is set up to copy the current line when no text is selected). If I want to select lines like you did in vi, I can hit ctrl-l. A square block, ctrl-b. The current code block, shift-ctrl-]. Everything nice and mnemonic, and automatically "visual". But most importantly, no modes to remember, manage, or otherwise distract me from coding.

You can argue all day that one key press plus or minus doesn't make much difference. But some key combinations are well designed from a user interface perspective, and some less so -- and regardless of the merits of the design, using the one that works everywhere that ISN'T vi means you're that productive everywhere.

Where vim/gvim really falls short for me (beyond anti-ergonomic key bindings) is that I really want it to be an IDE, not just an editor. I can ask SlickEdit to open a file by typing a few characters of its name and then selecting it from a list of all files in the project that match. I can tell it to build and end up with a list of errors that I can jump to. I can ask for symbol cross-references throughout a project and it will find them. Even if it's a symbol like "init" that's defined in a C++ template; it might find a few it's not sure about, but mostly it can figure out what classes derived from that template and show me just that list, ignoring other functions called "init".

vi can do SOME of these things, but in general only if you jump through a lot of hoops to get it all set up. The last time I tried to configure "tagging" so I could get references, though, it completely failed with respect to templated classes. Maybe it's better now, but back then it worked in SlickEdit and not in vi.


>> I develop mobile game software (Android/iOS), but what kills me (and keeps me on Windows, unfortunately) is the fact that I can't find an editor that keeps me as productive as the one I use on Windows (Visual SlickEdit).

Eclipse, the world's most powerful and popular development environment for all popular languages and all popular OS platforms?

>> It's honestly not perfect, but for C++ and Lua it's unequaled in getting references and autocompletion correct.

Eclipse? Not sure if you can do Lua in it though.

>> And since I also have a Windows target, I can take full advantage of the very clean debugger that Microsoft Developer Studio provides (for the cross-platform code). I spent a year with Linux on my desktop, trying every debugger tool available, and nothing comes close to working as well.

Eclipse? Beats anything from Redmond easily is what I have found, since we are talking about how we have found these tools to work for us.


Eclipse tortures its users. I'm convinced that Eclipse users suffer from Editor Stockholm Syndrome. I HATE Eclipse with a passion, and have gone to great lengths to not have that unreliable "tool" be any part of my development system.

It has burned dozens of hours of productivity as it:

1. CHANGES the configuration of the project every time it loads. Seriously. I had to revert the project every time I ran Eclipse because it would break the configuration (which I originally set up IN Eclipse, so I don't know what was wrong here).

2. Fails to notice important files have changed outside of its knowledge (no auto-refresh). God forbid I change a file in git or in another (decent) editor.

3. Fails to refresh when I hit F5 (randomly the F5 key is or isn't assigned to refresh; I haven't figured out the pattern).

4. Gets stuck and won't build if there's an error it doesn't understand -- and you have to "delete the error" to get it to build. WTF?!

5. C++ support? Really? I tried the recommended plug-in, and despite looking everywhere that made sense, I was unable to figure out how to give it an include path. No one has been able to help me here, either. If it's configurable somewhere, then they sure made it hard to find. So all my "C++ integration" resulted in lots of undefined functions and includes, which was worthless. Needless to say, auto-complete was also worthless, since it couldn't find the definition of my shared_ptr class.

6. WAY too heavy. My favorite editor (SlickEdit) is already too heavy. Eclipse makes it seem light and nimble by comparison! Running the editor only takes about a MINUTE on my laptop, and it eats resources like mad.

7. Important project configuration details are hidden in opaque binary files, so you can't just check your project environment into source control.

8. Some kinds of paths end up being stored in the project as absolute paths, meaning that you can't use relative paths that would work in anyone's repository -- and you can't share those projects between Linux/Mac/Windows at all.

That's off the top of my head. I'm sure there are plenty of issues I'm not remembering.

I went into using Eclipse really, REALLY wanting to like it. It was everything I was looking for -- free, cross-platform, lots of plug-ins for different features, a huge supportive community. But I just can't like something that screws me at every turn, even if it can suggest ways to fix my Java code.

Some of these issues may be caused by a poorly written Android plug-in. I honestly don't know. But it's caused me hours of pain, and many other Android developers I've talked with have similar horror stories.

Using Eclipse to build for Android was almost completely non-deterministic, even when doing CLEAN builds; I gave up on using it to do my Android builds entirely, switching to the Android Ant build process. Which has its own issues...

And Eclipse doesn't support the in-file completion I'm talking about either, though without all the other problems I might have tried to hack something into place.

FYI, I just saw an announcement recently of a Lua plug-in for Eclipse that sounds great. Too bad Eclipse has sucked SO badly for me that I don't even want to try it. They're doing interesting things to try to guess autocompletions in Lua, which is a hard problem to get right.

Also FYI, SlickEdit doesn't come from Redmond. And Developer Studio has a WAY better debugging environment than Eclipse's, hands down, possibly in part because the underlying GDB doesn't support as many features.

If Eclipse works for you, great. The Android development team apparently uses it and likes it. Maybe you know how to use it much better than I, or maybe I'm used to better tools. We'll never know. I know some people still use Notepad or equivalent for coding, which strikes me as insane, and Eclipse is certainly better than that. But Eclipse tortured me daily while I was using it, and I can't imagine going back to it.


So, basically: couldn't get my head around Eclipse, so it sucks, right?

Wait till you try Emacs...


Considering Eclipse is "the most popular" editor around, I don't think the barrier to entry is very high. I used it for over a year before giving up on it as useless. For me, having reliable builds is FAR more important than the editor holding my hand with respect to Java syntax. I swear Eclipse is primarily popular EXACTLY because of the latter, since it can act as a crutch for new and junior developers.

I did use Emacs for several years before moving on to something more ergonomic. I still have muscle memory for several of the more common keystrokes.

I haven't really felt like there's been a Truly Great editor available since Brief, which I stopped using because they never upgraded it from DOS to Windows.

It's not about "getting my head" around something. To the contrary, I am very good at picking up new software and using it, whether it's designed well or not.

It's about having seen what a REALLY powerful editor can do for you, and having other editors never really live up to that standard. SlickEdit is close, and even better in some ways than Brief was, but it's not perfect.

So did you actually understand what I wrote? "Stockholm Syndrome" applies when you've been abducted, and you fall in love with (and defend the actions of) your abductor. I'd say you're not disabusing me of my original notion.


"""For me, having reliable builds is FAR more important than the editor holding my hand with respect to Java syntax."""

I don't understand what "reliable builds" means in this context. I never had "unreliable builds" from Eclipse.

Also, what you call "holding your hand" actually is automating tedious manual labor re Java syntax, and continuous AST based syntax checking.

That --and build automation, is exactly what people want from an IDE. If you don't care for those, yeah, use anything else.

I find anything without actual AST-based syntax checking/autocomplete/navigation/refactoring as a dumb text editor, Emacs included.

Now, Eclipse has tons of problems, but that it got right.

It's sad that there is not a modern, GUI based, editor, with pluggable language support for multi-language use, using full AST power (regex highliting and ctags is so last century) while also being lean and mean...


Have you done Android development? Have you ever changed a file outside of Eclipse? That's where the unreliability comes in.

I've said above, and I'll say again: With respect to helping you out with Java, it's really nice. It goes beyond what SlickEdit does, though SlickEdit does a few things for you.

ctags sucks; that's a given. SlickEdit goes beyond simple regex highlighting, but it's not completely AST-based syntax checking etc. Of course Eclipse only gets THAT right in Java, not the languages I actually care about (C++ and Lua).

Most of my coding these days is in Lua. Instead of having an editor write code for me because the syntax includes lots of tedious manual labor, the syntax itself is clean and I write fewer lines of code.

>It's sad that there is not a modern, GUI based, editor, with pluggable language support for multi-language use, using full AST power (regex highliting and ctags is so last century) while also being lean and mean...

Not sure if you're being ironic here, but I think it WOULD be possible. Almost certainly not if it's written in Java, however. You lose "lean and mean" the moment you start up the JVM, IMO.

Another thing I haven't tried is the SlickEdit plug-in for Eclipse:

https://www.slickedit.com/products/slickedit-core

Though since SlickEdit itself is heavy, I'm not sure that layering one heavy environment on top of another makes any sense. Maybe the plug-in isn't as heavy? Don't know.


>> Have you done Android development?

Yes I have and I find Eclipse is awesome for Android development.

>> Have you ever changed a file outside of Eclipse? That's where the unreliability comes in.

Yes, I always turn on Auto-refresh in the Workspace settings. Works great, it should be on by default in all new workspaces I think.


I'm a Vim user, and I can't wrap my head around Eclipse. I've used emacs and although I don't like it, I found it to be a good deal more accessible.


  :h new-omni-completion
  :h compl-omni
  :h compl-generic


Thanks, I'll try it.


The thing that makes me squint at that point most is the lack of reasonable shell when talking about windows. I do so much 'meta' work in zsh/bash/perl that the thought of being without them, or having to use the bits that come with Windows make me wonder how people work.


Windows has power shell, or bash, or zsh, or perl if that's what floats your boat. I use bash myself, but to each their own.

You don't have to use the shell that comes preinstalled.




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: