My Reading Summer

Selected quotes from some of my July 2017 reading list.   All totaled there were 14 books finished during July or the first week of August.  Authors include E. M. Forster, Henry Hazlitt, C.S. Lewis, and Pat Conroy (admittedly those are the most impressive names.)  Topics covered last month include politics, religion, economics, bio-diversity, and of course history.

There were a lot of really good books this summer, so it is with difficulty I am reducing it to my favorite three.  The three books I enjoyed the most were Jerusalem: The Biography by Simon Sebag Montefiore, The Sixth Extinction: An Unnatural History by Elizabeth Kolbert, and of course The Age of Reason Begins (The Story of Civilization VII) by Will Durant.

The worst books, by far, this summer has been Agile!: The Good, the Hype and the Ugly by Bertrand Meyer which as near as I can tell is written for people who have decided they hate Agile and want academic justification for their opinions.

Overall, it was a pretty good month this summer and it only looks to get better.

A Room with a View by E. M. Forster

It isn’t possible to love and to part.  You will wish that it was.  You can transmute love, ignore it, muddle it, but you can never pull it out of you.  I know by experience that the poets are right, love is eternal.

Life is easy to chronicle be bewildering to practice and we welcome “nerves” or any other shibboleth that will cloak our personal desire.

Anyone can find places but finding people is a gift from God.

Economics in One Lesson by Henry Hazlitt

It is impossible in maters touching practical life to be consistently wrong.

It is the fallacy of overlooking secondary consequences.  In this lies the whole difference between good economics and bad.

The things so great that private capital could not have built it has in fact been built by private capital.  The capital that was expropriated in taxes or if borrowed must eventually be expropriated in taxes.

There is a strange idea abroad held by all monitary cranks that credit is something a bank gives to a man.  Credit, on the contrary, is something a man already has. He has it perhaps because he already has marketable assets of a greater cash value than the loan he is asking or he has it because his character and past record have earned it.  He brings it into the bank with him.

Private loans will utilize existing resources and capital far better than government loans.  Government loans will waste far more capital and resources than private loans.  Government loans, in short, compared with private loans will reduce production; not increase it.

Government guaranteed home mortgages especially when a negligible down payment or no down payment is required inevitably mean more bad loans than otherwise.  The force the general tax payer to subsides the general risk and to defray the losses.  They encourage people to buy houses they cannot really afford.  They tend to eventually to bring an over-supply of houses.

note: this book was written in 1946

The best prices are not the highest prices, but the ones that encourage the highest volume of production and the largest volume of sales.  The best wage rates for labor are not the highest wage rates, but the ones that permit full production, full employment, and the largest sustained payrolls.

Profits do not actually bulk large in our economy.  …averaging less than 6% of the total national income. It is significant that while there is a word “profiteer” to stigmatize those that allegedly make excessive profits; there is no such word as “wage-eer” or “loss-eer” even though the profits of a barbershop may average much less than wages.

When national debts have once been accumulated to a certain degree  there is scare, I believe, a single instance of their having been fairly and completely paid.

The Church by C.S. Lewis

When it succeeds, I think the performers are the most enviable of men.  Privilege while mortals to honor God like Angles and for a few golden moments to see spirit and flesh , delight and labor, skill and worship, the natural and supernatural all fused into that unity they would have had before the fall.

It is rational not to reason, or not to limit oneself to reason in the wrong place.  And the more rational a man is, the better he knows this.

Unless equal means interchangeable, equality makes nothing for the priesthood of women.

Christians think that God himself has taught us how to speak of him. To say that it does not matter it to say either that all masculine imagery is not inspired, is merely human in origin, or else that, though inspired, it is quite arbitrary and unessential.  And this is surely intolerable or if tolerable it is an argument not in favor of Christian Priestesses, but against Christianity.

The Divine Comedy by Dante Alghieri

Faith is the substance of things hoped for; and evidence of things not seen.

Every substantial form that is separate from matter and is united with it has a specific virtue residing in itself which without action is not perceived nor shows itself save by its effect as by green leaves the life in a plant.  Yet whence the intelligence of the first cognitions comes man doth not know nor whence the affection for the first objects of desire which exist in you even as zeal in the bee for making honey and this first will admits not desert of praise or blame. Now in order virtue that counsels 1 is innate in you and ought to keep the threshold of assent. This is the principle wherefrom is derived the reason of desert in you according as it gathers in and winnows good and evil loves Those who in reasoning went to the foundation took note of this innate liberty wherefore they bequeathed morals to the world. Assuming then that every love which is kindled within you arises of necessity the power exists in you to restrain it. This noble virtue Beatrice calls the free will

