I was skeptical that it would only detect obvious issues, but the sheer number of built-in checks is surprising. I'll try this on the next large text I write.
I've been interested in linters and style checkers for English prose for a while, and I'm excited to try this out!
To the author(s): Your website, as far as I could tell, doesn't tell me how to install it; I had to go to GitHub to realize it was pip-installable. You should consider adding that to the main page.
Can someone who has tried this share their experience?
It sounds really awesome but it's very hard to tell if it's going to be more annoying or more useful. Maybe it would be useful to have some example linting errors on the homepage.
I ran some of my recent emails through it. It picked up my overuse of exclamation marks and my use of "all of the time" instead of "all the time." It definitely doesn't seem to sensitive - I would lint all of my emails with it if it were easy to do so.
You're missing a stupid CSS trick; apparently everything should be flat flat flat nowadays, even if that means throwing UX out of the window. The sample text is editable, even though it looks as if it's not.
Thanks, I feel dumb and I feel it is dumb design. I should've known, and did figure it out eventually, but that won't pass the grandma test, and yes, it is a CLI tool, but so what. If a wanna be developer can't figure it out, the cli tool may have just as many different conventions from other cli tools as well.
Ah, another part of my brain I can offload to an external source. It will be interesting when we get to "social-lint", so those of us that are no good at social interactions (through lack of ability or lack of willingness to spend the effort to combat that with ) or that feel they spend far too much brainpower on social interactions to make up for lack of natural ability can benefit.
That really depends on the kind of writing. For things like journalism and technical writing there are rules that need to be followed and you're not allowed to color outside the lines very much. The really, really good writers learn to be creative within these more restrictive styles of writing. It's no coincidence that many great creative writers had copywriting jobs earlier in their careers.
I can imagine a tool like this making it much easier for journalists to follow a newspaper's style guide or something similar.
My impression of this might have been different if the list of rules included CMOS instead of something that tells me not to use the term "jump the gun" because it's a cliche.
I'd love to have something like this for day to day work emails. They aren't beautiful prose, and they shouldn't be.
That said, I think there's a better way to approach this. Rather than linting based on a list of rules, I'd prefer a more technical approach that highlighted actual issues, such as garden path sentences, ambiguous pronouns, doubled words, etc.
A linter doesn't prevent breaking its rules, it just notifies the writer of which rules are being broken.
I was writing some C earlier and my linter warned me about "incrementing a void pointer". However, I understood the context better than my linter, knew that I'd be compiling with gcc (which allows void pointer arithmetic), so I ignored the warning and carried on. My code compiled and ran nicely.
When it comes to static analysis, I think (creative) writers, like programmers, wouldn't care about warnings. This is already true of spell-checkers (e.g. my letter-writing character is English, but my text-editor's yelling about "colour").
I was referring to a hypothetical American creative writer, writing a scene in which a British character writes a letter. In this hypothetical work, written in US English, there would then be a section of text that used UK English spellings. The naive spell-checker would not understand the context, and would flag these as misspellings.
This was meant to be analogous to my "incrementing a void pointer" example; the static analysis tool produces warnings which the author knows to ignore. In the C programming case, my function was passed the size of the objects comprising the array pointed to by the void pointer, so the linter was wrong to tell me I was making a mistake. Similarly, the spell-checker was wrong to say "change this instance of 'colour' to 'color'".
Similar considerations apply to prose linters.
Polonius would be a lesser character if shed of cliches, and a good writer would know to ignore the linter's opinions on the matter.
> I question how useful a tool like this is for a skilled writer.
For a skilled writer who takes time to write "proper" prose, probably not very useful.
But for me, as a non-native english speaker who writes a lot of short english texts (emails, documentation, HN comments and so on), it could probably help.
For example, since I write both US and British English every day, a consistency warning is certainly helpful. I would also like a linter to help the flow of text, for example by pointing out when you aren't mixing up your sentence lengths in a good way. Oh, in that last sentence I accidentally missed that I used first person in the sentence before that! A linter as a chrome plugin would have pointed that out.
Will this be used by automated content creators? For example, lots of articles on some of news websites (including wikipedia) are written by bots. So the bot would write an article, invoke proselint and correct, if required?
I can see a lot of value for this sort of tool, and might even play with it myself, for sake of evaluating whether or not to incorporate its suggestions into my writing. At the same time, however, I have some wariness that its widespread use could actually have a shaping, and, specifically homogenizing, effect on language. For me, a large part of the beauty of language is how facile it is, how judiciously breaking its rules can create a more artful and compelling means of expression than linted — if you will, "prosaic" — prose seems likely to offer.
But still, it corrects incorrect things that my spell checker doesn't see, like inconsistent spacing and 'goofy approximations' like (R) for ®. (Depends on your definition of incorrect, but I personally would not mind at all if these things were homogenized for everyone, it would not take any richness out of the English language).
What I'd like (--help doesn't list such an option) would be to be able to enable some checks with a flag while disabling other parts (the ones that contain suggestions you can elect to break).
That's cool but it sounds like this tool is way oversold. It namedrops DFW and other great authors then shows examples of it correcting spacing and "brb." This isn't stylistic revising that takes you closer to those writers, it's just simple corrections.
This is a fair concern of style recommenders in general. Yes, we want to shape text. And what follows is merely a partial response, but it should address some of your concerns.
First, much of the advice is that certain word sequences are problematic without suggesting any particular replacement text. There are a few reasons for this (including the computational natures of error-detection vs. solution-recommendation problems). The reason most relevant to your concern is that solution-recommendations are more likely to produce a homogenizing effect because they have a driving effect, wherein using a particular set of words is deemed superior to another set of words. Much in the way that the diversity of life-forms has arisen because of selective pressures, by eliminating the least fit combinations of words, the native variation in writing can flourish all the more readily.
The goal is not to homogenize text for the sake of uniformity, but rather to identify those cases that have been identified by respected authors and usage guides as being specifically problematic. Any text that is sufficiently artful and compelling to have not been specifically addressed by these sources should not be able to be caught by the linter. Novelty will continue to introduce new usages, and some of them will be poor. Authors identified as trustworthy may point these out, but this will only be in retrospect. If you do not trust a guide's point of view, our strongest recommendation would be to turn off the modules associated with that guide. You can see some of the module names and a high-level description here: http://proselint.com/checks/.
Finally, I will modify a quote in the Foreword[^fn2] by Robert Bringhurst in The Elements of Typographic Style (version 3.2, 2004)
> [Language usage] thrives as a shared concern — and there are no paths at all where there are no shared desires and directions. A [language user] determined to forge new routes must move, like other solitary travelers, through uninhabited country and against the grain of the land, crossing common thoroughfares in the silence before dawn. The subject [of proselint] is not [stylistic] solitude, but the old, well-traveled roads at the core of the tradition: paths that each of us is free to follow or not, and to enter and leave when we choose — if only we know the paths are there and have a sense of where the lead. That freedom is denied us if the tradition is concealed or left for dead. Originality is everywhere, but much originality is blocked if the way back to earlier discoveries is cut or overgrown.
[^fn2]: Only because we are on the topic of historical traditions and stylistic guides, it should be mentioned that a foreword – according to book design tradition – would be written by an individual other than the author about the author, the book, and usually the relation between them. In this case, the section in Bringhurst's masterpiece labeled "Foreword" would likely be better described as "Preface" or "Introduction". Given his knowledge of book design, I shall assume that this was a conscious departure from the road of tradition, even if I cannot appreciate the new view that it offers.
The main problem with a tool like this it that it needs to understand sentence structure in order to find a lot of common anti-patterns. Without some natural language processing, it's just going to be able to scan for word usage and simple things that you can catch with a regex. You could probably build something a lot more sophisticated on top of something like Apple's NSLinguisticTagger and related APIs.
After testing this against a dozen of my blog posts, I'm not terribly impressed with the output. I get more immediate value out of MarkedApp's keyword drawer and word repetition visualization.
You're right, but the problem is much worse than that. Examining 200 entries from Garner's Modern American Usage at random reveals that half of them are easy to implement, the kind of thing that could be assigned as a homework problem (e.g., recognizing that “$10 USD” is redundant, that “very unique” is comparing an uncomparable adjective, or that people from Michigan are called “Michiganders”, not “Michiganites”). Thirty percent are moderately challenging, requiring a week’s effort. Fifteen percent are hard — they are entire projects, requiring advances in AI. And the remaining advice (around five percent), the best kind, is AI-complete. Consider, e.g., "John hit Peter only in the nose". Does this mean that, of all Peter's body parts that could have been hit, John hit only Peter's nose? Or is it a grammatical error that was suppose to convey that, of all the people John could have hit, it was only Peter who he did hit.
While "$10 USD" may be redundant in a newspaper published in the USA, it's immensely useful and arguably preferable when writing blog posts, emails and other text destined for the "World Wide" Web. While USD is commonly used as and many are comfortable with its use as a "common denominator" when pricing something on the Internet, it's still very important to be clear "what dollars do you mean" in this context.
I used to do "10 USD" or "USD 10" until I got sick of hearing responses like
"USD 10 looks weird, why did you do that', or 'that on the pricing page looks funny, can you fix it up a bit'
It seems $ (or the equivalent currency symbol for other currencies) has a place in many peoples minds implying that the number it is next to is currency, and they seem to find it weird when things involving currency are 'written correctly' without the symbol that the numbers mean currency.
Either "$10" or "10 [USD|AUD|etc]" are correct. It is unequivocally incorrect to use both symbols. use the first when it's clear in context what kind of dollar is being referred to, otherwise use the second.
That's going to need a citation. To be sure there's plenty of style guides which say "don't do that, do [this other variant instead]" but where's the standard that makes this unequivocal?
Can someone explain in layman's terms how this is any better from an app like the Hemmingway Editor [0]? Both analyses the text and makes suggestions to make it better.
See our discussion of this at http://proselint.com/approach/. I'll note that we do not consider Proselint a complete product — it's in its earliest stages, perhaps at 2% of its final capacity. That number has steadily decreased as we learn more, which we take to be a good sign.
Hemingway is an editor while Proselint is a tool. The latter can be integrated in any editor. That’s the main reason I ditched Hemingway (the editor) because I couldn’t just copy/paste text in it to get some suggestions.
It would be interesting to run this against campaign speeches as a unbiased way of judging the quality of prose. Surely content is more important but still it would be fun.
Yeah, there's the squiggly line; same thing, right?
Similarly, where Tesla Model S is concerned: Ford Motor Company had something like this round about 1908. (Where "something like this" is "has four wheels and no horses")
Good idea. If you run `proselint` without specifying a document, it'll run on the demo text, which you can also access here: https://gist.github.com/suchow/c7856f21128aee89ad55. Also, there's a live demo available at: http://proselint.com/write. It's been tested only on the latest version of Chrome, and I doubt it will handle the load here, but give it a try.
What exactly is the argument or implication in the last two sentences? There are many works of art that use "blunt" instruments. Say the Venus of Willendorf or a Serra sculpture, though that depends on what you mean by blunt. Even in literature blunt tools are use such as a pencil.
So, I think english is an "analytical language", although I wouldn't know what it means, it inspires me to assume, that by analyszing the sentence you can make out that extremely could refer to something else than the uniqueness, isn't it? EG the phrase could mean, something was unique because of one of any number of extremes, unique by extremity. Sure, that should be uniquely extreme, but what I said shows something else. If there are different qualities that could be unique, wouldn't it make sense to quantify that? Of course, if a logic is so weak it cannot have the peano axioms, you cannot advance beyond uniqueness. (What about missing all-quantor in propositional logic and uniqueness in predicate logic? I'm just stabbing in the dark, really.)
Imagine an object that is unique in exactly one respect, and another in two. Obviously, the other has more uniqueness. Now, if a the first has precisely only the one characteristic of having not really any characteristic at all, then that's a totally different degree of uniqueness. So either is more unique in a specific respect. But Arguably, the nothingness is most unique, if not the only really unique thing. So if we can ignore that, because no one in his right mind would talk about nothing, we can most of always readily conclude, that the first type of a collection of unique'ish things is concerned.
Is this regression ad absurdum or argumentum ad silencium?
The link I posted really concerns the insufferability of someone who corrects technicalities of language rather than a discussion on whether uniqueness is a countable property.
In a mathematical world you operate with abstract objects. In the real word - you need to abstract things; before that everything is unique; after that - well, depends on your abstraction. So unless you talk about mathematics, things can be more or less unique.
This is a excellent and subtle comment. You seem like someone with a tolerance for philosophical nit-picking. Please forgive me if I'm mistaken.
Instead of saying everything is unique we could simply say that there is nothing. A thing is itself an abstraction. The concrete world is without inherently distinct things. We must abstract things for "unique" to describe something at all. As you implied, this process is arbitrary. Every way in which you could abstract things implies a distinct notion of "uniqueness". To simply select one "uniqueness" (like mathematics) is arbitrary. But to consider every possible "uniqueness" equally is also arbitrary. Without prioritizing forms of "uniqueness" we can only construct a partially ordered set. So when you void a fixation on mathematics, things can be more, less or "incomparably" unique.
I suspect most pairs of things are incomparably unique. Further, I suspect most binary qualities are predominantly incomparable. I don't know that you should never say things like "more unique" but it might be fair to issue a warning in a prose linter. Any binary quality used as a continuum requires an arbitrary combination of it's distinct forms. If this isn't specified then it only has meaning for those who already know what it is.
Some philosophers, thinking especially of Graham Harman, have started reacting against the now sort of commonplace idea that "there are no things (or objects) in reality."
From a common sense perspective, it's obvious that there are things. Sure, you can point out the flux and decay of all entities, but still, this table here is a coherent thing even if it's made from parts in a temporary arrangement.
In some sense, philosophy itself is destroyed when you go down the path of denying objects, since philosophy crucially deals with concepts, and concepts are "thought objects."
Harman describes two modes of denying objects: undermining and overmining. Undermining is the tendency to say "really, this object is just a composition of these other particles," while overmining is the tendency to say "this object is just a modulation in a grand monistic entity."
Instead of that, he recommends an ontology of objects that's pretty interesting and fun to read about. He would, I think, agree that objects are unique in that they are (in programmer jargon) "pointer equal" to only themselves... and each real object, for that reason, has an infinity of potential that's never exhausted by any "arbitrary" perception of it... yet still, we perceive other objects not directly, but through aesthetic caricatures, and on that level you might have different degrees of uniqueness.
Thank you very much for this comment. I'm an armchair philosopher and I hadn't heard of Graham Harman. His notion of objects is beautiful. In one motion nihilism both compels me to accept my sins and deprives me of any path to salvation. Harman's objects capture the essential impetus of nihilism without ultimately voiding conception. In fact, they even capture the paradox of nihilism. The denial of objects necessarily implies an objective system: dualism. First there is an object contriving infinitely varied "caricature objects". Then there must be another object that is (infinitely) not any of those. This expression of our relationship to The Great Unknowable Reality is much saner. It doesn't overmine. It doesn't undermine. It doesn't leave me oscillating between affirmation and denial. Also, most importantly, I'm given a clue to further knowledge. I am that contriving object. This is just a caricature of reality. My participation in it's consideration is entirely arbitrary. I'm haunted by the concern that knowledge exists which cannot be captured by this freedom. But for now these objects certainly get us further than nothing. ;)
I think it's obvious that what people mean is that "more unique" = "unique in more dimensions" or "the degree to which this differs from the norm is greater".
Math has long tradition of generalizing definitions to make sense for larger domains, when it's useful. See fractional powers, complex numbers, quaternions, and many more.
I can imagine defining uniqueness as a function returning real number from <0; 1> instead of a boolean value. For example:
let U(p, x, X) be the uniqueness of property(function) p(x) for element x of set X
U(p, x, X) = 1.0 - (size of X')/(size of X\{x}), where
X' = set of all elements x' of X such that p(x')=p(x) and x' != x
Property p of element x of set X is strictly unique when, and only when U(p, x, X) = 1
When it's useful? For example for speaking about minimizing collisions of hashes for given data.
Another way of thinking about it: uniqueness is 1-probability of uniformly randomly finding element with same value of p in X as x after removing x from X.
It's a linter, it's going to have some kind of "false positives." Maybe you could put an annotation that tells the linter you're sure that you mean it.
Semi-off-topic, but the notion of "more unique" reminds me of Sapolsky's TED talk about humans as the "uniquiest" animal.
> Some people feel you should never ever say things like "more unique", "most unique" etc
I am among them. Here's why:
(1) There are already other words that express related concepts that are subject to gradation: "rare", "special", "unusual", and "extraordinary" come to mind.
(2) The original meaning of "unique", namely "one of a kind", is an important concept. If we let the word's meaning get lost, we will not be able to express that meaning as easily.
Are there any plans to support rules for texts written in other languages (e.g., German)? Would a set of such rules fit within the scope of this project or is proselint purposely or inherently limited to English prose? (@suchow)
It's out of scope for now, but only because we don't have any native speakers of other languages helping us out with the project, and this stuff is hard enough to get write in your native tongue; otherwise it's on the table. Interested?
I'd certainly contribute a few rules for German prose.
Actually, I'm even more interested in using proselint with custom rules for theater plays (e.g., check for unneccessary repetitions, word combinations that are (acoustically) hard to understand).
As czechdeveloper has pointed out in this thread, it would also be nice to have a set of rules specifically for academic writing and/or for non-native speakers (e.g., Asian scientists seem prone to overuse "the").
I guess, a first step would be to have an extensible set of tags for the rules - both language-specifying ones (i.e., any_language, american_english, british_english, german, ...) and genre-specifying ones (any_genre, prose, poetry, academic, technical, ...).
Furthermore, an easy way to select a subset of rules by tag (e.g., british_english and academic) would be neccessary.
If you're on Ubuntu, you want to run 'pip3 install proselint' rather than 'pip install proselint'.
I ran it on a couple 800 word emails and it didn't catch anything except me using 2 spaces instead of 1 in one place. I also ran it on my city's sidewalk maintenance ordinance, and it didn't report anything.
Part of the goals of proselint is to minimize the number of false positives that traditionally clutter the results of style checkers, resulting in users ignoring the changes when they see them. We want to be reasonably certain before raising an alarm. You can read more about the precise metric[^fn1] we use here: http://proselint.com/lintscore/.
And yes, `python3` for the win. :)
[^fn1]: If you wanted to be truly precise, it's a parametric family of metrics.
While the idea is interesting, I do worry about the proliferation of linting to prose. Especially the hint about authoritative near the end of the article. Linters turn guidelines into steadfast rules in programming, removing all ability to use judgement if you want your PR merged. I personally want less of that, not more.
How is standardization a bad thing in programming? in prose I can see the argument, but in programming you should always aim for standardization for code maintenance.
For example, the Python best practices document recommends 1 blank line after functions and 2 after classes. Linters enforce this. However, this can be a detriment to readability in some cases, such as closures or classes that have no body, only superclasses.
Some might say you can mark lines as not being linted, but that then makes the change vulnerable to bikeshedding. For some people, being able to force the conversation to not happen because the linter is authoritative might be good, personally I prefer to follow the guidelines but be aware of the fact that they are there to aid in understanding for future coders not to adhere to a standard.
140 comments
[ 3.1 ms ] story [ 200 ms ] threadTo the author(s): Your website, as far as I could tell, doesn't tell me how to install it; I had to go to GitHub to realize it was pip-installable. You should consider adding that to the main page.
It sounds really awesome but it's very hard to tell if it's going to be more annoying or more useful. Maybe it would be useful to have some example linting errors on the homepage.
Either way, I really love the idea!
One needed improvement: display the offending line on errors. Then you don't have to toggle between file and console to contextualize the errors.
This positively screams for a online interface to test drive.
Prose isn't code.
Many key elements of good writing are based around the idea of knowing the rules, and then carefully breaking them.
I can imagine a tool like this making it much easier for journalists to follow a newspaper's style guide or something similar.
My impression of this might have been different if the list of rules included CMOS instead of something that tells me not to use the term "jump the gun" because it's a cliche.
That said, I think there's a better way to approach this. Rather than linting based on a list of rules, I'd prefer a more technical approach that highlighted actual issues, such as garden path sentences, ambiguous pronouns, doubled words, etc.
I was writing some C earlier and my linter warned me about "incrementing a void pointer". However, I understood the context better than my linter, knew that I'd be compiling with gcc (which allows void pointer arithmetic), so I ignored the warning and carried on. My code compiled and ran nicely.
When it comes to static analysis, I think (creative) writers, like programmers, wouldn't care about warnings. This is already true of spell-checkers (e.g. my letter-writing character is English, but my text-editor's yelling about "colour").
http://grammarist.com/spelling/color-colour/
I was referring to a hypothetical American creative writer, writing a scene in which a British character writes a letter. In this hypothetical work, written in US English, there would then be a section of text that used UK English spellings. The naive spell-checker would not understand the context, and would flag these as misspellings.
This was meant to be analogous to my "incrementing a void pointer" example; the static analysis tool produces warnings which the author knows to ignore. In the C programming case, my function was passed the size of the objects comprising the array pointed to by the void pointer, so the linter was wrong to tell me I was making a mistake. Similarly, the spell-checker was wrong to say "change this instance of 'colour' to 'color'".
Similar considerations apply to prose linters.
Polonius would be a lesser character if shed of cliches, and a good writer would know to ignore the linter's opinions on the matter.
For a skilled writer who takes time to write "proper" prose, probably not very useful.
But for me, as a non-native english speaker who writes a lot of short english texts (emails, documentation, HN comments and so on), it could probably help.
For example, since I write both US and British English every day, a consistency warning is certainly helpful. I would also like a linter to help the flow of text, for example by pointing out when you aren't mixing up your sentence lengths in a good way. Oh, in that last sentence I accidentally missed that I used first person in the sentence before that! A linter as a chrome plugin would have pointed that out.
Bug report — it told me I had too many exclamation marks in a Markdown file with a number of images in it.
This could be a benefit in industries where the goal is to have homogenous writing that meets a given set of specifications/standards. Some ideas:
1. Peer-reviewed scientific writing and/or abstracts
2. Manuals
3. Materials written for a subset of language (EFL, pidgin, children's books)
4. Documentation
But still, it corrects incorrect things that my spell checker doesn't see, like inconsistent spacing and 'goofy approximations' like (R) for ®. (Depends on your definition of incorrect, but I personally would not mind at all if these things were homogenized for everyone, it would not take any richness out of the English language).
What I'd like (--help doesn't list such an option) would be to be able to enable some checks with a flag while disabling other parts (the ones that contain suggestions you can elect to break).
First, much of the advice is that certain word sequences are problematic without suggesting any particular replacement text. There are a few reasons for this (including the computational natures of error-detection vs. solution-recommendation problems). The reason most relevant to your concern is that solution-recommendations are more likely to produce a homogenizing effect because they have a driving effect, wherein using a particular set of words is deemed superior to another set of words. Much in the way that the diversity of life-forms has arisen because of selective pressures, by eliminating the least fit combinations of words, the native variation in writing can flourish all the more readily.
The goal is not to homogenize text for the sake of uniformity, but rather to identify those cases that have been identified by respected authors and usage guides as being specifically problematic. Any text that is sufficiently artful and compelling to have not been specifically addressed by these sources should not be able to be caught by the linter. Novelty will continue to introduce new usages, and some of them will be poor. Authors identified as trustworthy may point these out, but this will only be in retrospect. If you do not trust a guide's point of view, our strongest recommendation would be to turn off the modules associated with that guide. You can see some of the module names and a high-level description here: http://proselint.com/checks/.
Finally, I will modify a quote in the Foreword[^fn2] by Robert Bringhurst in The Elements of Typographic Style (version 3.2, 2004) > [Language usage] thrives as a shared concern — and there are no paths at all where there are no shared desires and directions. A [language user] determined to forge new routes must move, like other solitary travelers, through uninhabited country and against the grain of the land, crossing common thoroughfares in the silence before dawn. The subject [of proselint] is not [stylistic] solitude, but the old, well-traveled roads at the core of the tradition: paths that each of us is free to follow or not, and to enter and leave when we choose — if only we know the paths are there and have a sense of where the lead. That freedom is denied us if the tradition is concealed or left for dead. Originality is everywhere, but much originality is blocked if the way back to earlier discoveries is cut or overgrown.
[^fn2]: Only because we are on the topic of historical traditions and stylistic guides, it should be mentioned that a foreword – according to book design tradition – would be written by an individual other than the author about the author, the book, and usually the relation between them. In this case, the section in Bringhurst's masterpiece labeled "Foreword" would likely be better described as "Preface" or "Introduction". Given his knowledge of book design, I shall assume that this was a conscious departure from the road of tradition, even if I cannot appreciate the new view that it offers.
After testing this against a dozen of my blog posts, I'm not terribly impressed with the output. I get more immediate value out of MarkedApp's keyword drawer and word repetition visualization.
We're interested in incorporating deeper NLP. In particular, we've been eyeing https://github.com/spacy-io/spaCy.
While "$10 USD" may be redundant in a newspaper published in the USA, it's immensely useful and arguably preferable when writing blog posts, emails and other text destined for the "World Wide" Web. While USD is commonly used as and many are comfortable with its use as a "common denominator" when pricing something on the Internet, it's still very important to be clear "what dollars do you mean" in this context.
If the context is explicitly local (such as a local newspaper, menu), then $10 is sufficient in the United States.
"USD 10 looks weird, why did you do that', or 'that on the pricing page looks funny, can you fix it up a bit'
It seems $ (or the equivalent currency symbol for other currencies) has a place in many peoples minds implying that the number it is next to is currency, and they seem to find it weird when things involving currency are 'written correctly' without the symbol that the numbers mean currency.
People in Australia might disagree. As might people in Bermuda, Colombia, Canada, Hong Kong, Argentina, ...
https://en.wikipedia.org/wiki/Dollar#Other_national_currenci...
That's going to need a citation. To be sure there's plenty of style guides which say "don't do that, do [this other variant instead]" but where's the standard that makes this unequivocal?
http://matt.might.net/articles/shell-scripts-for-passive-voi...
https://github.com/bnbeckwith/writegood-mode
[0]- http://www.hemingwayapp.com/
Similarly, where Tesla Model S is concerned: Ford Motor Company had something like this round about 1908. (Where "something like this" is "has four wheels and no horses")
You tell me it does cool things. Great, show me. I've looked about on the various pages and can see only one example and I don't understand it:
What's the context of this, what's the error it would have caught in my writing?The tool is in a perfect place to show this off as it's text.
But yes, there should be examples on the front page.
Does it accept 'nearly unique' ?
This tool is a blunt instrument. Writing is an art.
https://news.ycombinator.com/item?id=11239261
https://www.youtube.com/watch?v=kdZtM3_Lcy4
Is this regression ad absurdum or argumentum ad silencium?
The link I posted really concerns the insufferability of someone who corrects technicalities of language rather than a discussion on whether uniqueness is a countable property.
Which I think is equally as misguided as trying to force "data" to be plural, and that "less than 3" is wrong
But you can easily define it to mean something else. And you can even make "uniqueness" comparable.
An easy fix for this not problem is to use distinct instead of unique
If you mean similar, may I commend the word similar? ;-)
Instead of saying everything is unique we could simply say that there is nothing. A thing is itself an abstraction. The concrete world is without inherently distinct things. We must abstract things for "unique" to describe something at all. As you implied, this process is arbitrary. Every way in which you could abstract things implies a distinct notion of "uniqueness". To simply select one "uniqueness" (like mathematics) is arbitrary. But to consider every possible "uniqueness" equally is also arbitrary. Without prioritizing forms of "uniqueness" we can only construct a partially ordered set. So when you void a fixation on mathematics, things can be more, less or "incomparably" unique.
I suspect most pairs of things are incomparably unique. Further, I suspect most binary qualities are predominantly incomparable. I don't know that you should never say things like "more unique" but it might be fair to issue a warning in a prose linter. Any binary quality used as a continuum requires an arbitrary combination of it's distinct forms. If this isn't specified then it only has meaning for those who already know what it is.
From a common sense perspective, it's obvious that there are things. Sure, you can point out the flux and decay of all entities, but still, this table here is a coherent thing even if it's made from parts in a temporary arrangement.
In some sense, philosophy itself is destroyed when you go down the path of denying objects, since philosophy crucially deals with concepts, and concepts are "thought objects."
Harman describes two modes of denying objects: undermining and overmining. Undermining is the tendency to say "really, this object is just a composition of these other particles," while overmining is the tendency to say "this object is just a modulation in a grand monistic entity."
Instead of that, he recommends an ontology of objects that's pretty interesting and fun to read about. He would, I think, agree that objects are unique in that they are (in programmer jargon) "pointer equal" to only themselves... and each real object, for that reason, has an infinity of potential that's never exhausted by any "arbitrary" perception of it... yet still, we perceive other objects not directly, but through aesthetic caricatures, and on that level you might have different degrees of uniqueness.
You need to define some relation on that set to get classes of abstraction. And that's exactly what abstraction means :)
E.g. (2, 4, 7) (2, 4, 8) (2, 8, 4) (2, 4, 7) (1, 4, 8) (0, 9, 3) (987, 4, 7)
When asked what are the "most unique" sets in that list, you'd probably be acting deliberately obtuse if you chose anything but one of the last two.
I can imagine defining uniqueness as a function returning real number from <0; 1> instead of a boolean value. For example:
Property p of element x of set X is strictly unique when, and only when U(p, x, X) = 1When it's useful? For example for speaking about minimizing collisions of hashes for given data.
Another way of thinking about it: uniqueness is 1-probability of uniformly randomly finding element with same value of p in X as x after removing x from X.
Semi-off-topic, but the notion of "more unique" reminds me of Sapolsky's TED talk about humans as the "uniquiest" animal.
https://www.ted.com/talks/robert_sapolsky_the_uniqueness_of_...
I am among them. Here's why:
(1) There are already other words that express related concepts that are subject to gradation: "rare", "special", "unusual", and "extraordinary" come to mind.
(2) The original meaning of "unique", namely "one of a kind", is an important concept. If we let the word's meaning get lost, we will not be able to express that meaning as easily.
Was that deliberate?
As czechdeveloper has pointed out in this thread, it would also be nice to have a set of rules specifically for academic writing and/or for non-native speakers (e.g., Asian scientists seem prone to overuse "the").
I guess, a first step would be to have an extensible set of tags for the rules - both language-specifying ones (i.e., any_language, american_english, british_english, german, ...) and genre-specifying ones (any_genre, prose, poetry, academic, technical, ...). Furthermore, an easy way to select a subset of rules by tag (e.g., british_english and academic) would be neccessary.
Would that fit within your goals for proselint?
I ran it on a couple 800 word emails and it didn't catch anything except me using 2 spaces instead of 1 in one place. I also ran it on my city's sidewalk maintenance ordinance, and it didn't report anything.
And yes, `python3` for the win. :)
[^fn1]: If you wanted to be truly precise, it's a parametric family of metrics.
Have copy on web site be intentionally incorrect, red-underlined with (small modals? tooltips?) that show what's been corrected/suggested by the tool.
Some might say you can mark lines as not being linted, but that then makes the change vulnerable to bikeshedding. For some people, being able to force the conversation to not happen because the linter is authoritative might be good, personally I prefer to follow the guidelines but be aware of the fact that they are there to aid in understanding for future coders not to adhere to a standard.
http://jugad2.blogspot.in/2015/07/cut-crap-absolutely-essent...