encodeURIComponent() - JavaScript | MDN
The encodeURIComponent() function encodes a URI by replacing each instance of certain characters by one, two, three, or four escape sequences representing the UTF-8 encoding of the character (will ...
MDN Web Docs · developer.mozilla.org [1]
In order to send data that includes special characters such as / in a url you need to url encode it. You have probably seen these many times in urls with things like %20 for spaces.
I’m working on a chrome extension to make quick blog posts, like thoughts or a persistent bookmark tool with comments. The backend is written in fastapi [2] and when I check to see if I have a post for a page I need to url encode it.
curl -X 'GET' \
'https://thoughts.waylonwalker.com/link/?link=https%3A%2F%2Fhtmx.org%2Fextensions%2Fclient-side-templates%2F' \
-H 'accept: application/json'
curl example generated from the fastapi swagger docs.
Here is how I used javascript’s encodeURIComponent to turn my chrome extension into a notification when I already have a post for the current page.
// Event listener for tab changes
chrome.tabs.onActivated.addListener(function (activeInfo) {
// Get the active tab information
...
Today I Learned
Short TIL posts
1852 posts
latest post 2026-05-13
Publishing rhythm
🛠️ Installation | LazyVim
You can find a starter template for LazyVim here
lazyvim.org [1]
Lately in 2023 I have been leaning on lazyvim for my new setups where I am not necessarily ready to drop my full config. It’s been pretty solid, and comes with a very nice setup out of the box, the docs are pretty fantastic as well.
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://www.lazyvim.org/installation
[2]: /thoughts/
-
Prime reviews an article with some hot takes about python being slow and quirky, but good enough for a lot of things. Especially data applications that have libraries written in C.
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/
External Link
X (formerly Twitter) · twitter.com [1]
Such an inspiring clip from Kelsey Heightower. Make good shit that inspires people rather than fake ppts of how things could be.
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/changelog/status/1681306857951084544
[2]: /thoughts/
External Link
X (formerly Twitter) · twitter.com [1]
Next time I’m working with large headers on small screens I need to try this. I always truggle to get them to look good for most text and overflow ridiculously long words correctly or at all.
text-wrap: pretty;
text-wrap: balance
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/chriscoyier/status/1681407724993798144
[2]: /thoughts/
Full-text search - Datasette documentation
docs.datasette.io [1]
Enable full-text search in sqlite using sqlite-utils.
$ sqlite-utils enable-fts mydatabase.db items name description
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://docs.datasette.io/en/latest/full_text_search.html#enabling-full-text-search-for-a-sqlite-table
[2]: /thoughts/
sqlite-utils command-line tool - sqlite-utils
sqlite-utils.datasette.io [1]
I want to like jq, but I think Simon is selling me on sqlite, maybe its just me but this looks readable, hackable, editable, memorizable. Everytime I try jq, and its 5 minutes fussing with it just to get the most basic thing to work. I know enough sql out of the gate to make this work off the top of my head
curl https://thoughts.waylonwalker.com/posts/ | sqlite-utils memory - 'select title, message from stdin where stdin.tags like "%python%"' | jq
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://sqlite-utils.datasette.io/en/stable/cli.html#querying-data-directly-using-an-in-memory-database
[2]: /thoughts/
sqlite-utils command-line tool - sqlite-utils
sqlite-utils.datasette.io [1]
insert a json array directly into into sqlite with sqlite-utils.
echo '{"name": "Cleo", "age": 4}' | sqlite-utils insert dogs.db dogs -
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://sqlite-utils.datasette.io/en/stable/cli.html#inserting-json-data
[2]: /thoughts/
LZone
LZone - Cheat Sheets for Sysadmin / DevOps / System Architecture
lzone.de [1]
A nice cheat sheet for jq. jq looks so nice, but it so quickly gets overwhelming on how to select what you want. I was able to make a jq contains query.
curl https://thoughts.waylonwalker.com/posts/ | jq '.[] | select(.title | contains("python"))'
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://lzone.de/cheat-sheet/jq
[2]: /thoughts/
Looking for inspiration? sqlite-migrate [1] by simonw [2].
A simple database migration system for SQLite, based on sqlite-utils
References:
[1]: https://github.com/simonw/sqlite-migrate
[2]: https://github.com/simonw
The work on textual-paint [1] by 1j01 [2].
🎨 MS Paint in your terminal.
References:
[1]: https://github.com/1j01/textual-paint
[2]: https://github.com/1j01
Check out wsrepl [1] by doyensec [2]. It’s a well-crafted project with great potential.
WebSocket REPL for pentesters
References:
[1]: https://github.com/doyensec/wsrepl
[2]: https://github.com/doyensec
If you’re into interesting projects, don’t miss out on llm.nvim [1], created by huggingface [2].
LLM powered development for Neovim
References:
[1]: https://github.com/huggingface/llm.nvim
[2]: https://github.com/huggingface
I like maces’s [1] project fastapi-htmx [2].
Extension for FastAPI [3] to make HTMX [4] easier to use.
References:
[1]: https://github.com/maces
[2]: https://github.com/maces/fastapi-htmx
[3]: /fastapi/
[4]: /htmx/
The work on interpreters [1] by ericsnowcurrently [2].
a placeholder
References:
[1]: https://github.com/ericsnowcurrently/interpreters
[2]: https://github.com/ericsnowcurrently
Check out coolify [1] by coollabsio [2]. It’s a well-crafted project with great potential.
An open-source & self-hostable Heroku / Netlify / Vercel alternative.
References:
[1]: https://github.com/coollabsio/coolify
[2]: https://github.com/coollabsio
The next version of markata will be around a full second faster at building
it’s docs, that’s a 30% bump in performance at the current state. This
performance will come when virtual environments are stored in the same
directory as the source code.
[1]
What happened?? # [2]
I was looking through my profiler for some unexpected performance hits, and
noticed that the docs plugin was taking nearly a full second (sometimes
more), just to run glob.
| |- 1.068 glob markata/plugins/docs.py:40
| | |- 0.838 <listcomp> markata/plugins/docs.py:82
| | | `- 0.817 PathSpec.match_file pathspec/pathspec.py:165
| | | [14 frames hidden] pathspec, <built-in>, <string>
Python scandir ignores hidden directories # [3]
I started looking for different solutions and what I found was that I was
hitting pathspec with way more files than I needed to.
len(list(Path().glob("**/*.py")))
# 6444
len([Path(f) for f in glob.glob("**/*.py", recursive=True)])
# 110
After digging into the docs I found that glob.glob uses os.scandir which
ignores ‘.’ and ‘..’ directories while Path.glob does not.
https://docs.python.org/3/library/os.html#os.scandir
results? # [4]
Now glob.py from the docs plugin does not...
I’m impressed by minijinja [1] from mitsuhiko [2].
MiniJinja is a powerful but minimal dependency template engine for Rust compatible with Jinja/Jinja2
References:
[1]: https://github.com/mitsuhiko/minijinja
[2]: https://github.com/mitsuhiko
I’m really excited about gpt-engineer [1], an amazing project by AntonOsika [2]. It’s worth exploring!
Platform to experiment with the AI Software Engineer. Terminal based. NOTE: Very different from https://gptengineer.app
References:
[1]: https://github.com/AntonOsika/gpt-engineer
[2]: https://github.com/AntonOsika
I like s0md3v’s [1] project roop [2].
one-click face swap
References:
[1]: https://github.com/s0md3v
[2]: https://github.com/s0md3v/roop