<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>hello world</title><description>hello world</description><link>https://brie.ninja/</link><language>en</language><item><title>007: 🔇 Turn off witty messages in Gemini CLI</title><link>https://brie.ninja/posts/007/</link><guid isPermaLink="true">https://brie.ninja/posts/007/</guid><description>Tuning off the clever funny messages in Gemini CLI</description><pubDate>Thu, 18 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I use LLMs for tasks that don&apos;t require heart or passion or creativity. Given how much my &lt;a href=&quot;https://brie.run/tech-stack/&quot;&gt;tech stack&lt;/a&gt; favors Google, it&apos;s unsurprising that I use &lt;a href=&quot;https://geminicli.com/docs/&quot;&gt;Gemini CLI&lt;/a&gt;. I found myself searching for &lt;code&gt;gemini cli turn off witty messages&lt;/code&gt;. (I wasn&apos;t sure where to start in the docs.)&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/google-gemini/gemini-cli/issues/9066&quot;&gt;stop displaying clever messages while the CLI is working (or at least add a robust option for the user to tell it to stop)&lt;/a&gt; issue I found is &lt;strong&gt;Open&lt;/strong&gt; but there&apos;s a &lt;a href=&quot;https://github.com/google-gemini/gemini-cli/issues/9066#issuecomment-3321519020&quot;&gt;comment&lt;/a&gt; with a config suggestion:&lt;/p&gt;
&lt;p&gt;Add this to &lt;code&gt;~/.gemini/settings.json&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;    &quot;accessibility&quot;: {
    &quot;disableLoadingPhrases&quot;: true
  }
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;👍 It worked for me and I gave the comment its tenth upvote.&lt;/p&gt;
&lt;hr /&gt;
&lt;p&gt;For a file this size, I like how &lt;a href=&quot;https://github.com/tomnomnom/gron&quot;&gt;&lt;code&gt;gron&lt;/code&gt;&lt;/a&gt; renders the output:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# gron ~/.gemini/settings.json
json = {};
json.security = {};
json.security.auth = {};
json.security.auth.selectedType = &quot;oauth-personal&quot;;
json.ui = {};
json.ui.accessibility = {};
json.ui.accessibility.disableLoadingPhrases = true;
json.ui.theme = &quot;Ayu&quot;;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;I have &lt;a href=&quot;https://brie.dev/gron/&quot;&gt;written at length&lt;/a&gt; on &lt;code&gt;brie.dev&lt;/code&gt; about using &lt;code&gt;gron&lt;/code&gt; for other purposes..&lt;/p&gt;
&lt;p&gt;--
Brie&lt;/p&gt;
</content:encoded></item><item><title>006: 📍  Using a specific version of Python with uv</title><link>https://brie.ninja/posts/006/</link><guid isPermaLink="true">https://brie.ninja/posts/006/</guid><description>Notes on how to request a particular version of Python with a range of uv commands</description><pubDate>Tue, 28 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;There are a few different ways to request a specific version of Python when using &lt;code&gt;uv&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;🔖 I like to use &lt;a href=&quot;https://www.python.org/doc/versions/&quot;&gt;Python Documentation by Version&lt;/a&gt; to list the available version. Building on the last post &lt;a href=&quot;/posts/005&quot;&gt;about getting EOL info via the CLI&lt;/a&gt;, you could also use:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run --python 3.11.6  --from norwegianblue  eol python
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That will print the full version string for each minor release. (Depending on what exactly you&apos;re trying to do, that might not be helpful.)&lt;/p&gt;
&lt;p&gt;The &lt;code&gt;--python 3.11.6&lt;/code&gt; tells &lt;code&gt;uv&lt;/code&gt; to use Python 3.11.6.&lt;/p&gt;
&lt;h2&gt;✅ Check the Python version&lt;/h2&gt;
&lt;p&gt;You can specify the Python version &lt;strong&gt;and&lt;/strong&gt; check the Python version all in one go:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# uv run --python 3.12 python -V
Python 3.12.8
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let&apos;s say you wanted to get the path to that Python &lt;code&gt;3.12.8&lt;/code&gt; executable. Enter &lt;code&gt;uv python find&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# uv python find 3.12
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;📝 If you have used a non-default location for &lt;code&gt;UV_PYTHON_INSTALL_DIR&lt;/code&gt;, you&apos;ll need to take that into account.&lt;/p&gt;
&lt;p&gt;If you want to check with version of Python and get a path to the executable that &lt;code&gt;uv&lt;/code&gt; would use by default, you can use &lt;code&gt;uv python find 3.12&lt;/code&gt;.&lt;/p&gt;
&lt;h2&gt;📍 Pinning the version in &lt;code&gt;.python-version&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;The presence of a &lt;code&gt;.python-version&lt;/code&gt; file in the working directory (and any parent directories) can be used to pin a particular Python version. There is even a &lt;code&gt;uv python pin&lt;/code&gt; command that can be used to generate said &lt;code&gt;.python-version&lt;/code&gt; file. The &lt;a href=&quot;https://docs.astral.sh/uv/concepts/python-versions/&quot;&gt;docs&lt;/a&gt; note that the &lt;code&gt;--python&lt;/code&gt; works with most &lt;code&gt;uv&lt;/code&gt; commands. It looks like &lt;code&gt;uv python pin&lt;/code&gt; is one of the commands where &lt;code&gt;--python&lt;/code&gt; is not accepted.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# uv    python pin 3.12
Pinned `.python-version` to `3.12`
# cat .python-version
3.12
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;--python&lt;/code&gt; flag takes precedence over &lt;code&gt;.python-version&lt;/code&gt;, as I would expect.&lt;/p&gt;
&lt;p&gt;🌞&lt;/p&gt;
</content:encoded></item><item><title>005: 🔭  HOWTO Query data from endoflife.date info with the norwegianblue CLI</title><link>https://brie.ninja/posts/005/</link><guid isPermaLink="true">https://brie.ninja/posts/005/</guid><pubDate>Sun, 26 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I am a big fan of &lt;a href=&quot;https://endoflife.date/&quot;&gt;endoflife.date&lt;/a&gt; for finding out when a particular version of an OS, progrramming language DBMS or cloud service will go end-of-life or stop getting support.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run --from norwegianblue  eol python
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Output Formats&lt;/h2&gt;
&lt;p&gt;The &lt;code&gt;eol&lt;/code&gt; tool provided by the &lt;a href=&quot;https://pypi.org/project/norwegianblue/&quot;&gt;norwegianblue&lt;/a&gt; package &lt;a href=&quot;https://github.com/hugovk/norwegianblue?tab=readme-ov-file#example-command-line-use&quot;&gt;supports&lt;/a&gt; a range of output formats including &lt;strong&gt;Markdown&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt; uv tool run --from norwegianblue  eol gitlab --md | head -n8
| cycle |  release   | latest   | latest release |  support   |    eol     |
| :-----| :--------: | :--------| :------------: | :--------: | :--------: |
| 17.8  | 2025-01-16 | 17.8.1   |   2025-01-22   | 2025-02-20 | 2025-04-17 |
| 17.7  | 2024-12-19 | 17.7.3   |   2025-01-22   | 2025-01-16 | 2025-03-20 |
| 17.6  | 2024-11-21 | 17.6.4   |   2025-01-22   | 2024-12-19 | 2025-02-20 |
| 17.5  | 2024-10-17 | 17.5.5   |   2025-01-08   | 2024-11-21 | 2025-01-16 |
| 17.4  | 2024-09-19 | 17.4.6   |   2024-12-10   | 2024-10-17 | 2024-12-19 |
| 17.3  | 2024-08-15 | 17.3.7   |   2024-11-12   | 2024-09-19 | 2024-11-21 |
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...and &lt;strong&gt;YAML&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# uv tool run  --with pyyaml  --from norwegianblue  eol ruby --yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;...and &lt;strong&gt;JSON&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;Print the version and release date of every version of &lt;code&gt;nginx&lt;/code&gt; that is &lt;strong&gt;not&lt;/strong&gt; EOL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# uv tool run   --from norwegianblue  eol nginx --json | \
jq &apos;.[] | select(.eol == false) | {cycle, releaseDate}&apos;
{
  &quot;cycle&quot;: &quot;1.27&quot;,
  &quot;releaseDate&quot;: &quot;2024-05-28&quot;
}
{
  &quot;cycle&quot;: &quot;1.26&quot;,
  &quot;releaseDate&quot;: &quot;2024-04-23&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For a version that &lt;strong&gt;is&lt;/strong&gt; EOL:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# NGINX_VERSION=&quot;1.10&quot;
# uv tool run --from norwegianblue eol nginx \
--json | jq --arg version &quot;$NGINX_VERSION&quot; \
&apos;.[] | select(.cycle == $version) | .eol&apos;
&quot;2017-04-12&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Versions that are still getting support will look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# NGINX_VERSION=&quot;1.27&quot;
# uv tool run --from norwegianblue eol nginx \
--json | jq --arg version &quot;$NGINX_VERSION&quot; \
&apos;.[] | select(.cycle == $version) | .eol&apos;
false
&lt;/code&gt;&lt;/pre&gt;
</content:encoded></item><item><title>004: 🧪  Testing ArchiveBox release candidate 0.8.5rc50 -- with uv</title><link>https://brie.ninja/posts/004/</link><guid isPermaLink="true">https://brie.ninja/posts/004/</guid><description>A quick look at the latest ArchiveBox release candidate.</description><pubDate>Wed, 22 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I found myself wanting to test out the &lt;a href=&quot;https://github.com/ArchiveBox/ArchiveBox/pull/1311&quot;&gt;v0.8 Release Candidate&lt;/a&gt; for &lt;a href=&quot;https://archivebox.io&quot;&gt;ArchiveBox&lt;/a&gt;. Since setting a custom port is very easy, running multiple instances of &lt;code&gt;archivebox&lt;/code&gt; is trivial:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 init
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 manage createsuperuser
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 server 6789
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🎊  We are up and running!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/localhost-6789.png&quot; alt=&quot;localhost 6789&quot; /&gt;&lt;/p&gt;
&lt;p&gt;Let&apos;s set up the rest of the dependencies:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 install
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧪 RSS Parsing&lt;/h2&gt;
&lt;p&gt;The improvements to RSS parsing are of particular interest to me.&lt;/p&gt;
&lt;p&gt;🐘 Let&apos;s attempt to backup my toots:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 add --parser=rss --depth=1 https://infosec.exchange/@brie.rss
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No dice: &lt;code&gt;AttributeError: object has no attribute &apos;title&apos;&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv tool run archivebox@0.8.5rc50 add --parser=rss --depth=1 https://brie.dev/rss.xml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Errors were reported. The command completed successfully after several minutes but nothing appears in the UI.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;AttributeError: object has no attribute &apos;updated_parsed&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🏆 I was successful in parsing my private and &lt;a href=&quot;https://feeds.pinboard.in/rss/u:brie/&quot;&gt;public&lt;/a&gt; Pinboard feeds.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;/public/parsed-from-pinboard.png&quot; alt=&quot;brie.dev/troubleshooting parsed via public Pinboard feed&quot; /&gt;&lt;/p&gt;
&lt;p&gt;It is interesting to observe some of the flags that are passed to Google Chrome:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--virtual-time-budget=15000 
--disable-features=DarkMode
--run-all-compositor-stages-before-draw 
--hide-scrollbars 
--autoplay-policy=no-user-gesture-required 
--no-first-run
--use-fake-ui-for-media-stream 
--use-fake-device-for-media-stream &quot;--simulate-outdated-no-au=&apos;Tue, 31 Dec 2099 23:59:59 GMT&apos;&quot;
--screenshot &quot;https://brie.dev/troubleshooting/&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧪 Webhooks&lt;/h2&gt;
&lt;p&gt;Let&apos;s try adding one via the UI! It works. It looks like the version is not parsed properly in the &lt;code&gt;user-agent&lt;/code&gt; that is printed in the webhook payload:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;&quot;--user-agent&quot;,
      &quot;Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/128.0.0.0 Safari/537.36 ArchiveBox/{VERSION} (+https://github.com/ArchiveBox/ArchiveBox/)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;🐾 Next Steps&lt;/h3&gt;
&lt;p&gt;For my production ArchiveBoxes, I think I would definitely want to parse through the webhook payload to filter things so that...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I am notified of some failures&lt;/li&gt;
&lt;li&gt;I get a digest of successful ingestions and updates&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;🔭 Observations&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;➕  The UI is a bit prettier and that&apos;s nice!&lt;/li&gt;
&lt;li&gt;➕ Things go better when all dependencies have been met.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🕸️ ✋ 💯 HTTP 500&lt;/h3&gt;
&lt;p&gt;I can induce a &lt;a href=&quot;https://httpcat.us/500&quot;&gt;HTTP 500&lt;/a&gt; by...&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;attempting to &lt;strong&gt;delete&lt;/strong&gt; a snapshot with any data saved&lt;/li&gt;
&lt;li&gt;looking at any &lt;code&gt;/change&lt;/code&gt; URL&lt;/li&gt;
&lt;li&gt;leaving &lt;strong&gt;Referenced model&lt;/strong&gt; blank when adding a webhook&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;📚 READmore&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ArchiveBox/ArchiveBox/releases/tag/v0.8.5-rc&quot;&gt;v0.8.5-rc: Prettier + faster CLI for InstalledBinaries, Machines/NetworkInterfaces health now audit logged&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;PR: &lt;a href=&quot;https://github.com/ArchiveBox/ArchiveBox/pull/1418&quot;&gt;Add Webhooks support to new REST API&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;docs: &lt;a href=&quot;https://docs.archivebox.io/dev/apidocs/archivebox/archivebox.api.models.html#archivebox.api.models.OutboundWebhook&quot;&gt;classarchivebox.api.models.OutboundWebhook(*args: Any, **kwargs: Any)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;blockquote&gt;
&lt;pre&gt;&lt;code&gt;Congrats on being an enthusiastic internet archiver! 👌
&lt;/code&gt;&lt;/pre&gt;
&lt;/blockquote&gt;
</content:encoded></item><item><title>003: 🐍 Notes and hints on using 🌞  uv</title><link>https://brie.ninja/posts/003/</link><guid isPermaLink="true">https://brie.ninja/posts/003/</guid><pubDate>Sun, 19 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have been using &lt;code&gt;uv&lt;/code&gt; &lt;a href=&quot;https://brie.ninja/posts/001/#-uv&quot;&gt;since January 1st&lt;/a&gt;. In this post, I&apos;ll quickly go through some of my favorite things about &lt;code&gt;uv&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;🌞 Getting &lt;code&gt;uv&lt;/code&gt;&lt;/h1&gt;
&lt;p&gt;It is &lt;code&gt;not&lt;/code&gt; necessary to &lt;code&gt;curl&lt;/code&gt; into your shell to get the &lt;code&gt;uv&lt;/code&gt; executable. 🚀 There are &lt;a href=&quot;https://docs.astral.sh/uv/getting-started/installation/#github-releases&quot;&gt;releases available&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;Using &lt;code&gt;uv&lt;/code&gt;&lt;/h1&gt;
&lt;h2&gt;🐍 Python console&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;uv run python3
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🕸️ Web server&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;uv run python -m http.server
uv run python -m http.server 8888
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🥺 Handling dependencies with &lt;code&gt;--with&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;Let&apos;s say you want &lt;code&gt;requests&lt;/code&gt; with that Python console&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;uv run --with requests python3
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;🧰  Using tools&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt;uv tool run pastebin-bisque
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;uv tool run --from mitmproxy mitmweb
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If the tool has not been used previously, it will be retrieved automatically and &lt;em&gt;then&lt;/em&gt; executed. You can even &lt;a href=&quot;https://docs.astral.sh/uv/guides/tools/#requesting-specific-versions&quot;&gt;specify the version&lt;/a&gt; to be used.&lt;/p&gt;
&lt;h2&gt;📜 Running scripts&lt;/h2&gt;
&lt;pre&gt;&lt;code&gt; uv run --with argparse,datetime,passgen,faker,requests \
    python main.py --no-feature 4 lol.txt  dundermifflin.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🔖 That&apos;s an example incantation of &lt;a href=&quot;https://gitlab.com/brie/faux-credential-dump-generator&quot;&gt;faux-credential-dump-generator&lt;/a&gt;.&lt;/p&gt;
&lt;h1&gt;🔭 What&apos;s next?&lt;/h1&gt;
&lt;p&gt;I&apos;ll continue using &lt;code&gt;uv&lt;/code&gt; in earnest for the rest of the month at least. It &lt;strong&gt;has&lt;/strong&gt; lived up to the promise of being a stand-in replacement for &lt;code&gt;pip&lt;/code&gt; and friends. I have yet to find something in my workflow that is not supported by &lt;code&gt;uv&lt;/code&gt;. I have not introduced any reliance on &quot;&lt;code&gt;uv&lt;/code&gt; only&quot; ways of doing things.&lt;/p&gt;
&lt;p&gt;My decision on how fully to adopt &lt;code&gt;uv&lt;/code&gt; will depend on what path the community follows to an extent. I am rather happy on the road we are on at the moment.&lt;/p&gt;
&lt;h1&gt;📚 READ more&lt;/h1&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://simonwillison.net/2024/Sep/8/uv-under-discussion-on-mastodon/&quot;&gt;uv under discussion on Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://andrich.me/2024/09/15/uv-i-am-somewhat-sold.html&quot;&gt;UV — I am (somewhat) sold&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://talkpython.fm/episodes/show/453/uv-the-next-evolution-in-python-packages&quot;&gt;uv - The Next Evolution in Python Packages?&lt;/a&gt; -- this is episode 453 of &lt;code&gt;Talk Python[&apos;Podcast&apos;]&lt;/code&gt; with &lt;a href=&quot;https://talkpython.fm/guests#charlie-marsh&quot;&gt;guest&lt;/a&gt; Charlie Marsh&lt;/li&gt;
&lt;/ul&gt;
</content:encoded></item><item><title>002: Pocket RSS Feeds in 2025 + ArchiveBox Scheduling</title><link>https://brie.ninja/posts/002/</link><guid isPermaLink="true">https://brie.ninja/posts/002/</guid><description>Retrieving Pocket saves via RSS in 2025.</description><pubDate>Thu, 02 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;h2&gt;🆒 Pocket RSS&lt;/h2&gt;
&lt;p&gt;While I was working on my Pocket -&amp;gt; ArchiveBox automation, I noticed that ArchiveBox had an &lt;a href=&quot;https://github.com/ArchiveBox/ArchiveBox/wiki/Scheduled-Archiving#example-import-an-rss-feed-from-pocket-every-12-hours&quot;&gt;example&lt;/a&gt; for how to import from the RSS feed provided by Pocket. It looks like that is a feature that might now be defunct. Apparently, &lt;a href=&quot;https://www.reddit.com/r/firefox/comments/1czso6p/pockets_rss_feeds_have_been_discontinued/&quot;&gt;Pocket&apos;s RSS feeds have been discontinued&lt;/a&gt;. &lt;a href=&quot;https://pocket-rss.com/&quot;&gt;Pocket RSS&lt;/a&gt; purports to replace that functionality so I decided to give it a go.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;I got an error the first time I attempted to authenticate.&lt;/li&gt;
&lt;li&gt;I tried again and it worked. I got RSS and JSON feed URLs.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;docker-compose run --rm archivebox schedule \ 
  --every=day https://pocket-rss.com/feed/blahblahblah
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;That&apos;s the command from the &lt;a href=&quot;https://github.com/ArchiveBox/ArchiveBox/wiki/Scheduled-Archiving&quot;&gt;Scheduled Archiving&lt;/a&gt; docs that will be useful for where we left off yesterday:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Next, I’ll configure &lt;code&gt;archivebox&lt;/code&gt; to ingest the file that is written to periodically.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;🚀&lt;/h2&gt;
&lt;p&gt;The command to run will look like this:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker-compose run --rm archivebox schedule \ 
  --every=day ./box/pocket-favorites.txt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;🤭 The math checks out:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;[!] With the current cron config, ArchiveBox is estimated to run &amp;gt;365 times per year.
    Congrats on being an enthusiastic internet archiver! 👌
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;✅&lt;/h2&gt;
&lt;p&gt;The &quot;Pocket -&amp;gt; ArchiveBox&quot; setup is complete and in &quot;maintenance mode&quot; now that it&apos;s operational. The functionality at &lt;a href=&quot;https://pocket-rss.com&quot;&gt;Pocket RSS&lt;/a&gt; gives me an RSS feed of the things that I 💾 &lt;strong&gt;save&lt;/strong&gt; in Pocket that I can save in ArchiveBox. The &lt;a href=&quot;https://gitlab.com/brie/2025/-/snippets/4789012&quot;&gt;snippet&lt;/a&gt; that I wrote yesterday will give me a way to import the things that I ⭐️ &lt;strong&gt;favorite&lt;/strong&gt; in Pocket so that I can bring them into ArchiveBox.&lt;/p&gt;
</content:encoded></item><item><title>001: Pocket API + hands on with uv</title><link>https://brie.ninja/posts/001/</link><guid isPermaLink="true">https://brie.ninja/posts/001/</guid><pubDate>Wed, 01 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;p&gt;I have made &lt;a href=&quot;https://getpocket.com&quot;&gt;Pocket&lt;/a&gt; a part of my &lt;code&gt;2025: year of data&lt;/code&gt;. I have Pocket connected to &lt;a href=&quot;https://exist.io&quot;&gt;exist.io&lt;/a&gt;. I want to have a copy of the items in Pocket that I care about. I want to solve that problem by saving my ⭐️ Pocket favorites in my &lt;a href=&quot;https://archivebox.io&quot;&gt;ArchiveBox&lt;/a&gt; instance. Today, I wrote some Python to do exactly that: &lt;a href=&quot;https://gitlab.com/brie/2025/-/snippets/4789012&quot;&gt;⭐️ Save Pocket Favorites to a file&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Next, I&apos;ll configure &lt;code&gt;archivebox&lt;/code&gt; to ingest the file that is written to periodically.&lt;/p&gt;
&lt;h4&gt;🔖 Bookmarked Along the Way&lt;/h4&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://getpocket.com/developer/docs/v3/retrieve&quot;&gt;Pocket API: Retrieving a User&apos;s Pocket Data&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🧰 &lt;code&gt;uv&lt;/code&gt;&lt;/h3&gt;
&lt;p&gt;While I was at it, I gave &lt;code&gt;uv&lt;/code&gt; a quick try: it&apos;s a tool that purports to be &lt;a href=&quot;https://github.com/astral-sh/uv&quot;&gt;an extremely fast Python package and project manager, written in Rust.&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Quoting the &lt;code&gt;README&lt;/code&gt;:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Migrate to uv without changing your existing workflows — and experience a 10-100x speedup — with the uv pip interface.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It writes dependencies to &lt;code&gt;pyproject.toml&lt;/code&gt; by default. That does represent a change in my workflow. I&apos;ll keep using it for a while because the &lt;a href=&quot;https://docs.astral.sh/uv/#highlights&quot;&gt;highlights&lt;/a&gt; do sound interesting and I wrote a fair amount of Python.&lt;/p&gt;
</content:encoded></item></channel></rss>