Remove Background Web - a Hugging Face Space by Xenova
In-browser background removal
huggingface.co [1]
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.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://huggingface.co/spaces/Xenova/remove-background-web
[2]: /thoughts/
Published
All published posts
2493 posts
latest post 2026-05-11
Publishing rhythm
Check out volfpeter [1] and their project fasthx [2].
FastAPI [3] server-side rendering with built-in HTMX [4] support.
References:
[1]: https://github.com/volfpeter
[2]: https://github.com/volfpeter/fasthx
[3]: /fastapi/
[4]: /htmx/
FastHX - FastHX
volfpeter.github.io [1]
Very interesting approach to htmx [2] 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.
from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
from fasthx import Jinja
from pydantic import BaseModel
# Pydantic model of the data the example API is using.
class User(BaseModel):
first_name: str
last_name: str
# Create the app.
app = FastAPI()
# Create a FastAPI Jinja2Templates instance and use it to create a
# FastHX Jinja instance that will serve as your decorator.
jinja = Jinja(Jinja2Templates("templates"))
@app.get("/")
@jinja.page("index.html")
def index() -> None:
...
@app.get("/user-list")
@jinja.hx("user-list.html")
async...
FastHX - FastHX
volfpeter.github.io [1]
Very interesting approach to htmx [2] 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.
from fastapi import FastAPI
from fastapi.templating import Jinja2Templates
from fasthx import Jinja
from pydantic import BaseModel
# Pydantic model of the data the example API is using.
class User(BaseModel):
first_name: str
last_name: str
# Create the app.
app = FastAPI()
# Create a FastAPI Jinja2Templates instance and use it to create a
# FastHX Jinja instance that will serve as your decorator.
jinja = Jinja(Jinja2Templates("templates"))
@app.get("/")
@jinja.page("index.html")
def index() -> None:
...
@app.get("/user-list")
@jinja.hx("user-list.html")
async...
Pinout and Schematic - nice!nano
Pinout and schematic for the nice!nano
nicekeyboards.com [1]
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.
#include <dt-bindings/zmk/matrix_transform.h>
/ {
chosen {
zmk,kscan = &default_kscan;
zmk,matrix_transform = &default_transform;
/delete-property/ zephyr,console;
/delete-property/ zephyr,shell-uart;
};
default_kscan: kscan {
compatible = "zmk,kscan-gpio-matrix";
label = "default_kscan";
diode-direction = "col2row";
col-gpios
= <&gpio0 31 GPIO_ACTIVE_HIGH>
, <&gpio0 29 GPIO_ACTIVE_HIGH>
, <&gpio0 2 GPIO_ACTIVE_HIGH>
;
row-gpios
= <&gpio1 15 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 13 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
, <&gpio1 11 (GPIO_ACTIVE_HIGH | GPIO_PULL_DOWN)>
;
};
default_transform: matrix_transform {
compatible = "zmk,matrix-transform";
columns = <3>;
rows = <3>;
map = <
RC(0,0) RC(0,1) RC(0,2)
RC(1,0) RC(1,1) RC(1,2)
RC(2,0) RC(2,1) RC(2,2)
>;
};
};
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://nicekeyboard...
Iām impressed by shmux [1] from typecraft-dev [2].
the shell-script tmux management you didnāt know you needed. baby
References:
[1]: https://github.com/typecraft-dev/shmux
[2]: https://github.com/typecraft-dev
I like iximiuzās [1] project awesome-container-tinkering [2].
List of awesome tools to tinker with containers.
References:
[1]: https://github.com/iximiuz
[2]: https://github.com/iximiuz/awesome-container-tinkering
External Link
unix.stackexchange.com [1]
today I learned that /dev/pts is a pseudo-tty. It amazes me how much linux is still built around things like hardware terminals.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://unix.stackexchange.com/questions/93531/what-is-stored-in-dev-pts-files-and-can-we-open-them
[2]: /thoughts/
GitHub - svenstaro/miniserve: š For when you really just want to serve some files over HTTP right now!
š For when you really just want to serve some files over HTTP right now! - svenstaro/miniserve
GitHub Ā· github.com [1]
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.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://github.com/svenstaro/miniserve
[2]: /thoughts/
Looking for inspiration? miniserve [1] by svenstaro [2].
š For when you really just want to serve some files over HTTP right now!
References:
[1]: https://github.com/svenstaro/miniserve
[2]: https://github.com/svenstaro
pacman/Tips and tricks - ArchWiki
wiki.archlinux.org [1]
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.
pacman -Qdtq | pacman -Rns -
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://wiki.archlinux.org/title/pacman/Tips_and_tricks
[2]: /thoughts/
Inside 22,734 Steam games
About a year ago I blogged about games that use curl. In that post I listed a bunch of well-known titles I knew use curl and there was a list of 136 additional games giving credit to curl. Kind of ...
daniel.haxx.se Ā· daniel.haxx.se [1]
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.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://daniel.haxx.se/blog/2024/06/20/inside-22734-steam-games/
[2]: /thoughts/
wcurl is here
Users tell us that remembering what curl options to use when they just want to download the contents of a URL is hard. This is one often repeated reason why some users reach for wget instead of cur...
daniel.haxx.se Ā· daniel.haxx.se [1]
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.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://daniel.haxx.se/blog/2024/07/03/wcurl-is-here/
[2]: /thoughts/
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.
kubectl dash k
Kubernetes ships with a feature called kustomize that allows you to customize your manifests in a declarative way. It's a bit like helm, but easier to use. I...
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.
- wasd - move
- space - jump / a
- enter - interact / b
- x - throw
- c - inventory
- 1 - left item / rb
- 2 - open item menu / triangle
- 3 - right item / lb
I recently discovered pydantic-sqlite [1] by Phil997 [2], and itās truly impressive.
Simple package for storing pydantic BaseModels in an in-memory SQLite database.
References:
[1]: https://github.com/Phil997/pydantic-sqlite
[2]: https://github.com/Phil997
Email Address Obfuscation
Hide email addresses from bots while keeping them visible to visitors.
Cloudflare Docs Ā· developers.cloudflare.com [1]
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.
Note
This post is a thought [2]. Itās a short note that I make
about someone elseās content online...
Background Tasks - FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com [1]
fastapi [2] 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
from fastapi import BackgroundTasks, FastAPI
app = FastAPI()
def write_notification(email: str, message=""):
with open("log.txt", mode="w") as email_file:
content = f"notification for {email}: {message}"
email_file.write(content)
@app.post("/send-notification/{email}")
async def send_notification(email: str, background_tasks: BackgroundTasks):
background_tasks.add_task(write_notification, email, message="some notification")
return {"message": "Notification sent in the background"}
Note
This post is a thought [3]. Itās a short note that I make
about someone elseās content online #thoughts
References:
[1]: https://fastapi.tiangolo.com/tutorial/background-tasks/
[2]: /fastapi/
[3]: /thoughts/