The Age of Reason Begins, The Story of Civilization Volume 7 by Will Durant

The nature of man confesses itself in the conduct of states for these our ourselves in gross.

So wars determine theology and philosophy, and the ability to kill and destroy  is a prerequisite to live and build.

Faith might hold to beliefs for which science and philosophy could find no evidence but philosophy should depend only on reason, and science should seek purely secular explanations in terms of physical cause and effect.

By 1789 the English had digested their two rebellions and could look with horror and eloquence upon a revolutions that, like its own, had incarnadined a country and killed a king because the past had tried to stand still.

But even perfection pause when it is long continued. Change is necessary to life, sensation, and thought.  An exciting novelty may seem by its very novelty to be beautiful until the forgotten old returns on the wheel of time and is embraced as young and new.

History smiles at all attempts to force its flow into theoretical patterns or logical groves.  It plays havoc with our generalizations, breaks all our rules.  History is baroque.

History, like oratory, seldom makes a point without exaggeration.

Fame is a fashion.  We tire of wearing old admirations on our pens and find it exhilarating to discard worn idols from our fancy.  To take down the dead mighty from their seats and to put on the praises of new gods blown up by our originality or exhumed by some fresh renown.

Adjustment to a changing environment is the essence of life, and its price.

Only the fortunate can take life without mythology.

Science now began to liberate itself from the placenta of its mother philosophy…  It did not put its faith in pure reason, reason independent of experience and experiment.  To often such reasoning had woven mythical webs.  Reason as well as tradition and authority was now to be check by the study and record of lowly facts.    And whatever logic might say, science would aspirate to accept only what could only be quantitatively measured, mathematically expressed, and experimentally proved.

The soul of a civilization is its’ religion, and it dies with its faith.

My Reading Life by Pat Conroy

In a reading life, one thing leads to another in a circle of accident and chance.

As an American liberal with impeccable credentials, I’d like to say that political correctness is going to kill American liberalism if it is not fought to the death by people like me for the dangers it represents to free speech, to the exchange of ideas, to open heartedness or to the spirit of art itself. Political correctness has a stranglehold on academia, on  feminism, and on the media.  It is a form above madness and maggotry and has already silenced the voices of writers like James Dicky across the land.

The Sixth Extinction by  Elizabeth Kolbert

If you want to think about why humans are so dangerous to other species you can picture a poacher in Africa with an AK-47, or a logger in the Amazon gripping an ax, or better still you can picture yourself holding a book on your lap.

With the capacity to represent the world in signs and symbols come the capacity to change it which, as it happens, is also the capacity to destroy it.

As soon as humans started to use signs and symbols to represent the natural  world they pushed beyond the limits of that world.  In may ways, human language is like the genetic code.  Information is stored and transmitted with modifications down the generations Communication hold societies together and allows humans to escape evolution.

Religious Literacy by Stephen Prothero

What we have here is yet another effort to turn religion into a water boy for morality.  …the collapse of religion into virtue.

Faith without knowledge is dangerous.

Learning was highly prized in the early colonies and the republic.  Puritan clergy were… the first class of American intellectuals and the nations founders were sages, scientists, men of broad cultivation, many of them apt in classical learning.

Most Americans, in short, remain far more committed to respecting other religions than to learning about them.

Efforts to update catechetical training have replace time honored instruction about church traditions with touchy-feely conversations about one’s personal values.

…a shift in emphasis from participating in the sacraments to loving Jesus and a growing tenancy to reduce the sum of religion to moral behavior.

Among academics curiosities is the persistent skepticism of its inhabitants, their tenancy to dismiss faith as fanaticism.  Theorists postulating the death of religion under modernity’s crush or, at a minimum, its retreat into the closet of the private often base their predictions on nothing more than the vague air of skepticism they detected at the Dean’s sherry hour.  If academia was marching away from god, or so the logic when, the rest of the modern world would surely follow.

Evangelicalism today has become less a matter of learning that it is a matter of experiencing.  Pop psychology has elbowed Biblicalexegesis out of many born again pulpits.  Self help books outsell theological works in most Christian book stores.

Few school administrators understand the crutal distinction… between studying the Bible academically, which is constitutional, and reading it devotionally which is not.   …the distinction between teaching about religions and teaching of religion.

