GitHub Stars

GitHub stars posts

1859 posts latest post 2026-05-24
Publishing rhythm
May 2026 | 23 posts
With the latest release of version of nvim 0.8.0 we get access to a new winbar feature. One thing I have long wanted somewhere in my nvim is navigation for pairing partners or anyone watching can keep track of where I am. As the driver it’s easy to keep track of the file/function you are in. But when you make big jumps in a few keystrokes it can be quite disorienting to anyone watching, and having this feedback to look at is very helpful. [1] winbar # [2] nvim exposes the winbar api in lua, and you can send any text to the winbar as follows. vim.o.winbar = "here" You can try it for yourself right from the nvim command line. :lua vim.o.winbar = "here" Now you will notice one line above your file with the word here at the very beginning. Clearing the winbar # [3] If you want to clear it out, you can just set it to an empty string or nil. :lua vim.o.winbar = "" :lua vim.o.winbar = nil Setting up nvim-navic # [4] You will need to install nvim-navic if you want to use it. I added it to my plugins using Plug as follows. call plug#begin('~/.local/share/nvim/plugged') Plug 'SmiteshP/nvim-navic' call plug#end() Note! nvim-navic does require the use of the nvim lsp, so if you ...
vim
Just starred nvim-navic [1] by SmiteshP [2]. It’s an exciting project with a lot to offer. Simple winbar/statusline plugin that shows your current code context References: [1]: https://github.com/SmiteshP/nvim-navic [2]: https://github.com/SmiteshP
I came across winbar.nvim [1] from fgheng [2], and it’s packed with great features and ideas. winbar config for neovim References: [1]: https://github.com/fgheng/winbar.nvim [2]: https://github.com/fgheng
Looking for inspiration? nvim-scrollbar [1] by petertriho [2]. Extensible Neovim Scrollbar References: [1]: https://github.com/petertriho/nvim-scrollbar [2]: https://github.com/petertriho
Looking for inspiration? nvim-hlslens [1] by kevinhwang91 [2]. Hlsearch Lens for Neovim References: [1]: https://github.com/kevinhwang91/nvim-hlslens [2]: https://github.com/kevinhwang91
I came across pre-commit [1] from pre-commit [2], and it’s packed with great features and ideas. A framework for managing and maintaining multi-language pre-commit hooks. References: [1]: https://github.com/pre-commit/pre-commit [2]: https://github.com/pre-commit
I really like having global cli command installed with pipx. Since textual 0.2.x (the css release) is out I want to be able to pop into textual devtools easily from anywhere. [1] Pipx Install # [2] You can pipx install textual. pipx install textual But if you try to run any textual cli commands you will run into a ModuleNotFoundError, because you need to install the optional dev dependencies. Traceback (most recent call last): File "/home/u_walkews/.local/bin/textual", line 5, in <module> from textual.cli.cli import run File "/home/u_walkews/.local/pipx/venvs/textual/lib/python3.10/site-packages/textual/cli/cli.py", line 4, in <module> import click ModuleNotFoundError: No module named 'click' Pipx Inject # [3] In order to install optional dependencies with pipx you need to first install the library, then inject in the optional dependencies using the square bracket syntax. pipx install textual pipx inject textual 'textual[dev]' References: [1]: https://stable-diffusion.waylonwalker.com/000359.2404332231.webp [2]: #pipx-install [3]: #pipx-inject
I am working through the textual tutorial, and I want to put it in a proper cli that I can pip install and run the command without textual run --dev app.py. This is a fine pattern, but I also want this to work when I don’t have a file to run. [1] pyproject.toml entrypoints # [2] I set up a new project running hatch new, and added the following entrypoint, giving me a tutorial cli command to run. ... [project.scripts] tutorial = 'textual_tutorial.tui:tui' https://waylonwalker.com/hatch-new-cli/ setup.py entrypoints # [3] If you are using setup.py, you can set up entrypoints in the setup command. from setuptools import setup setup( ... entry_points={ "console_scripts": ["tutorial = textual_tutorial.tui:tui"], }, ... ) https://waylonwalker.com/minimal-python-package/ tui.py # [4] adding features Now to get devtools through a cli without running through textual run --dev. I pulled open the textual cli source code, and this is what it does at the time of writing. Note: I used sys.argv as a way to implement a --dev quickly tutorial. For a real project, I’d setup argparse, click, or typer. typer is my go to these days, unless I am really trying to limit dependencies,...
I like AnH0ang’s [1] project kedro-aim [2]. A kedro plugin that enables logging to the ml experiment tracker aim References: [1]: https://github.com/AnH0ang [2]: https://github.com/AnH0ang/kedro-aim
- 11ty https://www.rockyourcode.com/how-to-deploy-eleventy-to-github-pages-with-github-actions/ - hugo puts it in the base url https://gohugo.io/getting-started/configuration/#baseurl - mkdocs uses a special cli build command https://squidfunk.github.io/mkdocs-material/publishing-your-site/#github-pages
The work on PrismLauncher [1] by PrismLauncher [2]. A custom launcher for Minecraft that allows you to easily manage multiple installations of Minecraft at once (Fork of MultiMC) References: [1]: https://github.com/PrismLauncher/PrismLauncher [2]: https://github.com/PrismLauncher
I’m really excited about learn-cloudformation [1], an amazing project by widdix [2]. It’s worth exploring! Learn how to use Infrastructure as Code on AWS with the help of CloudFormation. References: [1]: https://github.com/widdix/learn-cloudformation [2]: https://github.com/widdix
For far too long I have had to fidget with v4l2oloopback after reboot. I’ve had this happen on ubuntu 18.04, 22.04, and arch. After a reboot the start virtual camera button won’t work, It appears and is clickable, but never turns on. Until I run this command. sudo modprobe v4l2loopback video_nr=10 card_label="OBS Video Source" exclusive_caps=1 [1] Today I learned that you can turn on kernel modules through some files in /etc/modules... This is what I did to my arch system to get it to work right after boot. echo "v4l2loopback" | sudo tee /etc/modules-load.d/v4l2loopback.conf echo "options v4l2loopback video_nr=10 card_label=\"OBS Video Source\" exclusive_caps=1" | sudo tee /etc/modprobe.d/v4l2loopback.conf References: [1]: https://stable-diffusion.waylonwalker.com/000378.373882614.webp
Upon first running an aws cli command using localstack you might end up with the following error. Unable to locate credentials. You can configure credentials by running "aws configure". Easy way # [1] The easy easiest way is to leverage a package called awscli-local. pipx install awscli-local Leveraging the awscli # [2] If you want to use the cli pro pipx install awscli aws config --profile localstack # put what you want for the keys, but enter a valid region like us-east-1 alias aws='aws --endpoint-url http://localhost:4566 --profile localstack' References: [1]: #easy-way [2]: #leveraging-the-awscli
I ran into an issue where I was unable to ask localstack for its status. I would run the command and it would tell me that it didn’t have permission to read files from my own home directory. Let’s fix it The issue # [1] I would run this to ask for the status. localstack status And get this error PermissionError: [Errno 13] Permission denied: '/home/waylon/.cache/localstack/image_metadata' What happened # [2] It dawned on me that the first time I ran localstack was straight docker, not the python cli. When docker runs it typically runs as root unless the Dockerfile sets up a user and group for it. [3] How to fix it # [4] If you have sudo access to the machine you are on you can recursively change ownership to your user and group. I chose to just give myself ownership of my whole ~/.cache directory you could choose a deeper directory if you want. I feel pretty safe giving myself ownership to my own cache directory on my own machine. whoami # waylon chown -R waylon:waylon ~/.cache Now it’s working # [5] Running localstack status now gives me a nice status message rather than an error. ❯ localstack status ┌─────────────────┬──────────────────────────────────────────────...
Markata now allows you to create jinja extensions that will be loaded right in with nothing more than a pip install. From the Changelog # [1] The entry for 0.5.0.dev2 from markata’s changelog [2] - Created entrypoint hook allowing for users to extend marka with jinja exensions #60 0.5.0.dev2 [3] markata-gh # [4] The first example that you can use right now is markata-gh. It will render repos by GitHub topic and user using the gh cli, which is available in github actions! Get it with a pip install pip install markata-gh Use it with some jinja in your markdown. ## Markata plugins It uses the logged in uer by default. {% gh_repo_list_topic "markata" %} You can more explicitly grab your username, and a topic. {% gh_repo_list_topic "waylonwalker", "personal-website" %} How is this achieved # [5] The jinja extension details are for another post, but this is how markata-gh exposes itslef as a jinja extension. class GhRepoListTopic(Extension): tags = {"gh_repo_list_topic"} def __init__(self, environment): super().__init__(environment) def parse(self, parser): line_number = next(parser.stream).lineno try: args = parser.parse_tuple().items except AttributeError: ...
npx create-react-app todoreact import React,{useState,useEffect} from 'react'; import './App.css'; function App() { const [data,setData]=useState([]); const [newName,setNewName]=useState([]); const getData=()=>{ fetch('/api' ,{ headers : { 'Content-Type': 'application/json', 'Accept': 'application/json' } } ) .then(function(response){ return response.json(); }) .then(function(myJson) { setData(myJson) }); } useEffect(()=>{ getData() },[]) const addItem= async () => { const rawResponse = await fetch('/api/add/', { method: 'POST', headers: { 'Accept': 'application/json', 'Content-Type': 'application/json' }, body: JSON.stringify({"name": newName}) }); const content = await rawResponse; console.log(content); getData() } return ( <div className="App"> { data && data.length>0 && data.map((item)=><p>{item.id}{item.priority}{item.name}<button>raise priority</button></p>) } <input type='text' value={newName} onChange={(e) => (setNewName(e.target.value))} /> <button onClick={addItem} >add item</button> </div> ); } export default App;
In my adventure to learn django, I want to be able to setup REST api’s to feed into dynamic front end sites. Potentially sites running react under the hood. [1] Install # [2] To get started lets open up a todo app that I created with django-admin startproject todo. pip install djangorestframework Install APP # [3] Now we need to declare rest_framwork as an INSTALLED_APP. INSTALLED_APPS = [ ... "rest_framework", ... ] create the api app # [4] Next I will create all the files that I need to get the api running. mkdir api touch api/__init__.py api/serializers.py api/urls.py api/views.py [5] base/models.py # [6] I already have the following model from last time I was playing with django. It will suffice as it is not the focus of what I am learning for now. Note the name of the model class is singular, this is becuase django will automatically pluralize it in places like the admin panel, and you would end up with Itemss. from django.db import models # Create your models here. class Item(models.Model): name = models.CharField(max_length=200) created = models.DateTimeField(auto_now_add=True) def __str__(self): return f"{self.priority} {self.name}" Next I will m...
I like openai’s [1] project whisper [2]. Robust Speech Recognition via Large-Scale Weak Supervision References: [1]: https://github.com/openai [2]: https://github.com/openai/whisper
Markata now uses hatch as its build backend, and version bumping tool. setup.py, and setup.cfg are completely gone. [1] 0.5.0 is big # [2] Markata 0.5.0 is now out, and it’s huge. Even though it’s the backend of this blog I don’t actually have that many posts directly about it. I’ve used it a bit for blog fuel in generic ways, like talking about pluggy and diskcache, but very little have I even mentioned it. Over the last month I made a big push to get 0.5.0 out, which adds a whole bunch of new configurability to markata. Here’s the changelog [3] entry. - Moved to PEP 517 build #59 0.5.0.dev1 My Personal Simple CI/CD # [4] Before cutting all of my personal projects over to hatch. The first thing I did was to setup a solid github action, hatch-action [5]that I can resue. It automatically bumps versions, using pre-releases on all branches other than main, with special branches for bumping major, minor, patch, dev, alha, beta, and dev. hatch new –init # [6] To convert the project over to hatch, and get rid of setup.py/setup.cfg, I ran hatch new --init. This automatically grabs all the metadata for the project and makes a pyproject.toml that has most of what I need. hat...