Machine Learning
Systems Architect,
PhD Mathematician
Sleight of hand, or soh
is a new python package that I have been working on for the past few weeks. It is a CLI tool built with the python library click
, which offers developers a simple way to do certain tedious and sometimes common operations associated with software and web development.
The package can be installed using pip
like other packages, using pip install soh
. Since this is a CLI tool, I also created a homebrew formula so that it may be installed system-wide. To install using homebrew, use the command brew install crflynn/formula/soh
. This allows you to use soh
even outside of a python project.
soh
provides the user with a main set of commands and several command groups for expanded functionality on certain topics. On invoking soh
from the command line, users will see this:
$ soh
Usage: soh [OPTIONS] COMMAND [ARGS]...
Sleight of hand CLI commands.
(+) indicates command group. Use the -c flag on most commands to copy
output to clipboard
Options:
-h, --help Show this message and exit.
Commands:
b64 + Base64 operations
create + Create files
dt + Datetimes
epoch + Epoch times
json JSON printing
jwt Display JWT contents
secret + Secrets generators
serve Simple http server at current directory
sys + System information
uuid Generate UUIDs
version soh CLI version
Commands with a description starting with +
symbol indicate that they expand into sub-commands. For instance, using the command soh sys
gives a more detailed set of subcommands for system information.
$ soh sys
Usage: soh sys [OPTIONS] COMMAND [ARGS]...
System information.
Options:
-h, --help Show this message and exit.
Commands:
all System information
arch OS architecture
cores Number of cores
eip External IP address
ip Local IP address
mac Local MAC address
machine Machine information
node Machine name
platform Platform type
proc Processor information
version OS version
At any command, a user may pass -h
or --help
for more detailed help. In addition, the -c
flag can be passed for every command in order to copy the output to your clipboard. You will get a small notification at the end of the output that looks like this:
$ soh uuid -c
b712d560-ec1c-401d-a063-eeff7af84441 (copied to clipboard 📋)
Some of the most useful commands, in my opinion, are the following:
# Generate a uuid (v4)
$ soh uuid
b712d560-ec1c-401d-a063-eeff7af84441
# Get your external IP address
$ soh sys eip
1.2.3.4
# Get epoch seconds from a timestamp
$ soh epoch from '2009-02-25T03:40:34+00:00'
1235533234
# Get a timestamp from epoch seconds
$ soh dt from 1560054000
2019-06-09T04:20:00+00:00
# b64 encode a string
$ soh b64 e my_secret_message
bXlfc2VjcmV0X21lc3NhZ2U=
# b64 decode a message
$ soh b64 d bXlfc2VjcmV0X21lc3NhZ2U=
my_secret_message
# Display a JWT's contents
$ soh jwt eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
header = {
"alg": "HS256",
"typ": "JWT"
}
payload = {
"sub": "1234567890",
"name": "John Doe",
"iat": 1516239022
}
signature = "SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c"
# Generate a secret password
$ soh secret pw
EF6|WRw2,cfz&k'yB5EV678W8XA4KsNq
Hopefully this tool helps out with your development needs. Feel free to provide feedback on GitHub!