Own Your Web
Own Your Web is a newsletter by Matthias Ott about designing, building, creating, and publishing for and on the Web. Every other week, I send out an exclusive email full of actionable insights, bes...
buttondown.com [1]
I’m a sucker for good own your own shit on the web blogs, and Matthias Ott has a top notch one here. The archive has been a great read so far, I’ve discovered things like slashpages.net.
References:
[1]: https://buttondown.com/ownyourweb
Posts tagged: dev
All posts with the tag "dev"
308 posts
latest post 2026-07-21
Publishing rhythm
slash pages
A guide to common pages you can add to your website
slashpages.net [1]
A nice list of slashpages you might want to consider including / aliasing / 301ing. These feel like nice things to setup and keep in the back pocket for obsidian style wiki link to easily. I get kinda bad at wiki-linking as much as I would like to, mostly because it does require some amount of work to make the page, and keep it up to date over time, then remember that you even have it.
Some are serious, some very common, some quite useful.
[2]
References:
[1]: https://slashpages.net/
[2]: https://dropper.waylonwalker.com/api/file/ba4edf27-03d4-49ff-ab4e-712e9ab8acda.webp
/colophon
Colophon [1] a page that describes how the site
is made, with what tools, supporting what technologies
Author # [2]
[3]
All posts on this site are written by Waylon
Walker [4], the typical content has changed and evolved
over time. I go back and make a few corrections, but for the most part things
stay pretty much as they were published originally.
see more in Waylon Walker [5]
tech # [6]
This site is a static site build with my own static site generator markata [7], Thoughts [8] or as Simon Willison calls it a link
blog [9] posts
are pulled in as a regular posts, all is hosted on cloudflare pages.
- markata [7]
- Thoughts [8]
- cloudflare pages
see more about these components in about this site [10]
Analytics # [11]
I do not track users, I respect the privacy of my readers and do not track
their information. I do track analytics [12] on my own writing a post rate.
Its more of an interesting history of the site.
meta # [13]
Some evergreen pages that are more about me ...
-
Theo does a fantastic history of serverless here.
Kubernetes shit # [1]
Theo can’t have an infra video without shitting on k8s. Specifically people who have never touched k8s pushing fear of k8s to large audiences of people who have never touched k8s. If you are a webdev who solely lives in webdev space and never touches as much as a dockerfile listen to him. If you touch infra at all try it before you take his opinion at face value.
[2]
Serverless shines in high variance # [3]
If you plan on having traffic spikes 10x your regular traffic for something like black friday, serverless might be right for your use case.
stateless programming # [4]
He argues that targeting a stateless deployment of serverless leads to better code. I’d like to see more examples here. Maybe most of the code bases I work on already do this. I’ve never targeted a serverless deployment, but I’ve targeted horizontally scaled deployments many times and they feel like they have the same targets. For instance if I spin up 8 pods for my application or uvicorn with 3 workers I have to target statelessness, all of the state must live in the database and cannot live in memory. Even if I target 1 instanc...
-
Lane from boot.dev madde this fantastic video about serving files on the internet. It has me wondering if I need to rethink a few of my things that I have built. I have a few things I am serving media from, but I have very aggressive cloudflare cache rules on them, so each file should only be uploaded about once per year.
My problem going straight out of minio right now is how do i set headers for cache control on it. If I can’t set the cache control and everything is coming out of minio this does not solve my problems.
---
I went back and played with presigned urls and you can in fact control and set response headers, this is definitely the way and I have been wrong.
The beautiful sentence that is the web
A metaphor for the building blocks of web development.
cassidoo.co [1]
Nicely worded Cassidy! Javascript can be too much, it can bog down low powered devices, we can ship so much that its untenable on poor connections. It can be argued that its a bad language and putting it on the server is a mistake, but it brings sites to life. It makes it possible to extend the static nature of html [2]/css with just a little special spice only your site needs.
I’d add to the argument that a lot of js should go away over time. Over time libraries such as jquery have fallen out of use, not because they are bad, or have been replaced by new libraries, but because the browser has adopted most of the functionality that jquery brought.
As a primarily python dev I’d really like to see htmx [3] die a very similar graceful death. There have been several iterations on this idea, and the crux of it is very similar, give the ability to use HTTP verbs right inside html with some instruction of when to apply them and what to apply them to.
No js should not go away, it never will, we will always find new patterns that the browser should take, sites will always n...
External Link
stackoverflow.com [1]
Today I learned how to configure the baseurl for htmx [2] using the tag. This is pretty handy to be able to configure different baseurls.
<base href="<scheme>://<netloc>/api/v1/">
<button hx-post="clicked"
hx-trigger="click"
hx-target="#parent-div"
hx-swap="outerHTML">
Click Me!
</button>
References:
[1]: https://stackoverflow.com/questions/69456875/how-to-configure-base-url-for-all-requests-using-htmx
[2]: /htmx/
Addy Osmani (@addyosmani.bsky.social)
Tip: Chrome DevTools can override the content of Fetch/XHR requests! Useful for mocking APIs without waiting on backend changes.
Bluesky Social · bsky.app [1]
WTF, you can just change a server response from devtools and update a vuejs app? Just tried with htmx [2], and my GET requests are not showing up in the sources tab. I’ll keep this in my back pocket for next time I’m supporting a vuejs app though.
References:
[1]: https://bsky.app/profile/addyosmani.bsky.social/post/3lei5jhkgdk2k
[2]: /htmx/
-
Great list of 4 tips for running fastapi applications.
Keep routes small # [2]
Fat routers with all of the logic built in makes them hard to test, hard to refactor, causes lots of duplication, and makes it hard to reuse the business logic code later in something like a cli application.
Deploy Early # [3]
I really like this advice! He reccommends deploying as early as you can get a healthcheck live in your application. I’ve found too many times developers build something that is really hard, or impossible to deploy, when if they had tried to deploy early they would have spotted some easy to fix issues. This is less important if you are building out of a template that your team commonly deploys from, but very important with new patterns.
https://youtu.be/XlnmN4BfCxw?si=ks1wvmgDyoQLgrv2&t=1093 [4]
References:
[1]: /fastapi/
[2]: #keep-routes-small
[3]: #deploy-early
[4]: https://youtu.be/XlnmN4BfCxw?si=ks1wvmgDyoQLgrv2&t=1093
-
This was an eye opening video into agentic editing workflows.
setting rules # [1]
Dfferent ai tools use different rules files, windsurf uses .windsurfrules.
[2]
testing out rules # [3]
Test out your rules file by having it say something at the beginning of the output to verify that the rules are being applied correctly.
[4]
First line # [5]
He suggests to use this key rule for debugging purposes, otherwise you are guessing to what rules if any it is following.
Every time you choose to apply a rule(s), explicitly state the rule(s) in the output. You can abbreviate the rule description to a single word or phrase.
References:
[1]: #setting-rules
[2]: https://dropper.waylonwalker.com/api/file/f75bf439-919f-4c19-8695-176ca8a7d52d.webp
[3]: #testing-out-rules
[4]: https://dropper.waylonwalker.com/api/file/ebeed79c-435b-4aab-b3dc-c744b144c438.webp
[5]: #first-line
-
This is a pretty great episode talking shop with typecraft. They talk setups, cameras, content creation. I found them talking about their linux setups particularly interesting. Dax talked about his flow from building his own machines to using reliablesite.com.
tmux default leader # [1]
Dax hates on c-a, both typecraft and dax use c-s, which normally freezes a terminal, we can all agree that is useless. I use the default c-b, it seems fine for me.
type crafts setup # [2]
- Ubuntu
- Ghosty
- Tmux
- Nvim
- Ruby
Selling coffee without a web front end # [3]
Dax talks about terminal.shop and how they originally planned to have a web front end, but after they had so much success they stuck with it. now they are leaning harder into it and are building out integrations with a bunch of languages and an api, but no front end.
References:
[1]: #tmux-default-leader
[2]: #type-crafts-setup
[3]: #selling-coffee-without-a-web-front-end
thoughts 0.0.4
This is such an improvement to the backend of my website it warrants a blog
post of celebration. For far too long I’ve been dealing with a tiny ass edit
form on thoughts. I tend to not edit them, and try to get them right in one
go. This is kinda the point of a thought, its a quick post meant to be the
size of a tweet, but sometimes I’m leaving thoughts on a video or long post and
want to make sure I have a good save point, but I just keep the thing in draft
and hope I don’t loose if for far too long.
Results # [1]
Let’s see this change in action!!
before # [2]
This is the tiny ass form nested deeply in the flow of the feed. When I made
it I naively just swapped out the post itself with the edit form, and swapped
the post back in after edit.
[3]
thoughts is built with HTMX [4] btw so all html [5] is rendered in the backend and swapped by htmx client side.
after # [6]
Now the edit is a full page modal with a nice blurry backdrop effect to the
rest of the content. This feels p...
-
Reminder to tune in later, can’t watch now, but saw a link on Dave’s blog.
[1]
References:
[1]: https://dropper.waylonwalker.com/api/file/ea6d4a9f-9abe-4853-9b5b-97335130d221.webp
Today i got hit by this accessibility issue on my site. Low contrast links are not distiniquishable. I had not seen this error title before it was new to me, maybe I have bad memory or maybe it’s new to me.
I ended up dropping the background color of the site down a notch as I didn’t
really care for the semi-dark brown anyways. I’m liking the near black
bg-zinc-950 much better now.
Now I got that 100 A11y score in lighthouse.
Add a healthcheck to your FastAPI app | Nic Payne
I'm building a few FastAPI apps to throw in docker and run on my homelab... I wanted to add healthchecks and here's a simple way to do it Make sure to
pype.dev [1]
Nice example of adding a healthcheck to fastapi [2], and integrating it with docker. Don’t forget to include curl in the install, nice touch.
References:
[1]: https://pype.dev/add-a-healthcheck-to-your-fastapi-app
[2]: /fastapi/
Hurl - Run and Test HTTP Requests
Hurl, run and test HTTP requests with plain text and curl. Hurl can run fast automated integration tests.
hurl.dev [1]
Hurl was mentioned by @gerhard [2] on the latest changelog and Friends [3]. Looks like a feature rich easy to use testing tool that is tested via what looks like a config file.
Hurl is a command line tool that runs HTTP requests defined in a simple plain text format.
It can chain requests, capture values and evaluate queries on headers and body response. Hurl is very versatile: it can be used for both fetching data and testing HTTP sessions.
Hurl makes it easy to work with HTML [4] content, REST / SOAP / GraphQL APIs, or any other XML / JSON based APIs.
References:
[1]: https://hurl.dev/
[2]: https://gerhard.io/
[3]: https://www.youtube.com/watch?v=mvC7497CJJs&t=3001s
[4]: /html/
Wes Bos (@wesbos) on X
CSS Anchors: flip a tooltip to the bottom when it goes offscreen
X (formerly Twitter) · x.com [1]
These css anchors are crazy that you can do this with html [2] and not a bunch of js, probably requiring a library or framework.
[3]
References:
[1]: https://x.com/wesbos/status/1856724739336859713
[2]: /html/
[3]: https://x.com/i/status/1856724739336859713
Alternatives to Using Pure Black (#000000) for Text and Backgrounds
In order to achieve maximum contrast in design, interface designers often use a combination of pure black and white colors, which helps…
Medium · uxplanet.org [1]
A nice set of blacks to use in web design. Subtle variants off of black or white like this can really make your design look nice and modern.
References:
[1]: https://uxplanet.org/alternatives-to-using-pure-black-000000-for-text-and-backgrounds-54ef0e733cdb
Wes Bos (@wesbos) on X
Are you using position: absolute; to overlap elements?
It's almost always better to Use CSS Grid instead!
X (formerly Twitter) · x.com [1]
This is a pretty incredible use of css grid to overlay items overtop of each other without needing to resort to position: absolute and the side effects that it brings.
.wrap {
display: grid;
& > * {
grid-row: 1;
grid-column: 1;
}
}
References:
[1]: https://x.com/wesbos/status/1834242925401694490
A slug is the part of the url that comes after the domain. Commonly matches the file name of a markdown file many blogging systems. These are typically human readable, unique identifiers for pages within the site.