[1]
A long needed feature of markata has been the ability to really configure out
templates with configuration rather. Itโs been long that you needed that if
you really want to change the style, meta tags, or anything in the head you
needed to write a plugin or eject out of the template and use your own.
Adding some Head # [2]
Now you can add some extra style to your site with the existing built-in
template.
[[markata.head]]
text = """
<style>
img {
width: 100%;
height: auto;
}
ul {
display: flex;
flex-wrap: wrap;
}
</style>
"""
You can have more than one Head # [3]
Each text entry in markata.head just gets appended raw into the head.
[[markata.head]]
text = """
<style>
img {
width: 100%;
height: auto;
}
ul {
display: flex;
flex-wrap: wrap;
}
</style>
"""
[[markata.head]]
text = """
<script>
console.log('hey there')
</script
"""
Still need more? # [4]
If this does not take you far enough yet, you can still eject out and use your
own template pretty easy. If you are going for a full custom site itโs likely
that this will be the workflow for awhile. Markata should only get better and
make this required less often as it matures.
[markata]
post_template = "pages/tem...
Archive
All published posts
2469 posts
latest post 2026-05-08
Publishing rhythm
I recently discovered stable-diffusion-videos [1] by nateraw [2], and itโs truly impressive.
Create ๐ฅ videos with Stable Diffusion by exploring the latent space and morphing between text prompts
References:
[1]: https://github.com/nateraw/stable-diffusion-videos
[2]: https://github.com/nateraw
gitleaks [1] by gitleaks [2] is a game-changer in its space. Excited to see how it evolves.
Find secrets with Gitleaks ๐
References:
[1]: https://github.com/gitleaks/gitleaks
[2]: https://github.com/gitleaks
If youโre into interesting projects, donโt miss out on termcharts [1], created by Abdur-rahmaanJ [2].
Terminal charts
References:
[1]: https://github.com/Abdur-rahmaanJ/termcharts
[2]: https://github.com/Abdur-rahmaanJ
Looking for inspiration? markata-slides [1] by WaylonWalker [2].
A slides plugin for markata that allows you to create presentations in markdown from the comfort of your favorite editor. Each new h2 tag (## in markdown) becomes a new slide. This plugin leverages the built-in feeds plugin for navigation, and adds in some hotkeys (j/k) to go the the previous and next slides.
References:
[1]: https://github.com/WaylonWalker/markata-slides
[2]: https://github.com/WaylonWalker
Iโm really excited about small-group-notes [1], an amazing project by pypeaday [2]. Itโs worth exploring!
Landing zone for small group notes - plan is to make this a nicer website for all things small group related
References:
[1]: https://github.com/pypeaday/small-group-notes
[2]: https://github.com/pypeaday
Looking for inspiration? techstructive-blog [1] by Mr-Destructive [2].
Blogging Platform powered by Django.
References:
[1]: https://github.com/Mr-Destructive/techstructive-blog
[2]: https://github.com/Mr-Destructive
Iโm really excited about meetgor.com [1], an amazing project by Mr-Destructive [2]. Itโs worth exploring!
My Personal Blog and Portfolio made with Markata SSG and Python
References:
[1]: https://github.com/Mr-Destructive/meetgor.com
[2]: https://github.com/Mr-Destructive
The work on jinja2-fragments [1] by sponsfreixes [2].
Render Jinja2 template block as HTML [3] page fragments on Python web frameworks.
References:
[1]: https://github.com/sponsfreixes/jinja2-fragments
[2]: https://github.com/sponsfreixes
[3]: /html/
Looking for inspiration? ansible-language-server [1] by ansible [2].
๐ง Ansible Language Server codebase is now included in vscode-ansible repository
References:
[1]: https://github.com/ansible/ansible-language-server
[2]: https://github.com/ansible
Iโm really getting into using hatch as my go to build system, and I am really
liking it so far. I am slowly finding new things that just work really well.
hatch new is one of those things that I didnโt realize I needed until I had
it.
[1]
creating new versions created by myself with stable diffusion
[2]
โฏ pipx run hatch new --help
Usage: hatch new [OPTIONS] [NAME] [LOCATION]
Create or initialize a project.
Options:
-i, --interactive Interactively choose details about the project
--cli Give the project a command line interface
--init Initialize an existing project
-h, --help Show this message and exit.
Note! I am running all of these commands with pipx. I like to use pipx for
all of my system level cli applications. To emphasis this point in the
article I am going to use pipx run hatch, but you can pipx install hatch
then just run hatch from there.
Interacively create a new project # [3]
Running hatch new -i will ask let you interactivly choose details about the
project, such as the projectโs name.
pipx run hatch new -i
After running and naming the project Hatch New we end up with the following
filetree.
โฏ tree .
.
โโโ hatch_new
โย ย โโโ __about__.py
โย ย โโโ __in...
Hatch has an amazing versioning cli for python packages that just works. It
takes very little config to get going and you can start bumping versions
without worry.
[1]
creating new versions created by myself with stable diffusion
project layout # [2]
For trying out the hatch version cli letโs make a simple project with the
terrible name pkg.
โฏ tree .
.
โโโ pkg
โย ย โโโ __about__.py
โย ย โโโ __init__.py
โโโ pyproject.toml
โโโ README.md
1 directory, 4 files
pyproject.toml # [3]
The main hero of this post is the pyproject.toml. This is what defines all
of our PEP 517 [4] style project setup.
[project]
name = "pkg"
description = "Show how to version packages with hatch"
readme = "README.md"
dynamic = [
"version",
]
[build-system]
requires = [
"hatchling>=1.4.1",
]
build-backend = "hatchling.build"
[tool.hatch.version]
path = "pkg/__about__.py"
statically versioning # [5]
project.version
It is possible to set the version number inside the pyproject.toml
statically. This is fine if you just want to version your package manually,
and not through the hatch cli.
[project]
name = "pkg"
version = "0.0.0"
# ...
Statically versioning in pyproject.toml will not work with hatch ...
Just starred cloak.nvim [1] by laytan [2]. Itโs an exciting project with a lot to offer.
Cloak allows you to overlay *โs over defined patterns in defined files.
References:
[1]: https://github.com/laytan/cloak.nvim
[2]: https://github.com/laytan
Markata is a great python framework that allows you to go from markdown to a
full website very quickly. You can get up and running with nothing more than
Markdown. It is also built on a full plugin architecture, so if there is extra
functionality that you want to add, you can create a plugin to make it behave
like you want.
Full transparancyโฆ I built markata.
The talk # [1]
The talk is live on YouTube. Make sure you check out the other videos from the
conference. There were quite a few quality talks that deserve a watch as well.
https://youtu.be/Wq9YBamSgs0
[2]
References:
[1]: #the-talk
[2]: https://stable-diffusion.waylonwalker.com/000221.1721400243.webp
Packages I Maintain
Markata # [1]
I open sourced the static site framework that I use to build
my-blog [2] among other side projects. Itโs a plugins
all the way down static site generator, that makes me happy to use.
{% gh_repo_list_topic โwaylonwalkerโ, โmarkataโ %}
Repos used to build this blog # [3]
my-blog [2] is built on a number of small repos. I
set it up this way so that creating content is fast and easy to do. I donโt
have to worry about carrying around large images with my lightweight text
files just to make some posts.
{% gh_repo_list_topic โwaylonwalkerโ, โpersonal-websiteโ %}
Kedro # [4]
I am a heavy user of the kedro [5] framework, and a big
advocate for using some sort of DAG framework for your data pipelines. kedro
is built all in python which makes it easy for a python dev like me to extend,
run, maintain, and deploy.
{% gh_repo_list_topic โwaylonwalkerโ, โkedroโ %}
Neovim Plugins # [6]
I use vim for all of my text editing needs. It brings me joy to make any part
of it just a...
I spoke at python webconf in March 2022 about how I deploy this blog on a
continuous basis.
Building this blog has brought me a lot of benefits. I have
a set of custom curated notes to help describe a problem and how to solve it to
me. At theis point itโs not uncommon to google an Issue I am having and
finding my own blog with exactly the solution I need at the top.
I also bump into people from time to time that recognize me from the blog, its
a nice conversation starter, and street cred.
The Talk # [1]
The talk recently released on Youtube, you can watch it without having a ticket
to the conference for free. There were a bunch of other talks that you should
check out too!
https://youtu.be/JDZVjDCTKHE
References:
[1]: #the-talk
rofi-network-manager [1] by P3rf [2] is a game-changer in its space. Excited to see how it evolves.
A manager for network connections using bash, rofi, nmcli,qrencode.
References:
[1]: https://github.com/P3rf/rofi-network-manager
[2]: https://github.com/P3rf
I got all the pypi packages that I own behind 2 factor authentication. ๐ช
Recently this really made itโs rounds in the python news since pypi was
requiring critical package maintainers to have 2FA on and even offering them
hardware tokens to help them turn this on.
I feel like this caused a bit of confusion as turning on 2FA does not mean that
you need to do anything different to deploy a package, and it DOES NOT
require a hardware token. You can continue using your favorite 2FA app.
You might wonder what this means for my projects. It means that to edit any
sensitive content such as pull a new api token, add/remove maintainers, or
deleting a release I need to use a TOPT (time based one time password)
application such as Google Authenticator, Microsoft Authenticator, Authy, or
FreeOTP.
This has very little change to my overall workflow as my CI system still
automatically deploys for me with the same api token as before.
This is one small thing that maintainers can do to prevent supply chain attacks
on their projects that they put so much work into.
Login # [1]
When I log in I now get this extra screen asking for an auth token.
[2]
My packages # [3]
Once I turned on 2FA...
Looking for inspiration? build [1] by pypa [2].
A simple, correct Python build frontend
References:
[1]: https://github.com/pypa/build
[2]: https://github.com/pypa
I was on Talk Python
After years of listening to talkpython.fm [1] I had the
honor to be part of
episode-337 [2]
to talk about Kedro for maintainable data science.
I was quite nervous to talk on a show that I helped shape my career in such a
profound way. I started my journey towards software engineering near Michaels
first few episodes. His discussions with such great developers over the years
has made an huge impact on my skill. It has always given me great advice and
topics to go deeper on.
During the episode I tried my best to let Yetu and Ivan take the spotlight as
the maintainer and chime in with my experience as a user of kedro.
Video Version # [3]
https://youtu.be/WTcjvwkXoY0
Michael made the call available on youtube as well as the audio only
podcast [2]
References:
[1]: https://talkpython.fm/
[2]: https://talkpython.fm/episodes/show/337/kedro-for-maintainable-data-science
[3]: #video-version
Check out squidfunk [1] and their project mkdocs-material [2].
Documentation that simply works
References:
[1]: https://github.com/squidfunk
[2]: https://github.com/squidfunk/mkdocs-material
I just love how some features of vim are so discoverable and memorable once you
really start to grasp it. Sorting and uniqing your files or ranges is one of
those examples for me.
" sort the file
:sort
" sort the file only keeping unique lines
:sort u
" sort a range
:'<,'> sort
" sort a range only keeping unique lines
:'<,'> sort u
I recently used this to dedupe my autogenerated links section for
rich-syntax-range-style [1].
More often I am using it to sort and uniqify objects like arrays and lists.
Here is what the markdown looks like.
* [py-tree-sitter](https://github.com/tree-sitter/py-tree-sitter)
* [rich](https://github.com/Textualize/rich)
* [@textualizeio](https://twitter.com/textualizeio)
* [rich](https://github.com/Textualize/rich)
* [another post](https://waylonwalker.com/designing-kedro-router)
* [print-register-pipelines](https://screenshots.waylonwalker.com/print-register-pipelines.webp)
* [rich](https://github.com/Textualize/rich)
* [console-print-register-pipelines](https://screenshots.waylonwalker.com/console-print-register-pipelines.webp)
* [rich](https://github.com/Textualize/rich)
* [syntax-print-register-pipelines](https://screenshots.waylonwalker.com/syn...
Today Iโve been playing with
py-tree-sitter [1] a bit and I
wanted to highlight match ranges, but was unable to figure out how to do it
with rich [2], so I reached out to
@textualizeio [3] for help.
https://twitter.com/_WaylonWalker/status/1562469770766589952
While waiting for that reply letโs show how we got this far.
imports # [4]
Lets import all the classes that we need from rich [2] and setup a console to print
to.
from rich.console import Console
from rich.syntax import Syntax
from rich.style import Style
console = Console()
some code # [5]
Now we need some code to highlight. I am going to rip my register_pipeline
from another post [6].
code = '''
from find_kedro import find_kedro
def register_pipelines(self) -> Dict[str, Pipeline]:
"""Register the project's pipeline.
Returns:
A mapping from a pipeline name to a ``Pipeline`` object.
"""
return find_kedro()
'''
print # [7]
We could simply print out the code we have as a variable, but thats a bit hard
to read.
[8]
console.print # [9]
printing with rich [2]โs console makes it a little better, but not much by default.
[10]
Syntax # [11]
We can pull from rich [2]โs syntax module to really pretty this up.
...
How to vimgrep over hidden files.
I needed to delete all build pipeline steps that were named upload docs. I
currently have about 60 projects running from the same template all running
very similar builds. In the past Iโve scripted out migrations for large
changes like this, they involved writing a python script that would load the
yaml file into a dictionary, find the corresponding steps make the change and
write it back out.
Todayโs job was much simplar, just delete the step, were all steps are
surrounded by newlines. My first thought was to just open all files in vim and
run dap. I just needed to get these files:positions into my quickfix. My
issue is that all the builds reside within hidden directories by convention.
The issue # [1]
variability
After searching through all the projects it was clear that all the steps were
in their own paragraph, though I was not 100% confident enough to completely
automate it, and the word upload docs was in the paragraph.
some were a two liner
- name: upload docs
script: aws s3 ...
Some had a variation in the name
- name: upload docs to s3
script: aws s3 ...
some were more than 2 lines.
- name: upload docs
script: |
aws s3 ...
s...
[1]
a sprinter edging out his opponent by Dall-e
Itโs about time to release Markata 0.3.0. Iโve had 8 pre-releases since the
last release, but more importantly it has about 3 months of updates. Many of
which are just cleaning up bad practices that were showing up as hot spots on
my pyinstrument reports
Markata started off partly as a python developer frustrated with using nodejs
for everything, and a desire to learn how to make frameworks in pluggy. Little
did I know how flexible pluggy would make it. It started out just as my blog
generator, but has turned into quite a bit more.
Over time this side project has grown some warts and some of them were now
becoming a big enough issue it was time to cut them out.
Letโs compare # [2]
I like to use my tils articles for examples and tests like this as there are
enough articles for a good test, but they are pretty short and quick to render.
mkdir ~/git/tils/tils
cp ~/git/waylonwalker.com/pages/til/ ~/tils/tils -r
cd ~/git/tils/tils
running tils on 0.2.0 # [3]
At the time of writing this is the current version of markata, so just make a
new venv and run it.
python3 -m venv .venv --prompt $(basename $PWD)
pip install markata
mark...
Check out stable-diffusion [1] by CompVis [2]. Itโs a well-crafted project with great potential.
A latent text-to-image diffusion model
References:
[1]: https://github.com/CompVis/stable-diffusion
[2]: https://github.com/CompVis
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
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
The one reason I switched to arch
The community, thatโs it, end of post, roll the credits.
Iโm a tinkerer # [1]
I am a tinkerer, I am not going to run a stock desktop manager, mostly becuase
thatโs just not how my brain works. I need to tweak everything to fit my
needs. Grantid I have not spent much time in many full fledged linux desktop
environments. They are far more customizable than windows ever will be, I
absolutely love that about them. Inevitibly I end up in a situation where I
hit a wall, it just wonโt do what I want it to do, or my lack of understanding
what came wtih it holds me back.
minimal # [2]
I love minimal installs. I love just building up my system from the bottom up
with things that I like, I understand, and that I can script.
Iโm a noob # [3]
I spend a lot of my time in the terminal. Iโd like to think I know how to use
a linux command line for software development really well, but there are a lot
of things that I still dont know all that well, mostly because I donโt need to.
The AUR # [5]...
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
Using Different versions of python with pipx | pyenv
[1]
I love using pipx for automatic virtual environment [2] management of my globally
installed python cli applications, but sometimes the application is not
compatible with your globally installed pipx
Which version of python is pipx using?? # [3]
This one took me a minute to figure out at first, please let me know if there
is a better way. I am pretty certain that this is not the ideal way, but it
works.
My first technique was to make a package that printed out sys.version.
# what version of python does the global pipx use?
pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers
# what version of python does the local pipx use?
python -m pipx run --spec git+https://github.com/waylonwalker/pyvers pyvers
Letโs setup some other versions of python with pyenv # [4]
If you donโt already have pyenv [5] installed,
you can follow their install
instructions [6] to get it.
pyenv install 3.8.13
pyenv install 3.10.5
I usually require a virtual environment # [7]
I set the PIP...
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
curl [1] has done a fantastic job with curl [2]. Highly recommend taking a look.
A command line tool and library for transferring data with URL syntax, supporting DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET, TFTP, WS and WSS. libcurl offers a myriad of powerful features
References:
[1]: https://github.com/curl
[2]: https://github.com/curl/curl
LIVE-REPLAY - Python dev | Markata todoui | 4/6/2022
https://youtu.be/-42A5210HYo
Super fun steam Broadcasted live on Twitch โ Watch live at https://www.twitch.tv/waylonwalker
We worked on markata todoui, a command tui trello board written in python using only markdown files to store the data. I love markdown and I want to make this my workflow.
During this stream we get RAIDED by TEEJ_DV! and chat about tmux a bit before calling the changes to markata-tui good and signing off.
- dotfiles: https://github.com/WaylonWalker/devtainer
- todayโs project: https://github.com/WaylonWalker/markata-todoui
- website: https://waylonwalker.com/