Posts tagged: dev

All posts with the tag "dev"

316 posts latest post 2026-09-19
Publishing rhythm
Aug 2026 | 4 posts

FastAPI." data-hover-title="Starlette">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 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 2025 14:16:03 GMT
server: uvicorn
cache-control: no-cache, no-store, must-revalidate
content-type: image/webp
content-length: 17206
last-modified: Tue, 23 Sep 2025 14:03:20 GMT
etag: f891660c1543feb1af7564f08abdd511

❯ curl -I -L "http://localhost:8100/api/file/unknown-file.webp?width=250"
HTTP/1.1 404 Not Found
date: Wed, 22 Oct 2025 14:16:11 GMT
server: uvicorn
content-length: 27
content-type: application/json
This is super cool, thanks to Brodie for reading me this content as I do household chores. lowtech magazine 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.
Litewind Litewind is Tailwind without the build step litewindcss.com 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.
Running Software on Software You’ve Never Run I love a good look at modern practices around semantic versioning and dependency management ( Rick Hickey’s talk “Spec-ulation” is the canonical one I think… blog.jim-nielsen.com 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.
Kubernetes-Inspired Keycap Test Print
This test print features a custom keycap designed with a Kubernetes logo.

Why Make a Website in 2025

Inspired by Jim and Dave It’s Fun # 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 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 # This year I have made extra effort to add more and more people into my Reader. 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 based on these posts that I find interesting, and want to further share to…

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.

<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>
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 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 is about. https://jesseleite.com/feed
Vibe code is legacy code Code that nobody understands is tech debt blog.val.town Brilliantly said. Vibe coding 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
Explore Forgejo is a self-hosted lightweight software forge. Easy to install and low maintenance, it just does the job. Forgejo · git.dbushell.com damn david has been busy, this is sick seeing all of the repos, I’m ready to jump in!
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.
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 Gave modd a try today, and I like it, its something I am going to consider slotting right into my justfiles. Gave it a try and it seems to work really well out of the box and easy to configure.

Today I gave modd 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
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 to the…
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 · blakewatson.com 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.