April of 2021
Projects⚑
-
Improvement: Explain the updates on the repository-orm project.
In the latest version
0.2.0
, we added:- Support for the TinyDB repository.
- Support for regular expressions in the
search
method. - Easier repository loading with
load_repository
function.
-
Improvement: Add a link to the meilisearch blog.
-
New: Create the quantified self project.
-
New: Sketch how to automate repetitive tasks prompted by email events.
Most of the emails I receive require repetitive actions that can be automated, I've stumbled upon notmuchmail, which looks very promising. A friend suggested to use afew for tagging, and I'd probably use alot to interact with the system (and finally be able to use email from the cli).
-
Improvement: Add interesting interface.
For the interface adri's memex looks awesome! It's inspired in the Andrew Louis talk Building a Memex whose blog posts seems to be a gold mine.
Also look at hpi's compilation.
-
New: Sketch how to improve the launching of applications with i3wm.
In the past I tried installing rofi without success, I should try again. If the default features are not enough, check adi1090x's custom resources.
-
Improvement: Show the changes of repository-orm 0.3.1.
+* Add
first
andlast
methods to the repositories. +* Make entityid_
definition optional. +* add_model_name
attribute to entities. -
Improvement: Add woop awesome quantified self resources to the research list.
- New: Add project to migrate software bug tracker to a vendor free one like
git-bug
. -
New: Improve the notification management in Linux.
Create new seed project to be able to group and silence the notifications under a custom logic. For example:
- If I want to focus on a task, only show the most important ones.
- Only show alerts once every X minutes. Or define that I want to receive them the first 10 minutes of every hour.
- If I'm not working, silence all work alerts.
-
New: Improve the hard drive monitor system.
Create new seed project to use something like scrutiny (there's a linuxserver image) to collect and display the information. For alerts, use one of their supported providers.
-
New: Aggregate all notifications.
Instead of reading the email, github, gitlab, discourse, reddit notifications, aggregate all in one place and show them to the user in a nice command line interface.
For the aggregator server, my first choice would be gotify.
- New: Add seedling project to create factoryboy factories from pydantic models automatically.
DevOps⚑
Continuous Integration⚑
Flakehell⚑
-
Correction: Update the git repository.
The existent repository has been archived in favor of this one
-
New: Explain how to patch the extended_default_ignore error for versions > 3.9.0.
Add to your your
pyproject.toml
:[tool.flakeheaven] extended_default_ignore=[] # add this
Coding⚑
Python⚑
-
Improvement: Add aiomultiprocess to the list of libraries to test.
aiomultiprocess: Presents a simple interface, while running a full AsyncIO event loop on each child process, enabling levels of concurrency never before seen in a Python application. Each child process can execute multiple coroutines at once, limited only by the workload and number of cores available.
-
New: Add interesting links on how to write good documentation.
I would like to refactor divio's and Vue's guidelines and apply it to my projects.
-
Improvement: Add FastAPI docs as a model to study and follow.
-
New: Add apprise to the interesting libraries to explore.
apprise: Allows you to send a notification to almost all of the most popular notification services available to us today such as: Linux, Telegram, Discord, Slack, Amazon SNS, Gotify, etc. Look at all the supported notifications
(¬º-°)¬
. -
New: Add kivi and kivimd to the interesting libraries to explore.
kivi is used to create android/Linux/iOS/Windows applications with python. Use it with kivimd to make it beautiful, check the examples and the docs.
Boto3⚑
-
New: Introduce the AWS SDK library and explain how to test it.
Boto3 is the AWS SDK for Python to create, configure, and manage AWS services, such as Amazon Elastic Compute Cloud (Amazon EC2) and Amazon Simple Storage Service (Amazon S3). The SDK provides an object-oriented API as well as low-level access to AWS services.
For testing, try to use moto, using the Botocore's stubber as fallback option.
-
New: Explain how to test ec2, route53, s3, and rds resources.
- New: Explain how to test vpc and auto scaling group resources.
-
Improvement: Explain how to extract the instance when testing autoscaling groups.
Also track the issue to add support to launch templates.
-
Correction: Add note that pagination is not yet supported when testing route53.
I've opened an issue to solve it.
Type Hints⚑
-
Improvement: Explain how to ignore a linter error and a type error.
With
# type: ignore # noqa: W0212
Logging⚑
-
New: Explain how to log python program exceptions better than to a file.
Using
logging
to write write exceptions and breadcrumbs to a file might not be the best solution because unless you look at it directly most errors will pass unnoticed.To actively monitor and react to code exceptions use an application monitoring platform like sentry.
In the article I explain what are the advantages of using this solution and do a comparison between Sentry and GlitchTip.
DeepDiff⚑
-
Improvement: Add warning that regular expressions are not yet supported.
Until #239 is merged, the official library doesn't support searching for regular expressions. You can use my fork instead.
-
Improvement: Remove advice to use my fork instead.
The original one has already merged my PR
\\ ٩( ᐛ )و //
. Beware though as theregexp
are not enabled by default (against my will). You need to use theuse_regexp=True
as an argument togrep
orDeepSearch
.
FactoryBoy⚑
Faker⚑
-
New: Explain how to create
Optional
data.faker-optional
is a custom faker provider that acts as a wrapper over other Faker providers to return their value orNone
. Useful to create data of typeOptional[Any]
.
FastAPI⚑
-
New: Add beets system as a first approach.
When building Python applications, it's good to develop the core of your program, and allow extension via plugins.
I still don't know how to do it, but Beets plugin system looks awesome for a first start.
-
New: Introduce FastAPI the pydantic friendly python framework to build APIs.
FastAPI is a modern, fast (high-performance), web framework for building APIs with Python 3.6+ based on standard Python type hints.
-
New: Sum up the basic documentation.
Explain how to:
- Sending data to the server: Through path parameters, query parameters and body requests.
- Handle errors.
- Update data
- Configure OpenAPI
- Test FastAPI applications
And add a lot of more interesting features I've discovered.
-
New: Explain how to send raw data to the client.
With the
Response
object. - New: Explain how to inject a testing configuration in the tests.
Pytest⚑
-
New: Explain how to exclude code from the coverage report.
Add
# pragma: no cover
. -
New: Explain how to run tests in parallel.
pytest-xdist
makes it possible to run the tests in parallel, useful when the test suit is large or when the tests are slow.pip install pytest-xdist pytest -n auto
Python Snippets⚑
-
New: Explain how to install dependencies from git repositories.
With pip you can:
pip install git+git://github.com/path/to/repository@master
If you want to hard code it in your
setup.py
, you need to:install_requires = [ 'some-pkg @ git+ssh://git@github.com/someorgname/pkg-repo-name@v1.1#egg=some-pkg', ]
-
Correction: Explain how to create PyPI valid packages with direct dependencies.
It looks like PyPI don't want pip to reach out to URLs outside their site when installing from PyPI. So you can't define the direct dependencies in the
install_requires
. Instead you need to install them in aPostInstall
custom script. Ugly as hell. -
Correction: Add warning about the method to use direct dependencies.
Last time I used this solution, when I added the library on a
setup.py
the direct dependencies weren't installed :S
NetworkX⚑
-
New: Introduce the python library.
NetworkX is a Python package for the creation, manipulation, and study of the structure, dynamics, and functions of complex networks.
Pydantic⚑
- Improvement: Change parse_obj definition to find how to import pydantic models from dictionary.
-
New: Explain how to use private attributes.
With the
PrivateAttr
object. -
New: Explain how to update entity attributes with a dictionary.
You can create a new object with the new data using the
update
argument of thecopy
entity method.
rich⚑
-
New: Introduce the python cli builder library and it's progress bar.
Rich is a Python library for rich text and beautiful formatting in the terminal.
Check out the beautiful progress bar:
pip install rich python -m rich.progress
Ruamel YAML⚑
-
Improvement: Suggest to use ruyaml instead of ruamel.yaml.
As it's maintained by the community and versioned with git.
sqlite3⚑
TinyDB⚑
SQLite⚑
-
New: Explain how to configure sqlite to be able to use the REGEXP operator.
It's not enabled by default.
Operative Systems⚑
Linux⚑
Beets⚑
-
Correction: Typo.
There was a missing comma in the list.
-
New: Introduce Beets the music management library.
Beets is a music management library used to get your music collection right once and for all. It catalogs your collection, automatically improving its metadata as it goes using the MusicBrainz database. Then it provides a set of tools for manipulating and accessing your music.
HAProxy⚑
- New: Add interesting guidelines on how to configure HAProxy in AWS.
Hushboard⚑
-
New: Introduce Husboard.
Hushboard is an utility that mutes your microphone while you’re typing.
(Thanks M0wer!)
ffmpeg⚑
-
New: Introduce the program and multiple of it's uses.
ffmpeg is a complete, cross-platform solution to record, convert and stream audio and video.
Mopidy⚑
-
New: Introduce the music server.
Mopidy is an extensible music server written in Python, that plays perfectly with beets and the MPD ecosystem.
The awesome documentation, being Python based, the extension system, JSON-RPC, and JavaScript APIs make Mopidy a perfect base for your projects.
Arts⚑
Writing⚑
-
New: Explain when to use I'm good or I'm well.
Use I'm well when referring to being ill, use I'm good for the rest.
Grammar and Orthography⚑
-
New: Explain when to write won't or wont.
- Won't is the correct way to contract will not.
- Wont is a synonym of "a habit". For example, "He went for a morning jog, as was his wont".
Other⚑
-
Correction: Broken links.
Removed the link to (everything_i_know.md) since it no longer exists. Updated some links that where broken due to a folder structure change.
-
New: Explain how to select a random choice from
Enum
objects.pydantic uses
Enum
objects to define the choices of fields, so we need them to create the factories of those objects. -
New: Improve the periodic tasks and application metrics monitoring.
Setup an healthchecks instance with the linuxserver image to monitor cronjobs.
For the notifications either use the prometheus metrics or an apprise compatible system.