I almost switched to Vim a few months ago, but the impact to my performance was too high for me to keep it up for long enough.
I'm definitely going to be using Xray the moment it becomes stablish.
I almost switched to Vim a few months ago, but the impact to my performance was too high for me to keep it up for long enough.
I'm definitely going to be using Xray the moment it becomes stablish.
I don't understand why these electron editors are popular at all. With all due respect to the people working on them (because it really isn't their fault for the most part), they're bloated slow pieces of shit. I don't like electron in general, but its an especially bad choice for a text editor intended for developers.
If you don't like vim or emacs, sublime does what the electron editors do but better. Its probably the most performant of all the text editors I've used; vim and emacs both don't like gigantic logfiles, but sublime handles them without issue. The only bad things I can say about it are lacking vim emulation and worse dev experience than Emacs. But then again, I've never used an editor anywhere near as nice as Emacs in terms of language integration for a lot of the languages I work with.
IMHO it's the future of IDE's. After years of using vi and Intellij IDEA, I've switched to VS code (which is electron based) and never looked back. I find it as snappy as vi or sublime. I feel more productive because of all the plugins. For e.g. the fantastic https://github.com/eamodio/vscode-gitlens
Extending it is really easy using the language server protocol http://langserver.org/ . Our team spent very little effort to build a plugin for our open source project https://github.com/getgauge/gauge-vscode
Electron editors are successful because it's hackable and cross-platform allowing the community to extend and add an impressive list of plugins.
I would like to understand this better too. I'm guessing vim and emacs take too much time to learn, since they drag the whole unix ecosystem with them. Sublime might be a decent easier to learn editor, but it's a non-free product that could disappear one day, you have to go through the hassle of buying it and it's expensive one too. So sublime is not even a choice for most people. This leaves us with electron based editors as an acceptable choice. But obviously bloat, performance still matter and people will choose something better if available.
It's $80. If you work in text all day, then that's practically nothing.
It's kind of disheartening to see how little value people place on excellent software.
Tools generally cost money. Most people can't afford welding equipment but if you want to be a welder, you need it.
It is that mentality that killed the market of nice tools for developers.
Now everyone that wants to live from software tools has to target the enterprise market, where the tool won't cost $80 but a few hundred if not thousands.
I used vim for about 7 years and had a highly customised config with plugins tailored to my workflow. Got to my new job and spent a day trying to get YouCompleteMe installed properly, when I eventually failed I downloaded VSCode and never looked back. Everything's just so much easier to deal with than when I was using vim and I don't notice any performance difference.
I am happy with Vim for myself now, and am glad that I moved beyond the bloated IDE way of thinking, including Visual Studio Code. Yes, Atom had its shortcomings in that arena, but I'd still prefer to use Atom over Visual Studio, due mostly in fact that the project has contributed more to the community. Microsoft has made a single exception to abandon their native language frameworks and to use a bloated JavaScript jungle of software dependency hell that no one ever audits, in order to build a text-editor in a web browser that performs like Crysis and makes you feel that they are mining cryptocurrencies in some encoded javascript module. Vim on the other hand is pure text editor built in quality-optimized C and comes with pretty much every feature baked in. Atom is created and maintained in large by GitHub, and they have a much better reputation towards open source.
Unless you’re only using your editor, you need resources for other things too. VM based dev environments via vagrant, docker etc are very common.
What I don’t understand is why if you’re going to use an editor that’s resource heavy, you wouldn’t just use an IntelliJ product.
Sure, they’re jvm based and “heavy”. But they’re also fucking amazing, and have functionality none of these text editors are ever likely to have. Resource usage is acceptable if there is a benefit to the user.
Oh right. I forgot. You can afford a $3K brand new laptop but you won’t shell out $200 a year for a tool you use basically every work hour of every work day.
It alongside Java compilation can bring a machine with 10 GB free ram to its knees and end in swap death.
I deal daily with the variant called Android Studio. Enough that about 30% I'd the coding has to be done in vim for performance reasons.
The only great features are refactoring, advanced syntax highlighting, code completion and advanced search...
If someone wrote something that is not a hog and can handle Android flavor of C++ and Java as well I'd switch in a heartbeat.
This Xray is not it.
Mine is currently sitting at 1.7GB with 3 projects open, but yes it does use a lot of memory. I never argued that it doesn't, but as you point out:
> great features are refactoring, advanced syntax highlighting, code completion and advanced search
Syntax highlighting and search are common these days, code completion is in most decent editors/IDE's but the key one is refactoring, and it's associated tools: find usage.
I keep trying out KomodoIDE (still not really native, but at least it's not Java) hoping it will be good enough to change to, and it hasn't gotten there yet.
> If someone wrote something that is not a hog and can handle Android flavor of C++ and Java as well I'd switch in a heartbeat.
The problem for me I think, is language/tool support in general. I generally write in scripting/interpreted languages (although I have written Java for a client) but it could be shell, php, python, ruby, sql, or of course any number of 'data' formats - json, xml, markdown, yaml (if Im feeling masochistic that day).
My experience with developers I work with tends to be the same. The only place I usually hear about desktops being used, is in company office environments.
> Need the extra screens, full keyboard and mouse.
If you're at a desk where those things make sense, you can still use all of those things, but you also get portability if you want to take your primary working machine with you somewhere.
Edit: admittedly my next machine is potentially going to be a desktop. Mostly because this laptop while ageing, still performs OK, and will still be usable if I need to work outside my home-office.
Nowadays, you can plug several high-resolution displays in to a laptop (HDMI, DisplayPort, Thunderbolt over USB3...), and the integrated graphics will handle it just fine. Just unplug one cable to go to a meeting, or work out of the office.
> need the [...] full keyboard
If you're not doing data entry, and you're not using applications that use the numpad for keyboard shortcuts, then ditching the numpad is fine. I personally prefer laptops without the numpad because then keyboard is centered on the screen. Using a laptop where I had to have my hands left of center might drive me crazy.
> need the [...] mouse
Personal preference (largely influenced by the work you're doing). For precision graphical work, there's little that can beat a good mouse or trackball. For pushing text around the screen and browsing the internet, a touchpad or trackpoint is just fine.
At work we switched to Thinkpads with docking stations back in 2006.
Never used a desktop again, only once an abandoned tower re-purposed as server.
I take the opposite approach: I really enjoy using hardware which is exactly adequate to what I need it to do.
My entire senior year (2016-2017) of college, I ran Arch linux on an IBM Thinkpad X40 that I bought on eBay for 30 USD. It had a 1.1 GHz 32-bit Pentium 4, 1 GB of memory, a 32 GB CompactFlash card as a hard drive, a 1024x768 12" display, two hours of battery life, and a glorious keyboard (with an amber light above the screen!). I did everything on that computer: writing papers (vim and LibreOffice), writing assignments in C, Python, and Scheme (Chez and Racket), web browsing (Seamonkey), light image editing (Gimp and Inkscape), interactive 3D biochemistry simulation (Compucell), 3D modelling (Blender and Solvespace), and retrogaming (DosBox and Zandronum (Doom)).
I owned much newer, much more powerful computers, but I didn't use them at all that year because I really enjoyed using a computer that was exactly large enough in every dimension (spatial and otherwise) to do all the things I wanted to do without making me wait.
During that time, I learned a lot about the resource usage of various applications:
* Seamonkey used way less memory than Firefox. (Seamonkey has since switched to using the same rendering engine as Firefox ESR, so I don't think this is the case any longer.)
* UBlock Origin really is faster than Adblock Plus.
* Using ad blocker makes a HUGE improvement in browser CPU usage.
* I couldn't install Chrome/Chromium at all because they require a 64-bit processor.
* Dillo is really fast and uses very little memory, but isn't very standards-compliant.
* Netsurf is pretty fast and pretty low-memory, but it still isn't quite standards compliant. (For example, monospace text on Github always rendered as black text on black background.) It also doesn't ship with javascript support.
* No matter the browser, javascript animations in webpages always ran slowly and pegged the CPU at 100%. [0]
* Playing videos in VLC or mpv uses way less CPU than playing the same files in a browser.
* A lot of websites, including the HTML version of gmail, actually look pretty good in xlinks2.
* Suckless's `st` terminal has a very small memory footprint but takes an amazing amount of CPU time to redraw itself when scrolling.
* Blender and Solvespace are both very conservative with memory, and also are remarkably usable on a single-core machine with software OpenGL.
* Inkscape has a nifty tile-based rendering engine -- with a sufficiently complex file, I could watch it refresh the screen over the course of 0.2 to 0.4 seconds.
* Older versions of Inkscape (back when it was written in C) render way faster than newer versions (even the new 0.91 release, which substantially improved over the previous (still written in C++) 0.48).
* DrRacket allocates more memory every time you run your code. After a half-hour or so of write-test-write-test, I would have to restart DrRacket to avoid running into swap.
* CompuCell is actually very usable, even in a Windows XP virtual machine with 640 MB of memory running on the above laptop. [1]
* AbiWord is faster to launch but otherwise not much faster or lower-memory than LibreOffice Writer.
* When playing a video which the computer can't quite keep up with, VLC has a bad problem of ruining the picture and not fixing it for several seconds (until it gets to and successfully decodes a keyframe). mpv is much smarter about throwing away or skipping work, and is much less likely to propagate rendering errors over time.
* Brutal Doom's built-in low-performance setting doesn't clean up gibs over time, it just reduces the rate at which they are produced. A separate mod is needed to keep 1000's of gibs from accumulating.
* Quake 3 does not work well on a single-core 1.1GHz Pentium 4. (It runs, but the even with all of the settings turned down the frame rate is so low it's like having about a 250-500 ms ping.)
* muPDF is by far the fastest PDF rendering engine on linux.
* Vanilla Emacs is actually really fast.
* Spacemacs is remarkably more CPU-intensive than vanilla Emacs.
As a result of all of this knowledge, I was able to set the laptop up so that it was able -- barely -- to do literally everything I wanted to do on a computer on it, in a way that was comfortable for me. The machine and I were very in-sync, and I was working just as hard on my assignments as my computer was. I was very happy with the X40 and the way I had it set up, and very unhappy when it died the common X40 death (bad solder on the motherboard). I was very sad to get rid of that laptop; I had a much closer connection to it than my 2.4 GHz quad-core i5 with 6 GB of RAM. The more powerful machine is more distant. I never have to try to cooperate with it, and I never feel that it's really working with me in the same way that I felt about the X40.
I've been tinkering with a pair of OLPC XO-1 laptops. It would be awesome if I could comfortably use them for everything. I think that they're beautiful examples of industrial design, they are very open-source, and their screens have a really cool grayscale triple-resolution sunlight-readable mode. Unfortunately, I don't think I could live with 256 MB of RAM. There are just too many webpages that can only be rendered properly by engines that will need more memory than that. (Not to mention that the official operating system can't install more than 1 package at a time without running out of memory, and it has a memory leak that will fill the RAM up in less than a day.) Also, some projects I'm working on in Java would probably take a very long time to render on the 433 MHz AMD Geode. (Maven seems very bad at doing the minimum necessary amount of work.) I have been able to do some real work on them - I edited an existing SVG and animated it using Inkscape, a text editor, and epiphany. (http://bloominglabs.org/index.php/Logo#Animated_Logo)
I've turned this into a big, boring story about my own experience and preferences. I just wanted to say that, aesthetically, I really don't like software that clearly uses much more space, time, or energy than necessary to do what it does, and that I really do appreciate software that makes good use of space, time, and energy. After all, time, space, and energy are all finite. This occasionally has practical implications, but personally this is largely ideological. Obviously don't waste time (I only have but so much of it!), but as long as the software can keep up with me, conserving energy and space is admirable and desirable.
I should probably just write a blog post about this.
[0] This is, of course, only the case for browsers that support javascript (Seamonkey, Firefox, all the webkit-based stuff). The performance of Dillo, Netsurf, xlinks2, and all of the terminal browsers are unaffected by javascript.
[1] CompuCell's linux installer was completely broken at the time, and the build instructions didn't work. I did a semester's worth of CompuCell homework assignments and in-class interactive modeling in a 640 MB Windows XP virtual machine. It really was okay. In class, when we were all trying to tweak a simulation to get it to act a certain way, I was first to find working parameters a fair percentage of the time.
Nothing, of course. I just really liked the form factor of the X40, and using it was a satisfying experience.
> with a newer laptop everything would be faster
From my perspective, the experience would not be faster. I had everything working fast enough that I never had to pause or wait for the system to respond to me. The only things I was doing that would be noticeably faster would be compiling, but reducing hypothetical compile times from 20 seconds to 5 seconds still requires me to stop and wait for the computer to compile.
> you could run Quake 3 without lag
I could do this on a newer computer. However, I found other games to play instead, and never missed Quake 3. Even though I'm back to my more powerful laptop now, I haven't played Quake 3 since the time I tried playing it on the X40.
The point of my post was that I was able to do everything that I wanted to do on the X40, and that I never felt like it was inadequate. There are all sorts of things that my newer laptop could do that the X40 couldn't, but I don't do any of them.
It would cost me several thousand dollars for a laptop with enough storage to make me happy, or I could get one with a hard disk from dell for under a thousand, or stick with an older machine for nothing. The difference goes into my home loan for me, for others it goes into a number of other things, from hobbies to investments. Just because you are making good money doesn't mean you should waste it on top of the line everything.
It also puts you much more in touch with your users. MS used to enforce the concept of dogfooding but it seems they only do this on top of the line surface pros these days. At least that's the only reason I can think of that allowed windows 10 to get out the door in such a broken state. If they'd had my cheap dell they surely would have noticed the multiple seconds that it can take for the start menu to load with a spinning disk in the mix.
> If the tool is good and doesn't touch your limits why does it matter if it's as slim as a demoscene release or as hungry as a browser tab?
Yes, the bloated one will slow down the rest of my system, we might have multiple GB available but they are still competing over other extremely finite resources like processor cache, disk buffers, etc.
Mac Mini 2012 here, what's the problem? I just don't use bloated text editors or chat apps and it works fine.
All us 'cool elite programmers' as you so blindly follow, have moved onto to use neovim.
:P