Archive

All published posts

2541 posts latest post 2026-08-10 simple view
Publishing rhythm
Jul 2026 | 14 posts

I’ve been playing with 3d printing some items through the slant3d api. I’ve been pricing out different prints by running a slice request through their api.

make a project #

I’ve been using uv for project management. It’s been working well for quick projects like this while making it reproducible, I’m still all in on hatch for libraries.

mkdir slantproject
cd slantproject
uv init
uv venv
. ./.venv/bin/activate
uv add httpx rich python-dotenv

Get an api key #

You will need an api key from the slant api, which currently requires a google account and a credit card to create.

# .env
#  replace with your api key from https://api-fe-two.vercel.app/
SLANT_API_KEY=sl-**

slicing an stl with teh slant api #

Then you can run the python script to price out your print. I’m not exactly sure how this compares to an order, especially when you add in different materials.

from dotenv import load_dotenv
import httpx
import os

load_dotenv()

stl_url = ''
api_key = os.environ["SLANT_API_KEY"]

api = httpx.Client(base_url="https://www.slant3dapi.com/api/slicer")

res = httpx.post(
    "https://www.slant3dapi.com/api/slicer",
    json={"fileURL": stl_url},
    headers={"api-key": api_key, "Content-Type": "application/json"},
    timeout=60,
)