Links All the Way Down

In the never ending battle between my browser tabs, I am undoubtedly a looser.  I suppose the ideal way to deescalate this situation would be to have a bi-weekly link dump as part of my regular organizational process and maybe that is something I should seriously consider.  At the very least it would help organize these tabs more chronologically then they currently are.

The themes for this dump are common; DevOps, Linux system scripting (primarily in bash), and Android automation.  If that doesn’t clue someone into what I’ve been working on the last couple weeks then nothing can.

Bash Command Line

SSH & System Tools

DevOps & Services

Android Dev Tips

Tutorials & Projects

 

The Vacuum Clap

Change means movement. Movement means friction. Only in the frictionless vacuum of a nonexistent abstract world can movement or change occur without that abrasive friction of conflict.

–Saul Alinsky

Nature and politics abhor a vacuum.  The moment a newly formed vacuity opens the resulting space is filled with the first onrush of whatever commodity is directly adjacent.   If authority is missing from a power structure it will quickly be occupied by multiple players looking to occupy that power vacuum, almost always with intense and sudden conflict.  Why, after 12 centuries of relative safety, was Rome conquered by the the Goths, the Huns, and the Vandals all within 4 decades?  It was because of the sudden void created by the absence of Rome’s ability to project power.  I call this sudden destructive collision caused by unexpected power gap the vacuum clap.

The ramifications of these vacuum claps can ripple for a long long time after the initial cause.  How many of the current geo-polical problems are a direct result of the sudden “clap” that resulted from abdication of European imperialist influence.  Notice how the resulting fallout happens regardless of the justice or morality of the cause of the vacuum!  It doesn’t matter that imperialism legitimately HAD to end; there were going to be violent ramifications resulting from the sudden change for decades (and centuries) to come.

Regulation created your income disparity.  The removal of regulation created your financial crisis.

— Author Unknown

Where this comes to play most on the intra-national scale seems to be in the area of state regulatory policy.   The creation of laws (regardless if they are good or bad) create an artificial “scaffolding” around a pattern of behaviors.  Instead of behavior progressing natural based on mutual interaction (again, good or bad) the behavior is artificial.  This is exacerbated by incentives that may come into direct conflict with the intended behaviors creating black markets, legal opportunist, and artificial ancillary effects.  The spread of the car culture is as much a product of government profit regulation in the passenger rail market as it is the government construction of the interstate system.

So artificial vacuums created by regulation are a problematic, but then imagine the problems created by removing those controls.  When the “scaffolding” is kicked out, even if the scaffolding was an objective bad thing, the result is an almost certain crash.  In the normal ebb and flow of markets, a natural equilibrium eventually takes hold*  but removing bureaucracy always creates a vacuum that markets will suddenly (and often destructively) will try to fill.

This is one reason why even bad laws are difficult to remove.  When critics say that getting rid of regulation will cause havoc, they are generally correct.  Of course, most of the time the regulation is demonstrably bad and often even counter-productive to the intended purpose.**  This brings about the worst in government.  The endlessly expanding dregs of our failed attempts at law, never to be removed because the pain of pulling off the bandage is worse than the slow pain of infection.

Questions are never indiscreet, answers sometimes are.

–Oscar Wilde

How do we shorten the time it takes for a new equilibrium after the resulting void?  My gut reaction is that the better the feedback mechanism the faster a state of balance will occur.  On the macro level this can be exceedingly difficult.  Using the imperialism example from above, notice how feedback isn’t spread equally among all the constituents.  England was more concerned with the collapse of imperialism that its colonies were, but isn’t nearly as effected by the results of that debacle.

Ultimately the best solution is to never create such voids in the first place.  In the realm of intra-national regulation it is obvious to point out that our attempts at a solution are often worse than the original symptom,  especially in the long run.  In the area of international governments the way to preempt such voids is to limit the use of force on other peoples, countries, and nations.  Power never spent will not create a vacuum.***

Footnotes

*In actuality the ebb and flow always continue because nothing ever stays the same and markets are always trying to innovate.  Part of the problem with laws is that they never innovate.

** How many billions of tons of CO2 have been created by regulating ethanol production?

*** My favorite definition of injustice is “Injustice is the abuse of power; force used against the unwilling.  Using power or authority to take from others their life, liberty, dignity, or the fruits of their love or their labor”

Defend Itself no Matter how Small

