FastAPI [1].">Starlette has a head request that works right along side your get requests.
This morning I fiddled around with custom routes for GET and HEAD, but had
to manually set some things about the file, and was still missing e-tag in
the end. Turns out as a developer you can just [2] add a head route to
your get routes and starlette will strip the content for you, while
preserving all of those good headers that fastapi FileResponse created
automatically for you.
from fastapi import APIRouter
from fastapi.response import FileResponse
from fastapi import Request
from pathlib import Path
router = APIRouter()
@router.get("/file/{filename}")
@router.head("/file/{filename}")
async def get_file(filename: str, request: Request,):
headers = {
"Cache-Control": "no-cache, no-store, must-revalidate",
}
from pathlib import Path
filename = Path(f"data/{filename}")
if not filename.exists():
raise HTTPException(status_code=404, detail="File not found")
return FileResponse(filename, headers=headers)
Here is an example of the response with curl.
❯ curl -I -L "http://localhost:8100/api/file/e5523925-1565-454c-bab3-c70c4deabc83.webp?width=250"
HTTP/1.1 200 OK
date: Wed, 22 Oct 202...
Posts tagged: dev
All posts with the tag "dev"
297 posts
latest post 2026-05-23
Publishing rhythm
-
This is super cool, thanks to Brodie for reading me this content as I do household chores. lowtech magazine [1] is a website ran completely on solar power with only enough battery backup to cover most days. Adding enough to cover all days would increase its carbon footprint and negate the carbon offset of the solar panels it runs on.
It’s fascinating to see a web server running completely off grid in a close power system. These interesting websites are fascinating keep em coming Brodie.
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://solar.lowtechmagazine.com/
[2]: /thoughts/
Litewind
Litewind is Tailwind without the build step
litewindcss.com [1]
This is a sick no-build version of tailwind. I have a couple of projects that the build step of tailwind is cumbersome on, mostly because they are for non-js devs. Some are for backend python devs, some are for folks that mostly want markdown with some styles. This is a perfect no-build tailwind alternative.
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://litewindcss.com/
[2]: /thoughts/
Running Software on Software You’ve Never Run
Writing about the big beautiful mess that is making things for the world wide web.
blog.jim-nielsen.com [1]
Running software applications in production today is crazy. One point release opens up for supply chain attacks. What’s crazier is not running your production applications without a lock file, potentially running dependencies you’ve never ran before for the first time in prod.
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://blog.jim-nielsen.com/2025/run-software-on-software-youve-never-run/
[2]: /thoughts/
Why Make a Website in 2025
Inspired by
Jim [1] and
Dave [2]
It’s Fun # [3]
If it’s not something that you enjoy, you might as well move on there are far
better ways to spend your time in 2025. Only the weirdos read this shit
anymore, the masses have long moved on to curated social media feeds, and on to
chatting with llms. I enjoy spending some time in the digital garden every
once in awhile tweaking templates, creating markata [4] plugins to do
interesting things. I enjoy expressing my thoughts, or at least shouting them
into the ether.
I’ll be the first to admit that I often go to an llm for first pass at many
things that I could look up in a guide or 😲 the docs.
I enjoy reading others # [5]
This year I have made extra effort to add more and more people into my
Reader [6]. I enjoy reading content from people I chose to follow and can
remove whenever I want. I enjoy reading actual human thoughts and not ai
generated content all day.
I even will create Thoughts [7] based on these posts that I find inter...
I needed to display some hover text in a web app that I am using tailwind and
jinja on. It has no js, and no build other than the tailwind. I want this to
remain simple. Turns out
that you can use a span with a title attribute to get hover text in
HTML [1].
<p>
I needed to display some hover text in a web app that I am using tailwind and
jinja on. It has no js, and no build other than the tailwind. I want this to
remain <span style='cursor: help; color:yellow;' title='respective to the
python developer I am and the team it is used for'>simple</span>.
</p>
References:
[1]: /html/
A New Chapter
In a recent turn of events, I find myself at a bit of a crossroads with an exciting new job on the horizon! In this post, I introduce myself and discuss my vision for the new blog.
Jesse Leite · jesseleite.com [1]
Sub to this man. I met Jesse long ago as we both spoke at the same remote vim conf. He is into vim, weird keyboards, and medroid what more could you ask for. Now react and exlixer. I only know https://statamic.com/ through Jesse, they have the sickest branding ever. Now I will need to see what this savvycal [2] is about.
https://jesseleite.com/feed
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://jesseleite.com/2025/a-new-chapter
[2]: https://x.com/savvycal
[3]: /thoughts/
Vibe code is legacy code
Code that nobody understands is tech debt
blog.val.town [1]
Brilliantly said. Vibe coding [2] is legacy code. It’s code that we forget exists. Code that no one touches, you replace it. If you touch it you are more likely to break it.
The worst possible situation is to have a non-programmer vibe code a large project that they intend to maintain. This would be the equivalent of giving a credit card to a child without first explaining the concept of debt.
As you can imagine, the first phase is ecstatic. I can wave this little piece of plastic in stores and take whatever I want! …
Read more in the full post [1]
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://blog.val.town/vibe-code
[2]: /vibe-coding/
[3]: /thoughts/
Let's Make Sure Github Doesn't Become the only Option - Edward Loveall
blog.edwardloveall.com [1]
This post is a masterclass in blogging, cross linking, backing up your ideas with posts from other great sources. I have a week of reading inside this post, and need to come back later when Im not sick.
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://blog.edwardloveall.com/lets-make-sure-github-doesnt-become-the-only-option
[2]: /thoughts/
Explore
Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job.
Forgejo · git.dbushell.com [1]
damn david has been busy, this is sick seeing all of the repos, I’m ready to jump in!
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://git.dbushell.com/explore/repos
[2]: /thoughts/
Eric (@[email protected])
This was pushed out with a rushed security review, a coerced and unwilling engineering team, and in full opposition to our supposed company values.
If you don't want it, tell them. Social media …
Mastodon · social.ericwbailey.website [1]
damn, M$ really pushing hard on moving github into the ai org.
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://social.ericwbailey.website/@eric/115100947111974331
[2]: /thoughts/
-
This man feels sad, he never had a chance to bloom. He was stuck behind the drudgery of jira tickets. This is what the consultant driven agile has got us. Its ripped out all the thinking and creativity, its left us with moving tickets across the board, not allowed time to run on an idea when we have one. Not allowed to do extra work or refactoring in a module that we are already in. pushed to move faster for less.
I feel like this mans experience has been quite different from my own and I’m grateful to have some leeway to be creative and do some meaningful work outside the jira board. I’m grateful to be able to provide a good income for my family without taking on all the risk myself.
Note
This post is a thought [1]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /thoughts/
GitHub - cortesi/modd: A flexible developer tool that runs processes and responds to filesystem changes
A flexible developer tool that runs processes and responds to filesystem changes - cortesi/modd
GitHub · github.com [1]
Gave modd a try today, and I like it, its something I am going to consider slotting right into my justfiles [2]. Gave it a try and it seems to work really well out of the box and easy to configure.
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://github.com/cortesi/modd
[2]: https://github.com/casey/just
[3]: /thoughts/
Today I gave modd [1] a try, and it seems like a
good file watcher executor. I tried using libnotify to send desktop
notifications, but all I got was modd, I might not have notifications setup
right on the awesomewm machine.
config goes in modd.conf
**/*.py {
# check formatting via ruff
prep: ruff format --check .
# check docstring formatting
prep: pydocstyle .
#
# # check type hints via ty
prep: ty check .
#
# # run linter via ruff
prep: ruff check .
}
I installed it using installer from jpillora, pulling pre-built binaries right
out of the github repo.
curl https://i.jpillora.com/cortesi/modd | bash
Then you can install it, and on file change it will run the commands you
configured.
modd
References:
[1]: https://github.com/cortesi/modd
-
Damn, social media is at an all time low. I’ve felt all of these issues and when I got a new phone I started fresh, I didn’t install one social media app. Luckily Youtube has remained solid for me. Yes shorts are a bit less what I came for and more addicting content they had to do in order to keep up. There are some legit good commedians, a bit of good knowledge and a bunch of trash that is hard to look away from on shorts. I still find myself able to find content I enjoy and signed up for on YouTube. I feel like I get a one way relationship with someone similar to a TV show or news anchor of old media.
Social Media has morphed from follows likes and similar, to viral posts by creators I don’t recognize. posting and immediately getting like by two hot women with accounts created this week. The rest of the real creators left on there are stuck trying to keep up, echo viral trends, trying to keep up the content treadmill. A few come through, but most feel somewhat forced. A lot of it is ai generated, and whats not mostly doesn’t feel that human anyways.
The people on here seem to really tie the internet to social media and are ready to quit the internet. I think there is more...
A More Human Internet
An idea for a post that may never happen
[1]
The most under hyped, under engineered text editor overtype. Going to be popping this into some places like Thoughts [2], and maybe more, looks small and easy to use. Gives just a bit of nice features over a text editor.
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: /static/https://overtype.dev/?utm_source=waylonwalker.com
[2]: /thoughts/
Digitized Signatures
signature.cnrad.dev [1]
seriously cool dumb app that no one asked for but is really creative and unique.
[2]
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://signature.cnrad.dev/
[2]: https://dropper.waylonwalker.com/api/file/c87fdbe3-26f2-4f14-b4fb-7dc9b231e999.png
[3]: /thoughts/
blakewatson.com turns 20 - blakewatson.com
I bought this domain as a college student using a friend’s credit card. Twenty years later, it’s one of the best decisions I've ever made.
blakewatson.com [1]
20 years is a long time to work on something, congrats Blake! So many great links to small web creators, why, and how to build your own site.
As algos turn to shit the small web remains a space that cannot be ruined. There will always be rss feeds from real humans writing for other humans.
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://blakewatson.com/journal/blakewatson-com-turns-twenty/
[2]: /thoughts/