Published

All published posts

2493 posts latest post 2026-05-11
Publishing rhythm
Apr 2026 | 47 posts
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
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: ...
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...
lkwq007 [1] has done a fantastic job with stablediffusion-infinity [2]. Highly recommend taking a look. Outpainting with Stable Diffusion on an infinite canvas References: [1]: https://github.com/lkwq007 [2]: https://github.com/lkwq007/stablediffusion-infinity
Check out toumorokoshi [1] and their project deepmerge [2]. A deep merging tool for Python core data structures References: [1]: https://github.com/toumorokoshi [2]: https://github.com/toumorokoshi/deepmerge
My next step into django made me realize that I do not have access to the admin panel, turns out that I need to create a cuper user first. [1] Run Migrations # [2] Right away when trying to setup the superuser I ran into this issue django.db.utils.OperationalError: no such table: auth_user Back to the tutorial [3] tells me that I need to run migrations to setup some tables for the INSTALLED_APPS, django.contrib.admin being one of them. python manage.py migrate [4] yes I am still running remote on from my chromebook. python manage.py createsuperuser [5] The super user has been created. [6] CSRF FAILURE # [7] My next issue trying to run off of a separate domain was a cross site request forgery error. Since this is a valid domain that we are hosting the app from we need to tell Django that this is safe. We can do this again in the settings.py, but this time the variable we need is not there out of the box and we need to add it. CSRF_TRUSTED_ORIGINS = ['https://localhost.waylonwalker.com'] I made it!! # [8] And we are in, and welcomed for the first time with this django admin panel. [9] Remote Hosting # [10] You might find these settings helpful as well if yo...
I am continuing my journey into django, but today I am not at my workstation. I am ssh’d in remotely from a chromebook. I am fully outside of my network, so I can’t access it by localhost, or it’s ip. I do have cloudflared tunnel installed and dns setup to a localhost.waylonwalker.com. Settings # [1] I found this in settings.py and yolo, it worked first try. I am in from my remote location, and even have auth taken care of thanks to cloudflare. I am really hoping to learn how to setup my own auth with django as this is one of the things that I could really use in my toolbelt. ALLOWED_HOSTS = ['localhost.waylonwalker.com'] [2] References: [1]: #settings [2]: https://stable-diffusion.waylonwalker.com/000321.3422093952.webp
I have no experience in django, and in my exploration to become a better python developer I am dipping my toe into one of the most polished and widely used web frameworks Django to so that I can better understand it and become a better python developer. If you found this at all helpful make sure you check out the django tutorial [1] [2] install django # [3] The first thing I need to do is render out a template to start the project. For this I need the django-admin cli. To get this I am going the route of pipx it will be installed globally on my system in it’s own virtual environment that I don’t have to manage. This will be useful only for using startproject as far as I know. pipx install django django-admin startproject try_django cd try_django [4] Make a venv # [5] Once I have the project I need a venv for all of django and all of my dependencies I might need for the project. I have really been diggin hatch lately, and it has a one line “make a virtual environment [6] and manage it for me” command. hatch shell [7] If hatch is a bit bleeding edge for you, or it has died out by the time you read this. The ol trusty venv will likely stand the test of time, this is w...
While updating my site to use Markata’s new configurable head I ran into some escaping issues. Things like single quotes would cause jinja to fail as it was closing quotes that it shouldnt have. [1] Jinja Escaping Strings # [2] Jinja comes with a handy utility for escaping strings. I definitly tried to over-complicate this before realizing. You can just pipe your variables into e to escape them. This has worked pretty flawless at solving some jinja issues for me. <p> {{ title|e }} </p> Creating meta tags in Markata # [3] The issue I ran into was when trying to setup meta tags with the new configurable head, some of my titles have single quotes in them. This is what I put in my markata.toml to create some meta tags. [[markata.head.meta]] name = "og:title" content = "{{ title }}" Using my article titles like this ended up causing this syntax error when not escaped. SyntaxError: invalid syntax. Perhaps you forgot a comma? Exception ignored in: <function Forward.__del__ at 0x7fa9807192d0> Traceback (most recent call last): ... TypeError: 'NoneType' object is not callable jinja2 escape # [4] After making a complicated system of using html.escape I realized that jinja includ...
When I am developing python code I often have a repl open alongside of it running snippets ofcode as I go. Ipython is my repl of choice, and I hace tricked it out the best I can and I really like it. The problem I recently discovered is that I have way overcomplicated it. [1] What Have I done?? # [2] So in the past the way I have setup a few extensions for myself is to add something like this to my ~/.ipython/profile_default/startup directory. It sets up some things like rich highlighting or in this example automatic imports. I even went as far as installing some of these in the case I didn’t have them installed. import subprocess from IPython import get_ipython from IPython.core.error import UsageError ipython = get_ipython() try: ipython.run_line_magic("load_ext pyflyby", "inline") except UsageError: print("installing pyflyby") subprocess.Popen( ["pip", "install", "pyflyby"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ).wait() ipython.run_line_magic("load_ext pyflyby", "inline") print("installing isort") subprocess.Popen( ["pip", "install", "isort"], stdout=subprocess.DEVNULL, stderr=subprocess.DEVNULL, ) [3] What I missed? # [4] I missed t...
I like pypeaday’s [1] project stable-diffusion-pype-dev [2]. No description available. References: [1]: https://github.com/pypeaday [2]: https://github.com/pypeaday/stable-diffusion-pype-dev
Check out gradio-app [1] and their project gradio [2]. Build and share delightful machine learning apps, all in Python. 🌟 Star to support our work! References: [1]: https://github.com/gradio-app [2]: https://github.com/gradio-app/gradio
Just starred stable-diffusion-webui [1] by AUTOMATIC1111 [2]. It’s an exciting project with a lot to offer. Stable Diffusion web UI References: [1]: https://github.com/AUTOMATIC1111/stable-diffusion-webui [2]: https://github.com/AUTOMATIC1111
kedro-plugins [1] by kedro-org [2] is a game-changer in its space. Excited to see how it evolves. First-party plugins maintained by the Kedro team. References: [1]: https://github.com/kedro-org/kedro-plugins [2]: https://github.com/kedro-org
If you’re into interesting projects, don’t miss out on knossos [1], created by modrinth [2]. [Archived] Former repo of the Modrinth frontend References: [1]: https://github.com/modrinth/knossos [2]: https://github.com/modrinth
I like CaffeineMC’s [1] project sodium [2]. A Minecraft mod designed to improve frame rates and reduce micro-stutter References: [1]: https://github.com/CaffeineMC [2]: https://github.com/CaffeineMC/sodium
Just starred markata-todoui [1] by WaylonWalker [2]. It’s an exciting project with a lot to offer. A todo plugin for markata. It is a tui (text user interface) that runs in the terminal using textual. It gives me a trello-board feel from the terminal. I can create, update, delete, move, and fully manage my todo items from the terminal with it. References: [1]: https://github.com/WaylonWalker/markata-todoui [2]: https://github.com/WaylonWalker