print(res.json())
External Link cdn.statically.io [1] Staically makes creating OG [2] images so easy, you can just pop this in your section with some og tags. <meta name="og:image" name="og:image" content="https://cdn.statically.io/og/{{post.title}}" /> <meta name="twitter:image" name="twitter:image" content="https://cdn.statically.io/og/{{post.title}}" /> <meta name="og:image:height" content="640" /> <meta name="og:image:width" content="1280" /> References: [1]: https://cdn.statically.io/og/statically%20makes%20OG%20images%20**easy** [2]: /og/
Check out terminal-tree [1] by willmcgugan [2]. It’s a well-crafted project with great potential. No description available. References: [1]: https://github.com/willmcgugan/terminal-tree [2]: https://github.com/willmcgugan
E576: Error while reading ShaDa file: there is an item at position 270498 that must not be there: Missing itemsare for internal uses only · Issue #6875 · neovim/neovim v0.2.0 Vim 8.0 works well. macOS Sierra 10.12.5 (16F73) iTerm2 v3.0.15 $TERM: screen-256color Actual behaviour When I start neovim by nvim, it prints an error message which is E576: Error while rea... GitHub · github.com [1] I hit an interesting error after updating my nvim plugins today. I’m sti not even quite sure what a ShaDa file is, but I found min in my nvim state directory, unlike this issue that mentions it being in share. The Error. Error while reading ShaDa file: The Fix mv ~/.local/state/nvim/shada/main.shada ~/.local/state/nvim/shada/main.shada.bak References: [1]: https://github.com/neovim/neovim/issues/6875
Production-ready Python Docker Containers with uv Starting with 0.3.0, Astral’s uv brought many great features, including support for cross-platform lock files uv.lock. Together with subsequent fixes, it has become Python’s finest workflow too... Hynek Schlawack · hynek.me [1] Hynek has a sick dockerfile setup for using uv in python projects. References: [1]: https://hynek.me/articles/docker-uv/
I’m really excited about IronCalc [1], an amazing project by ironcalc [2]. It’s worth exploring! Main engine of the IronCalc ecosystem References: [1]: https://github.com/ironcalc/IronCalc [2]: https://github.com/ironcalc
Proper handling of None in WHERE condition · Issue #109 · fastapi/sqlmodel First Check I added a very descriptive title to this issue. I used the GitHub search to find a similar issue and didn't find it. I searched the SQLModel documentation, with the integrated search. I... GitHub · github.com [1] SQLModel models ship with an is_, and is_not that you can use to compare to None without pesky linters complaining. This comment summed it up quite well. I believe this is concerned entirely with SQLAlchemy, not with SQLModel, and has to do with the required semantics to construct a BinaryExpression object. Hero.age == None evaluates to a BinaryExpression object which is eventually used to construct the SQL query that the SQLAlchemy engine issues to your DBMS. Hero.age is None evaluates to False immediately, and not a BinaryExpression, which short-circuits the query no matter the value of age in a row. From a cursory search, it does not seem that the is operator can be overridden in Python. This could help explain why the only possibility is by using the == operator, which can be overridden. so rather than using Team.heros == None we can use Team.seros.is_(None) which checks for...
If you’re into interesting projects, don’t miss out on blink.cmp [1], created by saghen [2]. Performant, batteries-included completion plugin for Neovim References: [1]: https://github.com/saghen/blink.cmp [2]: https://github.com/saghen
I’m really excited about cluster-api-k3s [1], an amazing project by k3s-io [2]. It’s worth exploring! Cluster API k3s References: [1]: https://github.com/k3s-io/cluster-api-k3s [2]: https://github.com/k3s-io
Gridfinity Generator gridfinity.perplexinglabs.com [1] Gridfinity generator uses open scad, so you can make rugged boxes, bins and base plates with form input. not fully custom fit to things, but you can custom size square bins, hole cut out sides and all. From what I can tell, no bento box either. so as long as what you are looking for is square this generator has you pretty well covered. I’m definitely using this for simple bins and rugged boxes. References: [1]: https://gridfinity.perplexinglabs.com/pr/gridfinity-extended/0/0
External Link printables.com [1] The BethDeck is a sick looking DIY steam deck competitor built on top of the framework 13" mainboard. No soldering needed, lt with all off the shelf parts. Controllers appear to be an off the shelf controller with the shell removed and plugged into a usb hub. [2] References: [1]: https://www.printables.com/model/1051411-framework-portable-handheld-case-beth-deck [2]: https://media.printables.com/media/prints/1051411/images/7965723_09c13004-58b9-4868-b078-e3a66073d740_3b514c55-bb6b-4448-a216-842d7de48955/thumbs/inside/1600x1200/jpg/pxl_20240910_005549812.webp
Document how to provide a negative number as an argument · fastapi typer · Discussion #798 First Check I added a very descriptive title here. I used the GitHub search to find a similar question and didn't find it. I searched the Typer documentation, with the integrated search. I already ... GitHub · github.com [1] Today I learned that you cannot pass negative integers as values to typer. in this case context_settings={"ignore_unknown_options": True} is required so that the - does not look like a flag. # script name: main.py import typer app = typer.Typer() @app.command() def failing(value: float): print(f"{value=}") @app.command( context_settings={"ignore_unknown_options": True} ) def working_good(value: float): print(f"{value=}") if __name__ == "__main__": app() References: [1]: https://github.com/fastapi/typer/discussions/798
rommapp [1] has done a fantastic job with romm [2]. Highly recommend taking a look. A beautiful, powerful, self-hosted [3] rom manager References: [1]: https://github.com/rommapp [2]: https://github.com/rommapp/romm [3]: /self-host/
I came across pz [1] from CZ-NIC [2], and it’s packed with great features and ideas. Easily handle day to day CLI operation via Python instead of regular Bash programs. 🇺🇦 #supporting References: [1]: https://github.com/CZ-NIC/pz [2]: https://github.com/CZ-NIC
Looking for inspiration? textual-demo [1] by Textualize [2]. Quick access to the Textual demo References: [1]: https://github.com/Textualize/textual-demo [2]: https://github.com/Textualize
I’m impressed by rocketnotes [1] from fynnfluegge [2]. AI-powered markdown editor - leverage vector embeddings and LLMs with your personal notes - 100% local or in the cloud References: [1]: https://github.com/fynnfluegge/rocketnotes [2]: https://github.com/fynnfluegge
faststream [1] by airtai [2] is a game-changer in its space. Excited to see how it evolves. FastStream is a powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ, NATS and Redis. References: [1]: https://github.com/airtai/faststream [2]: https://github.com/airtai
I came across faststream [1] from ag2ai [2], and it’s packed with great features and ideas. FastStream is a powerful and easy-to-use Python framework for building asynchronous services interacting with event streams such as Apache Kafka, RabbitMQ, NATS and Redis. References: [1]: https://github.com/ag2ai/faststream [2]: https://github.com/ag2ai
The work on memos [1] by usememos [2]. An open-source, lightweight note-taking solution. The pain-less way to create your meaningful notes. Your Notes, Your Way. References: [1]: https://github.com/usememos/memos [2]: https://github.com/usememos
pypeaday [1] has done a fantastic job with learn-kestra [2]. Highly recommend taking a look. No description available. References: [1]: https://github.com/pypeaday [2]: https://github.com/pypeaday/learn-kestra
pypeaday [1] has done a fantastic job with learn-n8n [2]. Highly recommend taking a look. No description available. References: [1]: https://github.com/pypeaday [2]: https://github.com/pypeaday/learn-n8n
Aaron Francis (@aarondfrancis) on X 📣 We're excited to announce Mastering Postgres, a video course coming October 15th. @steve_tenuto and I started this business with dreams to improve the quality of database education. With the… X (formerly Twitter) · x.com [1] Aaron Francis is a database master, pumped for thsi dude and all that he is able to accomplish. References: [1]: https://x.com/aarondfrancis/status/1833533150674268469
[1]@willmcgugan [1]) on X — New Version of #Textual released! 😎🤓🦾 The demo has been updated. It's not quite finished, expect an update next release, but it is a lot of fun. Press C at any point to see the code powering that page (makes a great learning tool). Video 👇 https://t.co/p2ScsuL7GZ" [2] loading=“lazy”> Will McGugan (@willmcgugan [3]) on X New Version of #Textual released! 😎🤓🦾 The demo has been updated. It's not quite finished, expect an update next release, but it is a lot of fun. Press C at any point to see the code pow… X (formerly Twitter) · x.com This new demo of textual is wildly awesome, so many widgets and features being added into the main library. The themes and animations are on point and far surpass my expectations of a tui. References: [1]: https://x.com/willmcgugan/status/1849831271289012463 [2]: https://t.co/p2ScsuL7GZ%22 [3]: https://willmcgugan.github.io
I like joshmedeski’s [1] project sesh [2]. Smart session manager for the terminal References: [1]: https://github.com/joshmedeski [2]: https://github.com/joshmedeski/sesh
The work on menu [1] by nvzone [2]. Menu plugin for neovim ( supports nested menus ) made using volt References: [1]: https://github.com/nvzone/menu [2]: https://github.com/nvzone
Reddit - Please wait for verification reddit.com [1] ploopy just dropped a trackpad that runs qmk. This sounds so cool. I’m excited to see some videos on it. It would be sick to get this incorporated into a porta john running zmk, one bluetooth device to run all the peripherals. References: [1]: https://www.reddit.com/r/ErgoMechKeyboards/comments/1g5phts/not_a_split_keyboard_but_perhaps_a_companion_to/
Just starred windsurf.nvim [1] by Exafunction [2]. It’s an exciting project with a lot to offer. A native neovim extension for Codeium References: [1]: https://github.com/Exafunction/windsurf.nvim [2]: https://github.com/Exafunction
I’m really excited about codeium.nvim [1], an amazing project by Exafunction [2]. It’s worth exploring! A native neovim extension for Codeium References: [1]: https://github.com/Exafunction/codeium.nvim [2]: https://github.com/Exafunction
Pin versions of dependencies · Issue #2200 · Kozea/WeasyPrint Stack trace: pdf = HTML(file_obj=html, base_url='/').write_pdf() File "/service/venv/lib/python3.9/site-packages/weasyprint/__init__.py", line 252, in write_pdf self.render(font_config, counter_sty... GitHub · github.com [1] weazyprint was throwing me some errors, turns out that it’s currently not compatible with the latest pydyf package. my error TypeError: __init__() takes 1 positional argument but 3 were give I fixed it by locking in pydyf at 0.8.0 pydyf==0.8.0 References: [1]: https://github.com/Kozea/WeasyPrint/issues/2200
These are SICK, gonna be using this a lot. (Thanks @evantravers 🥰.) · jesseleite/dotfiles@4979400 My dotfiles 💾. Contribute to jesseleite/dotfiles development by creating an account on GitHub. GitHub · github.com [1] helix inspired treesitter select outwards and select inwards. References: [1]: https://github.com/jesseleite/dotfiles/commit/49794006cbc9dc0e743925ec1a7122514d7148be
add helix · WaylonWalker/devtainer@71b9b29 🐳 (dotfiles) My personal development docker container base image - add helix · WaylonWalker/devtainer@71b9b29 GitHub · github.com [1] Helix officially made it in my devtainer. I am installing the binary right out of the github release with wget and tar. I can’t use installer because their release format does not match what installer is looking for. : I also move the runtime over to /usr/local/share/helix/runtime. : I use /usr/local/bin rather than my home directory as it works better with distrobox. References: [1]: https://github.com/WaylonWalker/devtainer/commit/71b9b29baf14f3714601d022ca12c3417437395b
[1] Here are some really great keybinds to make helix vim-like. It feels very antithetical to use this whole sale and forego the helix motion-verb language, but there are some nuggets like G in here that I find useful. References: [1]: /static/https://github.com/LGUG2Z/helix-vim/blob/master/config.toml
Support regex substitution command · Issue #2232 · helix-editor/helix Support regex substitution, comparable to vim :s or VSCode search & replace. I propose supporting regex replacements for selection s, files/, and the workspace scopes + /. This could be acc... GitHub · github.com [1] helix multicursor has the ability to do what vims :s/hello/world/gc does by using ) to cycle through cursors, and n to discard unwanted cursors. References: [1]: https://github.com/helix-editor/helix/issues/2232#issuecomment-1250371051
Support regex substitution command · Issue #2232 · helix-editor/helix Support regex substitution, comparable to vim :s or VSCode search & replace. I propose supporting regex replacements for selection s, files/, and the workspace scopes + /. This could be acc... GitHub · github.com [1] Here is a really good vim substitute with regex capture groups, saving this one for a rainy day. * Reading 1: This is a title to a link * Reading 2: This is another title :%s/\v(: )(.+)$/\1\[\2\]\( * Reading 1: [This is a title to a link]( * Reading 2: [This is another title]( References: [1]: https://github.com/helix-editor/helix/issues/2232#issuecomment-1228632218
Support regex substitution command · Issue #2232 · helix-editor/helix Support regex substitution, comparable to vim :s or VSCode search & replace. I propose supporting regex replacements for selection s, files/, and the workspace scopes + /. This could be acc... GitHub · github.com [1] Interesting take on refactoring the whole codebase from your editor. In this thread the-mikedavis suggests multicursor as a replacement for substitute, and later in the thread takes the side that larger workspace wide edits are outside the scope of helix and he would reach for a refactoring tool like fastmod [2] to do the job. References: [1]: https://github.com/helix-editor/helix/issues/2232#issuecomment-1107644740 [2]: https://github.com/facebookincubator/fastmod?tab=readme-ov-file
Support regex substitution command · Issue #2232 · helix-editor/helix Support regex substitution, comparable to vim :s or VSCode search & replace. I propose supporting regex replacements for selection s, files/, and the workspace scopes + /. This could be acc... GitHub · github.com [1] I am a heavy user off substitutions in vim, helix does not substitutions built in, rather it leans on multicursor support. to replace every instance of hello with world in vim :%s/hello/world/g<CR> and in helix you would %shello<CR>cworld<ESC>, References: [1]: https://github.com/helix-editor/helix/issues/2232
Background Image | Wallpaper · Issue #3059 · helix-editor/helix Describe your feature request Hey ! It'd be cool to have the ability to set a background-image on supported terminals (like kitty). Like on IntelliJ: Here is an example of what it'd be on helix: GitHub · github.com [1] How to make helix themes transparent. You can make any built-in theme transparent in helix with one line, a few extras and you can make all the pop ups, help menus and status line trransparant as well. mkdir -p ~/.config/helix/themes hx :o ~/.config/helix/themes/dracula_transparant.toml # ~/.config/helix/themes/dracula_transparant.toml inherits = "dracula" "ui.background" = { fg = "foreground" } "ui.menu" = { fg = "white" } "ui.popup" = { fg = "white" } "ui.window" = { fg = "white" } "ui.help" = { fg = "light-gray" } "ui.statusline" = { fg = "gray" } "ui.statusline.inactive" = { fg = "black" } :config-edit # ~/.config/helix/config.toml theme="dracula_transparant" References: [1]: https://github.com/helix-editor/helix/issues/3059
I like facebookincubator’s [1] project fastmod [2]. A fast partial replacement for the codemod tool References: [1]: https://github.com/facebookincubator [2]: https://github.com/facebookincubator/fastmod
Reddit - Please wait for verification reddit.com [1] This post shows how to set up multiple LSP’s in helix, the example uses pyright and ruff-lsp for python. Add this to your ~/.config/helix/languages.toml a [[language]] name = "python" auto-format = true language-servers = [ {name = "pyright"}, {name = "ruff-lsp"}, ] [language-server.pyright] command = "pyright-langserver" args = ["--stdio"] config = {} [language-server.ruff-lsp] command = "ruff-lsp" args = [] config = {} References: [1]: https://www.reddit.com/r/HelixEditor/comments/17gglgm/help_on_setting_up_ruff_formatter_ruff_pyright/
configuring pylsp · helix-editor helix · Discussion #6623 Hi, I'm trying to make some modifications to the default pylsp settings as I do not strictly follow PEP in my personal projects. I googled some examples but I cannot get them to work, so I am wonde... GitHub · github.com [1] How to set your python formatter to black with helix. The following snippet lays out how to set the helix editor to auto-format on save with the black formatter. [[language]] name = "python" language-servers = ["pylsp"] [language-server.pylsp.config.pylsp] plugins.pyls_mypy.enabled = true plugins.pyls_mypy.live_mode = true plugins.flake8.maxLineLength = 88 plugins.pycodestyle.maxLineLength = 88 [language.formatter] command = "black" args = ["--line-length", "88", "--quiet", "-"] References: [1]: https://github.com/helix-editor/helix/discussions/6623
Database Remote-Copy Tool For SQLite (draft) Neat new SQLite utilities often show up in branches of the SQLite repository. Here's a new one from last month: sqlite3-rsync, providing tools for efficiently creating and updating copies of … Simon Willison’s Weblog · simonwillison.net [1] Simon shared a really cool new utility tool for sqlite ispired by rsync. It checks hashes of each sqlite page and syncs pages. So if nothing in the database has changed it will only require 0.5% the bandwidth as a copy would. References: [1]: https://simonwillison.net/2024/Oct/4/sqlite-rsync/
ticklemykeys (@XTicklemykeys) on X working on a new model. seams less visible hotswap more room for build X (formerly Twitter) · x.com [1] porta-john design update, working on moving the seams to line up with an edge to eliminate long noticable seams. These seams are required because I don’t have a printer big enough to print this in one shot. hotswaps are going in. I’m getting really excited for hotswaps as they will make keebs more repairable, and users can self change out the switches if they want. I can also pre-build them ready to go, and drop in switches at the time of order. I did learn today that these are hyper specific to gateron, damn all these switch manufacturers and their special pinouts. Last thing I gotta make more room for wiring the microcontroller and running wires out to the rows and columns, my first prototype build took waay to long to build. References: [1]: https://x.com/XTicklemykeys/status/1840104423508312273
ticklemykeys (@XTicklemykeys) on X New cap of my own design X (formerly Twitter) · x.com [1] This low profile design almost made it to 9. I think blending together the custom brim to make them all one piece really made the final difference here. The custom brim is two layers thick, only touching on the top layer making it very easy to peel off, but gives better adhesion to the bed, and does not loose one like this print did. References: [1]: https://x.com/XTicklemykeys/status/1841646323939864871