You can explicitly make a script render blocking, nothing will be rendered until this js is ready.
Archive
All published posts
I’ve long been a user of remove.bg, and I just discovered that you can run this transformer right within your browser with no api limits.
Very interesting approach to htmx and fast api. It uses separate decorators for returning template partials and json that can be stacked to include both options on a single route. The templates are explicitly set in the decorator. Separate decorators are used for full page and partial pages. I don’t see an example of full and partial pages being combined. I think the demo app must be behaving in a spa like fashion where it does not get all of the data when it calls index and index will ask for user-list.
Definitely going to keep my eye on this project and ponder on it.
Very interesting approach to htmx and fast api. It uses separate decorators for returning template partials and json that can be stacked to include both options on a single route. The templates are explicitly set in the decorator. Separate decorators are used for full page and partial pages. I don’t see an example of full and partial pages being combined. I think the demo app must be behaving in a spa like fashion where it does not get all of the data when it calls index and index will ask for user-list.
Definitely going to keep my eye on this project and ponder on it.
Pinout for nice!nano boards. Note that P0.15 means gpio port 0 pin 15, they can be referenced in zmk when setting column and row pins.
I’m impressed by shmux from typecraft-dev.
the shell-script tmux management you didn’t know you needed. baby
I like iximiuz’s project awesome-container-tinkering.
List of awesome tools to tinker with containers.
today I learned that /dev/pts is a pseudo-tty. It amazes me how much linux is still built around things like hardware terminals.
miniserve is a sweet http server, replacement for python -m http.server. It’s fast, runs off a small binary, but why would I want to use it over something that already exists on most machines, because it includes a bunch of features like qr codes, pretty themes, and uploads. I’ve used python -m http.server many times to transfer files from one machine to another in a pinch, like at a family members house. But what if they have an android, windows, or something not easy to get a python repl running on, you can run miniserve and upload from their device rather than hosting from their device.
The arch wiki is always full of good content, and pacman tips and tricks does not disappoint. Today I discovered this command to remove orphaned dependencies on my system.
Interesting to see that curl is used in so many places. I often think of things like games being so windows centric and curl being so linux centric I don’t even think of these things crossing paths as much as they do.
interesting, seems like such a simple way to completely remove the need of a whole other cli. No offense to anyone working on wget, but generally I use it out of lazyness or something wierd is happening and I am looking for a second opinion. Cool to know that wcurl exists and will start shipping with curl.
I’ve started leaning in on kubernetes kustomize to customize my manifests per deployment per environment. Today I learned that it comes with a diff command.
kubectl diff -k k8s/overlays/local
You can enable color diffs by using an external diff provider like colordiff.
export KUBECTL_EXTERNAL_DIFF="colordiff -N -u"
You might need to install colordiff if you don’t already have it.
sudo pacman -S colordiff sudo apt install colordiff
Now I can try out kustomize changes and see the change with kustomize diff.
Animal well does not let you remap keys, and really doesn’t even inform you that it is keyboard compatible. I had to play around and discover the keymap, which can be a bit tricky on a 40% board. This is what I found.
I recently discovered pydantic-sqlite by Phil997, and it’s truly impressive.
Simple package for storing pydantic BaseModels in an in-memory SQLite database.
I recently started seeing email-decode.min.js show up on my blog posts, and I wondered what the heck ? I didn’t put it there. Turns out that cloudflare put it there from pages to safely serve email addresses for me.
inspecting the page without js running we can see that the mailto email is swapped out for email protected. Neat feature.
❯ curl --silent https://waylonwalker.com/diskcache-as-debounce/ | grep email <a class="decoration-pink-500 hover:decoration-pink-300 hover:text-pink-100" href="/cdn-cgi/l/email-protection#a4ccc1c8c8cbe4d3c5ddc8cbcad3c5c8cfc1d68ac7cbc9" rel="me"><span class="__cf_email__" data-cfemail="630b060f0f0c2314021a0f0c0d14020f0806114d000c0e">[email protected]</span></a> <script data-cfasync="false" src="/cdn-cgi/scripts/5c5dd728/cloudflare-static/email-decode.min.js"></script></body>
Looking deeper into this article it looks like this feature comes from Scrape Shield and enabling Email Address Obfuscation.
fastapi comes with a concept of background tasks which are functions that can be ran in the background after a function has been ran. This is handy for longer running functions that may take some time and you want to have fast response times.
Here is an example from the docs
markdown it py running in rust claims to be 20x faster. I’ll definitely look into this if markdown it py is ever a bottleneck in my performance. At first glance it appears that plugins are written in rust not python, and there is no admonition plugin, so I’ll keep my eye on it for now, but I can’t use it.
diskcache has a peekitem method that allows you to lookup the expire_time of a cached item without changing it. I recently used this to implement debounce for fastapi background tasks with multiple workers running. since all the workers I care about are on the same machine, but running in different processes diskcache was a great option. All workers have access to the same disk, but not the same variables in memory.
Great intro into kustomize. This helped me get started with kustomize.
I’ve been using fastapi more and more lately and one feature I just started using is background tasks [[ thoughts-333 ]].
I am using it for longer running tasks and I don’t want to give users the ability to spam these long running tasks with many duplicates running at the same time. And each fastapi worker will be running in a different process so I cannot keep track of work in memory, I have to do it in a distributed fashion. Since they are all running on the same machine with access to the same disk, diskcache is a good choice
My brain first went to thinking I needed another service like redis running alongside fastapi for this, then it hit me that I can use diskcache.
Here is how I used diskcache to debounce taking screenshots for a unique shot every 60 seconds.
I’m really excited about homelab-diagrams, an amazing project by Doomlab7. It’s worth exploring!
A repository to house diagrams for my homelab
If you’re into interesting projects, don’t miss out on zmk-config-fourpad, created by wyattbubbylee.
my fourpad keybord
kind cluster
kind{.hoverlink} is a very useful tool to quickly standup and teardown kubernetes clusters. I use it to run clusters locally. Generally they are short lived clusters for trying, testing, and learning about kubernetes.
Kind is Kubernetes in Docker, its very fast to get a new cluster up and running. Other than checking a box in docker desktop it is the easiest way currently to get a cluster up and running. I’ve used docker desktop for k8s before I really developed on k8s and it was buggy at the time and sometimes started and sometimes didn’t, when it didnt I had no idea how to fix it. I’d suggest kind as the best option to get a cluster up and running locally.
If you are looking for a production ready cluster this is not it. I really like ...
Yesterday I realized that I have overlooked the default installation method of the sealed secrets controller for kubernetes kubeseal this whole time an jumped straight to the helm section. I spun up a quick kind cluster and had it up quickly. I can’t say this is any better or worse than helm as I have never needed to customize the install. According to the docs you can customize it with [[ kustomize ]] or helm.
I like rothgar’s project bashScheduler.
Kubernetes scheduler written in less than 100 lines of bash 😬 😆
Huge list of micro controllers tried and used in keeb builds.
Not gonna lie, kinda pumped about this one. I manually did one, jotted down the coordinates, opened the gcode in vim, added markers between setup/teardown and print. then added the wipe, the copy pasted the print+wipe section a bunch of times.
My printer tends to run a bit better on single prints than printing a dozen at once as it has less issues with retract start and stop.
another great use and demo of the one eyed fighting kirby
Damn, supply chain vector attacks are wild. Random guy in Primes stream was getting $40k offers to buy their open source project while in university and they have never made anything from it. What a social engineering attack this is. It would be so easy to make it look like a good deal and that the package was going to a good new owner who has real resources to maintain it.
This is almost exactly what I have been thinking about building for quite awhile. I am going to give it a good try with a few $$ in filiment some cheap switches a microcontroller and go pretty bare bones, maybe open wiring on the bottom.
Absolutely sick post. This is top tier animated blog posts. This posts demos how different queuing systems work with fantastic interactive demos.
Supply chain attacks are so big these days engineers definitely need to take these into consideration. It’s wild that such a simple attack vector hit some really big applications. This particular vector is so easy to avoid. You are already hosting web content, just curl the file and self host the script, then you own it. That eliminates this attack vector all together, but doesn’t completely remove supply chain attacks, the js file can still hit external apis internally.
What I see has happened in this case is that the owner of the domain polyfill.io changed. so anyone who directly linked to them got a malware injected script used.
I can only imagine the number of applicatons that are not even being maintained anymore getting hit by this. TLDR, if you are taking something to production, where you are goind to deploy it and let it run, host the js yourself. these cdns are great for prototyping, but tread with caution.
Well spoken prime. Co-pilot is a fantastic tool for templating, boilerplate, or just getting something done that is just outside your knowledge or care to know. Bit if you really want to learn something, you need to use your hands. Reading the solution only gives you the happy path. This does not give you that path that most people would take, and completely misses debugging. If you are very new and learning it’s unlikely that you can write large blocks of code without running a test or a script to try it. Taking these shortcuts will hinder your ability to do it yourself.
If I were to devils advocate here, copilot is still not the greatest at the big picture, you still have to drive, and tell it I want to use python, fastapi, I want to load settings from .env. taking these shortcuts can help you move quick and get the big picture. This is especially helpful for someone who might know one language or framework and is trying a different one, but at some point you need to do...
pyannotate is a tool that uses runtime types to suggest type annotations to use. Test runners such as pytest can be used to generate the types.
Interesting, linux supports 32 programmable buttons, special buttons that do nothing that hotkey programs like xbindkeys can pick up and run things, seems like it would be very intersting to use on a macro pad. You could easily do dynamic and complex tasks without clashing that keybinding with something else.
I’m going to look into this for my next obs setup. No matter what I try to do with the hyper key it always tends to do odd things depending on the application I am in. typically its tmux, and it starts trying to do something I don’t want it to.
Create virtual environments for any Python version, without needing Python installed.
Love how Daniel just brushed off the number of netflix tv installs as small beans for curl installs. overall great episode on open source, owning a major component to technology with such a small team.
I’ve long had issues with my qmk keyboard media keys on my arch install, I always thought it was on the keyboard end. Today I learned that playerctl fixes this.
paru -S playerctl
Once it is installed all of my media keys started working right away.
I played around with it a bit more and came up with a way to display the current playing title in my notifictations.
Great keyboard design guide for all the different mounting options that are normal for keyboards with pros and cons of each.
Super cool idea, kinda breaking the rules by talking about it here, but Its a cool idea to throw out posts to the core audience. Apparently its been around for quite while Dave started in 2018.
A linter for linting kubernetes manifests and help charts.
Full reference to all of the qmk keycode list. Handy reference to refer to all of the keycodes that qmk has.
Fantastic guide to building handwried keyboards. I used this guide to build my first hand-wired macro pad.