I have been doing large scale deployments of Raspberry Pi’s for some of my students and their class projects; and after doing… say.. two of them decided it would be easier to script the initial setup.  The process isn’t hard but I thought I would document it in case anyone else was in a similar situation.

I start by connecting the Pi’s to a network via cable (some people carry handkerchiefs, I carry switches.)  Raspbin starts with DHCP enabled and SSH configured for a default user, meaning we can use that to get the wireless configured.  Here is basically what I do in my script.

Getting Connected

Start by doing a port scan for any ssh connections on the network once the Pi is attached. For example:

nmap -T5 -n -p 22 –open –min-parallelism 200 172.16.0.0/24

We do this to pre-load our local arp table with IP & MAC addresses.  This will speed up the process of finding any Raspberry registered MAC addresses  (Raspberry has their own MAC range.)  You can then search for Raspberry nics’ specifically by doing:

arp -a | grep b8:27:eb

You should
SSH (or better yet copy your private key via ssh-copy-id) to the IP address(es) returned from the above command.  Make sure to change the password afterwards.  The default username and password for the SSH connection are:

Username: pi
Password: raspberry

Wireless Configuration

Plugin your wireless USB (unless you have a PI3 or later) and run the following command to see the wireless card:

iw dev

The result will be a list of physical wireless devices.  You’re looking for the entry next to Interface mostly likely something  like wlan0.   Run the iwlist command to get a list of wireless access points you can connect to.

iwlist wlan0 scanning

Specifically you’re looking for the value next to ESSID.  Find the one you want to connect to. To setup the encryption for secure wireless run the following command to add a specific network entry for your ESSID.  Replace XXXX with the ESSID name you want to connect to.

wpa_passphrase “XXXX” >> /etc/wpa_supplicant/wpa_supplicant.conf

Now type the wireless access point password and hit enter.  Finally restart the wireless interface to load the new network and get an IP address.  Replace wlan0 with the Interface name you used for scanning a couple steps above.

ifdown wlan0
ifup wlan0
ifconfig wlan0

The ifconfig is to see what your new wireless IP address is.  You can then safely disconnect the wired network cable and SSH back into the PI on the wireless nic.  The PI can safely be restarted at this point as the wireless will auto-connect on restart.

Thoughts on the Infinite

I need a pure mathematician to discuss this with me but I have been having some shower thoughts on infinite numbers and their implications.  I am not a formally trained mathematician and am almost certainly using words like “set” and “infinite” differently than would be properly used by one, but regardless I need to get these out of my head.

First, it seems logical for order sets of infinitely large things, of a defined group, that the nature of their being ordered would mean all possible patterns for that set would occur.  For example the defined group of 0, 1, 2, 3, 4, 5, 6, 7, 8, and 9 in the order of “1”, “2”, etc through infinity would always contain any possible finite “number” regardless of the patter if we assume the patter must contain those ten characters.

Second, it seems just as logical for unordered sets of infinitely large things, of a defined group, that the nature of their being unordered would mean all possible patters for that set would NOT occur.  In other words, that because such a set is ordered in a non-exhaustive way that even if the set was used infinitely it would not guarantee all possible discrete sets would be used. For example the defined group of a, b, c, d, e… through z order via “one”, “two”, etc. through infinity would not automatically contain the word “xxxzxxznnnzzz” because such word violates the rules of the English language.  So an infinite number of words would be produced but non of them would be xxxzxxznnnzzz.

The natural implication for this is that for sets that have arbitrary rules that the normal assumptions for infinite breakdown.

A totally different question also comes to mind.   For infinite numbers that (although unordered still contain all possible patters) for example pi.  Do specific patterns in these sets generally appear random (at least within the confines of their set length?)   Is their randomness generally uniform?

We are all links in a chain

Another link dump building up over time in my browser history.

Linux

  • Linux Daemon How-To
  • shunit – xUnit test framework for bash
  • bats – bash Tap test framework for bash
  • Roundup – Bug finder and unit test framework for bash
  • ttyrec – Command line recorder, and playback program. Here is the github page.

JavaScript

Software Development

Management

  • Getting Things Done in 15 minutes – Nice guide to getting started with GTD.
  • Cyph – Encrypted private text and video chat.  Perfect for executive teams and foreign dignitaries.
  • Debt Supercycle vs Secular Stagnation – A generalised theory on the cause of global economic slowdowns.  This is NOT a 2 minute bullshit explanation from a politician.
  • Project Management Track – A Cousera Introduction to Project Management track I am looking at for training up some co-workers interested in pursuing a PMP.

