Atom 1.0
blog.atom.io
blog.atom.io
I'm a Sublime license holder, but I use Atom as much as I can, because the more open source can win, the better.
However, yesterday I was doing some complex regex's (porting a random sql dump file into a seeds.rb), and Atom kept dying, whereas Sublime was pretty much instantaneous.
I'm not doing the usual "Atom is slow" drum beating, but saying some undertones of the announcement make me worry a bit. I hear discussion of things like Electron and "social coding" as the future, and I'm hoping that means that no one considers 1.0 to equate to the core editing experience being finished. It's not, and I hope the Atom team continues to iterate before moving on to new features.
Being able to open files larger than 2MB isn't sexy, but it's necessary. Having to hard-kill my editor because the save dialog is trapped on my other full screen session that it won't let me get to deserves more than a "but it's open source" response.
tl;dr congrats team and your core users want the best editor possible over bells and whistles
Seems off base to me too.
I'm pretty sure it's a limitation of the underlying webkit, as loading a file that big in the browser is typically a bad use case.
All in all I'd say the experience editing large files still completely sucks compared to every other editor I use.
Don't get me wrong, I still love and use Atom, but they really need to come up with a solution to this problem, because it's just ridiculous. The fact that I have to occasionally leave my text editor to edit certain text files is a huge black eye that many people won't put up with, and which I will eventually get tired of putting up with if they don't do something about it soon.
One thing I think they could do is take advantage of the fact that when you are editing a file that large, you don't expect to have a particularly good experience with the scrollbar. I don't open a file with 10 million lines and grab the scrollbar to get to the spot I'm looking for; it's just not practical. Over a certain size, they really don't need to have the entire buffer in memory at once, and maybe they don't even need a usable scrollbar so much as they need good relative navigation and search. It would be perfectly reasonable in my opinion to have a "large file mode" for the editor window that has subtly different behavior that makes it not so ridiculously heavy.
Opening up a decent sized development.log did cause it to throw random errors however.
I'm using Sublime 2 on OS X and large files + regular expressions are generally a cause for pain.
Do you have any default settings changed like disabled document preview or similar?
The only thing I generally feel is a champ at regular expressions + insanely large files on OS X is TextWrangler/BBEdit. In fact, I keep TextWrangler around specifically for the large file excellence experience which I (currently) don't receive on Sublime Text 2.
I don't have issues with large files on OS X.
[0]: http://www.sublimetext.com/blog/articles/sublime-text-3-buil...
EDIT: WOWOW
Major difference! Definitely sticking with 3!! Thank you :D
Extremely fast in comparison to 2.
However, as I understand it, the issue is not so much with raw size (although it does not help) as it is with long lines.
For instance, the following 161K file freezes completely Atom, to the point that you just have to close it: https://github.com/espadrine/aulx/blob/master/html/tokenizer...
The reason is that the core syntax highlighter (https://atom.io/packages/language-javascript) is heavily unoptimized, and tries precomputing data for the whole line without considering that only the first 0.5k characters will probably be seen.
It is too bad, as this was already fixed globally in existing web text editors such as CodeMirror. Given that it is used in Chrome and Firefox' DevTools, and that JS minification happens on the Web, it had to.
I just downloaded it and you are correct, it locks up. Its the really long line here: https://github.com/espadrine/aulx/blob/master/html/tokenizer...
If I open it in Sublime 3 I see that they don't bother to syntax highlight long lines. They just skip it.
Issue filed:
It appears that Sublime Text 3's threshold is 16384 (2^14) characters. Longer lines are not highlighted. Works quite well to be honest.
https://github.com/espadrine/aulx/blob/b745723680f541353ad50...
As a vim/cli/linux user -- I'm trying to understand -- you were doing search-and-replace? As in what one (some would say a masochist) could do with sed/awk? And/or 's' in vim?
(Sed is in some ways more relevant as it works on streams, and so as long as you have the diskspace to store the edited copy, size shouldn't really matter. I suppose it might be possible to have long enough lines that sed chokes, but I've never had to deal with something like that...)
http://i.imgur.com/McaVhKJ.png?1
The menu has no margins and no padding but, worse of all, everything is tiny. Note that the main text font is smaller than the i3 top bar (which is at the barely readable size).
HiDPI support is not something esoteric nowadays. Lots of hardware requires it, and Linux toolkits support it rather well (not perfect, but ok anyhow).
I fiddled with Atom's CSS enough to test drive it. It is ok for common tasks, albeit a bit sluggish (I come from vim...). I could live with that. What I can't live with is all manners of breakage my custom CSS introduced, so I can't yet do a one month run with the editor to kick the tires.
I usually install software on my user folder on the work laptop, as I don't have enough priviledges. This time the installer worked, but why override the questions to the user, like install location, etc.? There's a standard for Windows installers, why did they ignore it? Not cool.
I agree that I didn't like the default shortcut and context menu entries, however.
Actually they have a point. But Windows and PCs are not as straightforward as that.
It's also packing a full browser, don't forget that. And likely all sorts of assets.
I particularly don't care. I'm more interested in how it performs during use.
By the way, task manager indicates it's using less then half that of RAM, with a few tabs open.
They have their own version of Chromium called Electron. But I recommend nwjs instead, witch is also built on Chromium and nodejs. And lets you make packages that only include your source code, so that you don't have to download the "browser" for every app.
ref: https://github.com/nwjs/nw.js/wiki/How-to-package-and-distri...
You probably want to include an "install" script that:
* Download and install nwjs if it doesn't exist
* Make the "package" open with nw.exe
* optionally: Create a shortcut to the "package" on the desktop
* optionally: Set a icon for the shortcut
Or instruct the user on how to do it. Many files work that way, that you have to select a program to open it with, so the user probably already knows how to do it.Oh, come now. Even make install makes assumptions about default directories etc. The right to override is the correct level of control over target directories - people who care can make that call, and indeed will be looking for the opportunity. The rest of us would merely like to find our new piece of software in the start menu/spotlight/PATH.
If you use Scoop, add the extras bucket using:
scoop bucket add extras
Then install atom scoop install atom
It will install it into your user folder. No privileges required.It's super easy to hack on and contribute to.
Might be time to work on some tutorials and examples to make Emacs easier to hack on and contribute to...
For example: http://tullo.ch/articles/modern-emacs-setup/
Have any experienced Emacs users found that Atom makes them more productive in any dimension? I want to like it but I can't see the light at the end of the tunnel.
No. Emacs is far and away superior. It doesn't have a flashy web UI, but it is better in every way that matters.
Random example from my user.el file:
(set-cursor-color "White")
(setq blink-cursor-interval 0.5)
With some trial and error, I could find out if `(setq cursor-color "White")` works. Or see if `set-blink-cursor-interval` exists. Or look up why `set-cursor-color` exists in the first place when surely it's more consistent to just modify a config variable. Or find some best Emacslisp practices online. Or figure out why I could never get working my one attempt to write a custom function to scratch my own itch.But I just can't be bothered anymore.
Seems like Atom is having an easy time beating Emacs on this front, and I'll probably switch over for good the next time something breaks in my .emacs.d folder.
Go read the manual. I mean, I know it's not cool to read books, and manuals at that, but the Emacs Lisp and Emacs manuals (available in info format for viewing directly in Emacs, among other) are well written and there's a wealth of information there. Even relatively low-level stuff gets explained quite well. And also, try using the help system/apropos tool. It's great for finding functions and variables. Lastly, you can always issue "find-function" or "find-library" which will take you directly to the source code.
> With some trial and error, I could find out if `(setq cursor-color "White")` works.
Use iELM session for this (M-x ielm). You'll get Elisp REPL, where you can write expressions and it'll show you their values. In this case:
ELISP> cursor-color
*** Eval error *** Symbol's value as variable is void: cursor-color
so, no.> Or see if `set-blink-cursor-interval` exists.
In ielm:
(symbol-function 'set-blink-cursor-interval) ;; (no, it doesn't)
Via help system: C-h a; then input the name.> Or look up why `set-cursor-color` exists in the first place when surely it's more consistent to just modify a config variable.
Don't know why is is so, but you can possibly find some explanation in the source code. `set-cursor-color` is defined in /usr/local/share/emacs/25.0.50/lisp/frame.el.gz on my system on line 1223. You can get there with M-x find-function.
> Or find some best Emacs lisp practices online.
Does it really have to be online? There is a full book for this: "Writing GNU Emacs Extensions". It's old, but solid. [EDIT: and also https://www.gnu.org/software/emacs/manual/pdf/eintr.pdf]
> Or figure out why I could never get working my one attempt to write a custom function to scratch my own itch.
Sorry to break it to you, but if it's not working it's because you coded it wrong. All my defuns do work...
BTW, do you know that you can one-step Elisp code with a built-in debugger? Just find a defun, eval it via C-u C-M-x and you'll get breakpoint at the defun entry.
Don't think so. Atom is still a toy compared to Emacs (but awesome compared to almost everything else except for Vim).
However, it has enormous potential and, given enough momentum, could reach parity with Emacs.
Emacs has much more commands for simple text manipulation than any other editor (ofc, excluding Vim). No editor that I know of implements all the Emacs commands for even simple things. For example for marking and navigation in a text (mark-, backward-, forward-). Indentation and newline behavior, searching and replacing in a file (search- and replace-*; also occur-mode). And more.
I'm sure all editors will, sooner or later, get most or all of those, but using them right now would be inconvenient. I don't want to have to record macros to deal with such simple things!
And then of course is a matter of Emacs plugin ecosystem. It is enormous and includes some neat stuff, like Magit, Org, Helm, Undo-Tree, multiple cursors, Paredit, Minimap, Speedbar and so on. Some of those are "outside of scope" of the new editors, but some would be very welcome in them. I suspect that they will appear in time, but right now I wouldn't have access to them at all if I used some other, new editor. (By the way, in my experience as both Emacs and Vim user, these two are interchangeable in terms of available plugins. Emacs seems to have a little more of them, probably because Elisp sucks a little bit less than VimL)
1. Develop tool. It's small and fast and minimal! Woo!
2. It's easy to modify because it's so small! Woo!
3. Look, there's a budding ecosystem of packages! Woo! (Let's
not talk about the fact the packages exist precisely because
the original product wasn't big enough.)
4. Oh dear, some of them conflict, a lot of them suck. Well,
here's some winners, let's pull them into the core. Now the
base system is that much better! Woo!
5. Repeat 3 and 4 a few times.
6. Crap, this tool is all bloated and slow. I'm going to go
create a small, fast, minimalist solution!
Repeat indefinitely.See also: "minimalist web framework", "minimalist Linux distribution", "minimalist programming language".
So for what it's worth, I'm very unconvinced that "bloat" is the automatically-bad thing that whoever is saying #6 says it is. There are things that are just crappy amalgamations of whatever, sure, but there are also a lot of big things that solve hard problems, and part of the implication of the cycle is that every time a #6 pops up and starts a new project, (s)he is inevitably beginning on a journey of discovery in which (s)he will discover why the previous tool got big. Big problems require big solutions. And it turns out that "text editing" looks really simple, and gets really not simple really fast. Same for the other two things.
I've literally lost count of the minimalistic text editors with great plugin interfaces that have paraded by me at this point.
(And... uh... how can I put this delicately... writing a good web framework is actually a non-trivial exercise. The web is complicated to do it right. If you've got a 250-line web "framework", odds are what you've got is 250 lines that sorta kinda work as long as nobody tries to hack it and nobody cares about actual compliance with all of the implicit and explicit standards embedded in HTTP. It may be suitable for your blog, it may be suitable for a 3-call API, but it's probably not suitable for anywhere near as many things as you'd like. And it's probably brutally insecure somehow.)
Text editing is really simple. The problem is that plain text editors are mostly only used by coders. (Non-coders who want to write text use Word.) And coders want features like syntax coloring, autocompletion, split views, multi-file management, etc. Features that would be of no use to someone writing a quick email or jotting down a cake recipe. Basically, what coders want is a program that looks as simple and feels as lightweight as a plain text editor, but gives them many of the features of a full fledged IDE.
First, whatever you don't use, it's not even loaded in memory.
Second, bloated is all about having tons of options you don't need or use. Not about adding stuff you DO need piecemeal.
Third, bloat is mostly a UI thing, not a "number of add-ons" or "too many lines of code" thing. Programs don't get slow because they are "bloated" with extra code (if it doesn't run, then it has 0 effect on their speed). They get slow because they are badly programmed (e.g. loading one big text file all at once in memory instead of having a paging system).
The availability of tens of thousands of packages hasn't made Emacs "bloated", much less Vim or ST. Or even installing those packages doesn't make those editors feel bloated.
Whereas something like Eclipse was bloated from the start -- because it was a very heavy design with tons of abstractions layers, ton of built-in options and visual clutter etc, created on a GCed language with frequent stops on larger codebases etc. That's even without any third party plugin added, just the Eclipse Java SE core packages.
What's an example in the wild of this "cycle of bloat" in which people complain about it?
Atom exists because ST3 was seen to stagnate, ST3 exists because TextMate was seen to stagnate etc. They start as simple but incomplete tools that are moving fast and blah blah - its just the software circle of life.
Emacs? Yes. Absolutely. Emacs once stood, humorously, for “Eight Megabytes And Constantly Swapping”. That is a valid complaint that people have made.
First it was lean. Then it grew and became bloated. Then people complained. And then available resources grew so fast that it didn't matter.
I didn't say emacs is too bloated to use, so your entire comment is a little off base. I said people have complained about emacs getting bloated in this same way for the same reasons. And they have. Historical fact.
... no? Hate to dismiss your entire message that way (I mean that seriously), but...
People appear to be assuming a great deal more universality than I could possibly have implied, since I don't believe it's a universal problem anyhow, and never addressed scope. It's just a cycle that definitely exists in some domains.
It's gotten to when I see something described as "minimal" I tend to just roll my eyes and move on. Especially when combined with accusations, veiled or otherwise, that something else is "bloated", which at this point I tend to just assume is a meaningless feeling word with no real technical content. Yes, that includes when used in the context of "cycle of bloat"; this is a cycle endlessly recurring, yet has very little technical content. Mature text editors are, to a first approximation, all the same. (Yeah, there's some differences, but, meh.)
For example I use vim, and when I tried Atom I threw on two Haskel add-ons and my system was unusable. Then I removed the add ons and my 7 year old desktop on OpenSUSE just lagged away. I than went to my other old desktop all in one and that lagged away just at typing (This was a month ago) and adding anything to Atom slowed down so much that typing was lagging let alone any feature.
In terms of performance, stability and extensions this doesn't even hold a candle to Eclipse Mars.
For your step 6, it just means disable all packages and add them back only as needed.
I think the web has stabbed that one dead, though... ship a proper HTML5-compliant browser engine, and, well, you're already looking at a whackload of startup time and tons of functionality. The size of the chrome is hardly an afterthought nowadays. A really "minimal" browser can hardly browse the top-ten sites anymore.
(Wikipedia's still looking pretty good in Lynx, though... just checked.)
The amount you need to be able to do to just load a basically-plaintext webpage now is absurd.
My all time favorite reply about bloat: "X is big because your needs are big" (in the article X = Mozilla).
1. Small, fast and minimal.
2. Easy to create plugins.
3. Budding ecosystem and explosion of plugins.
4. Conflicts ensued and some plugins got pulled into the core project.
Eventually, the growth of jQuery tapered off as the project stabilized. Not only did the size taper off, it got smaller as well. After nearly 10 years, we're talking about a payload of 30K minified and gzipped.
https://mathiasbynens.be/demo/jquery-sizeThe cycle of bloat doesn't always take hold if your team is disciplined and dedicated to keeping it small. You simply can't expect to your 3.0 to be as small as your 1.0 because it's very unlikely you're going to know upfront how people are going to use your software.
Even if it's not actually true (as you've said, it literally is not bloated wrt filesize) people still think it's true.
If you have limited time use it, but you'll spend more time later trying to remove it again. Building and then marketing a library that lists jquery as a dependency is somewhat of a blight these days, isn't it?
At what point does software become bloated? I disagree that you can approach measuiring size bloat with absolute file size as the only factor.
I rather tend to think of bloat in terms of comparing the solution to other options to achieve the same result. In that sense, if I use jQuery for something that I might as well use plain DOM for, e.g. waiting for the document to load fully before selecting an element to change its content, the level of bloat the additional 30k adds to do the same is ridiculous.
Of course, if you take into account the whole stack of software running from the bare metal up to your browser window, 30k might appear negligible, but when you have a few tabs open with sites that all load hundreds of kilobytes of badly generated CSS, JS frameworks and pictures, and the actual rendering and execution of these consume orders of magnitude more run-time memory, it all adds up.
Don't recall claiming everything is under the "cycle of bloat". The fact that I gave specific examples was a pretty big clue that it's not all equal.... and jQuery isn't in any of them, either.
Edit: Sorry, is there something wrong with my pointing out that I didn't ever claim the things being imputed to me?
I can make lists too, if that's all we're doing.
1. Get a cat.
2. Cat requires playtime or they ruin your stuff and can be annoying.
3. Repeat 1 and 2 a few times.
4. You are a crazy cat man.Of course not. It's categories of software that have the cycle of bloat. I named three, by implication "text editors" are a fourth.
Based on the way people seem to be blinded by the word "bloat" naming specific examples would be seen as an attack, followed by vigorous defenses of how it's not "bloat", which, at least as far as I'm concerned, is a total waste of time because as you can see in other messages I consider the whole "bloat" concept a joke anyhow, so why stir up the conversation like that unnecessarily?
Naming the specific instances is irrelevant, because it's not about the specific instantiations. It's not the software, it's the cycle. Pretty much every text editor ever has started out as a "lean, fast" text editor. And then they grew. And then someone claimed that all the existing text editors are "bloated" and set out to make their own text editor.
Not Notepad. http://notepadconf.com
> .TXT: NoSQL before it was cool
> Advanced Notepad developer and VIM opponent.
> Hacking Notepad.exe : Using a hex editor to change the blue icon and more
> Workshop: Integrating Spell Checking Into Notepad. Attendees should bring a copy of Notepad, and a dictionary.
Chrome advantages for me: - install pages as apps (Mozilla prism isn't supported anymore)
Chrome disadvantages for me: -Missing all the most useful plugins
But by 5 o' clock when I've got three windows with twenty tabs of docs / bugs / reproduction / etc. Chrome bears the weight much more gracefully.
What I disagreed with was the way you characterized and described the growth of pluggable software. You might not have intended it, but a reasonable reader would have interpreted your post as a, "This is what happens to software with an extensible plugin system".
If I were to hazard a guess I'd say that people are finding your responses unnecessarily adversarial and pedantic. So the guy misinterpreted your comment as overly broad, you could try to understand his point and continue the conversation rather than simply "winning" by pointing out that you didn't say exactly what he implied.
FWIW I agree that the cycle exists. Especially in enterprise software, except there it's usually less about pulling in plugins and more about directly adding features to core to support more use cases/customer requests until the whole thing is a giant mess (in terms of UI, codebase, everything) and ripe for disruption by a "lightweight, fast-moving, focused" competitor.
Combining a DOM manipulation library with an AJAX library and a Promises/Deferred library is and has been a pain point for me.
Also some of those size reductions have been at the cost of features (in particular by reducing the target browser set)
Its a great project. I use it a lot but I'm not sure its a counterpoint to bloat.
You're missing my point. I'm not claiming jQuery is not bloated, what I'm claiming is jQuery hasn't bloated (grown) a lot since it was first introduced. It started out as a single one-stop-shop library to handle DOM manipulation, AJAX and event handling and the scope/size of the project hasn't really grown beyond that.
I'd love to promise I'll never do it again, but I'm tempted to try to draw the poison out, too. Bloat ought to be a technical concept, not a political one.
I can't access it, but I bet even my WIFI router, tv and PS4 have a vi somewhere laying around, ready to help with debugging in case a corresponding core developer comes around to take a look.
Basic things like https://atom.io/packages/find-and-replace
Facebook's nuclide project replaces a bunch of core features like the tree-view and the quick file opener.
> let's pull them into the core
That doesn't actually happen. They may adopt a package or publish a more official version of a package, but all major functionality is in packages.
This pattern is also not uncommon. There are many high quality linux modules and distributions built on the linux kernel.
It is likely atom will take a similar architectural approach. Make it easy to build and add plugins and let the community shepherd them.
- Cross-platform editing - Built-in package manager - Smart autocompletion - File system browser - Multiple panes - Find and replace
Is it me, or most of these are so basic that of course any text editor would have at least this set from the start? Right, autocompletion came in several steps for Atom, but .. I have used Atom for a while and it seems to understate the real advantages over other editors, such as: it's a GitHub product!
Which brings me to the part where I couldn't stand Atom: I should be able to do any git operation strsight from Atom, no configuration files needed, with a default plugin! Instead, we are left with many community plugins, like git-diff and atomagit. I hope things will evolve in a way similar to autocomplete.
Atom is my favourite editor for coding in, and it just keeps getting better.
I introduced my team to it today (pre 1.0 release, this is a nice surprise) and they were surprised by how pleasant the experience was - just a few minor hiccups. We've tried a bunch of editors and usually stick with Sublime because it's easiest to use while pairing, but I think that will change now.
Sorry for the tough HN crowd, you can never please them.
Here's to Atom 2.0 <3
Can it be that we are both using old version of the editors (atom for you and vsCode for me)? Else it seems strange this difference of behaviors
"Initially developed for GitHub's Atom editor"
So what are we talking about?
OTOH (also in my experience), Atom is somewhat Eclipse-esque (though admittedly not nearly as bad as Eclipse) in that the performance problems it has at scale cannot really be solved by throwing more hardware at it... whether you are on a relatively low-end laptop or a high end pro workstation with a 3ghz CPU and dozens of gigabytes of memory, if you open just a few big (>2 megabyte) files in Atom you're pretty hosed.
Also! I was able to create the colorscheme of my dreams in about 15 minutes, thanks to to the dev tools integration.
The limitations feel very few, and as someone who spent a LOT of time getting my Vim environment exactly as I wanted it, switching over to Atom was a breeze as I went through my .vimrc trying to match functionality; most of it was already there.
One thing I wish they would implement (and I'm sure it will come with time) is the ability to fully navigate the file tree with the keyboard, similar to NERDTree. All you can do right now is arrow up and down, after toggling over.
I've heard its like Emacs -- and now I know what people are talking about!
If you have a lot of style settings in your vimrc, the ability to use an actual stylesheet (when combined with the native chromium dev tools) make tweaking the look and feel absolutely trivial.
Atom's installer is a huge download, and the editor is much slower ... It also consumes much more memory and written in coffeescript. Takes a long time to start up ... just a few things on the top of my head.
It's a great initiative though so that's already a good point.
Which, for Emacs, is not an issue at all. Leave the server running and all clients will open instantly whenever I ask.
The downsides are that it's comparatively slow. The vim keybinding emulation isn't great but I can now use it without getting frustrated using ^[ to get back to normal mode.
I still use Vim for most things but I do Clojure/Clojurescript in Emacs evil-mode, and Typescript in Atom.
E.g. I can't type '@', '\', and 'µ'. Yes, I can't write metadata annotations or escape some characters.
Perhaps such keyboards don't concern that many people?
https://en.wikipedia.org/wiki/AltGr_key
Also, this was supposed to be fixed in 1.0. I don't know why they decided to release 1.0 prematurely.
LiveScript is a pain with it :\
Now I can `quote´ in annoying ways or more ‘proper’ ways. This is life changing.
It's also nifty to be able to type ¼ and ½
Typing accented characters is far easier in Spanish with a Spanish layout, that we all grow up with. The software shouldn't just ignore half the planet on the basis of "use English".
Personally I even prefer the German layout for programming, though I've met a lot of programmers who prefer the American layout because it requires less chords.
My new laptop has a weird keyboard that seems to be based on the US keyset with the right symbol key replaced with the ISO key you're referring to. In other words: angle brackets are right next to the space bar (left ctrl, symbol key, left alt, space bar, angle brackets, AltGr, Fn, right ctrl). Also the arrow keys are lodged in between that and the numpad. It's odd, but I have gotten used to it.
The only problem is finding an external keyboard with the same layout. I found that switching keyboard layouts is extremely bad for my productivity but I don't want to carry around an external keyboard everywhere I take my laptop.
It's... suboptimal.
The main reason to use this keyboard for me is the trackpoint - my hands never leave the home row (I have arrow keys and a num pad on layer 4, see http://neo-layout.org/ (mouse over the "Ebene 4" button).
This really does make it hard for me to user other machines, you're right about that (although every linux distro ships neo, and for windows there is a no-installation-required autohotkey-based executable). But I'm not using other machines enough to make any compromises there. 99% of the time I'm using my machines, and that's what I've optimised for.
In the meantime however I recommend using this package https://atom.io/packages/keyboard-localization which has worked really well for me (german keyboard).
In general tho, I am pretty hesitant to go all in with CoffeeScript, mainly because you still have to watch and massage the javascript output, negating any time saved for me at least.
When I first revisited JavaScript after a long time writing Python code, I was quite fond of CoffeeScript because it let you pretend you're not actually writing JavaScript and because it enabled a lot of idioms that didn't exist in vanilla JavaScript.
CoffeeScript is decidedly not an extension of JavaScript. It doesn't build on existing JavaScript idioms and just add syntactic sugar (partially because many idioms of modern JS simply didn't exist at the time and there was less consensus about them) -- it substitutes idioms from Ruby and Python and implements their syntax, all the way down to changing how variables are declared and how the equality operator behaves.
CoffeeScript is written for programmers who understand JavaScript but don't want to write JavaScript when creating JavaScript code.
Thanks to Babel.js ES6 (now ES2015) is now a thing. Most of the new things CoffeeScript brought to the table for JavaScript programmers are now satisfied by the language itself or syntactic extensions supported by Babel. There is a well-understood and well-defined class syntax, there are arrow functions and tons of syntactic shorthands like method literals and object/array destructuring. What's more, because these are now officially part of the language, Babel itself just serves as a stopgap while we wait for the JS environments to catch up.
Outside its original use case of allowing Ruby programmers to avoid writing JavaScript, CoffeeScript is obsolete and (at least in terms of hype and momentum) dead. It has outserved its usefulness and has given way to more specialised languages (e.g. ClojureScript) and Babel.
It's unsurprising that Atom core is written in CoffeeScript if you consider that GitHub is and always was predominantly not a JavaScript company but a Ruby company. It is heavily invested in the Ruby world and CoffeeScript is part of the Ruby world more than it is part of the JavaScript world.
I'm not sure whether CoffeeScript's role in the Ruby world will change anytime soon, but outside that microcosm, it has become irrelevant and is quickly fading into obscurity. It served a useful purpose at the time and it has certainly influenced the development of ES6 but other than allowing Ruby programmers to avoid writing JavaScript it's just no longer worth bothering with.
Also note that at the time everybody was trying to replace JavaScript with new languages (which were either supersets of JavaScript (like TypeScript), shared a common subset with JavaScript (like CoffeeScript) or did something else entirely (like ClojureScript)).
Babel is part of a general movement towards unification. Babel out of the box has support for JSX and type annotations (which are already just defined in terms of extensions to JS). Google's AtScript has been redefined as an extension to TypeScript (which in turn seems to be moving towards redefining itself as an extension to JS). I think this is a far more productive development than everybody trying to create their own compiled-to-JS language from scratch.
In a nutshell: I don't hate CoffeeScript, but I consider it a major smell when evaluating libraries and projects. If it's written in CoffeeScript it might as well not be written in JavaScript at all.
(..and yes, its technically possible to do with plain js, but I challenge any of the 'but just use js' folk to link to a popular plugin, with a UI, that does)
Seriously, CofeeScript is tiny.
I tell you what, you try it and tell me how it goes for you?
It's really not that simple.
It's just one extra barrier of entry for non-coffeescript developers. I personally thought about writing a simple plugin, went to the documentation and realized it was all in coffeescript with no JS option, and gave up. I simply don't have the mental capacity to learn another language that probably won't be around in 10 years.
CoffeeScript is a nice language, but I think it's reputation suffers from it's association with Ruby. Far too many CoffeeScript tutorials are aimed at Rails devs who don't want to learn new syntax.
Fair enough on the == operator, but it's another that I have honestly never needed or wanted.
I quote:
> The UI library is in coffee script; if you want use a UI for your plugin, youre pretty much stuck using it.
> (..and yes, its technically possible to do with plain js, but I challenge any of the 'but just use js' folk to link to a popular plugin, with a UI, that does)
I agree it's a pity.
EDIT: the blog post mentions support for Babel! http://blog.atom.io/2015/02/04/built-in-6to5.html
https://github.com/jashkenas/coffeescript/issues/3162#issuec...
It's not that they've decided they're opposed to ES6, it's just that there's been no leadership in moving towards it. Which at this stage has left the language almost dead in the water.
(I jumped ship to babel though)
On the other hand, confusing both concepts is bad because it makes it harder to reason about scope, and it has been the cause of much confusion regarding closures in Python and Ruby.
The ease of finding and installing themes and plugins is unparalleled.
Considering trying it for a week or two as my daily driver (with vim mode, of course.)
However, one thing that stands out to me, the file size of Atom.app is 203MB!! How in the world can a text editor be that large? Compare that with MacVim, which is about 27MB.
I wonder this too - it's a freakin text editor. A very cool text editor, but hundreds of megabytes?
More to the point it is suspicious that such a basic functionality as a text editor has so much weight without reusing things with other programs. If every program measures itself by the same standards of size, we will all run out of disk...
edit: And the full WebStorm app is 293.5 MB
It pains me to say this as a JS dev, but I think basing it on web tech was a mistake. It makes the app slightly, but noticeably, less responsive. Just recently they posted a big long thing about getting scrolling to be fast. I dunno, I feel like if such things are an issue in 2015 you may have made a mistake.
What? I don't get the value proposition.
That said, I think I care more about performance. Sublime Text is just unbelievably rock solid.
Making websites is a huge pain in the ass though. Why would I invite the DOM into my life?
So few websites are pure text these days, you inevitably end up needing loads of GUI widgets and the DOM is simply not suitable for laying them out in a sensible way. It takes ages, and css layout 'rules' are so hard to predict. You shouldn't have to be a guru to just put some fucking boxes in a row.
Try building a desktop app using any mature constraint-based layout system, and you'll see what I mean.
This is how java does it: https://docs.oracle.com/javase/tutorial/uiswing/layout/visua...
As you can see, pretty much every css framework is actually a hacky attempt to replicate a GUI layout pattern from 20 years ago, and you have to turn backflips in order to convince the DOM to do it performantly.
- either I am getting slower or Atom is getting much faster, - some things with linting for ES6 don't work in ST2.
However, for some tasks I need to open bigger files, and for them I still use ST. It's just sad it didn't go open source... (now it is too late).
1) It comes up sometimes, and your editor should cope 2) Having a hard file size limit so low is (to me) indicative of you doing something wrong.
(You might consider it an abuse of the format, but it is not completely without reason.)
ST3 (well, the plugin for doing it) breezed through prettifying and un-prettifying of the data.
https://www.sqlite.org/download.html
shows the amalgamation, which is the main thing you'd build, having a 5.4 MB sqlite3.c file. I can easily see someone making a change to it if they wanted slightly different behavior - or to consult it for canonical behavior - and I was pleased I could glance through it in Sublime.
IMO the fact that vim is so versatile is part of the reason it has come so far.
I do not object to the existence of Atom -- it scratches some people's itches, so that's fine -- but I do not buy "it's supposed to be a code editor" as enough of a justification for using it versus other text editors.
"X doesn't do Y" "Did you really want Y"?
Of course they do, they just complained about it.
> It's not unreasonable to say that these are two different classes of programs, with different basic requirements.
But it is reasonable to hold a piece of software up to standards set by the majority of other software in the same realm. Other text editors can open log files, this one probably should be able to, too.
> Of course they do, they just complained about it.
It's just a rhetorical way of saying "I don't understand why that is a problem", and a request for explanation. I would say that's a pretty reasonable response to "I found this is a problem".
I can open larger files with emacs, nano, vim, nvi, ed etc., so I think that it's fair to say that the limited buffer size plaguing Atom is a solved problem generally. Somehow it has a built-in package manager, but falls short of ed on very basic text editing facilities.
I think the future has a lot of potential though, as Visual Studio Code has demonstrated you can indeed have a very responsive editor built on javascript.
Searching packages failed: atom.io is temporarily unavailable, please try again later.
Also, install Mercurial before the go-plus package. See "Missing Tools" near the bottom of the page.The installer is almost 10x times as large as the sublime text installer.
Please leave "web technologies" where they belong.
However great the community might be, this is a flawed concept. Native apps are better for certain things today. This is one of them.
I started using Atom a year ago, but at that time it was very unstable and the performance sucks so I switched back to Vim.
This 1.0 still has something to pine for: some of the essential packages are still not updated for the 1.0 API (vim-mode, etc), and when processing large files it still slows down significantly, but as they say, it's now a good foundation to build upon.
If you ever did any development on packages, you may have a development version laying around preempting things. Check in ~/.atom/dev/packages and remove old versions (or git pull them up to the latest dev version).
I had a super old version of tree-view for a long time this way. :)
Later in my search for an editor that handles EJS, I rediscovered Atom. It really has improved since it first started. AFAIK, Atom and Sublime are the only editors that handle EJS. I also use Atom to edit JS, JSX, gradle, and FTL which work well as well. Still I stick to IntelliJ for most programming languages since I haven't found a way to get code completion, reference jumping, etc to work on Atom.
Very impressive work from the Atom team and the contributors!
This issue is still present in the current release. It seems like a minor annoyance but when it happens it really kills my productivity.
The speed issues are all but gone imho (start-up is a bit slow, but I have it open almost all the time so I hardly notice).
The main reason I switched was because Atom is FOSS, and that always bothered me about ST3. It's also very easy to hack on, which is nice as well.
https://github.com/atom/atom/issues/5344 https://github.com/atom/fuzzy-finder/issues/57
Fortunately, I have a concrete solution: copy what Visual Assist does. Space-separated substrings. It makes it very easy to be more precise about what you're looking for, while still letting you be vague when you'd rather, and the computer never has to make a judgement call.
See here: http://docs.wholetomato.com/default.asp?W193 and search for "filtering in the dialog" (their page has no anchors! - I'm certainly not suggesting you should copy their HTML style)
Granted all my devices use SSDs, but still for me it's been like 10 seconds at the worst, and currently it opens in like 3-4 (and i have about 30 plugins too)
My recommendation is to give Atom a chance, see if it fits into your workflow (whether it has native support for the languages/frameworks you work in, or if packages exist). If it works out, then you have a viable alternative to ST3 :)
I really did not enjoy writing plugins for sublime. The development/debugging/testing experience isn't especially pleasant.
That said, the new features (.sublime-syntax files instead of TM files, etc.) look very refreshing.
BUT.... it is way, way better than it used to be. I keep it installed and use it from time to time, to let it update itself and see how it has grown.
It clearly has momentum, and computers clearly are getting faster... probably one day the slowness of it won't matter. But it still matters today -- Atom is noticeably slow on the fastest Mac notebook you can currently buy.
Running on a stock mid-2011 Air w/ 4GB Ram plus a Thunderbolt display. If it was slow, I would have switched or upgraded my machine sometime ago.
Things that are slow to me are waiting for node-sass to compile on save, server-side code reloading, npm installing... and so on.
I usually have one long-lived instance of an editor for the project/thing I'm focusing on, but I also frequently fire up "temporary" instances for one-off editing jobs, from the terminal.
The difference between, let's say, "subl ." (launch Sublime Text in the current directory) and "atom ." is staggering: Sublime Text starts instantly with a boatload of plugins; Atom starts nearly instantaneously but then takes around 5 seconds to become usable, without plugins, after repeated runs.
(Speaking of specs, I'm on a late 2013 Retina MacBook Pro, 16 GB of RAM)
I must be more tolerable to that startup time, perhaps I've even become used to it.
(I've held off upgrading because I've always been in the middle of a project... but I'm now realising that I really am just always in the middle of a project, so I might as well just get it over with.)
It's certainly a slower editor - I have found that opening it, creating a new window, and quitting all take more time than I would like. However, I have stuck it out primarily for two reasons:
1. It's far more extensible. Sublime Text has a thriving package ecosystem, but the limitations of the extension API show up in lots of little places. Atom being browser-based comes with its downsides, but it also allows flexibility that Sublime could only dream of.
2. It's open source. Sublime Text is a great editor, but it's closed source, maintained by a single guy, and updates have slowed to a crawl. It's not something I ever felt 100% comfortable with relying on as part of my day-in-day-out workflow.
Also looking forward to seeing Facebook's fork of Atom for React...
it seems to run inside of Atom, not a fork
Emacs has the benefit of decades of Huffman coding for its keystrokes, and I appreciate that.
Huffman coding, emacs, keystrokes, ...
what?
I wanted to download this but after clicking every link I still hadn't seen a way to do it anywhere...
Obviously if I go to the homepage now the first thing I see is a big download link, which is great.
I think a 'download' link on the site though would be good since if anyone links ANYWHERE else it's hard to find.
No idea where I'm supposed to look to find the installation logs, doesn't tell you where they are...
How do I get rid of this crap now?
No entries in the Windows Programs listing. IMO They really need to think if this is a 1.0 ready release for windows...
But the biggest issue for me is a battery usage, it reduces my battery usage on RMBP15 by 2 hours compared to sublime text, I am mostly working from remote places and having a good battery usage is vital for me.
[1] - https://www.evernote.com/shard/s21/sh/cc73487c-08c9-4937-ac6...
----
For what an isolated anecdote is worth, I originally switched from Textmate to Sublime because I preferred Sublime's default colour scheme. Not for any trivial reason like features or "being in active development".
I do need to give Visual Studio Code a fair shot. Heard a lot of good things about it.
Then I remember trying to give it a try once again a few months ago but gave up because I've heard so many horror story about performance issues.
Now I'm willing to give it yet another try because of vim-bindings and performance issue improvements. Is it at workable state?
I would say so. I've used it as my primary code editor for several months now and really enjoy it. Yeah occasionally you can tell it's a web app running on the desktop but only because opening projects or large files is kinda slow (also an occasional JavaScript error but I haven't seen those in a least two months) but beyond that it works very well. Very speeding on my MacBook and my HP Spectre.
The plugins are the best part and the primary reason I use it.
Yes, I've used atom every single day since it came out to write my daily notes in markdown and then see them rendered as markup in the markdown previewer.
However after finding out about the vim bindings I've been using it as my primary text editor for the last month and I really like it.
It's got 95% of the `vim` goodness that I use combined w/ the thriving package scene and being able to extend it w/ JS.
FWIW here is a list of the packages which I'm currently using:
https://gist.github.com/cgcardona/79fa3a6dcd329c60c290
* atom-fuzzy-grep * atom-jshint * color-picker * git-plus * highlight-selected * minimap * minimap-autohide * minimap-bookmarks * minimap-find-and-replace * minimap-git-diff * minimap-highlight-selected * minimap-pigments * minimap-selection * pigments * vim-mode
https://atom.io/packages/markdown-writer
I now write up tasks there (ctrl-t) and even switched from using org mode in spacemacs
www.developingandstuff.com/2015/04/setting-up-atom-for-rails-development.html
But either case, there are so many things, unless you are competing or there is a big player with such name, I think it's fine. Also, in these cases you usually say Atom editor or Atom feed.
Twitter and Facebook tend to produce too much noise in my experience to work as an alternative. I have an aversion to reading email newsletters, and they also get lost under noise.
Sure, most people don't use feeds, but even after the demise of Google Reader I reckon they still work just as well as they ever have and are the best way to keep up to date with blogs and provide yourself with a constant source of interesting reading.
For further confusion possibilities, try any of these sentences.
- "Hey, Atom 1.0 is out."
- "For my next project I'm using Atom."
- "I can't believe Atom took this long to get to 1.0 and it's already obsolete."(And: Is either of them actually true? There are still plenty of blogs around, and I thought quite a lot of them had Atom feeds.)
Just doctor mc ninja I follow because it's awesome, but these days if there is not a third party maintained pipe and there is no content in the feed I just skip town.
https://gist.github.com/jssjr/018717ddcb81b76e1829#file-img_...
And in case you're wondering about the video, well, its this 50 year old documentary "The Home Of The Future: Year 1999 A.D.": https://www.youtube.com/watch?v=0RRxqg4G-G4
...but realizing the full potential of Atom is about more
than polish. We're considering questions such as: What
does super deep git integration look like? What does
"social coding" mean in a text editor? How do we enable
package authors to build IDE-level features for their
favorite language?
O_o you what?Things I'm interested in ---> A hackable, fast, extensible editor.
Things I have no interest in at all ---> 'Super Deep' github integration, 'social' coding in my text editor.
Dont get me wrong, atoms a great piece of work, and making it extensible for building custom tooling is really great, but what on earth are you talking about?
I hope this is just 'and now we're going to make some plugins' talking...
Why do the best plugins need to be added back to base? Why not just keep them separate. Believe it or not Firefox was originally written in this fashion, but right around the time they added built-in spellcheck, new functionality started appearing as additions to the base system as opposed to browser extensions. Why?
I really can't get my head around it. It's such a non-issue for me.
I care so much more about general performance post-startup. I wouldn't even bring startup speed up as an issue as long as it's in the few-seconds range, which it always was for me using Atom.
Same project and files open in ST3, 30mb.
I may be reading it wrong though; task manager is reporting ~30mb for atom , but there's ~100mb of background processes for atom shown as well.
The editor still seems crude though. The new install used some old packages from a previews install that I though was uninstalled!? It also called home to report a bug without asking for permission. Then it froze after I had uninstalled the old package.
Is there no recent files menu? Or am I just missing where they placed it?
I do like the find/replace UI compared to ST3, but the lack of a recents menu and it choking if I accidentally click a large file just aren't making me feel the need to swap to this.
Atom treats everything like a project, which is great for projects, I don't mind my project taking 5 seconds to open, since I rarely close it. But for a little note, a copy-paste bin, or a quick regex? Textmate 2 is instant, better at larger files, and has the best find-replace window of all my editors.
I haven't been using atom for those exact reasons. Definitely going to give it a shot again now.
That mid century video is hilarious.
It's github's text editor. It runs on "electron" which is a framework for making desktop apps. It uses node.js and Chromium.
Incredible promo video though!!!
I don't know anything about Atom, but I'm willing to bet there's really nothing this software is doing that prevents you from sleeping at night.