Is this personal taste, or has it to do with the scope of the projects these guys are working on?
What does this mean exactly? Is his machine a mail server?
I used to know an engineer/scientists who only used a single laptop (linux) and it acted as his mail server. When he travelled he used dyndns (or some such thing) so that delayed mail would be delivered to his laptop. Could never get a straight answer about whether this worked all the time or not (whether he ended up missing emails).
For verbose languages, you can't beat auto-completion and auto-import.
but presumably the server could unbeknownst to the user, still keep copies of all incoming emails right?
I use Thunderbird with pop3 settings that ask remote mail server to delete messages once downloaded. Then authenticated SMTP account to send.
No big reason, just what I do.
Edit: I believe that my shell-account provider is deleting those messages once downloaded, and not copying them somewhere else, but I have no guarantee of that as pointed out lower in the tree from the parent post.
If the gentleman is using a mail server on his PC that would be interesting as you say.
And you can get both in vim, emacs, etc. The lines between those and full IDEs are blurry with the right (or wrong) amount of plugins.
It also means if your email server is hacked, they won't get your entire email history - unless your local machine gets hacked, of course.
But seriously, it does make me wonder how much of the vast system he retains and uses. Using it for a decade, myself, (certainly not working ON it or understanding the internals) I learn new parts every month but forget a lot, too.
There are many other advantages like out of the box support for a lot of common use cases like refactoring, navigation, build tool support, reuse common shortcuts like Control-C Control-V for copy-paste etc.
I would definitely advice new engineers coming into languages like Java to pick up an IDE like Intellij instead of vim.
It's clang-based, so suffers from none of the tags-type issues: it's context-sensitive, and can see straight through gnarly stuff such as identifiers generated by token pasting.
Good points:
- Only mildly fiddly to set up
- Code browsing works well
- Code completion works well when it works
- Cute gcc/g++/etc. wrapper trick means you don't have to change any build settings
Bad points:
- Making it work with code you haven't built yourself on your local system (e.g., 3rd party stuff that's not complete, code for another platform) is less straightforward
- Code completion sometimes doesn't work with certain files (and for no reason that I've ever been able to figure out)
- It's probably my own limitations but I found it extremely inconvenient to debug (internally it's surprisingly complicated: separate client and server, lots of lengthy command lines, client code writes elisp code to stdout and elisp in emacs eats it up, the actual completion popup is a separate package, etc.)
you can see how all they --or we?-- moved from 4:3 to 16:9
BTW, I've used both. No need for a snarky response to me as well
Does anyone else find this quote completely absurd? What a ridiculous disconnect from modern computing, even in 2002, to use text-mode.
And the whole point of me switching to vi is so I slow down a bit and get it correct.
I generally don't need an ide to keep popping up telling me what to type. I know what I'm doing.
I tend to use a single maximized app in a GUI environment, often running emacs, though I do like to split the screen in half to allow two full-page, focused views (e.g., code editor and browser). And when helpful, I'll pull up more windows.
See also http://lifehacker.com/5689579/five-best-distraction-free-wri... for others who have felt the need for focused tools that remove the distractions of multiple window environments.
I had my low-end laptop boot into text mode for years because I was more productive coding that way, and could always "startx" on a different TTY to get a GUI. Then I discovered tiling window managers and got a better laptop, but I still code mostly in a minimal terminal emulator.
I was surprised to see Bjarne using a standard Windows XP machine. Not sure if he used Visual Studio or what but he didn't do anything special as far as I could tell.
Then of course you have RMS who still lives in the 1970s :)
Edit: Like I said in my previous post I quite like using whatever the default is. A few changes here and there but on the whole it is much easier to move around if you just learn to work with whatever it comes with.
If I uncharitably assume that grunt work means "redundant boilerplate", that sounds like more of a language issue than a tool issue. This said as a Java programmer who has been doing a lot of JavaScript this last year, and REALLY appreciates the brevity. Even if your IDE can generate it, that doesn't mean I want to read it.
Java: the language that has to wear a paper bag over its face while it's screwin' ya. :-)
(think of all those Eclipse plugins to visualize fugly XML bogo-DSLs and other cruft for The Enterprise -- sure, there are worse languages out there, but not in common use now)
I like how you can use command keys to quickly toggle on and off the project file and current-file's-components browsers, leaving the "distraction free" * editor window for much of your work.
* yeah, there's a mode with this name that auto-wacks ALL the supplemental panels, AND the window frame. I don't usually go that far, but it does show that they "get it" as far as what many of us IDE resisters disliked.
Walking through a standard tech office you find half the people on random websites like hn instead of working.
The remaining half have dozens of apps open with the devs rapidly switching between them, as if cycling between 5 chat windows, 10 browser tabs, a couple of text editors, a work email client, a personal email client, and an IDE every couple of mins is productive.
"For personal reasons, I do not browse the web from my computer. (I also have not net connection much of the time.) To look at page I send mail to a demon which runs wget and mails the page back to me. It is very efficient use of my time, but it is slow in real time."
But the attitude of 'I won't even take a photography of my screen for a semi-noble purpose, something thousands of people do for spurious purposes, because I will not give up an inch of self righteousness, ever'.
That's what gets me.
This is not an screenshot: http://i.imgur.com/sEygQyP.jpg
It's only a photography, but it works just as well.
https://usesthis.com/interviews/brian.kernighan/
The screenshots are of Rob Pike's Sam editor.
I want to be able to drag the windows around to rearrange things with my mouse, not have to remember or look up keyboard shortcuts. The model of dragging things around with a mouse is intuitive and simple. Sure, have the keyboard shortcuts as well, but give us both! If I wanted to have to look up the documentation every time I need to perform the simplest operation with my software tools, I’d use git.
I would love to see some sort of tiling layout manager you could run on top of KDE. (Heresy, I know.)
1. the ability to run everything (a.k.a the whole project) using the preferred SCM (or build tools)
for example: mvn clean install
where your pom.xml already set to have cobertura (code coverage), checkstyle/pmd (linting/style/formatting), and findbugs (static code analysis)
2. the ability to run a very specific unit-test somewhere deep down in your project via your IDE as you're writing code (the IDE compiles your code on the fly...) and get everything I mentioned above :)
for example: I want to run one new unit-test for a new code => I don't have to drop to my console/command-line/terminal to run mvn clean install. I just go to my unit-test, highlight the method name, run it through eclipse/intellij and I get everything.
My workflow goes like this:
1. Write new code
2. Write unit-test
3. Run _just that_ unit-test w/ code-coverage from within my IDE without compilation (e.g.: no mvn clean install)
4. Get feedbacks (unit-test results, code-coverage results)
I take it linting/checkstyle/style-formatter is a given in sublime (I use jshint so I guess I know the answer to that ;)).
The whole point of a tilling window manager is letting the WM do that for you automatically. I use xmonad, you can use the mouse to select windows and even drag them around (though the combination of floating and tilled windows is ugly and unproductive). You have to configure everything from a text file with comments, but how is that any different from a GUI with labels and input boxes? It shouldn't take you more than a few days to get used to the shortcuts or define your own. Doing everything from the keyboard greatly improves productivity if you also use vim/emacs or other keyboard-driven text editor for work + the shell.
Of course it doesn't work exactly the same way; for example, running a single test doesn't involve highlighting it and telling Emacs to do something magical, but rather flagging it in a way that's specific to the test runner and then doing M-x compile RET RET to point the test runner at that file. The first time I do that, I have to tell Emacs what command I want it to run, but that's no great hardship, since it's buffer-local (each file I'm editing has its own value) and, being a simple test harness invocation, need change only when the filename does. If it matters to me, I can put this information in a configuration file, so I don't have to worry about typing it out even the first time. So far, it hasn't mattered to me. (And, yes, when I run a single test this way, I still get coverage information. Linting happens inline, as linting should, so doesn't really figure into things here.)
The mechanism differs somewhat from what you describe, but the result is the same. Just highlighting the desired test and invoking a keybinding might be a little quicker and more convenient, but so far it hasn't seemed enough so for me to go to the effort of writing Lisp code to do it. It wouldn't be much effort, but since invoking a specific unit test alone takes about a second, it also wouldn't save me much time, which is why I haven't bothered doing it.
A major point of interest here is that none of this workflow is specific to a single language or a single toolset. It works the same way across all the languages I use. Since I work in multiple languages on a daily basis, that's very important to me. It sounds like you work primarily, perhaps exclusively, in Java, so that's not as important to you. The problem is, you seem to have assumed that nobody else's tools can do the same awesome things your tools can do. As I hope you've gleaned from this comment thread, that is rather untrue, and proceeding from the assumption that it is makes you come off as both ignorant and arrogant. What you do with this information is, of course, entirely up to you.
I know most test-runners have the capability to run specific test which suggest that any editor that is capable of executing command-line and bind it to something can support my workflow with some annoyance here and there (as you mentioned, your setup isn't as magical as my description ;)). I mean... someone could've written shell scripts that help them run a bunch of things too...
This is akin of the discussion of using ctags and the need to detect file changes and re-run ctags. Last time I google it there were plenty plugins for each editors and ways to set it up (except there's no clear winner ;)).
The whole idea here is that the IDE helps you not to worry about any of that. IntelliJ supports multiple (mainstream) languages that fulfill my workflow nicely.
Good point that I'm sure Emacs can handle way more languages but the steps to set it up and the limitation (filename change? method name change?) feels more static than dynamic to me.
https://emptysqua.re/blog/unittests-code-coverage-in-pycharm...
http://blog.jetbrains.com/idea/2012/04/code-coverage-for-jav...