A short list of software tools and libraries that I think are awesome :)
shellcheck
performs linting of bash scripts, highlighting "gotchas" in which bash behaves counterintuitively.
prettier
is an opinionated, no/low-configuration code formatter for JavaScript and other web languages (including Vue, HTML, CSS, TypeScript, and JSON). It has plugins for vim, VS Code, and other editors that automatically format a file on save. I love getting reasonably formatted code on the default settings and having one less configuration file to worry about!
flake8
performs basic static analysis of Python code and checks code style against PEP 8. Beyond enforcing style, it also highlights symptoms of potential problems like unexpected indentation and undeclared variables.autopep8
is the automatic code formatter corresponding to flake8.mypy
performs static type checking for Python, allowing you to programmatically verify that all of those helpful type annotations you added to your code actually line up with each other.overrides
provides decorators for indicating that a method should override a superclass method, optionally validating that the method signatures match.
fastapi
helps you build web services (APIs) quickly, requiring much less boilerplate and customization than rolling your own solution viabottle
orflask
. FastAPI integrates with ASGI web servers like Uvicorn and Hypercorn and is not limited to development settings.humanfriendly
provides tools for performing user-related tasks like converting byte counts to textual descriptions (for example, converting1408012330
to"1.41 GB"
).pydantic
is the data validation and parsing library underlying FastAPI, and it is very useful itself. I'm particularly fond of its settings functionality, which streamlines configuring an application via environment variables (and, optionally, dotenv files).
click
helps you build command-line interfaces quickly, requiring much less boilerplate thanargparse
while maintaining plenty of flexibility. Beyond parsing command-line arguments and generating help text, click can do things like load configuration options from environment variables when present, prompt the user for text, and output colored text when a terminal is detected.
redis
(python client library) is an in-memory key-value store. It strikes a nice balance between performance, versatility, and ease of use. It is easy to install and run locally (from your home directory); it supports data structures like lists, hashes, and sorted sets; if you're using it for a simple key-value cache, it has builtin TTL/expire functionality and a variety of configuration options for key eviction. I've used it in a variety of applications and the main limitation I've come across is that each simple value, list item, hash value, etc. has a max size of 512 MB.
- cached-path
- python-redis-cache
- requests-cache
- thefuzz
- Docker: curlimages/curl
- Docker: nginx