Hearing a disturbance, the master programmer went into the novice's cubicle.
"Curse these personal computers!" cried the novice in anger, "To make them do anything I must use three or even four editing programs. Sometimes I get so confused that I erase entire files. This is truly intolerable!"
The master programmer stared at the novice. "And what would you do to remedy this state of affairs?" he asked.
The novice thought for a moment. "I will design a new editing program," he said, "a program that will replace all these others."
Suddenly the master struck the novice on the side of his head. It was not a heavy blow, but the novice was nonetheless surprised. "What did you do that for?" exclaimed the novice.
"I have no wish to learn another editing program," said the master.
And suddenly the novice was enlightened.
OT, but just this week my wife did something that really got me thinking about how far computers haven't come in terms of usability.
I heard her say "O crap" from behind her macbook, and out of habit I came to assist.
For some reason unknown to both of us, she had pasted the text of an email into a document called "thesis.docx", and then saved it.
The text was completely unrelated to "thesis.docx", which of course was not backed up.
Now, I love my wife deeply. And she is no fool. On the contrary, she is a graduate student.
Moreover, I completely understand how something like this can happen. We have two small children, and it was the end of the day. It is just too much to expect of the human mind that one should not say something one doesn't mean.
I felt guilty on behalf of my profession that this was the best we had to offer. Microsoft word on a macbook, and your penultimate version of a file is not backed up. It truly is intolerable.
So, while I have had some of my greatest highs using emacs macros, I somehow feel that the brilliant tooling made by developers for developers never quite percolates into userland.
Pans have been there for centuries, and there is nothing preventing me from throwing stuff in the wrong place, nor undo the eggs in the stew. It's so intolerable, and I feel so ashamed and guilty on behalf of all the pan makers.
Not. We are in a field where we can prevent a lot more stuff to happen than in the real world (and the real world is soooo broken...). We should try our best to make the state of usability and fool-proofness advance as much as we can, and surely there must already be something that would help your wife's case. But we should also be more realistic when voicing expectations.
But all these require preparation, settings and some care. It could get better, even 'magical', but it would be an achievement that should not be taken for granted.
Btw we could make a pan for stew that checks if you are adding eggs to it, but no one would want the tradeoffs IMO.
Something I find hard to belive from a woman whose husband is reading hacker news.
'thesis' and 'not backed up' are forbidden to appear in the same sentense by "the Universe(tm)". This law is enforced by _always_ deleting the contents of 'thesis'.
From that sentence, I interpreted it as the latest version of the thesis was not backed up, and that she may have lost several days' work.
...I'm sure Word will catch up eventually.
I couldn't live without some kind of clipboard manager. It was Ditto on Windows and klipper now on Linux. Dunno about Mac OS, but I bet there is something with similar functionality. It adds another layer of protection to Ctrl-Z everywhere and undo-tree-mode in Emacs. As a programmer I deal with text all the time and I need to be able to recover as much as possible if I make a mistake and this (clipboard manager + undo-tree + version control + normal undo) is the most robust system I could find.
I've used ClipMenu  for years after using Jumpcut  as far back as 2003.
[1: http://www.clipmenu.com ]
[2: http://jumpcut.sourceforge.net ]
This has saved my butt a number of times.
Hopefully I never have to use it, but pretty cool none the less.
One of humanity's biggest enemies to progress are "Not invented here" and the cult of youth. It's often better to start with a blank slate ("being ignorant") because amongst other things like simply having a different perspective (worth 100 IQ points ~Alan Key) it helps with actually starting to build something. Eventually though we should still be aware of what we as a collective have learned already.
To be fair I think Github folks should know their history so this project might be one of the exceptions - looking forward to it! <3
Side note: Neither of the two issues you mentioned are "one of humanity's biggest enemies to progress."
"Ignorance is Strength" (1984)
Your comments makes me think that neither you nor your wife knew about tracking changes in office documents:
But then considering that the unfortunate loss of data happened after an already lengthy sequence of manual actions, I wouldn't be surprised if the "o crap" would come after a longer sequence that involves disabling whatever should have been prevented the unpleasant events. I'm sorry for the loss, but I don't find my profession responsible more than I would find a car designer/engineer responsible for a car accident caused by driver's deficient attention.
Except, per my other comment, Microsoft doesn't bother writing Mac software that works like Mac software. It's kind of like running Java desktop software (actually worse)... neither native feel nor integrated with the OS like other Mac apps.
Inexpensive and truly unlimited storage. Windows, OSX, and Linux too!
Why even give users control of the data? No, that should rest squarely with the file system and ait should never delete things unless it is running out of space.
File > Revert To > Browse all versions
I love how OS X stays out of your way, but most regular users never get to take advantage of greater complexity. You have to be in the mindset of one of 'us' (reading every update to Apple's PR) to get a handle on everything OS X can do.
Maybe you find it one day trolling through the menubar. Maybe you don't.
Careful, that is quite a slippery slope...
⌘-Z should have been adequate.
I hope you don't work in usability.
I've made exactly the mistake described, several times. When making small changes to a bunch of files, it's common to go through the whole open-edit-save-close sequence in a few seconds, and if you've got a few things open and someone's talking to you, it's easy to fuck up.
> I get it, but the convenience of things like ZFS and Time Machine have a cost. It takes time to implement such things and they take resources. And even then a failure is possible.
You need to weigh the development cost of a feature against the cost to the user of not having it times the number of users. It is usually cheaper to make the software do the tricky stuff than to make your users do it.
I get it, but the convenience of things like ZFS and Time Machine have a cost. It takes time to implement such things and they take resources. And even then a failure is possible.
E.g. you decide to do some kind of Garbage Collect on a HD, because you lack disk space and you don't want to buy a disk, but you forgot to backup a file you deleted a month ago.
Then there's software that's designed to allow lay-people to get stuff done with the promise that it will hide the nasty things of the world from them.
Microsoft Word really is the perfect example of this. The main use-case it's built around is being a lovely place for a new user to write and print a small document. It captures users from this simple use-case, and then tries to upsell them to large document and multi-user scenarios with madness like mail-merge wizards and sharepoint.
The promise of Microsoft Word is to bring functionality to users while shielding them from the nasty realities of the world. It's reasonable to be vicious about it when it fails to protect the user from themselves.
One should also consider a logarithmic decrease in backups: while I'm writing, a backup of the state a few seconds ago is useful, but I don't need every second from weeks ago. Say the system keeps a backup of every few seconds for the last few minutes, every few minutes for the last few hours, every few hours for the last few days, every few days for the last few weeks, every few weeks for the last few months, every few months for the last few years--the odds are then pretty good that I'd be able to revert to a version I find useful, but not requiring an awful lot of versions.
Back of the envelope: 5 versions/minute for 5 minutes = 25 versions; 4 versions/hour for 8 hours = 24 versions; 3 versions/day for seven days = 21 versions; 4 versions/week for four weeks = 16 versions; 1 version/month for 4 years = 48 versions, so a grand total of 134 previous versions of a document, which really isn't that much space, particularly assuming efficient differencing algorithms.
No offense, to you or your wife, but this statement is hilarious for several reasons!
"Curse these search engines!" cried the novice in anger, "To find anything I must scroll through three or even four pages of results.
Sometimes I get so confused that I just give up. This is truly intolerable!"
The novice thought for a moment. "I will design a new search engine," he said, "a search engine that will replace all these others."
Suddenly the master struck the novice on the side of his head. It was not a heavy blow, but the novice was nonetheless surprised.
"What did you do that for?" exclaimed the novice.
"I have no wish learn another search engine," said the master.
The novice packed his bags, left and went on to create Google, which gives him exactly the results he's looking for.
While his former master was left sifting through multiple pages of results on (insert other search engine here).
One day the master stumbled upon Google and the master was enlightened.
I suppose there are some languages/environments that are somewhat tied to certain editors (java and eclipse, C# and visual studio, objective-C and xcode), but that's not what is proposed here. It's a general purpose programmer's editor that anyone can use for anything. Are you really upset that it's being written? Why do you think you'll have to learn it?
Also, I don't think anyone needs more than one general purpose text editor like vim or Sublime or Notepad++, and possibly a full-featured IDE like IntelliJ or Visual Studio. If there's a counter-argument, I'd like to read it.
you get full IDE features as well as refactoring inside of vim. for most things you can use vim as a full featured IDE these days.
well for refactoring you might have a few issues on, say, c++ and objective-c
BTW, I'm not saying this won't be successful! It looks interesting and I am excited, GitHub does great work, but you keep it in perspective.
This "master programmer" need to stop abusing his novices, stop resting on his laurels and get back to some learning.
I've been doing this programming thing since the 80's, and the only thing I've seen that has really made software development better have been better practices.
Maybe we should first review our definition of "better" before we label something with it. Too often it's used as a synonym for "ooh, shiny!".
Having said that, Atom looks nice and shiny.
Yeah, git and its kin are really nice, but the expensive version control systems I've been required to use in enterprise settings are awful. So awful that many people actually just email source files back and forth so they don't have to deal with it.
So, version control has made things better in some areas. But enterprise version control feels more like a step back to me. AccuRev has literally stolen entire mornings from me because what should have been a simple two-minute check-in took almost 3 hours to complete and was interactive! Yay!
I don't remember what the graphical capabilities of GNU Emacs are like, as I only use the command line version, but XEmacs at least also has extensive support for bitmaps graphics in buffers that far exceeds most of these "new editors".
Learning tools like Emacs is for many a matter of productivity. If you want productivity, you want to streamline your most commonly used actions. Streamlining things in an editor will probably mean to use keybindings, since you're using the keyboard to input text anyway. Then you have to memorize the keybindings (or: your fingers have to), and you have to practice using it to the point that it actually becomes more productive than whatever previous routine you had - you have to fight your old habits.
Building these habits is what takes time. The fact that Emacs has a GUI helps with feedback and discoverability, not that much with building habits. When you have finally built these habits, only then can you know if you are more productive. If you aren't you might have to unlearn a lot of your habits (for example by learning modal text editing).
- Written in my Emacs
I currently use Chocolat for code editing, which is beautifully elegant and I love it, but there are 25 little tiny things that I really wish I could fix. I file issues, but the developers rightly have their own priorities. It's closed-source, but even if it were open source, I'm not about to learn how to use XCode and Objective C and figure out how to compile and whatnot.
It already makes me dream of a word processor I could hack like that, or a music player. Just by opening up a text editor. It's an inspiring thought.
Not to rain on your parade or anything, but you can already do this with Emacs, not to mention that Emacs is free, open source software. Atom is not only not open source but their readme says it won't even be free after the beta.
Emacs has been around for almost 40 years, and because it's FOSS it will be around for at least another 40. Editors like Atom come and go.
Of course, thanks to Apple, I can't load and eval it, but I will take it for a spin when I get to a machine. :)
So that's why my statement was limited to what "desktop software" could be. :) I mean, I use LibreOffice, which is FOSS, but I am never going to touch its code in a million years. The cost-to-benefit ratio is too high. But Atom makes doing that sound almost trivial. That's the paradigm shift.
You can make desktop apps in Python, Ruby, Tcl, hell even PHP for a long time now. No compilation needed.
Whether this works effectively or not comes rests almost entirely on how good their architecture is. "Hackable" doesn't mean anything if the codebase is a coupled mess. Given GH's pedigree, I don't expect that this is the case; which means there will be some ramp-up time learning the various subsystems.
Desktop apps aren't things that you can cram into this week's hipster JS framework.
But like all editors, they have to have some clear advantages and a community, or it's not a viable option.
Crafting iOS Dev Tools in Redcar - Delisa Mason (#inspect 2013)
Plus, Emacs is a ghost town anyway. You're going to run into the problem that there are not bodies willing to use the editor, let alone extend it.
Myself included (:
nor English it seems :)
"No one is born knowing JS" or "No one was born..."
There are languages where "to be born" is one verb and it makes it reasonable to make the mistake and think that in english it would be the same: "to born".
Btw, English isn't my first language either, so please do not see this as "arrogant English speaker wants everyone to speak his language". In fact, my mother tongue is far far different from english (we dont even have a common script!)
WTF do you mean by "terminal-style buffers/frames?"
I tried Emacs on OS X (proglang on Coursera asks students to use it for editing SML), gave it a couple of hours and switched back to Sublime.
I understand I missed all its glory and power but at least Sublime scrolls like OS X apps scroll, has shortcuts like OS X apps and looks like a OS X app.
But then again, I understand why you might think this is a fool's position. I'm okay with that.
not saying vim doesn't have it shortcomings, but people always forget that a scripting language for random app xyz still means you have to learn it's grammar. just like people who use ruby motion have to painfully learn that in the end while it looks like ruby it's still cocoa.
Atom is not only not open source but ...
EDIT: It appears that this isn't true. From a GitHub employee in freenode/##atom:
<jonrohan> EvanDotPro: it will be open source, and other platforms, when it's out of beta
<chance> jonrohan: where are you getting that information?
<jonrohan> chance: i work at github
> Atom won't be closed source, but it won't be open source either. It will be somewhere inbetween, making it easy for us to charge for Atom while still making the source available under a restrictive license so you can see how everything works. We haven't finalized exactly how this will work yet. We will have full details ready for the official launch.
Either jonrohan is misinformed, or he's using a rather tortured definition of "open source" - even the Open Source Initiative would disagree with that usage.
I must say, I'm a bit disappointed by the fact that Github doesn't seem to be on the same page internally about this; it's a rather important piece of information.
That means the opposite of what you thought it did :)
> not only not
Where does it say it won't be free after the beta period?
> Atom is free during the beta period.
There's ~600 open issues, my personal todo list alone is several years' worth of work. Too much for one man.
People make too much of open vs closed source. The real distinction is individual-lead vs committee-written.
TextMate, Sublime and Vim are good editors. But they are also Allan, Jon and Bram. Writing an editor requires good taste, accumulated experience, and a certain disregard for users' feelings.
You need someone who cares about the editor. Without that, you get a program where everything is wrong, but nobody ever bothers to fix it.
This is however a blessing and a curse. If the author can't financially support themselves, the editor will die. If the author becomes a millionaire, the editor will die. Thankfully, I'm still poor.
What are the 25 little things, by the way?
But overall, it's still just the most beautiful and elegant editor. :) Thanks for it!
Even if this were true, it still wouldn't help an expert Objective C programmer with no JS experience hack on Atom.
Your bias is showing.
> How I felt after that? I felt awesome. I had only installed Atom minutes ago. I didn't even had to think to fix my problem. All the knowledge I needed was already in my head! It was simple as editing a webpage. TL;DR: Atom allowed me to fix one simple problem – that I still encounter in most text editors nowadays – in seconds. What about yours?
Back in the 90ies, when I started using Emacs, Elisp had a lot of baggage and was nowhere near as widely used as Perl.
I'm still using Emacs.
I'll fix: A proprietary (unhackable) text editor that only runs on OS X.
I imagine that web developers will drool over this.
I developed some packages for HomeSite in the 90s. When HomeSite was integrated into Dreamweaver and development ceased, I realized that I had wasted my time developing HomeSite packages and that I should never again devote my time to extending closed-source software. Emacs has served me well ever since.
- A unique identifier that is generated by computing the SHA-1 of the machine's MAC address.
- The screen width and height
- The version of Atom being used
- The name of each item opened in a pane such as EditorView, SettingsView, and MarkdownPreviewView
- The amount of time the current window was open for
- The amount of time the current window to took to load
- The amount of time the app took to launch
>> The name of each item opened in a pane such as EditorView, SettingsView, and MarkdownPreviewView <<
Why would they need to know my filenames?
I might be wrong though.
If you want a program that turns this off by default, please feel free to create your own program with this feature disabled.
I for one am more than fed up with hunting down and keeping up-to-date with settings for tracking "features" in every single piece of software I use.
I could do that very easily, if Atom were FOSS.
However one tries to soften that language, that translates to a proprietary license of any standard definition of "proprietary"
 It actually sounds rather similar to the old proprietary license that Microsoft used to use (not sure if they still do anymore).
If the source code is proprietary but GitHub accepts PRs from users, it means that users will be tricked into doing free work for GitHub and have no copyright claim on their work. From the discussion you linked, it seems that many people are happy about this unfortunate situation.
To compare, Apple releases source code for some components, but they definitely don't distribute "/System/Library/Extensions/Dont Steal Mac OS X.kext".