57,803 blogs · [ { "id": "01a0dcaa-d6b1-72ad-b238-882234b1f8f5", "title": "Information addiction, and less time wasted on the internet", "url": "https://www.probableodyssey.blog/notes/information-addiction-and-less-time-wasted-on-the-internet/", "published_at": "2026-09-26T02:10:24+00:00" }, { "id": "01a09537-79bf-73d9-a59b-d5a0a58792bd", "title": "Vim spellcheck mappings I use", "url": "https://www.probableodyssey.blog/tech/vim-spellcheck-mappings-i-use/", "published_at": "2026-09-12T00:59:43+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a624300c72", "title": "How I set up my Home Server to Replace Dropbox", "url": "https://www.probableodyssey.blog/tech/how-i-set-up-my-home-server-to-replace-dropbox/", "published_at": "2026-08-29T03:33:59+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a624c7aa21", "title": "AI Coding and Review Fatigue", "url": "https://www.probableodyssey.blog/tech/ai-coding-and-review-fatigue/", "published_at": "2026-08-11T00:35:25+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a624d31a2a", "title": "Git branch justfiles", "url": "https://www.probableodyssey.blog/tech/git-branch-justfiles/", "published_at": "2026-07-19T07:53:16+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a624d387d9", "title": "Bringing certainty to new AI norms with a contract", "url": "https://www.probableodyssey.blog/tech/bringing-certainty-to-uncertainty-of-new-ai-norms/", "published_at": "2026-07-05T07:42:34+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62588c04b", "title": "HTTP Requests in Java", "url": "https://www.probableodyssey.blog/tech/http-requests-in-java/", "published_at": "2026-06-20T00:15:09+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62649c795", "title": "Migrating to GitLab", "url": "https://www.probableodyssey.blog/tech/migrating-to-gitlab/", "published_at": "2026-06-13T02:27:46+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a626d6ebfd", "title": "Logging in Python done simply", "url": "https://www.probableodyssey.blog/tech/logging-in-python-done-simply/", "published_at": "2026-06-06T07:18:35+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a627c1bd5d", "title": "Clipboard Piping with `pbcopy`/`pbpaste` on Any OS", "url": "https://www.probableodyssey.blog/tech/clipboard-piping-with-pbcopy-pbpaste-on-any-os/", "published_at": "2026-05-29T23:27:33+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a627fd8080", "title": "TIL: Clearing directories and appending filenames in bulk", "url": "https://www.probableodyssey.blog/tils/til-using-find-to-rename-files-in-current-directory/", "published_at": "2026-05-23T06:02:27+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6289e6114", "title": "LLM Tools and my System Prompts", "url": "https://www.probableodyssey.blog/tech/llm-tools-and-my-system-prompts/", "published_at": "2026-05-16T00:05:14+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a628a40466", "title": "Secure Home Server Access with Caddy, Tailscale, and Cloudflare", "url": "https://www.probableodyssey.blog/tech/secure-home-server-access-with-caddy-tailscale-and-cloudflare/", "published_at": "2026-05-09T00:27:31+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a628cc7549", "title": "TIL: Install Docker Ubuntu", "url": "https://www.probableodyssey.blog/tils/installing-docker-ubuntu/", "published_at": "2026-05-09T00:16:35+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62987e128", "title": "Switching to an iPhone after 15 years of Android", "url": "https://www.probableodyssey.blog/notes/iphone-switch/", "published_at": "2026-05-02T01:36:08+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62a09253e", "title": "Using git to manage dotfiles", "url": "https://www.probableodyssey.blog/tech/using-git-to-manage-dotfiles/", "published_at": "2026-04-25T00:16:57+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62a8abf62", "title": "Recipe: Bolognese sauce", "url": "https://www.probableodyssey.blog/notes/recipe-bolognese-sauce/", "published_at": "2026-03-30T08:22:07+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62b4f6d0d", "title": "Automating PR descriptions with the LLM CLI", "url": "https://www.probableodyssey.blog/tech/git-genpr-alias/", "published_at": "2026-03-06T22:49:48+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62c4b1670", "title": "Setting LLM ClI default template with a wrapper", "url": "https://www.probableodyssey.blog/tech/setting-llm-cli-default-template-with-a-wrapper/", "published_at": "2026-03-03T04:46:40+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62d00b906", "title": "Keeping Directories and editing gitignores: A Handy Alias", "url": "https://www.probableodyssey.blog/tech/git-alias-to-keep-directories-and-edit-gitignore/", "published_at": "2026-02-23T02:11:23+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62d2b3594", "title": "Real-Time Voice Streaming and Stateful Buffering", "url": "https://www.probableodyssey.blog/tech/real-time-voice-streaming-and-stateful-buffering/", "published_at": "2026-02-21T00:48:36+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62dd5212e", "title": "Returning to R", "url": "https://www.probableodyssey.blog/tech/returning-to-r/", "published_at": "2026-02-14T08:26:13+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62e312ea4", "title": "Your AI Agent is Unsafe and Sandboxes Won't Save It", "url": "https://www.probableodyssey.blog/tech/your-ai-agent-is-unsafe-and-sandboxes-wont-save-it/", "published_at": "2026-02-07T06:10:19+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62ec95290", "title": "Declaring Python Scripts with `pyproject.toml`", "url": "https://www.probableodyssey.blog/tech/declaring_python_scripts_with_pyproject_toml/", "published_at": "2026-01-30T22:23:49+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62ed26a3e", "title": "Understanding `set -euxo pipefail` in Bash Scripts", "url": "https://www.probableodyssey.blog/tech/understanding_set_euxo_pipefail_in_bash_scripts/", "published_at": "2026-01-24T01:49:28+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62f642ef8", "title": "Dare to give a Sh*t", "url": "https://www.probableodyssey.blog/notes/dare-to-give-a-sh-t/", "published_at": "2026-01-16T22:40:13+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62fa10412", "title": "Catching burnout while you're still capable", "url": "https://www.probableodyssey.blog/notes/catching-burnout-while-you-re-still-capable/", "published_at": "2026-01-14T00:01:51+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a62fca08b4", "title": "Revising Self-Reliance in an Age of Saturation", "url": "https://www.probableodyssey.blog/notes/direction/", "published_at": "2026-01-10T00:26:01+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6303dd670", "title": "Resources", "url": "https://www.probableodyssey.blog/resources/", "published_at": "2026-01-07T05:02:55+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a630d89eef", "title": "My 2025 in weightlifting", "url": "https://www.probableodyssey.blog/notes/my-2025-in-weightlifting/", "published_at": "2026-01-03T03:22:17+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a631a3cd3f", "title": "Avoiding Endless Reddit Scrolling on Firefox", "url": "https://www.probableodyssey.blog/tutorials/blocking-reddit-on-firefox/", "published_at": "2025-12-20T05:37:41+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6329f52b0", "title": "Fighting Project Procrastination with a Project Project", "url": "https://www.probableodyssey.blog/tech/fighting-project-procrastination-with-a-project-project/", "published_at": "2025-12-05T21:24:49+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a633207f82", "title": "Deep comparison of Python dictionaries", "url": "https://www.probableodyssey.blog/tutorials/deep-comparison-of-python-dictionaries/", "published_at": "2025-11-28T23:06:37+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6341a9386", "title": "TIL: Boosting Your Python Debugging with `ipdb`", "url": "https://www.probableodyssey.blog/tils/til-how-to-add-ipdb-to-a-python-project-for-debugging/", "published_at": "2025-11-22T00:24:27+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63462af32", "title": "Start simple, iterate to perfection", "url": "https://www.probableodyssey.blog/tech/start-simple/", "published_at": "2025-11-15T02:56:33+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a635016a8f", "title": "Navigating Metric Trade-offs in Machine Learning", "url": "https://www.probableodyssey.blog/tech/navigating-metric-trade-offs-in-machine-learning/", "published_at": "2025-11-08T03:40:00+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6352cdd2c", "title": "Explore Anything in IPython", "url": "https://www.probableodyssey.blog/tutorials/explore-anything-in-ipython/", "published_at": "2025-10-31T23:07:00+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63628da31", "title": "Building a Resilient Phone Number Regex", "url": "https://www.probableodyssey.blog/tutorials/building-a-resilient-phone-number-regex/", "published_at": "2025-10-25T01:24:20+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6370d2462", "title": "TIL How to query GCP account permissions", "url": "https://www.probableodyssey.blog/tils/til-how-to-query-gcp-account-permissions/", "published_at": "2025-10-17T21:54:01+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63806dd94", "title": "TIL How to use AI to Generate PR descriptions in the CLI", "url": "https://www.probableodyssey.blog/tils/til-how-to-use-ai-to-generate-pr-descriptions-in-the-cli/", "published_at": "2025-10-11T02:41:53+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63837acc2", "title": "TIL: Dynamically Installing Python Wheels and spaCy Models at Runtime", "url": "https://www.probableodyssey.blog/tils/til-how-to-install-python-wheels-from-urls-at-runtime-for-missing-spacy-models/", "published_at": "2025-10-03T23:25:57+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a638cebc6f", "title": "WSGI vs ASGI: Serving Python Models with Gunicorn or Uvicorn", "url": "https://www.probableodyssey.blog/tech/gunicorn-and-uvicorn/", "published_at": "2025-09-27T02:47:37+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6391e998f", "title": "TIL: How to Address Stray Pandas `SettingWithCopy` Warnings", "url": "https://www.probableodyssey.blog/tils/til-how-to-address-stray-pandas-settingwithcopy-warnings/", "published_at": "2025-09-19T23:49:14+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63969fb70", "title": "Extreme Programming for ML Teams: Faster Delivery, Reliable Results", "url": "https://www.probableodyssey.blog/tech/extreme-programming-for-ml-and-data-science/", "published_at": "2025-09-13T03:49:18+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6396f0e09", "title": "Quantifying Trust: Ensuring Reliability in LLM Summaries", "url": "https://www.probableodyssey.blog/tech/measuring-summary-reliability-with-long-documents/", "published_at": "2025-08-30T03:50:25+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a639d26085", "title": "The Balance that Builds", "url": "https://www.probableodyssey.blog/notes/balance-that-builds/", "published_at": "2025-08-23T01:02:53+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63a21ca6d", "title": "Excellence is a byproduct of having fun", "url": "https://www.probableodyssey.blog/notes/excellence-is-a-byproduct-of-having-fun/", "published_at": "2025-08-16T00:26:01+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63b02f0ae", "title": "TIL: Fixing an incorrect Git rebase", "url": "https://www.probableodyssey.blog/tils/til-fixing-an-incorrect-git-rebase/", "published_at": "2025-08-08T22:34:27+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63ba8f47e", "title": "Dotfile management with Chezmoi and Vim", "url": "https://www.probableodyssey.blog/tech/dotfile-management-with-chezmoi-and-vim/", "published_at": "2025-08-02T01:35:27+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63c4dc107", "title": "TIL: How to generate PR descriptions with Aider", "url": "https://www.probableodyssey.blog/tils/til-how-to-generate-pr-descriptions-with-aider/", "published_at": "2025-07-25T23:54:37+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63c856181", "title": "TIL: Reliable Pytest Testing with Mocks (by Example)", "url": "https://www.probableodyssey.blog/tils/til-reliable-pytest-testing-with-mocks-by-example/", "published_at": "2025-07-18T22:47:29+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63ce7f611", "title": "AI Coding Assistants: What a Month of Testing Taught Me", "url": "https://www.probableodyssey.blog/tech/ai-coding-assistants-what-a-month-of-testing-taught-me/", "published_at": "2025-07-11T21:45:09+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63db814d0", "title": "Finding Git branches faster with FZF", "url": "https://www.probableodyssey.blog/tech/finding-git-branches-faster-with-fzf/", "published_at": "2025-07-04T22:30:42+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63df840a4", "title": "A Practical MacOS Terminal Setup for Data Scientists", "url": "https://www.probableodyssey.blog/tutorials/macos-terminal-setup/", "published_at": "2025-06-28T07:38:33+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63dff478b", "title": "AI and the Mythical Man-Month: Productivity or Paradox?", "url": "https://www.probableodyssey.blog/tech/productivity-loss-with-ai-and-the-mythical-man-month/", "published_at": "2025-06-21T05:38:09+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63efb9508", "title": "Fundamentals of machine learning and training neural networks", "url": "https://www.probableodyssey.blog/tutorials/fundamentals-of-machine-learning/", "published_at": "2025-06-14T03:24:28+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a63fd5e585", "title": "Better config files for python ML experiments", "url": "https://www.probableodyssey.blog/tech/ml-configs-use-scripts-intead/", "published_at": "2025-06-07T01:38:26+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a64069e9f9", "title": "How I review pull requests", "url": "https://www.probableodyssey.blog/tech/tips-for-better-pr-reviews/", "published_at": "2025-05-31T02:38:23+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a64158a8d2", "title": "No abstraction is better than the wrong abstraction", "url": "https://www.probableodyssey.blog/tech/abstraction/", "published_at": "2025-05-24T01:38:09+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6423aadd7", "title": "AI workforce reconsidered, my response", "url": "https://www.probableodyssey.blog/tech/ai-displacement-regret-response/", "published_at": "2025-05-16T22:58:33+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a642d2b467", "title": "TIL How to mount a google cloud storage bucket as root on a VM", "url": "https://www.probableodyssey.blog/tils/til-how-to-mount-google-storage-bucket-as-root/", "published_at": "2025-05-03T06:38:09+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a643251029", "title": "Detecting cats with simple Pytorch", "url": "https://www.probableodyssey.blog/tutorials/getting-started-with-pytorch/", "published_at": "2025-04-26T01:10:21+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a643564580", "title": "Small PRs, Big Impact: A Git Workflow for Data Scientists", "url": "https://www.probableodyssey.blog/tech/pr-workflow/", "published_at": "2025-04-18T21:27:54+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a643c431e2", "title": "The Cost of Ignorance: Lessons from the Great Sparrow Campaign", "url": "https://www.probableodyssey.blog/notes/sparrows/", "published_at": "2025-04-11T23:34:28+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a64461d027", "title": "TIL: How to parse config from env vars in Python", "url": "https://www.probableodyssey.blog/tils/til-python-clean-config-classes-with-envs/", "published_at": "2025-04-02T04:18:59+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a644fb52b1", "title": "Bug hunt: Rescaling DataFrames in Python", "url": "https://www.probableodyssey.blog/tech/python-channel-bug-hunt/", "published_at": "2025-03-28T22:17:21+00:00" }, { "id": "01a087c9-b33b-732b-9105-91a6452bd6a6", "title": "TIL How to compose functions and coroutines in Python", "url": "https://www.probableodyssey.blog/tils/til-python-compose-functions-and-coroutines/", "published_at": "2025-03-21T20:56:20+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a45bd76d7", "title": "Tuner: why dating apps (probably) don't match with Spotify data", "url": "https://www.probableodyssey.blog/tech/tuner-follow-up/", "published_at": "2025-03-14T22:47:56+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a46af469f", "title": "How to get started with Python with modern tooling using `uv`", "url": "https://www.probableodyssey.blog/tutorials/modern-python/", "published_at": "2025-03-07T23:56:49+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a475358d0", "title": "Did you see the gorilla?", "url": "https://www.probableodyssey.blog/notes/gorilla/", "published_at": "2025-03-01T00:46:00+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a478f2d88", "title": "Asynchronous Vim", "url": "https://www.probableodyssey.blog/tech/asynchronous-vim/", "published_at": "2025-02-22T00:16:24+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a47de4ba5", "title": "Using Pipes and Sockets for asynchronous local AI Chats", "url": "https://www.probableodyssey.blog/tech/pipes-and-sockets/", "published_at": "2025-02-15T03:46:13+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a47ed84e3", "title": "TIL How to test a Flask server locally with CURL", "url": "https://www.probableodyssey.blog/tils/til-how-to-test-flask-server/", "published_at": "2025-02-08T08:23:31+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4862f2e0", "title": "Metacognition and AI usage", "url": "https://www.probableodyssey.blog/tech/metacognition-and-ai-usage/", "published_at": "2025-02-01T10:28:00+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a490b9da1", "title": "How to un-commit files in git", "url": "https://www.probableodyssey.blog/tutorials/git-uncommit/", "published_at": "2025-01-25T09:47:30+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a495d9b77", "title": "TIL How to build and host a container on GCP VM instance", "url": "https://www.probableodyssey.blog/tech/gcloud-cos-docker/", "published_at": "2025-01-17T22:37:30+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4a1e9899", "title": "Old Hat, New Tricks: Makefiles for Python Projects", "url": "https://www.probableodyssey.blog/tech/python-makefiles/", "published_at": "2025-01-11T08:47:35+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4a24322e", "title": "TIL How to add a progress wheel to a blocking Python function", "url": "https://www.probableodyssey.blog/tils/til-how-to-add-progress-wheel-python/", "published_at": "2024-12-31T08:20:48+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4a74c65b", "title": "Tuner: A web app for finding people with similar music tastes", "url": "https://www.probableodyssey.blog/tech/tuner/", "published_at": "2024-12-30T23:11:11+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4b19d591", "title": "TIL How to secure a web server with SSO", "url": "https://www.probableodyssey.blog/tils/til-how-to-secure-a-web-server-with-sso/", "published_at": "2024-12-26T03:28:43+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4ba1fef6", "title": "TIL How to diff two local files", "url": "https://www.probableodyssey.blog/tech/how-to-diff-two-local-files/", "published_at": "2024-02-28T23:20:11+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4bcd082e", "title": "Small project workflow: The making of `foxtail`", "url": "https://www.probableodyssey.blog/tech/small-project-workflow/", "published_at": "2024-02-28T10:24:23+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4c6d0b70", "title": "Git Worktrees", "url": "https://www.probableodyssey.blog/tutorials/git-worktrees/", "published_at": "2024-01-09T02:55:23+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4d59b75e", "title": "First Post", "url": "https://www.probableodyssey.blog/notes/first-post/", "published_at": "2023-09-11T02:55:23+00:00" }, { "id": "01a087c9-b33c-728d-bb8b-af2a4d7083b9", "title": "All Posts", "url": "https://www.probableodyssey.blog/all-posts/", "published_at": null } ] posts Claim your blog
Back to probableodyssey.blog
Blog · corpus.blog/blogs/probableodyssey.blog/posts

probableodyssey.blog

probableodyssey.blog

2026

2025

2024

2023

Undated