Deliberative # [1]
People exceptionally talented in the Deliberative theme are best described by
the serious care they take in making decisions or choices. They anticipate
obstacles.
I am risk-adverse. I want everything well thought out and calculated before I
make any sort of change. I have never gambled in my life and just the thought
of it makes me anxious.
Aim it # [2]
I can use this as a strength to plan out potential issues and prevent them. I
do this quite often with my role in infrastructure.
I need to make sure that I use deadlines to keep this as a strength and not
hinderence.
Automation # [3]
One of the biggest ways that I utilize this skill is automation. I am all
about automating things, not just because I don’t want to do the manual work,
but I am not sure when I am going to need to do something again.
References:
[1]: #deliberative
[2]: #aim-it
[3]: #automation
Publishing rhythm
Check out archlinux [1] and their project aur [2].
⚠️⚠️Experimental aur [3].git [4] mirror⚠️⚠️ (read-only mirror)
References:
[1]: https://github.com/archlinux
[2]: https://github.com/archlinux/aur
[3]: /aur/
[4]: /glossary/git/
A common meta thing that I need in python is to find the version of a package.
Most of the time I reach for package_name.__version__, but that does not
always work.
but not all projects have a __version__ # [1]
In searching the internet for an answer nearly every one of them pointed me to
__version__. This works for most projects, but is simply a convention, its
not required. Not all projects implement a __version__, but most do. I’ve
never seen it lie to me, but there is nothing stopping someone from shipping
mismatched versions.
If you maintain a project ship a __version__ # [2]
I appreciate it
While its not required its super handy and easy for anyone to remember off the
top of their head. It makes it easy to start debugging differences between
what you have vs what you see somewhere else. You can do this by dropping a
__version__ variable inside your __init__.py file.
## __init__.py
__version__ = 1.0.0
SO # [3]
stack overflow saves the day
Special thanks to this
Stack Overflow post [4]
for answering this question for me.
So what do you do… # [5]
importlib
Your next option is to reach into the package metadata of the package that you
are interested in, and this ha...
Check out gum [1] by charmbracelet [2]. It’s a well-crafted project with great potential.
A tool for glamorous shell scripts 🎀
References:
[1]: https://github.com/charmbracelet/gum
[2]: https://github.com/charmbracelet
Check out crossposter [1] by Mr-Destructive [2]. It’s a well-crafted project with great potential.
Crosspost your articles to dev.to, codenewbie.org, medium.com and hashnode.com with a single shellscript / python package
References:
[1]: https://github.com/Mr-Destructive/crossposter
[2]: https://github.com/Mr-Destructive
Just starred moonlight-qt [1] by moonlight-stream [2]. It’s an exciting project with a lot to offer.
GameStream client for PCs (Windows, Mac, Linux, and Steam Link)
References:
[1]: https://github.com/moonlight-stream/moonlight-qt
[2]: https://github.com/moonlight-stream
I recently discovered moonlight-docs [1] by moonlight-stream [2], and it’s truly impressive.
Moonlight Documentation
References:
[1]: https://github.com/moonlight-stream/moonlight-docs
[2]: https://github.com/moonlight-stream
I like deresmos’s [1] project xrandr-manager [2].
Manage dual display on Linux
References:
[1]: https://github.com/deresmos
[2]: https://github.com/deresmos/xrandr-manager
If you’re into interesting projects, don’t miss out on xpadneo [1], created by atar-axis [2].
Advanced Linux Driver for Xbox One Wireless Controller (shipped with Xbox One S)
References:
[1]: https://github.com/atar-axis/xpadneo
[2]: https://github.com/atar-axis
I came across Launcher-Curseforge [1] from ShayBox [2], and it’s packed with great features and ideas.
Integrates the CF Modpack install button to any MMC based launcher
References:
[1]: https://github.com/ShayBox/Launcher-Curseforge
[2]: https://github.com/ShayBox
[1]
Recently I added two new bash/zsh aliases to make my git [2] experience just a tad
better.
trackme # [3]
Most of our work repos were recently migrated to new remote urls, we scriped
out the update to all of the repos, but I was left with a tracking error for
all of my open branches. To easily resolve this I just made an alias so that I
can just run trackme anytime I see this error.
There is no tracking information for the current branch.
Please specify which branch you want to merge with.
See git-pull(1) for details
git pull <remote> <branch>
If you wish to set tracking information for this branch you can do so with:
git branch --set-upstream develop origin/<branch>
getting the branch # [4]
The following command will always return the currently checked out branch name.
git symbolic-ref --short HEAD
Injecting this into the suggested git command as a subshell gives us this
alias that when ran with trackme will automatically fix tracking for my
branch.
alias trackme='git branch --set-upstream-to=origin/$(git symbolic-ref --short HEAD)'
rebasemain # [5]
I sometimes get a bit lazy at checking main for changes before submitting any
prs, so again I made a quick shell...
Check out pip-tools [1] by jazzband [2]. It’s a well-crafted project with great potential.
A set of tools to keep your pinned Python dependencies fresh.
References:
[1]: https://github.com/jazzband/pip-tools
[2]: https://github.com/jazzband
So many terminal applications bind q to exit, even the python debugger, its
muscle memory for me. But to exit ipython I have to type out exit<ENTER>.
This is fine, but since q is muscle memory for me I get this error a few times
per day.
╭─────────────────────────────── Traceback (most recent call last) ────────────────────────────────╮
│ <ipython-input-1-2b66fd261ee5>:1 in <module> │
╰──────────────────────────────────────────────────────────────────────────────────────────────────╯
NameError: name 'q' is not defined
After digging way too deep into how IPython implements its ExitAutoCall I
realized there was a very simple solution here. IPython automatically
imports all the scripts you put in your profile directory, all I needed was to
create ~/.ipython/profile_default/startup/q.py with the following.
q = exit
It was that simple. This is not a game changer by any means, but I will now
see one less error in my workflow. I just press q<Enter> and I am out,
without error.
It’s no secret that I love automation, and lately my templating framework of
choice has been copier. One hiccup I recently ran into was having spaces in my
templated directory names. This makes it harder to run commands against as you
need to escape them, and if they end up in a url you end up with ugly %20 all
over.
Cookiecutter has the solution # [1]
Yes the solution comes from a competing templating framework.
I install copier with pipx, so I need to inject cookiecutter in to my copier
environment to use the slugify filter.
pipx inject copier cookiecutter
If you are using a normal virtual environment [2] you can just pip install it.
pip install copier cookiecutter
add the extension to your template # [3]
copier.yml
Now to enable the extension you need to declare it in your copier.yml file in
your template.
_jinja_extensions:
- cookiecutter.extensions.SlugifyExtension
Use it | slugify # [4]
use-it
Now to use it, anywhere that you want to slugify a variable, you just pipe it
into slugify.
❯ tree .
.
├── copier.yml
├── README.md
└── {{ site_name|slugify }}
└── markata.toml.jinja
1 directory, 3 files
Here is a slimmed down version of what the copier.yml looks like.
...
I came across box-cli-maker [1] from box-cli-maker [2], and it’s packed with great features and ideas.
Render highly customizable boxes in the terminal
References:
[1]: https://github.com/box-cli-maker/box-cli-maker
[2]: https://github.com/box-cli-maker
box-cli-maker [1] by Delta456 [2] is a game-changer in its space. Excited to see how it evolves.
Make Highly Customized Boxes for CLI
References:
[1]: https://github.com/Delta456/box-cli-maker
[2]: https://github.com/Delta456
Textual has devtools in the upcoming css branch, and its pretty awesome!
It’s still early # [1]
Textual is still very early and not really ready for prime time, but it’s quite
amazing how easy some things such as creating keybindings is. The docs are
coming, but missing right now so if you want to use textual be ready for
reading source code and examples.
On to the devtools # [2]
As [3]@willmcgugan [4] shows in this tweet it’s
pretty easy to setup, it requires having two terminals open, or using tmux, and
currently you have to use the css branch.
https://twitter.com/willmcgugan/status/1531294412696956930
Why does textual need its own devtools # [5]
Textual is a tui application framework. Unlike when you are building cli
applications, when the tui takes over the terminal in full screen there is no
where to print statement debug, and breakpoints don’t work.
getting the css branch # [6]
In the future it will likely be in main and not need this, but for now you need
to get the css branch to get devtools.
git clone https://github.com/Textualize/textual
git fetch --alll
git checkout css
install in a virtual environment [7] # [8]
Now you can create a virtual environment, fee...
I’m really excited about minesweeper [1], an amazing project by NotUnlikeTheWaves [2]. It’s worth exploring!
A minesweeper in the terminal written in Golang with Bubbletea
References:
[1]: https://github.com/NotUnlikeTheWaves/minesweeper
[2]: https://github.com/NotUnlikeTheWaves
The work on gh-eco [1] by jrnxf [2].
🦎 gh cli extension to explore the ecosystem
References:
[1]: https://github.com/jrnxf/gh-eco
[2]: https://github.com/jrnxf
Check out Cveinnt [1] and their project LiveTerm [2].
💻 Build terminal styled websites in minutes!
References:
[1]: https://github.com/Cveinnt
[2]: https://github.com/Cveinnt/LiveTerm