This is a follow-up question based on . The accepted answer explained how this staggered design originates to earliest typewriter. My question is, why do they stagger in this way?  Take home row as the horizontal axis, then in the alphanum area you canʼt find two keys aligned horizontally. It might be explained by my observation that for old typewriters, each keyʼs lever must take a unique horizontal position. I'm just wondering whether itʼs that later industrial designers never changed this, or that there are other reasons beyond path dependence?
In every keyboard that I have used, the keys are arranged so that the keys are staggered a small increment to the left from the previous row. Q is above and slightly to the left of A, and A is above and slightly to the left of Z. This pattern continues across the entire board. Case in point:    What is the motivation behind this design? I would think that a column layout would be easier to type on - and indeed, many ergonomic keyboards seem to go with a column layout, where Q is directly above A and so on.
1099 for settlement what about lawyer fees? I am getting a settlement from a business over a suit but most of the settlement will go to the attorney to cover their fees incurred on contingency.  If the 1099 reports the full settlement, will I have to pay taxes on the full amount or if not, how do I tell the IRS it is not all taxable. Otherwise, I could easily end up owing more in taxes than I get for my small portion. How to call a function in a Twig file Let's say I create a function in a module file:  function _get_test() {   return 'test'; }   How can I call this in any Twig file? For example *.html.twig, page.html.twig, node.html.twig etc.   OR   How can I pass a variable from PHP to Twig and display in any Twig file.  For example *.html.twig, page.html.twig, node.html.twig etc. Is it acceptable to write a thank you in a comment? There have been a number of cases where I would like to thank someone for providing me with a thorough response and give them feedback beyond the vote up. Often I wish people would tell me why they voted me up. Not that the thank you part is necessary but it sets it apart from the other comments related to answering the question itself.  In this type of situation is a "Thank you" acceptable in a comment?     For more information, see  in the . Why does $\lim\limits_{t\to-\infty}te^t=0$? Intuitively, $\lim\limits_{t\to -\infty}te^t=0$, since $e^t\to 0$ much faster than $t\to -\infty$.   Is there a way to more rigorously compute this? Writing it as $e^t/(1/t)$ seems resistant to l'Hopital's rule. Is it (always) true that $$\mathrm{Var}\left(\sum\limits_{i=1}^m{X_i}\right) = \sum\limits_{i=1}^m{\mathrm{Var}(X_i)} \&gt;?$$ Can't find boot-repair package for the newest version of Ubuntu show that Cov(X+ Y, X-Y)= Var(X) - Var(Y) Edges on an even number of Hamilton cycles How do I backup data (SMS/contacts) from a device with a broken screen? I just broke the screen of my (unrooted) Galaxy S.  How do I get back my SMS and contacts?   PS: I tried Kies but it won't detect my phone for some reason. (Kies works fine with another Galaxy I possess but not this one) What is the expected value of the number of die rolls necessary to get a specific number? Given a discrete random number generator, such as a six-sided die, what is the expected value of the number of rolls necessary to roll a specific number (e.g. a six)?   I think the result should be given by E$\langle$rolls$\rangle$ = $\frac{1}{6}\sum_{n=0}^\infty{(\frac{5}{6})^n(n+1)}$, but I don't know how to calculate the convergence of that sum.  Also, how do I calculate the variance? Who would get the longest road? Imagine the following setup. There are 3 (or more) players with an equally long road. What would happen if the longest road was broken? How is it decided who obtains the longest road from there on? Local hyperlinks broken after PDF processing with Ghostscript I usually compress my tex PDFs with ghostscript:  pdflatex -shell-escape file.tex  gs -sDEVICE=pdfwrite        \    -dCompatibilityLevel=1.4   \    -dPDFSETTINGS=/prepress      \    -dNOPAUSE -dQUIET -dBATCH      \    -sOutputFile=file_compressed.pdf \     file.pdf   Normally that works well, but if I have relative links to local files, the links don't work afterwards.  Minimal example:  \documentclass{beamer} \usepackage{hyperref}  \begin{document}     \begin{frame}         \href{run:./audio.mp3}{test}     \end{frame} \end{document}   The link works in file.pdf but not in file_compressed.pdf. Is there any pdflatex or ghostscript setting that retains the link in the compressed version?  I use Acrobate Reader 10.1.14 for viewing, Ghostscript 9.10 and pdfTeX 3.14159265-2.6-1.40.15 (TeX Live 2014) on OS X 10.9.5.    Update: The breakage of hyperlinks had nothing to do with compressing the PDFs. The breakage happened for all re-processing of PDFs containing hyperlinks in its input PDF. Problem with glossary I am copying the very first piece of code from  in order to create a glossary. While I get no problem in the compilation I do not get the "glossary part" that appears in the example. I literally copy paste.  Also, I want to create a document that only consists of a glossary of various terms. That is to put everything in alphabetical order (with the possibility to include references as well). How could I possibly do this? I tried some itemize options with alphabetical order but does not look that good. How to check if Node connected to another node input in Python I am doing a process to some switch links in materials. I need to know if something is ever linked or not before to process. I can't find out how to :/ The script works well if something is linked only.  import bpy for m in bpy.context.object.material_slots:     mat = m.material     nodes = mat.node_tree.nodes      # get node input (socket)     alphasocket = mat.node_tree.nodes.get("Principled BSDF").inputs[18]     # get node link that connects into the socket     lnk = (link.from_socket for link in mat.node_tree.links if link.to_socket == alphasocket)      #add emission node     emi= nodes.new('ShaderNodeEmission')     emi.name= "emibak"     outepute= mat.node_tree.nodes.get("Material Output").inputs[0]      #make new link destination     #here 's where I cant find out how to check     if lnk != None:         print(mat.name + " alphanod found")        # mat.node_tree.links.new(lnk, emi.inputs[0])     else :         print(mat.name + " alphanod missing")      mat.node_tree.links.new(emi.outputs[0], outepute)     here is another way I am searching...  import bpy  for m in bpy.context.object.material_slots:      mat = m.material     nodes = mat.node_tree.nodes          print("**** Material " + mat.name+ " ****")      for mat_node in mat.node_tree.nodes:         if mat_node.type == 'BSDF_PRINCIPLED':             print("From " + mat_node.name )                         alphasocket = mat_node.inputs[18]             #print(alphasocket)             node_in = mat_node.inputs             #print(node_in)                    for n in alphasocket.links:                                print("Alpha connected to " + n.from_node.name)   This show me what is connected to the alpha channel but if nothing is connected I want to connect a new node. Remove duplicates from a List in C# Anyone have a quick method for de-duplicating a generic List in C#? $\gcd(b^x - 1, b^y - 1, b^ z- 1,\dots) = b^{\gcd(x, y, z,\dots)} -1$ Possible Duplicate:        $b$, $x$, $y$, $z$, $\ldots$ are integers greater than 1. How can we prove that  $$ \gcd (b ^ x - 1, b ^ y - 1, b ^ z - 1 ,\dots)= b ^ {\gcd (x, y, z, \dots)} - 1\ ? $$ Command run in terminal, not with shortcuts As explain in this , I want to add shortcuts to switch workspaces (in Mate).  I found a way to switch workspace for the terminal: wmctrl -s $(wmctrl -d | grep "*" | awk '{print $1+1}').  But this command line does not work when I add it in the shortcut manager. Does any one know why ? Running ERDAS Imagine and ArcGIS Desktop on same machine? LibreOffice Calc - Disable rounding There are a  on this topic, but no simple and definitive answers.    Can someone please tell me how to permanently disable cell rounding on the .csv file which is created by script?  Basically, '377635637222436751' is being converted to '377635637222437000' automatically and that isn't really acceptable for my needs.  I've tried this: Tools->Options->Calc->Calculate "Precision as shown"   and this: Format > Cells > Numbers > Category > (scroll down for) Text. (but considering my script creates the .csv -- this option isn't very good since it must be done after the file is created)  And neither is working.  The number stays rounded -- even after formatting the column after the file is created.  Does anyone have any suggestions? Can I run an HTTP GET directly in SQL under MySQL? I'd love to do this:  UPDATE table SET blobCol = HTTPGET(urlCol) WHERE whatever LIMIT n;   Is there code available to do this? I known this should be possible as the  include an example of adding a function that does a DNS lookup.  MySQL / windows / Preferably without having to compile stuff, but I can.  (If you haven't heard of anything like this but you would expect that you would have if it did exist, A "proly not" would be nice.)  EDIT: I known this would open a whole can-o-worms re security, however in my cases, the only access to the DB is via the mysql console app. Its is not a world accessible system. It is not a web back end. It is only a local data logging system