Lesshand
Lesshand is a shorthand for the 21st century. You can speed up your writing and typing by about 5% by learning just 10 of its abbreviations.1
Unlike other shorthand systems, Lesshand is lossless. This means that you can type quickly in Lesshand and have a computer program decode your shorthand to standard written English. This makes Lesshand suitable for composing emails, documents, messages, and more.
It's easy to learn Lesshand. In fact, you already know a lot of it! Lesshand uses familiar abbreviations like "u" for "you", "v" for "very", and "bc" for "because". All of its abbreviations are designed to be mnemonic. It's also completely incremental; you can learn just a few abbreviations and start applying them right away.
Check out the tour for a quick overview of Lesshand. For more information, see the documentation.
Lesshand stands for lossLESS shortHAND.
-
See the documentation for the details of how this claim is evaluated. ↩
Tour
Abbreviations
Lesshand has abbreviations for common words. You probably already know a lot of them! For example, "you" is written as "u", "because" is "bc", and "people" is "ppl".
Here are ten familiar abbreviations for common words to get you started:
are --> r
because --> bc
no --> n
really --> rly
though --> tho
tomorrow --> tmrw
very --> v
yes --> y
you --> u
your --> ur
Using these abbreviations, the sentence
You are really going to enjoy your day tomorrow, it'll be very special.
would be written
u r rly going to enjoy ur day tmrw, it'll be v special.
That's 22% shorter!
A note on "the"
Almost all of Lesshand's abbreviations are mnemonic, meaning they are designed to be easy to remember. They are usually either existing abbreviations (like "u" for "you") or they are formed from letters that appear in the abbreviated word (like "abt" for "about"). The only exception is the abbreviation for "the".
"The" is the most common word in English, so it's essential that it has a one-letter abbreviation. However, several other common words start with "t", such as "to" and "that". Additionally, "the" should be as easy as possible to type, so it needs an abbreviation that's on the "home row" of standard QWERTY keyboards.
With these considerations in mind, "the" is abbreviated as "l". This may seem counterintuitive, but it won't be too hard to remember since you'll use it all the time. Additionally, it's very effective: just using this single abbreviation can save you about 1% of your time while writing!
The most effective abbreviations
Here are the ten abbreviations that will save you the most time:
the --> l
and --> d
of --> o
to --> t
for --> f
that --> tt
was --> w
from --> m
are --> r
is --> s
These will speed up your writing and typing by about 5%.
When you've mastered those, here are a few more:
could --> cd
should --> sd
would --> wd
this --> h
have --> hv
not --> x
about --> abt
between --> bw
without --> wo
I --> i
See Abbreviations for the full list.
Phrases
Lesshand reuses abbreviations for phrases are already common in English. These are prefixed by "," to disambiguate them with actual uses of that abbreviation. For example, "thank you" becomes ",ty" and "I don't care" becomes ",idc".
Suffixes
The suffix "ing" can be replaced by "q". For example, "learning" may be abbreviated "learnq". Similarly, the suffix "tion" may be replaced by "T", turning "celebration" into "celebraT". See Suffixes for more information.
Namespaces
For less common words, Lesshand provides namespaces of abbreviations. For example, the namespace "c" is for names of countries. "Sweden" can be abbreviated "c,se" and "United Kingdom" as "c,gb". The "b" namespace is for basketball terms. "b,den" stands for "Denver Nuggets". See Namespaces for more information.
Try it!
Try Lesshand here! Type plain English in the upper box, then hit "Encode" to compress it into Lesshand. Alternatively, type Lesshand in the lower box and hit "Decode" to decompress it into English.
Abbreviations
Lesshand provides abbreviations for common words.
Common words
Lesshand abbreviates the following exceptionally common words:
about --> abt
actually --> acty
after --> af
also --> al
and --> d
aren't --> r'
are --> r
around --> ard
be --> b
because --> bc
been --> bn
before --> bf
between --> bw
but --> bt
can --> c
can't --> c'
could --> cd
couldn't --> cd'
down --> dn
especially --> esp
every --> evy
for --> f
forward --> fwd
from --> m
further --> furth
her --> hr
his --> hs
how --> hw
however --> hwv
I'd --> id
I --> i
I'll --> il
I'm --> im
into --> io
isn't --> s'
is --> s
I've --> iv
just --> j
much --> mh
need --> nd
needn't --> nd'
never --> nv
no --> n
not --> x
of --> o
okay --> k
only --> oy
otherwise --> othw
over --> ov
please --> pls
really --> rly
several --> sev
shouldn't --> sd'
should --> sd
thanks --> tks
that --> tt
the --> l
they --> e
this --> h
though --> tho
through --> thro
together --> tog
tomorrow --> tmrw
to --> t
very --> v
wasn't --> w'
was --> w
were --> ee
weren't --> ee'
will --> ll
willn't --> ll'
without --> wo
won't --> wo'
wouldn't --> wd'
would --> wd
yeah --> yh
yes --> y
you're --> u'
your --> ur
you --> u
Nouns
In English, nouns may be inflected for number (adding "s" or "es" to mark plurality) or the genitive case (adding "'s" or "s'" to show possession). In Lesshand, these inflections are are marked by adding "s", "'" (apostrophe), or "s'" ("s" then apostrophe) to the end of a noun abbreviation respectively. Not all nouns have each form: we don't say "everythings".
Lesshand abbreviates the following common nouns and their inflections:
address --> addr
apartment --> aptm
apartment's --> aptm'
apartments --> aptms
apartments' --> aptms'
appointment --> appt
appointment's --> appt'
appointments --> appts
appointments' --> appts'
babies --> bbs
babies' --> bbs'
baby --> bb
baby's --> bb'
billion --> bil
billion's --> bil'
billions --> bils
billions' --> bils'
complex --> cx
context --> ctx
context's --> ctx'
contexts' --> ctxs'
department --> dept
department's --> dept'
departments --> depts
departments' --> depts'
dozen --> doz
dozen's --> doz'
dozens --> dozs
dozens' --> dozs'
email --> eml
email's --> eml'
emails --> emls
emails' --> emls'
everything --> evthg
everything's --> evthg'
government --> govt
government's --> govt'
governments --> govts
governments' --> govts'
hundred --> hun
hundred's --> hun'
hundreds --> huns
hundreds' --> huns'
information --> info
interest --> ist
interest's --> ist'
interesting --> istq
interests --> ists
interests' --> ists'
management --> mgmt
management's --> mgmt'
market --> mkt
marketing --> mktq
market's --> mkt'
markets --> mkts
markets' --> mkts'
maximum --> maxm
maximum's --> maxm'
meeting --> mtg
meeting's --> mtg'
meetings --> mtgs
meetings' --> mtgs'
million --> mil
million's --> mil'
millions --> mils
millions' --> mils'
minimum --> minm
minimum's --> minm'
move --> mv
moving --> mvq
move's --> mv'
moves --> mvs
moves' --> mvs'
organization --> org
organization's --> org'
organizations --> orgs
organizations' --> orgs'
other --> oth
othering --> othq
other's --> oth'
others --> oths
others' --> oths'
people --> ppl
people's --> ppl'
president --> pres
president's --> pres'
presidents' --> press'
question --> q
questioning --> qq
question's --> q'
questions --> qs
questions' --> qs'
request --> rqst
request's --> rqst'
requests --> rqsts
requests' --> rqsts'
requirement --> reqm
requirement's --> reqm'
requirements --> reqms
requirements' --> reqms'
right --> rt
righting --> rtq
right's --> rt'
rights --> rts
rights' --> rts'
service's --> svc'
services --> svcs
services' --> svcs'
service --> svc
something --> smth
something's --> smth'
somethings --> smths
somethings' --> smths'
thing's --> tg'
things --> tgs
things' --> tgs'
thing --> tg
thousands's --> thous'
thousandss' --> thouss'
thousands --> thous
thousand --> thou
tonight's --> tn'
tonight --> tn
trillion's --> tril'
trillions --> trils
trillions' --> trils'
trillion --> tril
Adjectives
Adjectives may be inflected to indicate a degree of comparison (by adding "er", or "est" to the end), or to use them as adverbs ("ly"). In Lesshand, these inflections are marked by adding the same suffix to the abbreviation of the root word (e.g., "intl" becomes "intlly").
Lesshand abbreviates the following common adjectives:
good --> gd
international --> intl
internationally --> intlly
little --> lil
littlest --> lilst
major --> mjr
minor --> mnr
Verbs
There are generally five forms of verbs in English:
- The infinitive/dictionary/lemma/"to" form, e.g. "run"
- "-ing" form, i.e., present participle or gerund, e.g., "they were running"
- "-ed" form, i.e., simple past or preterite, e.g., "they ran" or "we watched"
- A different "-ed" form called the participle, only different from preterite for irregular verbs, i.e., following "was" or "were", e.g., "chosen"
- An "-s" form, i.e., third person singular present, e.g., "he runs"
For verbs that have an abbreviation of their infinitive, the abbreviation of the present participle can be formed by adding "q" to the end. Lesshand does not currently provide abbreviations for the other conjugations.
Lesshand abbreviates the following common verbs:
have --> hv
having --> hvq
keeping --> kpq
keep --> kp
knowing --> kwq
knowingly --> kwqly
know --> kw
minimize --> minz
minimizing --> minzq
maximize --> maxz
maximizing --> maxzq
Phrases
Lesshand reuses the following abbreviations for phrases that are already common in English. They are prefixed by "," to disambiguate them with actual uses of that abbreviation.
as far as I know --> ,afaik
be right back --> ,brb
for real --> ,fr
for your information --> ,fyi
I don't care --> ,idc
I don't know --> ,idk
if I remember correctly --> ,iirc
if I understand correctly --> ,iiuc
I love you --> ,ily
I love you so much --> ,ilysm
in case you missed it --> ,icymi
in my honest opinion --> ,imho
in my opinion --> ,imo
just kidding --> ,jk
looks good to me --> ,lgtm
no problem --> ,np
of course --> ,ofc
on my way --> ,omw
right now --> ,rn
talk to you later --> ,ttyl
talk to you soon --> ,ttys
thank you so much --> ,tysm
thank you --> ,ty
to be honest --> ,tbh
with respect to --> ,wrt
you're welcome --> ,yw
Contractions
In addition to the contractions listed above, the following are also abbreviated (even though their lemma is not):
ain't --> ai'
didn't --> di'
don't --> do'
hadn't --> had'
hasn't --> has'
mustn't --> must'
needn't --> need'
oughtn't --> ought'
Days
The days of the week each have a four-letter abbreviation:
Sunday --> sund
Sundays --> sunds
Sunday's --> sund'
Sundays' --> sunds'
Monday --> mond
Mondays --> monds
Monday's --> mond'
Mondays' --> monds'
Tuesday --> tues
Tuesdays --> tuess
Tuesday's --> tues'
Tuesdays' --> tuess'
Wednesday --> weds
Wednesdays --> wedss
Wednesday's --> weds'
Wednesdays' --> wedss'
Thursday --> thur
Thursdays --> thurs
Thursday's --> thur'
Thursdays' --> thurs'
Friday --> frid
Fridays --> frids
Friday's --> frid'
Fridays' --> frids'
Saturday --> satd
Saturdays --> satds
Saturday's --> satd'
Saturdays' --> satds'
Unfortunately, the standard three-letter abbreviations collide with actual words ("sun", "wed", "sat").
Months
Months are abbreviated as follows:
January --> jan
Januarys --> jans
January's --> jan'
Januarys' --> jans'
February --> feb
Februarys --> febs
February's --> feb'
Februarys' --> febs'
March --> mar
Marchs --> mars
March's --> mar'
Marchs' --> mars'
April --> apr
Aprils --> aprs
April's --> apr'
Aprils' --> aprs'
June --> jun
Junes --> juns
June's --> jun'
Junes' --> juns'
July --> jul
Julys --> juls
July's --> jul'
Julys' --> juls'
August --> aug
Augusts --> augs
August's --> aug'
Augusts' --> augs'
September --> sep
Septembers --> seps
September's --> sep'
Septembers' --> seps'
October --> oct
Octobers --> octs
October's --> oct'
Octobers' --> octs'
November --> nov
Novembers --> novs
November's --> nov'
Novembers' --> novs'
December --> dec
Decembers --> decs
December's --> dec'
Decembers' --> decs'
Numbers
The numbers zero through twenty may be abbreviated like so:
zero --> n0
one --> n1
two --> n2
three --> n3
four --> n4
five --> n5
six --> n6
seven --> n7
eight --> n8
nine --> n9
ten --> n10
eleven --> n11
twelve --> n12
thirteen --> n13
fourteen --> n14
fifteen --> n15
sixteen --> n16
seventeen --> n17
eighteen --> n18
nineteen --> n19
twenty --> n20
And similarly for the first many ordinals:
zeroth --> o0
first --> o1
second --> o2
third --> o3
fourth --> o4
fifth --> o5
sixth --> o6
seventh --> o7
eighth --> o8
ninth --> o9
tenth --> o10
eleventh --> o11
twelfth --> o12
thirteenth --> o13
fourteenth --> o14
fifteenth --> o15
sixteenth --> o16
seventeenth --> o17
eighteenth --> o18
nineteenth --> o19
twentieth --> o20
Cities
The following city names are abbreviated. They are prefixed by "," to disambiguate them from other words ("sea" is both a synonym of "ocean" and an abbreviation for "Seattle"). We'd like to expand this list with time!
Brooklyn --> ,bk
Chicago --> ,chi
London --> ,lon
Los Angeles --> ,lax
Mexico City --> ,cdmx
New York City --> ,nyc
Portland --> ,pdx
Seattle --> ,sea
St Louis --> ,stl
U.S. States
Alabama --> ,al
Alaska --> ,ak
Arizona --> ,az
Arkansas --> ,ar
California --> ,ca
Colorado --> ,co
Connecticut --> ,ct
Delaware --> ,de
Florida --> ,fl
Georgia --> ,ga
Hawaii --> ,hi
Idaho --> ,id
Illinois --> ,il
Indiana --> ,in
Iowa --> ,ia
Kansas --> ,ks
Kentucky --> ,ky
Louisiana --> ,la
Maine --> ,me
Maryland --> ,md
Massachusetts --> ,ma
Michigan --> ,mi
Minnesota --> ,mn
Mississippi --> ,ms
Missouri --> ,mo
Montana --> ,mt
Nebraska --> ,ne
Nevada --> ,nv
New Hampshire --> ,nh
New Jersey --> ,nj
New Mexico --> ,nm
New York --> ,ny
North Carolina --> ,nc
North Dakota --> ,nd
Ohio --> ,oh
Oklahoma --> ,ok
Oregon --> ,or
Pennsylvania --> ,pa
Rhode Island --> ,ri
South Carolina --> ,sc
South Dakota --> ,sd
Tennessee --> ,tn
Texas --> ,tx
Utah --> ,ut
Vermont --> ,vt
Virginia --> ,va
Washington --> ,wa
West Virginia --> ,wv
Wisconsin --> ,wi
Wyoming --> ,wy
Namespaces
Namespaces are abbreviations that begin with a letter followed by a comma. Everything after the letter is conceptually related. We hope to add more namespaces in the future.
Basketball (b
)
National Basketball Association --> b,nba
Atlanta Hawks --> b,atl
Boston Celtics --> b,bos
Brooklyn Nets --> b,bkn
Charlotte Hornets --> b,cha
Chicago Bulls --> b,chi
Cleveland Cavaliers --> b,cle
Dallas Mavericks --> b,dal
Denver Nuggets --> b,den
Detroit Pistons --> b,det
Golden State Warriors --> b,gsw
Houston Rockets --> b,hou
Indiana Pacers --> b,ind
Los Angeles Clippers --> b,lac
Los Angeles Lakers --> b,lal
Memphis Grizzlies --> b,mem
Miami Heat --> b,mia
Milwaukee Bucks --> b,mil
Minnesota Timberwolves --> b,min
New Orleans Pelicans --> b,nop
New York Knicks --> b,nyk
Oklahoma City Thunder --> b,okc
Orlando Magic --> b,orl
Phoenix Suns --> b,phx
Portland Trail Blazers --> b,por
Sacramento Kings --> b,sac
San Antonio Spurs --> b,sas
Toronto Raptors --> b,tor
Utah Jazz --> b,uta
Washington Wizards --> b,was
Countries (c
)
Countries are abbreivated according to ISO 3166-1 alpha-2.
Afghanistan --> c,af
Albania --> c,al
Algeria --> c,dz
American Samoa --> c,as
Andorra --> c,ad
Angola --> c,ao
Anguilla --> c,ai
Antarctica --> c,aq
Antigua and Barbuda --> c,ag
Argentina --> c,ar
Armenia --> c,am
Aruba --> c,aw
Australia --> c,au
Austria --> c,at
Azerbaijan --> c,az
Bahamas --> c,bs
Bahrain --> c,bh
Bangladesh --> c,bd
Barbados --> c,bb
Belarus --> c,by
Belgium --> c,be
Belize --> c,bz
Benin --> c,bj
Bermuda --> c,bm
Bhutan --> c,bt
Bolivia --> c,bo
Bosnia and Herzegovina --> c,ba
Botswana --> c,bw
Bouvet Island --> c,bv
Brazil --> c,br
British Indian Ocean Territory --> c,io
Brunei --> c,bn
Bulgaria --> c,bg
Burkina Faso --> c,bf
Burundi --> c,bi
Cambodia --> c,kh
Cameroon --> c,cm
Canada --> c,ca
Cape Verde --> c,cv
Cayman Islands --> c,ky
Central African Republic --> c,cf
Chad --> c,td
Chile --> c,cl
China --> c,cn
Christmas Island --> c,cx
Coc --> c,cc
Colombia --> c,co
Comoros --> c,km
Congo --> c,cg
Democratic Republic of the Congo --> c,cd
Cook Islands --> c,ck
Costa Rica --> c,cr
Ivory Coast --> c,ci
Croatia --> c,hr
Cuba --> c,cu
Cyprus --> c,cy
Czech Republic --> c,cz
Denmark --> c,dk
Djibouti --> c,dj
Dominica --> c,dm
Dominican Republic --> c,do
Ecuador --> c,ec
Egypt --> c,eg
El Salvador --> c,sv
Equatorial Guinea --> c,gq
Eritrea --> c,er
Estonia --> c,ee
Ethiopia --> c,et
Falkland Islands --> c,fk
Faroe Islands --> c,fo
Fiji --> c,fj
Finland --> c,fi
France --> c,fr
French Guiana --> c,gf
French Polynesia --> c,pf
French Southern Territories --> c,tf
Gabon --> c,ga
Gambia --> c,gm
Germany --> c,de
Ghana --> c,gh
Gibraltar --> c,gi
Greece --> c,gr
Greenland --> c,gl
Grenada --> c,gd
Guadeloupe --> c,gp
Guam --> c,gu
Guatemala --> c,gt
Guernsey --> c,gg
Guinea --> c,gn
Guyana --> c,gy
Haiti --> c,ht
Heard Island and McDonald Islands --> c,hm
Vatican City --> c,va
Honduras --> c,hn
Hong Kong --> c,hk
Hungary --> c,hu
Iceland --> c,is
India --> c,in
Indonesia --> c,id
Iran --> c,ir
Iraq --> c,iq
Ireland --> c,ie
Isle of Man --> c,im
Israel --> c,il
Italy --> c,it
Jamaica --> c,jm
Japan --> c,jp
Jersey --> c,je
Jordan --> c,jo
Kazakhstan --> c,kz
Kenya --> c,ke
Kiribati --> c,ki
Democratic People's Republic of Korea --> c,kp
South Korea --> c,kr
Kuwait --> c,kw
Kyrgyzstan --> c,kg
Laos --> c,la
Latvia --> c,lv
Lebanon --> c,lb
Lesotho --> c,ls
Liberia --> c,lr
Libya --> c,ly
Liechtenstein --> c,li
Lithuania --> c,lt
Luxembourg --> c,lu
Macao --> c,mo
Macedonia --> c,mk
Madagascar --> c,mg
Malawi --> c,mw
Malaysia --> c,my
Maldives --> c,mv
Mali --> c,ml
Malta --> c,mt
Marshall Islands --> c,mh
Martinique --> c,mq
Mauritania --> c,mr
Mauritius --> c,mu
Mayotte --> c,yt
Mexico --> c,mx
Micronesia --> c,fm
Moldova --> c,md
Monaco --> c,mc
Mongolia --> c,mn
Montenegro --> c,me
Montserrat --> c,ms
Morocco --> c,ma
Mozambique --> c,mz
Myanmar --> c,mm
Namibia --> c,na
Nauru --> c,nr
Nepal --> c,np
Netherlands --> c,nl
Netherlands Antilles --> c,an
New Caledonia --> c,nc
New Zealand --> c,nz
Nicaragua --> c,ni
Niger --> c,ne
Nigeria --> c,ng
Niue --> c,nu
Norfolk Island --> c,nf
Northern Mariana Islands --> c,mp
Norway --> c,no
Oman --> c,om
Pakistan --> c,pk
Palau --> c,pw
Palestinian Territory --> c,ps
Panama --> c,pa
Papua New Guinea --> c,pg
Paraguay --> c,py
Peru --> c,pe
Philippines --> c,ph
Pitcairn --> c,pn
Poland --> c,pl
Portugal --> c,pt
Puerto Rico --> c,pr
Qatar --> c,qa
Romania --> c,ro
Russia --> c,ru
Rwanda --> c,rw
Saint Kitts and Nevis --> c,kn
Saint Lucia --> c,lc
Saint Pierre and Miquelon --> c,pm
St Vincent and the Grenadines --> c,vc
Samoa --> c,ws
San Marino --> c,sm
Sao Tome and Principe --> c,st
Saudi Arabia --> c,sa
Senegal --> c,sn
Serbia --> c,rs
Seychelles --> c,sc
Sierra Leone --> c,sl
Singapore --> c,sg
Slovakia --> c,sk
Slovenia --> c,si
Solomon Islands --> c,sb
Somalia --> c,so
South Africa --> c,za
South Georgia and the South Sandwich Islands --> c,gs
South Sudan --> c,ss
Spain --> c,es
Sri Lanka --> c,lk
Sudan --> c,sd
Suriname --> c,sr
Svalbard and Jan Mayen --> c,sj
Swaziland --> c,sz
Sweden --> c,se
Switzerland --> c,ch
Syrian Arab Republic --> c,sy
Taiwan --> c,tw
Tajikistan --> c,tj
Tanzania --> c,tz
Thailand --> c,th
Togo --> c,tg
Tokelau --> c,tk
Tonga --> c,to
Trinidad and Tobago --> c,tt
Tunisia --> c,tn
Turkey --> c,tr
Turkmenistan --> c,tm
Turks and Caicos Islands --> c,tc
Tuvalu --> c,tv
Uganda --> c,ug
Ukraine --> c,ua
United Arab Emirates --> c,ae
United Kingdom --> c,gb
United States --> c,us
United States Minor Outlying Islands --> c,um
Uruguay --> c,uy
Uzbekistan --> c,uz
Vanuatu --> c,vu
Venezuela --> c,ve
Vietnam --> c,vn
British Virgin Islands --> c,vg
US Virgin Islands --> c,vi
Wallis and Futuna --> c,wf
Western Sahara --> c,eh
Yemen --> c,ye
Zambia --> c,zm
Zimbabwe --> c,zw
Elements (e
)
actinium --> e,ac
aluminum --> e,al
americium --> e,am
antimony --> e,sb
argon --> e,ar
arsenic --> e,as
astatine --> e,at
barium --> e,ba
berkelium --> e,bk
beryllium --> e,be
bismuth --> e,bi
bohrium --> e,bh
boron --> e,b
bromine --> e,br
cadmium --> e,cd
calcium --> e,ca
californium --> e,cf
carbon --> e,c
cerium --> e,ce
cesium --> e,cs
chlorine --> e,cl
chromium --> e,cr
cobalt --> e,co
copernicium --> e,cn
copper --> e,cu
curium --> e,cm
darmstadtium --> e,ds
dubnium --> e,db
dysprosium --> e,dy
einsteinium --> e,es
erbium --> e,er
europium --> e,eu
fermium --> e,fm
flerovium --> e,fl
fluorine --> e,f
francium --> e,fr
gadolinium --> e,gd
gallium --> e,ga
germanium --> e,ge
gold --> e,au
hafnium --> e,hf
hassium --> e,hs
helium --> e,he
holmium --> e,ho
hydrogen --> e,h
indium --> e,in
iodine --> e,i
iridium --> e,ir
iron --> e,fe
krypton --> e,kr
lanthanum --> e,la
lawrencium --> e,lr
lead --> e,pb
lithium --> e,li
livermorium --> e,lv
lutetium --> e,lu
magnesium --> e,mg
manganese --> e,mn
meitnerium --> e,mt
mendelevium --> e,md
mercury --> e,hg
molybdenum --> e,mo
moscovium --> e,mc
neodymium --> e,nd
neon --> e,ne
neptunium --> e,np
nickel --> e,ni
nihonium --> e,nh
niobium --> e,nb
nitrogen --> e,n
nobelium --> e,no
oganesson --> e,og
osmium --> e,os
oxygen --> e,o
palladium --> e,pd
phosphorus --> e,p
platinum --> e,pt
plutonium --> e,pu
polonium --> e,po
potassium --> e,k
praseodymium --> e,pr
promethium --> e,pm
protactinium --> e,pa
radium --> e,ra
radon --> e,rn
rhenium --> e,re
rhodium --> e,rh
roentgenium --> e,rg
rubidium --> e,rb
ruthenium --> e,ru
rutherfordium --> e,rf
samarium --> e,sm
scandium --> e,sc
seaborgium --> e,sg
selenium --> e,se
silicon --> e,si
silver --> e,ag
sodium --> e,na
strontium --> e,sr
sulfur --> e,s
tantalum --> e,ta
technetium --> e,tc
tellurium --> e,te
tennessine --> e,ts
terbium --> e,tb
thallium --> e,tl
thorium --> e,th
thulium --> e,tm
tin --> e,sn
titanium --> e,ti
uranium --> e,u
vanadium --> e,v
wolfram --> e,w
xenon --> e,xe
ytterbium --> e,yb
yttrium --> e,y
zinc --> e,zn
zirconium --> e,zr
Suffixes
The following substitutions may be made to suffixes:
able --> B
ation --> A
ent --> N
hood --> O
ing --> q
ity --> Y
ment --> M
ness --> S
ship --> H
ted --> D
tion --> T
Comparison to other shorthands
The principal difference between Lesshand and other shorthands is that Lesshand is lossless. This means that you can type quickly in Lesshand and have a computer program decode your shorthand to standard written English, making Lesshand suitable for composing emails, documents, messages, and more.
Another key differentiator is that Lesshand is alphabetic, meaning it doesn't use any symbols outside of what you'd normally find on a keyboard.
Lesshand also emphasizes memorability and ease of learning.
The following is a comparison between Lesshand and a few typeable shorthands. As you can see, Lesshand is considerably more verbose, but also considerably easier to read. Furthermore, the sample text pleasantly justifies the losslessness of Lesshand. There would be no point in writing this letter in these other shorthands: the recipient couldn't read it!
Dear Sir: In reply to your request of March 5, several of our sales catalogues are being shipped to you, under separate cover. Thank you for your interest in our organization. We appreciate your help. If we can be of further service, let us know. Sincerely,
Lesshand:
Dear Sir: In reply to ur rqst o mar 5, sev o our sales catalogues r beq shipped to u, under separate cover. Thank u f ur ist in our org. We appreciate ur help. If we c be o furth svc, let us kw. Sincerely,
Personal Shorthand:
ds n rpli t y rqst o mr 5, svrl o r sals ctlgs r bg spd t u, u sprt cvr. t u f y ntrst n r org. w aprsat y hlp. f w c b o frtr srvc, lt u n. s
drsr n ri tr rqz vmrc 5 sv v l sls kegs l bg ji tu xr wpt kq. hu qr nez nl lgc. wijt r lp. fwkb vfrh srvs qsn. swrl
Evaluation
This page describes how Lesshand is evaluated against its goals.
We evaluated Lesshand by calculating our metrics on a corpus consisting of the following texts:
- Pride and prejudice by Jane Austin
- The Importance of Being Earnest by Oscar Wilde
- The Wikipedia pages:
The results were as follows:
- Typing or handwriting these texts in Lesshand would be about 13% easier.
- Encoding the texts in Lesshand reduced their size (number of characters) by 11.93%.
- Decoding the texts as if they were written in Lesshand produced a 0.06% change in content, providing good evidence that Lesshand is lossless.
- Encoding the texts twice produced identical results to doing so once, again providing good evidence that Lesshand is lossless.
- Roundtripping (encoding then decoding) the texts produced a result that was only 0.13% different from the original. Further investigation reveals that most of this is actually due to technical bugs in the software implementation, rather than the abbreviation scheme itself.
You can re-run this evaluation by collecting the above texts into corpus.txt
and running:
cargo run -r --bin=lesshand-design -- metrics corpus.txt
Most effective abbreviations
We further collected data on the most effective abbreviations. The top 7 abbreviations cumulatively save about 5% effort, the top 20 cumulatively save 8.5%, and the top 200 save about 12%. The following list shows the top 20 in decreasing order of effectiveness, along with how much effort each one saves.
the --> l: 1.71% (cumulative: 1.71%)
and --> d: 1.03% (cumulative: 2.74%)
to --> t: 0.70% (cumulative: 3.44%)
that --> tt: 0.46% (cumulative: 3.90%)
not --> x: 0.45% (cumulative: 4.35%)
you --> u: 0.44% (cumulative: 4.79%)
of --> o: 0.44% (cumulative: 5.24%)
was --> w: 0.36% (cumulative: 5.60%)
for --> f: 0.35% (cumulative: 5.95%)
her --> hr: 0.32% (cumulative: 6.27%)
they --> e: 0.25% (cumulative: 6.51%)
from --> m: 0.23% (cumulative: 6.75%)
very --> v: 0.23% (cumulative: 6.98%)
have --> hv: 0.23% (cumulative: 7.21%)
I --> i: 0.22% (cumulative: 7.43%)
this --> h: 0.22% (cumulative: 7.65%)
could --> cd: 0.20% (cumulative: 7.85%)
is --> s: 0.20% (cumulative: 8.05%)
be --> b: 0.20% (cumulative: 8.25%)
were --> ee: 0.19% (cumulative: 8.45%)
You can re-run this evaluation by collecting the above texts into corpus.txt
and running:
cargo run -r --bin=lesshand-design -- top corpus.txt
Goals and metrics
This page describes the goals of Lesshand, and metrics that are used to evaluate whether Lesshand meets them. See Evaluation for how Lesshand is evaluated against these metrics. See also Requirements for the hard-and-fast rules that Lesshand's abbreviations conform to.
Lossless
Lesshand should be lossless.
Related requirements:
Metric: Round-tripping
Encoding and decoding should preserve more than 99% of English writing.
Metric: Idempotency
Encoding should be more than 99% idempotent. That is, encoding twice should be (almost exactly) the same as encoding once.
Effective
Lesshand should save the user effort.
Related requirements:
Metric: Effort ratio
Encoding should reduce effort by more than 5%.
Metric: Compression ratio
Encoding should reduce text length by more than 3%.
Incremental
You can get started right away and gradually increase your speed as you learn more of Lesshand. You can freely intermix encoded and un-encoded text, i.e., you won't "accidentally" write encoded versions of anything.
Related requirements:
Metric: Decoding normal text
Decoding non-shorthand text should alter less than 3% of the text.
Good abbreviations
To evaluate the quality of Lesshand's abbreviations, we have developed three different numeric scores. Each score attempts to approximate some important quality of an abbreviation.
- Effort approximates how much time and energy an abbreviation saves. Good abbreviations save lots of effort.
- Memorability approximates how easy it is to learn and remember an abbreviation. Good abbreviations are highly memorable.
- Ambiguity approximates how ambiguous a given abbreviation is. Good abbreviations have low ambiguity, i.e., are unambiguous.
For each score, there is some threshold that abbreviations must pass to be included in Lesshand. These thresholds are fundamentally arbitrary, but each seems to include enough abbreviations to be useful while excluding a decent number of undesirable abbreviations.
Effort
A shorthand should save the user time and energy. To evaluate Lesshand, we assign every word or phrase a score called an effort. Effort is an estimate of how hard the word or phrase is to write or type. Good abbreviations are ones that save a lot of effort.
R003: Effort requires that all abbreviations in Lesshand save at least 5 effort, except those for the 128 most common words, which must save at least 1.
Space is always assigned an effort of 1.
Keyboard
Keyboard effort is determined as follows:
- By default, keys have an effort of 2.
- Being a modified key adds 2 to the effort, i.e., symbols typed using shift, e.g., capitals, symbols like "!".
- Distance from the home row increases cost as shown in the following image:
Keyboard effort ranges from 2-7. Here are some example efforts:
- f - 2
- [ - 3
- F - 4
- : - 5
- @ - 6
- ~ - 7
When keys are used twice in a row, the second use always has an effort of 2. This reflects the fact that your finger has already traveled to the key and you are already holding down shift (if necessary for that key).
All of this is relative to a ANSI US QWERTY keyboard.
Printing
Printed effort is determined as follows:
- By default, characters have an effort equal to two times the number of strokes it takes to print them, where a "stroke" is defined to be lifting the pen off the page.
- Then the number of turns is added to their effort, where a turn is a sharp corner when printing (e.g. "<" has one, but "/" has none).
Here are some example efforts:
- f - 4
- [ - 4
- F - 5
- : - 4
- @ - 3
- ~ - 2
- / - 2
- < - 3
- m - 4
Memorability
Lesshand should be easy to learn, so its abbreviations should be easy to remember. It should also be easy to read, so its abbreviations should echo the word or phrase they abbreviate. To evaluate these aspects of Lesshand, we assign every abbreviation a score called memorability. Good abbreviations have high memorability.
R007: Memorable requires that all abbreviations in Lesshand have a memorability of more than 5, except those for the 128 most common words.
Memorability is additive. For an abbreviation long --> short
, it works as
follows:
- Add 3 if
short
starts with the same letter aslong
- Add 3 if
short
ends with the same letter aslong
- Add the length of
short
if it is a prefix oflong
- Add the length of
short
if it is equal tolong
without all of the vowels - Add 1 for each character that
short
shares withlong
(if they appear in the same order) - Add 10 for being a contraction of another abbreviation (e.g.,
cn'
gets +10 because ofcn
) - Remove 1 if
long
contains an apostrophe andshort
does not.
For example:
and --> d
: has a memorabilty of 5can --> cn
: has a memorability of 10government --> govt
: has a memorability 10if I remember correctly --> ,iirc
has a memorability of 7
Ambiguity
Lesshand should be easy to read and write, so its abbreviations should be reasonably unambiguous. To evaluate this aspect of Lesshand, we assign every abbreviation a score called ambiguity. Good abbreviations have low ambiguity.
R010: Unambiguous requires that all abbreviations in Lesshand have an ambiguity of less than 1100.
The calculation of ambiguity is somewhat complex. It is based on summing the memorability of an abbreviation as if it were an abbreviation for any of the most common 4000 words in English, weighted by the frequency of the word.
Requirements
This page lists requirements for abbreviations that are included with Lesshand. These requirements are enforced by automated tests.
In the remainder of this document, we use the word source for the word or phrase being abbreviated, and target for the abbreviated version.
R001: Typeable
Lesshand should be typeable. It's the 21st century, after all! Thus, abbreviations must not introduce characters that do not appear on ANSI US QWERTY keyboards.
R002: Words
No abbreviation should target an existing word. We check this against the most common 4000 words from the COCA corpus.
R003: Effort
An abbreviation should save the user at least 5 effort, unless it is for one of the 128 most common words in which case it should save at least 1.
Example
"s" is not a good abbreviation for "sad", because it doesn't save much effort.
"n" is an acceptable abbreviation for "no". "no" is exceptionally common, so this abbreviation saves considerable effort by virtue of being used so frequently.
R004: Valid source
The source of an abbreviation may only contain the characters A-z
, '
, and
.
R005: Valid target
The target of an abbreviation may only contain the characters A-z
, 0-9
, '
,
, ,
, and ;
.
R006: Unique
No two abbreviations may share a target.
R007: Memorable
Abbreviations must have a memorability of at least 5,
unless the abbreviation is for one of the 128 most common words and is only one
character (e.g., for --> f
, the --> l
).
R008: Uniquely memorable
An abbreviation must not have a higher memorability for a common word other than its source.
R009: Not known to be ambiguous
No abbreviations should have the following highly ambiguous targets:
ar
: "another", "around"cm
: "come", "came"ev
: "electric vehicle", "even", "ever", "every"mt
: "might", "most", "must"se
: "sea", "see", "set", "she"sm
: "same", "some"te
: "the", "their", "there"th
: "the", "that", "their", "this"tr
: "their", "they're"wh
: "with", "what", "when", "where", "why"wn
: "wane", "won", "when"wr
: "were", "where"wt
: "wait", "what"yr
: "year", "your"
This list is simply based on human judgment.
R010: Unambiguous
An abbreviation should have an ambiguity of less than 1100, unless it is an abbreviation for one of the 128 most common words.
Example
"se" is an ambiguous (bad) abbreviation, because it could stand for "sea", "see", "set", "she", etc. It has an ambiguity of 6562.
Command-line interface
Lesshand provides a command-line interface. It can be downloaded from the releases page or built from source.
The command-line interface has two commands: encode
and decode
. They each
take a file path as their only argument and provide output on stdout.
The following is a shell function named lh
that can be used to quickly open
an editor to type Lesshand. When closing the editor, the expanded text will be
copied to the clipboard. This works on Linux or macOS.
if [[ ${OSTYPE} == darwin* ]]; then
clipboard() { pbcopy; }
else
clipboard() { xsel -ib; }
fi
lh() {
f=$(mktemp)
trap "rm -f '${f}'" EXIT HUP INT QUIT TERM
"${EDITOR}" "${f}"
lesshand-cli decode "${f}" | clipboard
rm -f "${f}"
}
(Caution: on some systems, mktemp
may return a path with world-readable
permissions.)
Developer documentation
Build
To install from source, you'll need to install Rust and Cargo. Follow the instructions on the Rust installation page. Then, get the source:
git clone https://github.com/langston-barrett/lesshand
cd lesshand
Finally, build everything:
cargo build --release
You can find binaries in target/release
. Run tests with cargo test
.
Docs
HTML documentation can be built with mdBook:
cd doc
mdbook build
# or
mdbook serve
Linting and formatting
Profile
Samply
To use Samply:
cargo install samply
cargo build --profile=profiling
samply record ./target/profiling/lesshand-design metrics corpora/gutenberg-out/ff/f168b70c0d6881f52cbde414ca2f6c4d7287e827649bed6a892550b178d3c6.txt
Warnings
Warnings are disallowed in the CI build. Warnings are configured in the top-
level Cargo.toml
file. We reject all warn-by-default rustc
lints, as well
as a subset of allowed-by-default lints. The goal is to balance high-quality,
maintainable code with not annoying developers.
To allow a lint in one spot, use:
#![allow(unused)] fn main() { #[allow(name_of_lint)] }
Speeding things up
To speed things up a bit, try putting this in .cargo/config.toml
:
[build]
rustflags = ["-C", "target-cpu=native"]
Linting and formatting
Lesshand uses several code linters and formatters.
Format
Rust
Rust code formatted with rustfmt. You can install rustfmt with rustup like so:
rustup component add rustfmt
and then run it like this:
cargo fmt --all
Python
Python code formatted with ruff.
ruff format ./**/*.py
Lint
Rust
All code should pass Clippy. You can install Clippy with rustup like so:
rustup component add clippy
and then run it like this:
cargo clippy --workspace -- --deny warnings
Python
Python code linted with ruff.
ruff check ./**/*.py
Markdown
We run typos on the README and doc/
to spell-check the documentation. To run
it locally, try:
typos README.md doc/
Automation
Lesshand includes a Cargo package called x
that provides ad-hoc automation of
development tasks. It can be run with the script at the top level of the repo
that is called x
. Try x --help
.
Cross-references
Lesshand aims to have extensive and accurate user- and developer-facing
documentation. To aid us in this task, we use a particular system of cross-
references and an associated tool called xref
.
xref
works by collecting definitions and references from comments embedded
in code and documentation. For example, a definition in a Markdown file might
look like this:
<--! def: foo-algorithm -->
The algorithm for accomplishing `foo` works as follows...
The corresponding reference in a Rust file would look like:
#![allow(unused)] fn main() { // ref: foo-algorithm fn foo() { /* ... */ } }
The presence of these comments indicates that the behavior of the code following
the reference is documented at the site of the definition. The main idea is for
developers to use these comments as reminders. If a developer changes the code
near a ref
comment, they should probably go look at the documentation around
the corresponding def
to ensure that it is still accurate.
The tool
While the primary purpose of these comments is not automation, the xref
tool
does support a few light-weight checks. It checks that:
- Every
ref
refers to a matchingdef
- No two
def
s have the same name
- Every
def
has at least oneref
In CI, the tool is run as
./x xref .github crates doc
Conventions
The xref
tool is quite simple. It essentially checks each line for the
following regex: (d|r)ef: [^ \n]+
. Conventionally, we only use kebab-case
alphanumeric identifiers.