224 karma · joined April 12, 2015
Maybe you could have an "unsorted" channel by default, and then split out the context dropdown into little icons? Simplify the work flow to be: 1. Click "new markdown" button, 2. Write some markdown. 3. Save.
If you defer asking the user to name a file up front, you can auto generate a filename based on the contents of the document (like parse 1st line for # My Title -> my-title.md). The only sacrifice you pay is making them click "save" the first time; but IMO that is a lot less friction than having to name documents before I even start writing. Plus even if your parsing fails - you're no worse off than where you started by asking the user for a filename.
function asCallback(promise, callback) {
return Promise.resolve(promise)
.then(result => callback(null, result))
.catch(callback)
}
// returns a new fn that takes same args which returns promise instead
function asPromise(fn) {
return (...args) => new Promise((resolve, reject) => {
fn(...args, (err, result) => {
if (err) return reject(err);
resolve(result)
})
})
}Plus there are alternatives to threads. Look at the state of Atom or VSCode. Much progress has been made in terms of perf and these are not trivial applications.