External Link
X (formerly Twitter) · twitter.com [1]
I’m going to give this trick a shot on my sites, and see how I like it.
* {
min-width: 0
}
Down in the comments @adamwathan [2] goes on to say.
Basically every layout overflow bug ever boils down to some flex or grid child needing min-width: 0 😄
Oh and @ryanflorence [3] also says in the comments.
I … do this.
Note
This post is a thought [4]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://twitter.com/adamwathan/status/1734696245015494711
[2]: https://twitter.com/adamwathan/
[3]: https://twitter.com/ryanflorence
[4]: /thoughts/
Posts tagged: dev
All posts with the tag "dev"
291 posts
latest post 2026-05-09
Publishing rhythm
Path Operation Advanced Configuration - FastAPI
FastAPI framework, high performance, easy to learn, fast to code, ready for production
fastapi.tiangolo.com [1]
Excluding routes from fastapi docs, can be done from the route configuration using `include_in_schema`. This is handy for routes that are not really api based or duplicates.
From the Docs # [2]
from fastapi import FastAPI
app = FastAPI()
@app.get("/items/", include_in_schema=False)
async def read_items():
return [{"item_id": "Foo"}]
trailing slash # [3]
I’ve had better luck just routing both naked and trailing slash routes in fastapi [4]. I’ve had api’s deployed as a subroute to a site rather than a subdomain, and the automatic redirect betweens them tended to always get messed up. This is pretty easy fix for the pain is causes just give vim a yyp, and if you don’t want deuplicates in your docs, ignore one.
from fastapi import FastAPI
app = FastAPI()
@app.get("/items")
@app.get("/items/", include_in_schema=False)
async def read_items():
return [{"item_id": "Foo"}]
favicon.ico # [5]
Now you do not need to deploy favicons to your api in any way, it is nice to have it in your browser tab, but more importantly ...
Protect API docs behind authentication? · Issue #364 · fastapi/fastapi
Basic Question Does FastAPI provide a method for implementing authentication middleware or similar on the docs themselves (e.g. to protect access to /docs and /redoc)? Additional context My company...
GitHub · github.com [1]
You can protect your fastapi [2] docs behind auth so that not only can certain roles not run certain routes, but they cannot even see the docs at all. This way no one that shouldn’t be poking around can even discover routes they shouldn’t be using.
Here is the soluteion provided by @kennylajara [3]
from fastapi import FastAPI
from fastapi.openapi.docs import get_redoc_html, get_swagger_ui_html
from fastapi.openapi.utils import get_openapi
import secrets
from fastapi import Depends, FastAPI, HTTPException, status
from fastapi.security import HTTPBasic, HTTPBasicCredentials
app = FastAPI(
title="FastAPI",
version="0.1.0",
docs_url=None,
redoc_url=None,
openapi_url = None,
)
security = HTTPBasic()
def get_current_username(credentials: HTTPBasicCredentials = Depends(security)):
correct_username = secrets.compare_digest(credentials.username, "user")
correct_password = secrets...
Cancel subscriptions
Cancel subscriptions immediately or at the end of the subscription period with proration options, invoice handling, and automatic cancellation after failed payment attempts.
stripe.com [1]
This is a handy guide to cancelling stripe subscriptions.
# Set your secret key. Remember to switch to your live secret key in production.
# See your keys here: https://dashboard.stripe.com/apikeys
import stripe
stripe.api_key = "sk_test_51ODvHtB26msLKqCAPBAo1qkBBuIfT5tQBX6YFWCLMsPixIExxITCRVa9tNCIqkdQS8olhR79NYXsFWBPKsM3LbGO00zEcNQfNI"
stripe.Subscription.modify(
"sub_49ty4767H20z6a",
cancel_at_period_end=True,
)
You can even inverse it by flipping True to False and re activate the subscription.
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://stripe.com/docs/billing/subscriptions/cancel#canceling
[2]: /thoughts/
External Link
stripe.com [1]
You can find your customers next billing date through the stripe api by using Invoice. and passing in customer, customer_details, subscription, or schedule.
import stripe
stripe.api_key = "sk_test_51ODvHtB26msLKqCAPBAo1qkBBuIfT5tQBX6YFWCLMsPixIExxITCRVa9tNCIqkdQS8olhR79NYXsFWBPKsM3LbGO00zEcNQfNI"
invoice = stripe.Invoice.upcoming(customer="cus_NeZwdNtLEOXuvB")
Within the invoice, you can find the next_payment_attempt as a epoch.
date = datetime.fromtimestamp(invoice.next_payment_attempt)
amount = invoice.amount_due
currency = invoice.currency
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://stripe.com/docs/api/invoices/upcoming
[2]: /thoughts/
Search
Use the search APIs to look up and retrieve objects in your Stripe data. Using search is a faster alternative to paginating through all resources.
stripe.com [1]
Stripe has it’s own query language for querying data. I’m just getting into using it and it seems pretty good so far. I needed to lookup the price for products. I was able to find prices for my product using the python api as shown below.
stripe.Price.search(query="active: 'true' and product: 'prod_P8SfwtxJ45cWE2'")
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://stripe.com/docs/search#search-query-language
[2]: /thoughts/
stripe-keys-and-ids.tsv [1]
tsv
Prefix Description Notes
ac_ Platform Client ID Identifier for an auth code/client id.
acct_ Account ID Identifier for an Account object.
aliacc_ Alipay Account ID Identifier for an Alipay account.
ba_ Bank Account ID Identifier for a Bank Account object.
btok_ Bank Token ID Identifier for a Bank Token object.
card_ Card ID Identifier for a Card object.
cbtxn_ Customer Balance Transaction ID Identifier for a Customer Balance Transaction object.
ch_ Charge ID Identifier for a Charge object.
cn_ Credit Note ID Identifier for a Credit Note object.
cs_live_ Live Checkout Session ID Identifier for a checkout Session object in live mode.
cs_test_ Test Checkout Session ID Identifier for a checkout Session object in test mode.
cus_ Customer ID Identifier for a Customer object.
dp_ Dispute ID Identifier for a Dispute object.
evt_ Event ID Identifier for an Event object.
fee_ Application Fee ID Identifier for an Application Fee object.
file_ File ID Identifier for a File object.
fr_ Application Fee Refund ID Identifier for an Application Fee Refund object.
iauth_ Issuing Authorization ID Identifier for an Issuing Authorization object.
ic_ Issuing Card ID ...
Looking for a Heroku replacement, What I found was shocking!
Your browser does not support the audio element.
I’ve long hosted my personal blog as a static site on waylonwalker.com. It’s
all markdown, converted to html [1], and shipped as is. It’s been great, I’ve
moved it from GitHub Pages, to Netlify, tried Vercel for a minute, and have
landed on Cloudflare Pages. Each migration has not really been that
hard, it’s just pointing ci to a different host after the site has built.
[2]
What about server side # [3]
Now the part that I have struggled with is how to cheaply host a server
rendered application that can just live on forever without me paying for it.
This is a harder problem as it costs more to keep servers spinning, memory, and
disk all ready for you to use at a moments notice.
Honestly # [4]
I never really deployed anything that useful on heroku, but it seems like the
klenex of the bunch that’s why they are in the title. I’ve moved between
digital ocean and fly.io, and have had some great experiences with both. I
just don’t want...
[1]
I’ve been using tailwind for a few months now and I can still say I’m loving
it. I’ve been using it to create some rapid prototypes that may or may not
ever become something, a document that is likely to go to print (a resume), and some quick
dashboards.
I started using Tailwind a few month back # [2]
A few months back in september of 2023 I made a case for
tailwindcss [3]. And have been
using it on quite a few projects since.
- values are well thought out
- it’s really easy to use
- classes that make sense
- tree shakable
fokais.com # [4]
I started working on fokais.com only a few weeks ago, It’s going to be a SAS to
make blogging easier. I’ve started hosting some tools for this blog that I
really like that I think I can turn into a service. It’s been fantastic to
quickly pump out new pages with tailwind.
[5]
HTMX # [7]
tailwind and htmx are a match made in heaven. They both really lean on
Location of Behavior over Separation of concerns. They do really well at
making small components that you can throw on and endpoint and stack into any
page. With tailwind I just configure it to look at all my templates, and I can
guarantee that the styles will be in app.css, ...
External Link
stackoverflow.com [1]
Get those print colors exact
body{
-webkit-print-color-adjust:exact !important;
print-color-adjust:exact !important;
}
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://stackoverflow.com/questions/3893986/css-media-print-issues-with-background-color#answer-14784655
[2]: /thoughts/
page-break-after CSS property - CSS | MDN
The page-break-after CSS property adjusts page breaks after the current element.
MDN Web Docs · developer.mozilla.org [1]
I’m working on something that might go to print, so I want the page breaks to happen somewhat in my control as the content author. As I do my writing I break my content up in to many short sections using h2, sometimes an h3. These are generally short sections that go together, should stay together, and typically are not too lengthy to cause a large white space in print.
I found a way in css to only allow page breaks to happen on h2 and h3, and it turned out perfect, suck it WSIWIG editors
* {
page-break-before: avoid;
}
h2,
h3 {
page-break-before: auto;
}
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://developer.mozilla.org/en-US/docs/Web/CSS/page-break-after
[2]: /thoughts/
How to Build a Website or App - Syntax #696
This podcast episode covers a wide range of topics related to building a website or web application from start to finish.
syntax.fm [1]
Great tips in this one. They discuss everything from front end to backend, databases and ORMS, here are a few of my favorite points.
- Use good data or good fake data
- make it have some variation like long and short text
- Don’t use a database if you need one, static content is eaiser to manage
- end to end test, (does the site load page x)
- You DONT NEED all this complexity, you can deploy a site with HTML [2] and CSS.
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://syntax.fm/show/696/how-to-build-a-website-or-app
[2]: /html/
[3]: /thoughts/
External Link
X (formerly Twitter) · twitter.com [1]
Fastapi [2] passes flask in GitHub stars!
[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://twitter.com/tiangolo/status/1729153717956715007
[2]: /fastapi/
[3]: /thoughts/
-
Nice take by @t3dotgg [1]. Some of the old patterns that go deep into webdev, MVC, separation of concerns, REST, are things we are told to believe on day one, thrown so many things, no mental bandwidth, or experience to form our own opinions we must take them as fact. Rarely do we take these facts and revisit them with our new understandings years later.
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://twitter.com/t3dotgg
[2]: /thoughts/
Heroicons
Beautiful hand-crafted SVG icons, by the makers of Tailwind CSS.
Heroicons · heroicons.com [1]
heroicons is a really nice set of many of the basic icons that you will need for building nice ui’s. They have a really nice copy as svg or jsx button, so that you can just yank it and paste it on your page without any extra packages or installation.
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://heroicons.com/
[2]: /thoughts/
External Link
X (formerly Twitter) · twitter.com [1]
Wes has some of the coolest OG [2] images i’ve ever seen. Here he talks about how to enable cache configuration so that its constantly updating the cache without the user waiting for the image to be created.
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://twitter.com/wesbos/status/1717923624559005977
[2]: /og/
[3]: /thoughts/
htmx ~ Locality of Behaviour (LoB)
Carson Gross explores the Locality of Behaviour (LoB) principle, which emphasizes making the behavior of code units obvious on inspection to enhance maintainability. He discusses the tradeoffs betw...
htmx.org [1]
Interesting principle here. What a great example, If I’m looking at the second jQuery example, I have to dig into dev tools or make some assumtions that this team uses jQuery, and selects by id, therefore I can grep for $("#d1").
Consider two different implementations of an AJAX request in HTML [2], the first in htmx [3]:
<button hx-get="/clicked">Click Me</button>
> and the second in jQuery:
``` js
$("#d1").on("click", function(){
$.ajax({
/* AJAX options... */
});
});
<button id="d1">Click Me</button>
Note
This post is a thought [4]. It’s a short note that I make
about someone else’s content online #thoughts
References:
[1]: https://htmx.org/essays/locality-of-behaviour/
[2]: /html/
[3]: /htmx/
[4]: /thoughts/
GitHub - casey/just: 🤖 Just a command runner
🤖 Just a command runner. Contribute to casey/just development by creating an account on GitHub.
GitHub · github.com [1]
I think just, might just be the thing I have been looking for. I’ve been looking for some ci/cd that I can host myself, but everything looks pretty big, so for now I am going to use just as my task runner.
I installed with installer.
curl https://i.wayl.one/casey/just | bash
I set up my devtainer builds with just. Here is my justfile, yes you just need the cli and a file named justfile.
default: base alpine slim
base: build deploy
alpine: build-alpine deploy-alpine
slim: build-slim deploy-slim
build:
podman build -t registry.wayl.one/devtainer:latest .
deploy:
podman push registry.wayl.one/devtainer
build-alpine:
podman build -f docker/Dockerfile.alpine -t registry.wayl.one/devtainer:alpine .
deploy-alpine:
podman push registry.wayl.one/devtainer:alpine
build-slim:
podman build -f docker/Dockerfile.slim -t registry.wayl.one/devtainer:slim .
deploy-slim:
podman push registry.wayl.one/devtainer:slim
Note
This post is a thought [2]. It’s a short note that I make
about someone else’s content online #thou...
-
Tailwind comes with space that I have never heard of that is made to give margin and padding together in one class. Adam dropped it here in the Tailwind Connect conference.
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/
Litestar: Effortlessly Build Performant APIs
We all know about Flask and Django. And of course FastAPI made a huge splash when it came on the scene a few years ago. But new web frameworks are being created all the time. And they have these ea...
talkpython.fm [1]
Litestar is an interesting api framework similar to fastpi, that I am interested to check out to see if it fits into some project scope. It sounds like it comes with a lot more batteries included for things like auth, but does not have hard opinions like django. At this point I’m not jumping off of fastapi [2], but its something I want to try.
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://talkpython.fm/episodes/show/433/litestar-effortlessly-build-performant-apis
[2]: /fastapi/
[3]: /thoughts/