Nethack Spoilers

After 15 years of trying to beat this game without using spoilers I have given up.  Here are some of the more useful links I have found.

All Your Links Are Belong to Us

I have over 200 tabs open between three computers… the insanity must stop. Link dump to follow:

Software Engineering

  • Road to Continuous Delivery – Great article covering the different stages development shops go though to get to continuous delivery.  Provides a great starting checklist of what to work on while improving your software delivery process.
  • Overview of Micro Services – Micro services have become massively popular with the advent of Node.js.  Intro to the concepts are reasoning for using micro services.
  • Continuous Code Coverage with GCC, Hudson, and Googletest– Part of continuous delivery is continuous testing of your code base.
  • Trashing ChromeOS – Guide to building ATOM processor build-chain testing servers from Chromebooks.
  • Don’t Be Afraid of Functional Programming – The parts of JavaScript I actually like are its functional programming capabilities (callbacks and first class functions baby.)  OOP programmers get a little scared of things like Lisp, but they shouldn’t be.
  • Tessel – A JavaScript compatible (via Node.js) microcontroller.  Wow.. just wow.. Includes wifi built-in and shield/breakout board compatability through Node modules.

Source Code

  • DevDocs – Seriously hell yeah!  Online, simple, clean, extensive, software documentation for programming languages and libraries.  Seriously, browser pin this now!
  • Sourcegraph – Search tens of thousands of code examples.
  • Explainshell – Type some bash in, it explains what it is and what it does.  Think man pages for the internet age.
  • LibCurl API Reference – Using Curls powerful web functionality inside of C.

Vim

  • Smart Tabs – Tabs in the leading spaces, spaces for everything else.  The way GOD intended code to be structured!
  • 76 Vim Shortcuts – Some of these I already knew, but like all things Vim… there is always more to learn.
  • Mapping Standard Shortcuts – Things like Ctrl + c for copy.  I don’t actually remap my Vim shortcuts to match but I like the article because it explains what those shortcuts are used for by default.
  • Cheat Sheet – My current favorite Vim cheat sheet.  Simple and easy to search for things… and NO ads.
  • Vim-Adventures – Learn Vim shortcuts while playing an online game.
  • Exuberant CTags – You need more jumping around in your code.  Make it easy to swtich between headers, declarations, and usage locations in your projects.

C Programming

  • JANSSON – JSON in C.  Seriously freaking awesome!
  • Ncurses Programming in C – Another Linux Documentation Project about programming.  Ncurses is a command line interface for gcc.
  • Coding Unit, C Tutorial – Great introduction to C programming.  Simple examples and be sure to check out the comments below each section.
  • TutorialsPoint, The C – Another introductory guide to C development.  Better as a reference guide that the one from Coding Unit.
  • TDD in C – Love test driven development (not so much behavior driven development.) Simply way to due it in C without external dependencies.  Here is a list of tools if you do want to use external libraries for TDD.
  • Beginners Guide to Linkers – When compiling doesn’t kill you, the linker will.
  • Going from C to Go – I really like Go, but am currently doing a fairly serious C project.  Just in case I ever want to port it.

Terminal/Serial Programming

  • Terminos – C serial interface library for GCC.  The link is to the manpage with function examples.
  • Serial Programming – The Linux Documentation Project examples for serial programming in C.  Also look at the debugging section.
  • QTSerialPort – The Qt Library for Serial port communications.  Qt is easily the best C++ code library in existence.  While most people think of Qt only when coding GUI applications; its libraries are extensive enough to use for ANY application… even from the command line.
  • Stackoverflow Serial Examples in C – Couple good examples and they got me some of my first working C Serial code.
  • RS-232 Library – Works on both Linux and Windows.
  • Serial Programming in Linux – Wikibooks book style tutorial on serial programming in Linux.  Here is the specific section on Terminos.
  • WiringPi – Serial programming interface on the RaspberryPi.  Very nice if you are using the Pi breakout pins.
  • Serial Example – Another quick example by tty1.

