If you’re into interesting projects, don’t miss out on wish-lists [1], created by pypeaday [2].
amazon wish lists replacement
References:
[1]: https://github.com/pypeaday/wish-lists
[2]: https://github.com/pypeaday
GitHub Stars
GitHub stars posts
1859 posts
latest post 2026-05-24
Publishing rhythm
I’m really excited about typeshed [1], an amazing project by python [2]. It’s worth exploring!
Collection of library stubs for Python, with static types
References:
[1]: https://github.com/python/typeshed
[2]: https://github.com/python
If you’re into interesting projects, don’t miss out on mypy [1], created by python [2].
Optional static typing for Python
References:
[1]: https://github.com/python/mypy
[2]: https://github.com/python
Sometimes you get a PR on a project, but cannot review it without wrecking your
current working setup. This might be because it needs to be compiled, or a new
set of requirements. Git [1] worktrees is a great way to chekout the remote branch
in a completely separate directory to avoid changing any files in your current
project.
# pattern
# git worktree add -b <branch-name> <PATH> <remote>/<branch-name>
git worktree add -b fix-aws-service-cnsn /tmp/project origin/fix-aws-service-cnsn
This will create a new directory /tmp/project that you can review the branch
fix-aws-service-cnsn from the remote origin. If you have setup different remotes locally you can check for the name of it with git remote -v
References:
[1]: /glossary/git/
I’m impressed by devshell [1] from numtide [2].
Per project developer environments
References:
[1]: https://github.com/numtide/devshell
[2]: https://github.com/numtide
The work on pyscript [1] by pyscript [2].
PyScript is an open source platform for Python in the browser. Try PyScript: https://pyscript.com Examples: https://tinyurl.com/pyscript-examples Community: https://discord.gg/HxvBtukrg2
References:
[1]: https://github.com/pyscript/pyscript
[2]: https://github.com/pyscript
Check out pypeaday [1] and their project tdarr [2].
tdarr setup
References:
[1]: https://github.com/pypeaday
[2]: https://github.com/pypeaday/tdarr
If you’re into interesting projects, don’t miss out on skedulord [1], created by koaning [2].
captures logs and makes cron more fun
References:
[1]: https://github.com/koaning/skedulord
[2]: https://github.com/koaning
GitPython is a python api for your git [1] repos, it can be quite handy when you
need to work with git from python.
Use Case # [2]
I recently made myself a handy tool for making screenshots in python and it
need to do a git commit and push from within the script. For this I reached
for GitPython.
How I Quickly Capture Screenshots directly into My Blog [3]
Installation # [4]
GitPython is a python library hosted on pypi that we will want to install
into our virtual environments using pip.
pip install GitPython
Create a Repo Object # [5]
Import Repo from the git library and create an instance of the Repo object by
giving it a path to the directory containing your .git directory.
from git import Repo
repo = Repo('~/git/waylonwalker.com/')
Two interfaces # [6]
from the docs
It provides abstractions of git objects for easy access of repository data,
and additionally allows you to access the git repository more directly using
either a pure python implementation, or the faster, but more resource
intensive git command implementation.
I only needed to use the more intensive but familar to me git command
implementation to get me project off the ground. There is a good
tutorial [...
nvim-notify [1] by rcarriga [2] is a game-changer in its space. Excited to see how it evolves.
A fancy, configurable, notification manager for NeoVim
References:
[1]: https://github.com/rcarriga/nvim-notify
[2]: https://github.com/rcarriga
I came across smart-sec-cam [1] from scottbarnesg [2], and it’s packed with great features and ideas.
A privacy-focused, intelligent security camera system.
References:
[1]: https://github.com/scottbarnesg/smart-sec-cam
[2]: https://github.com/scottbarnesg
Python, click install
Edit the System Environment Variables
Environment Variables button
Add the following path to your users Path Variable
C:\Program Files (x86)\Common Files\Oracle\Java\javapath;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\WINDOWS\System32\OpenSSH\;C:\Program Files (x86)\NVIDIA Corporation\PhysX\Common;C:\Program Files\NVIDIA Corporation\NVIDIA NvDLISR;C:\Program Files\dotnet\;C:\Users\quadm\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.10_qbz5n2kfra8p0\LocalCache\local-packages\Python310\Scripts;
I came across cli [1] from httpie [2], and it’s packed with great features and ideas.
🥧 HTTPie CLI — modern, user-friendly command-line HTTP client for the API era. JSON support, colors, sessions, downloads, plugins & more.
References:
[1]: https://github.com/httpie/cli
[2]: https://github.com/httpie
Check out nbdd0121 [1] and their project wsld [2].
WSL Daemon - Stable X11 connection and time synchronisation for WSL2
References:
[1]: https://github.com/nbdd0121
[2]: https://github.com/nbdd0121/wsld
Sometimes you just want python to do something else when you hit an exception,
maybe that’s fire a text, slack message, email, or system notification like I
wanted.
I am working on a quick and dirty python script designed to take screenshots
and land them on my website in a single hotkey. With it being designed to run
with a hotkey, if it were to error I would not see it.
I could have gone down a logging route, but honestly this is meant to be quick,
dirty, and work on my system for me. I just want to get it in my system
notification.
sys.excepthook # [1]
Python exposes sys.excepthook for just this case. Here is what I ended up
doing to fire a system notification as well as printing the message. Yaya a
log would be mroe appropriate, but this is designed to just get done quick and
do the job I want it to do.
def notify_exception(type, value, tb):
traceback_details = "\n".join(traceback.extract_tb(tb).format())
msg = f"caller: {' '.join(sys.argv)}\n{type}: {value}\n{traceback_details}"
print(msg)
Popen(
f'notify-send "screenshot.py hit an exception" "{msg}" -a screenshot.py',
shell=True,
)
sys.excepthook = notify_exception
0 / 0
References:
[1]: #sysexcepthook
I recently was unable to boot into my home Linux Desktop, it got stuck at
diskcheck fsck. I found that I was able to get in to a tty through a hotkey.
https://twitter.com/_WaylonWalker/status/1512281106120384519
What’s a TTY? # [1]
There’s probably more to it, but to me its a full screen terminal with zero
gui, not even your gui fonts. It does log into your default shell so if you
have a comfy command line setup it will be here for you even though it looks
much different without fonts and full colorspace.
Normal setup # [2]
Normally you have 6 TTY’s running, the first is dedicated to your desktop
manager, which is your login screen it might be something like gdm or lightdm.
- ctrl+alt+F1: login screen
- ctrl+alt+F2: Desktop
- ctrl+alt+F3: TTY 3
- ctrl+alt+F4: TTY 4
- ctrl+alt+F5: TTY 5
- ctrl+alt+F6: TTY 6
In my case the desktop manager neverstarted, so ctrl+alt+F1 brought me into a tty.
What happened?? # [3]
Well after getting back in and having some time to reflect, I think my Desktop
manager was installed or just broken, possibly during a update I ran a few days
prior.
I tried a bunch of things like switching to lightdm, and manually running startx.
Getting ba...
pygame events are stored in a queue, by default the most suggested way
shown in all tutorials “pumps” the queue, which removes all the
messages.
start up pygame # [1]
You don’t necessarily need a full
boilerplate [2]
to start looking at events, you just just need to pygame.init() and
to capture any keystrokes you need a window to capture them on, so you
will need a display running.
import pygame
pygame.init()
pygame.display.set_mode((854, 480))
get some events # [3]
Let’s use pygames normal event.get method to get events.
events = pygame.event.get()
printing the events reveal this
[
<Event(1541-JoyDeviceAdded {'device_index': 0, 'guid': '030000005e0400008e02000010010000'})>,
<Event(4352-AudioDeviceAdded {'which': 0, 'iscapture': 0})>,
<Event(4352-AudioDeviceAdded {'which': 1, 'iscapture': 0})>,
<Event(4352-AudioDeviceAdded {'which': 2, 'iscapture': 0})>,
<Event(4352-AudioDeviceAdded {'which': 0, 'iscapture': 1})>,
<Event(4352-AudioDeviceAdded {'which': 1, 'iscapture': 1})>,
<Event(32774-WindowShown {'window': None})>,
<Event(32777-WindowMoved {'x': 535, 'y': 302, 'window': None})>,
<Event(32770-VideoExpose {})>,
<Event(32776-WindowExposed {'window': None})>,
<Ev...
One of the most essential concepts of pygame to start making a game you will
need to understand is loading images and blitting them to the screen.
blit stands for block image transfer, to me it feels a lot like layering
up layers/images in photoshop or Gimp.
Loading an image # [1]
I started by making a spotlight in Gimp, by opening a 64x64 pixel image and
painting the center with a very soft brush.
[2]
This is what it looks like
Now we can load this into pygame.
import pygame
img = pygame.image.load("assets/spotlight.png")
Converting to the pygame colorspace # [3]
To make pygame a bit more efficient we can convert the image to pygames
colorspace once when we load it rather than every time we blit it onto another
surface.
import pygame
# convert full opaque images
img = pygame.image.load("assets/spotlight.png").convert()
# convert pngs with transparancy
img = pygame.image.load("assets/spotlight.png").convert_alpha()
blitting # [4]
To display the image onto the screen we need to use the blit method which needs
at least two arguments, something to blit and a position to blit it at.
screen = pygame.display.set_mode(self.screen_size)
screen.blit( img, (0, 0),)
note blit...
From the same Author that brought us command line essentials like fd and
bat written in rust comes pastel [1] an
incredible command-line tool to generate, analyze, convert and manipulate
colors.
Install # [2]
You can install from one of the
releases [3], follow the
instructions [4] for your system
from the repo. I chose to go the nix route. I have enjoyed the simplicity of
the nix package manager being cross platform and have very up to date packages
in it.
nix-env --install pastel
Mixing colors # [5]
Something I often do to blend colors together is add a little alpha to
something over top of a background. I can simulate this by mixing colors.
pastel color cornflowerblue | pastel mix goldenrod -f .1
Here is one from the docs that show how you can generate a color palette from
random colors, mix in some red, lighten and format all in one pipe.
pastel random | pastel mix red | pastel lighten 0.2 | pastel format hex
color picker # [6]
I am on Ubuntu 20.10 as I write this and it works flawlessly. When I call the
command, a color picker gui pops up along with an rgb panel. I can pick from
the panel or from anywhere on my screen.
pastel color-picker
Sorry, your browser doesn...
Dunk [1] is a beautiful git [2] diff tool
built on top of rich [3].
Browsing through twitter the other day I discovered it through this
tweet by _darrenburns [4].
https://twitter.com/_darrenburns/status/1510350016623394817
Dunk is beta # [5]
Before I dive in deep, I do want to mention that Dunk is super new and beta at
this point. I am making it my default pager, because I know what I am doing
and can quickly shift back if I need to, no sweat. If you are a little less
comfortable with the command line, terminal, or reading any issues that might
come up, it might be best if you just pipe into Dunk when you want to use it.
The author really cautions the use of it as your default pager this early, I’m
just showing that it’s possible, and I’m trying it.
He notes that it might have some issues especially with partially staged files.
try it # [6]
You can try it with pipx.
git diff | pipx run dunk
install it # [7]
If you like it, you can install it with pip or pipx, I prefer pipx for
cli applications like this.
pipx install dunk
set it as your default pager # [8]
You can configure dunk as your default pager with the command line, or
by editing your .gitconfig file.
git con...