Cloud/Web

  • aws – The Amazon Web Service command line tool.  One of the better reference pages I have seen on it.
  • Web Graphs & Visualization – 30 tools for web based data visualization. Both Sas and Open Source tools listed.
  • Let’s Make a Bubble Map – Thematic mapping.  Includes a link to a D3 tutorial for creating bubble map.s
  • Camlistore – A personnel, decentralized, non-heiarchy based storage system that can be synced between cloud, phone, computer, and anything you can think of.
  • JSON Form Editor – Similar to a project I did myself a while back.  Automatically create forms based on simple JSON structures.  Makes it easy to to AJAX requests to build, populate, and check forms.

Cyber Security

SSH

  • Rsync & SSH – Combining two of the most powerful software utilities in existence to make backups.
  • StormSSH – I actually created a series of bash scripts to do SSH bookmarking.  Storm improves on this idea by directly editing your ssh config file with the stored entries. Wish there wasn’t a Python dependency.
  • SSH Kung Fu – Great tutorial covering some of the many of the one-off capabilities of SSH like remote folder mounting, port forwarding, and connection sharing.
  • Simplify With SSH Config – Good overview of some SSH configuration and setup options.  Plays well along side the SSH Kung Fu link above.
  • Autocomplete Hostnames – Process your hosts file under /etc/ as well as your config files for autocomplete.  I used my hosts file as a blacklist so this doesn’t work as well for me but the information was useful for the SSH bookmark system I made.
  • Commandline Fu SSH Autocomplete – A few ways to populate the autocomplete functionality for SSH.

Bash

  • Better Bash – Simple suggestions on making better bash scripts.
  • Command Tips & Tricks — Nice overview of some tip using Bash, Vim, networking, and general command line productivity.
  • Tmux Cheatsheet – If you know what tmux or screen are… then this is pretty helpful.  Otherwise you need to find out what tmux is.
  • Defensive Bash Programming – More and better ways to organize your bash programs.
  • BashGuide – Better bash than the Gnu Bash guide… or at least some people say so.  Evidently it has fewer “bugs” in its code examples.

Linux Bluetooth

  • Bluetooth on Fedora – A number of Bluetooth devices need re-pairing (or at least a user to be logged into the system) before they will connect after restart.  This is particularly frustrating for Bluetooth mice and keyboards.  Following the advice by the selected answer (as root0 solved the problem for me.  This one was annoying and hard to find out.
  • ThinkPad Compact Bluetooth Keyboard – Cannot wait until this keyboard driver is put in the mainline kernel so I don’t have to build it every time.  This keyboard allows me to use the same keyboard when using my Carbon X1 or when at my desk.

Misc

  • Clark DuVall – I don’t know who the guy it, but he has the most freaking amazing website I have ever seen!  Command-line junkie heaven.
  • Bluetooth Deadbolt – Something to keep my from having to carry another key?  Plus it lights up!
  • LibreOffice & Google Docs – Open, edit, and save/upload Google Docs directly in Open/Libre Office.  Also has support for WebDAV.
  • Switching from Photoshop to Gimp –  List of modifications to make the Gimp feel more natural for Photoshop users.
  • Industrial Strength Bubbles – Make person sized bubbles that last for several minutes.  I know what the kids and I are doing this weekend.
  • Open Energy Monitoring – Open source automation and energy monitoring.
  • Free your Android – As in Freedom, not beer.  Useful list of Free Software version of popular software on Android.
  • Shortcut Foo – Tutorials for quickly learning misc programming environment shortcuts.

That’s not writing at all

Cheatsheet of some of the more useful vim commands I have run into lately:

  • ci(, ci{, ci<, ci", ci' – Delete and insert into text between (, {, <, “, etc.. brackets.  Really useful for things like function arguments and quoted text.
  • ca(, ca{, ca<, etc... - Same as above but removed the "bracket" as well.
  • yi(, di{, va<, .. – Yank content between ( and ), delete content betwen { and }, select content between < and > including brackets, etc..
  • ZZ – Quick same/close, works the same as :x.
  • * – Search for word under the cursor.
  • gv – Re-select previous selection block
  • q<letter> @<same letter> – Record a macro with q (named letter) and play it back with @.

Always Remember…

The Bill of Rights is a literal and absolute document. The First
Amendment doesn’t say you have a right to speak out unless the
government has a ‘compelling interest’ in censoring the Internet. The
Second Amendment doesn’t say you have the right to keep and bear arms
until some madman plants a bomb. The Fourth Amendment doesn’t say you
have the right to be secure from search and seizure unless some FBI
agent thinks you fit the profile of a terrorist. The government has no
right to interfere with any of these freedoms under any circumstances.
–Harry Browne