Going back to the old style phlog, mdoc is a pain. - gopherhole - My gopherhole source code.
(HTM) git clone git://jay.scot/gopherhole
(DIR) Log
(DIR) Files
(DIR) Refs
---
(DIR) commit 5c32b549ea87f47fa97e58040f2721d8f555440c
(DIR) parent a12d07bab3992a669bc40bdeb974264641606d12
(HTM) Author: Jay Scott <me@jay.scot>
Date: Mon, 1 Dec 2025 11:52:53 +0000
Going back to the old style phlog, mdoc is a pain.
Diffstat:
M .gitignore | 2 +-
D bin/build.sh | 20 --------------------
M bin/sync.sh | 1 -
M phlog/index.gph | 43 ++++++++++++++++++++++++++++---
D phlog/mdoc/028-crack.7 | 104 -------------------------------
D phlog/template | 30 ------------------------------
R phlog/archive/2021/001.txt -> phlo… | 0
R phlog/archive/2021/002.txt -> phlo… | 0
R phlog/archive/2021/003.txt -> phlo… | 0
R phlog/archive/2021/004.txt -> phlo… | 0
R phlog/archive/2022/005.txt -> phlo… | 0
R phlog/archive/2022/006.txt -> phlo… | 0
R phlog/archive/2022/007.txt -> phlo… | 0
R phlog/archive/2022/008.txt -> phlo… | 0
R phlog/archive/2022/009.txt -> phlo… | 0
R phlog/archive/2022/010.txt -> phlo… | 0
R phlog/archive/2023/011.txt -> phlo… | 0
R phlog/archive/2023/012.txt -> phlo… | 0
R phlog/archive/2023/013.txt -> phlo… | 0
R phlog/archive/2023/014.txt -> phlo… | 0
R phlog/archive/2023/015.txt -> phlo… | 0
R phlog/archive/2023/016.txt -> phlo… | 0
R phlog/archive/2023/017.txt -> phlo… | 0
R phlog/archive/2023/018.txt -> phlo… | 0
R phlog/archive/2023/019.txt -> phlo… | 0
R phlog/archive/2023/020.txt -> phlo… | 0
R phlog/archive/2023/021.txt -> phlo… | 0
R phlog/archive/2023/022.txt -> phlo… | 0
R phlog/archive/2023/023.txt -> phlo… | 0
R phlog/archive/2023/024.txt -> phlo… | 0
R phlog/archive/2023/025.txt -> phlo… | 0
R phlog/archive/2023/026.txt -> phlo… | 0
R phlog/archive/2024/027.txt -> phlo… | 0
D phlog/txt/028-crack.txt | 86 ------------------------------
A phlog/txt/028.txt | 80 +++++++++++++++++++++++++++++++
A phlog/txt/029.txt | 133 +++++++++++++++++++++++++++++++
36 files changed, 254 insertions(+), 245 deletions(-)
---
(DIR) diff --git a/.gitignore b/.gitignore
@@ -1,2 +1,2 @@
drafts/
-files
+files/
(DIR) diff --git a/bin/build.sh b/bin/build.sh
@@ -1,20 +0,0 @@
-#!/bin/sh
-
-mkdir -p txt
-
-for file in phlog/mdoc/*.7; do
- base="${file##*/}"
- base="${base%.7}"
-
- txt_file="phlog/txt/${base}.txt"
-
- if [ -f "$txt_file" ] && [ "$file" -nt "$txt_file" ]; then
- echo "Updating $txt_file..."
- mandoc -T utf8 "$file" >"$txt_file"
- elif [ ! -f "$txt_file" ]; then
- echo "Generating $txt_file..."
- mandoc -T utf8 "$file" >"$txt_file"
- else
- echo "Skipping $txt_file..."
- fi
-done
(DIR) diff --git a/bin/sync.sh b/bin/sync.sh
@@ -1,7 +1,6 @@
lftp sftp://jay.scot -e "
mirror -R \
--delete \
- --exclude=files* \
--exclude=meta/bad_ips.txt \
--exclude=.git* \
--exclude=bin* \
(DIR) diff --git a/phlog/index.gph b/phlog/index.gph
@@ -9,8 +9,45 @@
J A Y . S C O T
-[0|what's the crack?|/phlog/txt/028-crack.txt|server|port]
+[ 2025 ]
+[0|2025-12-01 ... sfeed, fdm, rdrview and mutt|/phlog/txt/029.txt|server|port]
+[0|2025-11-22 ... what's the crack?|/phlog/txt/028.txt|server|port]
-2021 - 2024
-[1|old man shouts at clouds archive..|/phlog/archive/|server|port]
+[ 2024 ]
+
+[0|2024-01-28 ... Twelve months of Bivvy - Month 1|/phlog/txt/027.txt|server|port]
+
+[ 2023 ]
+
+[0|2023-11-27 ... My wee Microadventures|/phlog/txt/026.txt|server|port]
+[0|2023-09-15 ... New dumb phone at last, it cost £11.50 but came with £10 edit|/phlog/txt/025.txt|server|port]
+[0|2023-09-03 ... Ansible no more, moved all services to containers|/phlog/txt/024.txt|server|port]
+[0|2023-08-13 ... Earned my Terraform certification but not for a good reason|/phlog/txt/022.txt|server|port]
+[0|2023-07-06 ... A ready to read archive of old gopher Usenet groups|/phlog/txt/021.txt|server|port]
+[0|2023-07-03 ... Getting to grips with slrn|/phlog/txt/020.txt|server|port]
+[0|2023-06-19 ... My Beelink U59 running OpenBSD kicked the bucket!|/phlog/txt/019.txt|server|port]
+[0|2023-04-30 ... The lack of time for geeky tasks!|/phlog/txt/018.txt|server|port]
+[0|2023-03-11 ... Checking out gaming on OpenBSD|/phlog/txt/017.txt|server|port]
+[0|2023-02-18 ... Messing with pkg_info and ditching password-store|/phlog/txt/016.txt|server|port]
+[0|2023-02-11 ... An OpenBSD manpage led me down a rabbit hole|/phlog/txt/015.txt|server|port]
+[0|2023-02-05 ... Re-evaluating my local mail setup with OpenSMTPD|/phlog/txt/014.txt|server|port]
+[0|2023-02-03 ... Finally, I switched over to OpenBSD|/phlog/txt/013.txt|server|port]
+[0|2023-01-29 ... Automating my infra deployment and configuration|/phlog/txt/012.txt|server|port]
+[0|2023-01-14 ... Reducing my footprint, using a mini-pc|/phlog/txt/011.txt|server|port]
+
+[ 2022 ]
+
+[0|2022-09-28 ... Convert mbox to maildir using fdm|/phlog/txt/010.txt|server|port]
+[0|2022-09-13 ... A true cheap dumbphone,impossible?|/phlog/txt/009.txt|server|port]
+[0|2022-08-01 ... I moved over to wayland|/phlog/txt/008.txt|server|port]
+[0|2022-05-01 ... Build, patch and maintain suckless tools|/phlog/txt/007.txt|server|port]
+[0|2022-03-01 ... Association of really cruel viruses (arcv)|/phlog/txt/006.txt|server|port]
+[0|2022-01-02 ... Why I dropped freebsd after a month|/phlog/txt/005.txt|server|port]
+
+[ 2021 ]
+
+[0|2021-12-01 ... How I use the modern web|/phlog/txt/004.txt|server|port]
+[0|2021-11-01 ... Qutebrowser is amazing but|/phlog/txt/003.txt|server|port]
+[0|2021-10-01 ... Is github the facebook of coding?|/phlog/txt/002.txt|server|port]
+[0|2021-09-01 ... So much bloat around dotfiles|/phlog/txt/001.txt|server|port]
(DIR) diff --git a/phlog/mdoc/028-crack.7 b/phlog/mdoc/028-crack.7
@@ -1,104 +0,0 @@
-.Dd November 22, 2025
-.Dt CRACK 7
-.Os "Jay Scott"
-.
-.Sh NAME
-.Nm what's the crack?
-.Nd 2025
-.
-.Sh DESCRIPTION
-It's been a while since I posted anything here. Usually, I posted
-after tinkering with something cool, but a few things happened and left
-me with very little enthusiasm and drive to write anything. Anyway,
-here's some general things that's happened over the year; it's just
-going to be a bit of a mind dump on tech related things.
-.
-.Pp
-I never stopped using gopher; in fact, my browsing habits have changed
-dramatically in the last year that I use gopher more. My main browser
-is now lynx, used in conjunction with rdrview to make the html more
-readable. With bongusta, lobste.rs and metafilter being daily visits
-on gopher, along with quarry/floodgap for searching and gopherpedia for
-everything in between. The only reason I open up a
-.Dq normal browser
-like qutebrowser or librewolf is when either cloudflare blocks the site
-or that new AI bot blocker anubis does. Anubis is the worst as you
-*need* javascript enabled for it to work, and so many sites are using
-it now. Some sites seem to allow you to bypass anubis if your
-user-agent is set to lynx, so with rdrview, set the following
-environment variables.
-.
-.Bd -literal -offset indent
-export RDRVIEW_BROWSER='lynx'
-export RDRVIEW_USER_AGENT='Lynx/2.9.2'
-.Ed
-.
-.Pp
-Man, the www is truly dead.
-.
-.Pp
-I am still using my nokia 105 phone daily, I have my old smart phone
-which sits next to my work laptop, it is purely used for the
-authenticator app to login for work. I wish they allowed the use of a
-yubikey or similar. I also have a SIP desk phone, a snom 370, which is
-hooked up to a local asterisk box I am running, outbound / inbound
-calls to this are via localphone.com. I used to work in an ISP where
-asterisk and voip was the main product for them, I loved playing around with
-it. Being of the generation brought up with redboxing, and blueboxing if
-you could find (or told) a number for a foreign operator as it wasn't
-possible to bluebox directly on BTs network. I even contributed quite
-heavily to rapid7 warvox wardialer many moons ago, when it was still a
-thing. Oh to be young again! The snom only cost £5 on ebay, and I pay
-£1.20 a month for my sim with lebara. It gives me unlimited text/calls
-and 10gb data, I don't use any data though with the dumbphone. No
-contract. So works out quite a cheap tech toy for the amount of time I
-spend messing around with it. I always wince a bit when people say they
-are paying £30+ a month, while also hooked into a 24 month
-contract - expensive!
-.
-.Pp
-OpenBSD is the go to for all my servers still, gopher and public git
-repos are hosted over on openbsd amsterdam. I had a replacement beelink
-u59 sent to me which I use for my own self-hosting, it has around 4TB,
-and setup as a nas, along with hosting git, asterisk and jellyfin. My
-daily driver is still alpine linux, if something happens to it, I will
-switch the desktop back over to openbsd, but it's been rock solid for
-well over a year now.
-.
-.Pp
-The only replacement I really want to do is a fire stick I use on my
-TV, it runs the jellyfin app. The problem, outwith the fact it's an
-amazon device, is it fails to work if there is no internet connection.
-So while I do have everything selfhosted, I still can't watch stuff on
-jellyfin if the internet is done - madness!
-.Pp
-Looking a head at tech projects, and more specifically, these are some
-of the gopher related projects I want to take a crack at this coming
-year, mostly focus on things I still use the www for. So getting them
-under gopher would be pretty handy!
-.Pp
-.D1 - brutalist report clone
-.D1 - search for films now in the public domain
-.D1 - www page dump / archive using rdrview
-.D1 - pastebin type service
-.Sh SEE ALSO
-.Bl -item -compact
-.It
-.Lk gopher://gopher.metafilter.com/1/MetaFilter "Metafilter"
-.It
-.Lk gopher://gopherpedia.com/ "Gopherpedia"
-.It
-.Lk gopher://i-logout.cz/1/bongusta/ "Bongusta"
-.It
-.Lk gopher://typed-hole.org/1/lobsters "Lobste.rs"
-.It
-.Lk gopher://gopher.icu/1/quarry "Quarry"
-.It
-.Lk gopher://gopher.floodgap.com/7/v2/vs "FloodGap"
-.It
-.Lk https://github.com/eafer/rdrview "rdrview"
-.It
-.Lk https://brutalist.report "Brutalist Report rdrview"
-.El
-.Sh AUTHORS
-.Nm jay Aq Mt me@jay.scot
(DIR) diff --git a/phlog/template b/phlog/template
@@ -1,30 +0,0 @@
-.Dd November 24, 2025
-.Dt THE-SLUG 7
-.Os "Jay Scott"
-.
-.Sh NAME
-.Nm time
-.Nd 2025
-.
-.Sh DESCRIPTION
-This is my text, it is not longer than 72 chars wide - why you ask?
-Well if you know, you know. This is also a double quote
-.Dq irubru
-its cool right?
-.
-.Bd -literal -offset indent
-# This is a code block
-echo "Hi Mum"
-.Ed
-.
-.Pp
-Also this cross refs another man page
-.Xr man 7
-.
-.Sh SEE ALSO
-.Lk gopher://jay.scot/blah "This is a link!"
-.
-.Sh HISTORY
-.
-.Sh AUTHORS
-.Nm jay Aq Mt me@jay.scot
(DIR) diff --git a/phlog/archive/2021/001.txt b/phlog/txt/001.txt
(DIR) diff --git a/phlog/archive/2021/002.txt b/phlog/txt/002.txt
(DIR) diff --git a/phlog/archive/2021/003.txt b/phlog/txt/003.txt
(DIR) diff --git a/phlog/archive/2021/004.txt b/phlog/txt/004.txt
(DIR) diff --git a/phlog/archive/2022/005.txt b/phlog/txt/005.txt
(DIR) diff --git a/phlog/archive/2022/006.txt b/phlog/txt/006.txt
(DIR) diff --git a/phlog/archive/2022/007.txt b/phlog/txt/007.txt
(DIR) diff --git a/phlog/archive/2022/008.txt b/phlog/txt/008.txt
(DIR) diff --git a/phlog/archive/2022/009.txt b/phlog/txt/009.txt
(DIR) diff --git a/phlog/archive/2022/010.txt b/phlog/txt/010.txt
(DIR) diff --git a/phlog/archive/2023/011.txt b/phlog/txt/011.txt
(DIR) diff --git a/phlog/archive/2023/012.txt b/phlog/txt/012.txt
(DIR) diff --git a/phlog/archive/2023/013.txt b/phlog/txt/013.txt
(DIR) diff --git a/phlog/archive/2023/014.txt b/phlog/txt/014.txt
(DIR) diff --git a/phlog/archive/2023/015.txt b/phlog/txt/015.txt
(DIR) diff --git a/phlog/archive/2023/016.txt b/phlog/txt/016.txt
(DIR) diff --git a/phlog/archive/2023/017.txt b/phlog/txt/017.txt
(DIR) diff --git a/phlog/archive/2023/018.txt b/phlog/txt/018.txt
(DIR) diff --git a/phlog/archive/2023/019.txt b/phlog/txt/019.txt
(DIR) diff --git a/phlog/archive/2023/020.txt b/phlog/txt/020.txt
(DIR) diff --git a/phlog/archive/2023/021.txt b/phlog/txt/021.txt
(DIR) diff --git a/phlog/archive/2023/022.txt b/phlog/txt/022.txt
(DIR) diff --git a/phlog/archive/2023/023.txt b/phlog/txt/023.txt
(DIR) diff --git a/phlog/archive/2023/024.txt b/phlog/txt/024.txt
(DIR) diff --git a/phlog/archive/2023/025.txt b/phlog/txt/025.txt
(DIR) diff --git a/phlog/archive/2023/026.txt b/phlog/txt/026.txt
(DIR) diff --git a/phlog/archive/2024/027.txt b/phlog/txt/027.txt
(DIR) diff --git a/phlog/txt/028-crack.txt b/phlog/txt/028-crack.txt
@@ -1,86 +0,0 @@
-CRACK(7) Miscellaneous Information Manual CRACK(7)
-
-NNAAMMEE
- wwhhaatt''ss tthhee ccrraacckk?? – 2025
-
-DDEESSCCRRIIPPTTIIOONN
- It's been a while since I posted anything here. Usually, I posted after
- tinkering with something cool, but a few things happened and left me with
- very little enthusiasm and drive to write anything. Anyway, here's some
- general things that's happened over the year; it's just going to be a bit
- of a mind dump on tech related things.
-
- I never stopped using gopher; in fact, my browsing habits have changed
- dramatically in the last year that I use gopher more. My main browser is
- now lynx, used in conjunction with rdrview to make the html more
- readable. With bongusta, lobste.rs and metafilter being daily visits on
- gopher, along with quarry/floodgap for searching and gopherpedia for
- everything in between. The only reason I open up a “normal browser” like
- qutebrowser or librewolf is when either cloudflare blocks the site or
- that new AI bot blocker anubis does. Anubis is the worst as you *need*
- javascript enabled for it to work, and so many sites are using it now.
- Some sites seem to allow you to bypass anubis if your user-agent is set
- to lynx, so with rdrview, set the following environment variables.
-
- export RDRVIEW_BROWSER='lynx'
- export RDRVIEW_USER_AGENT='Lynx/2.9.2'
-
- Man, the www is truly dead.
-
- I am still using my nokia 105 phone daily, I have my old smart phone
- which sits next to my work laptop, it is purely used for the
- authenticator app to login for work. I wish they allowed the use of a
- yubikey or similar. I also have a SIP desk phone, a snom 370, which is
- hooked up to a local asterisk box I am running, outbound / inbound calls
- to this are via localphone.com. I used to work in an ISP where asterisk
- and voip was the main product for them, I loved playing around with it.
- Being of the generation brought up with redboxing, and blueboxing if you
- could find (or told) a number for a foreign operator as it wasn't
- possible to bluebox directly on BTs network. I even contributed quite
- heavily to rapid7 warvox wardialer many moons ago, when it was still a
- thing. Oh to be young again! The snom only cost £5 on ebay, and I pay
- £1.20 a month for my sim with lebara. It gives me unlimited text/calls
- and 10gb data, I don't use any data though with the dumbphone. No
- contract. So works out quite a cheap tech toy for the amount of time I
- spend messing around with it. I always wince a bit when people say they
- are paying £30+ a month, while also hooked into a 24 month contract -
- expensive!
-
- OpenBSD is the go to for all my servers still, gopher and public git
- repos are hosted over on openbsd amsterdam. I had a replacement beelink
- u59 sent to me which I use for my own self-hosting, it has around 4TB,
- and setup as a nas, along with hosting git, asterisk and jellyfin. My
- daily driver is still alpine linux, if something happens to it, I will
- switch the desktop back over to openbsd, but it's been rock solid for
- well over a year now.
-
- The only replacement I really want to do is a fire stick I use on my TV,
- it runs the jellyfin app. The problem, outwith the fact it's an amazon
- device, is it fails to work if there is no internet connection. So while
- I do have everything selfhosted, I still can't watch stuff on jellyfin if
- the internet is done - madness!
-
- Looking a head at tech projects, and more specifically, these are some of
- the gopher related projects I want to take a crack at this coming year,
- mostly focus on things I still use the www for. So getting them under
- gopher would be pretty handy!
-
- - brutalist report clone
- - search for films now in the public domain
- - www page dump / archive using rdrview
- - pastebin type service
-
-SSEEEE AALLSSOO
- _M_e_t_a_f_i_l_t_e_r: ggoopphheerr::////ggoopphheerr..mmeettaaffiilltteerr..ccoomm//11//MMeettaaFFiilltteerr
- _G_o_p_h_e_r_p_e_d_i_a: ggoopphheerr::////ggoopphheerrppeeddiiaa..ccoomm//
- _B_o_n_g_u_s_t_a: ggoopphheerr::////ii--llooggoouutt..cczz//11//bboonngguussttaa//
- _L_o_b_s_t_e_._r_s: ggoopphheerr::////ttyyppeedd--hhoollee..oorrgg//11//lloobbsstteerrss
- _Q_u_a_r_r_y: ggoopphheerr::////ggoopphheerr..iiccuu//11//qquuaarrrryy
- _F_l_o_o_d_G_a_p: ggoopphheerr::////ggoopphheerr..ffllooooddggaapp..ccoomm//77//vv22//vvss
- _r_d_r_v_i_e_w: hhttttppss::////ggiitthhuubb..ccoomm//eeaaffeerr//rrddrrvviieeww
- _B_r_u_t_a_l_i_s_t _R_e_p_o_r_t _r_d_r_v_i_e_w: hhttttppss::////bbrruuttaalliisstt..rreeppoorrtt
-
-AAUUTTHHOORRSS
- jjaayy <_m_e_@_j_a_y_._s_c_o_t>
-
-Jay Scott November 22, 2025 Jay Scott
(DIR) diff --git a/phlog/txt/028.txt b/phlog/txt/028.txt
@@ -0,0 +1,80 @@
+[jay.scot]
+[028]
+
+--[ What's the crack?
+
+
+It's been a while since I posted anything here. Usually, I posted after
+tinkering with something cool, but a few things happened and left me
+with very little enthusiasm and drive to write anything. Anyway, here's
+some general things that's happened over the year; it's just going to be
+a bit of a mind dump on tech related things.
+
+
+I never stopped using gopher; in fact, my browsing habits have changed
+dramatically in the last year that I use gopher more. My main browser is
+now lynx, used in conjunction with rdrview to make the html more
+readable. With bongusta, lobste.rs and metafilter being daily visits on
+gopher, along with quarry/floodgap for searching and gopherpedia for
+everything in between. The only reason I open up a “normal browser” like
+qutebrowser or librewolf is when either cloudflare blocks the site or
+that new AI bot blocker anubis does. Anubis is the worst as you *need*
+javascript enabled for it to work, and so many sites are using it now.
+Some sites seem to allow you to bypass anubis if your user-agent is set
+to lynx, so with rdrview, set the following environment variables.
+
+
+ export RDRVIEW_BROWSER='lynx'
+ export RDRVIEW_USER_AGENT='Lynx/2.9.2'
+
+
+Man, the www is truly dead.
+
+
+I am still using my nokia 105 phone daily, I have my old smart phone
+which sits next to my work laptop, it is purely used for the
+authenticator app to login for work. I wish they allowed the use of a
+yubikey or similar. I also have a SIP desk phone, a snom 370, which is
+hooked up to a local asterisk box I am running, outbound / inbound calls
+to this are via localphone.com. I used to work in an ISP where asterisk
+and voip was the main product for them, I loved playing around with it.
+Being of the generation brought up with redboxing, and blueboxing if you
+could find (or told) a number for a foreign operator as it wasn't
+possible to bluebox directly on BTs network. I even contributed quite
+heavily to rapid7 warvox wardialer many moons ago, when it was still a
+thing. Oh to be young again! The snom only cost £5 on ebay, and I pay
+£1.20 a month for my sim with lebara. It gives me unlimited text/calls
+and 10gb data, I don't use any data though with the dumbphone. No
+contract. So works out quite a cheap tech toy for the amount of time I
+spend messing around with it. I always wince a bit when people say they
+are paying £30+ a month, while also hooked into a 24 month contract -
+expensive!
+
+
+OpenBSD is the go to for all my servers still, gopher and public git
+repos are hosted over on openbsd amsterdam. I had a replacement beelink
+u59 sent to me which I use for my own self-hosting, it has around 4TB,
+and setup as a nas, along with hosting git, asterisk and jellyfin. My
+daily driver is still alpine linux, if something happens to it, I will
+switch the desktop back over to openbsd, but it's been rock solid for
+well over a year now.
+
+
+The only replacement I really want to do is a fire stick I use on my TV,
+it runs the jellyfin app. The problem, outwith the fact it's an amazon
+device, is it fails to work if there is no internet connection. So
+while I do have everything selfhosted, I still can't watch stuff on
+jellyfin if the internet is done - madness!
+
+
+Looking a head at tech projects, and more specifically, these are some
+of the gopher related projects I want to take a crack at this coming
+year, mostly focus on things I still use the www for. So getting them
+under gopher would be pretty handy!
+
+ - brutalist report clone
+ - search for films now in the public domain
+ - www page dump / archive using rdrview
+ - pastebin type service
+
+.EOF
(DIR) diff --git a/phlog/txt/029.txt b/phlog/txt/029.txt
@@ -0,0 +1,133 @@
+[jay.scot]
+[029]
+
+--[ sfeed, fdm, rdrview and mutt
+
+
+A few years ago I briefly mentioned my RSS setup. Since then I have
+improved on it, and I thought it might be worth sharing how I consume
+these feeds. It may seem like a complicated setup, and you are wondering
+why go to this effort when you can simply use something like newsraft or
+newsboat. Well, I don't know if it's just the feeds I view, but
+frequently they don't include the full body of the article, and I find
+this quite annoying. On top of that, I like to have everything under one
+application; having that sense of familiarity is nice. It's also good to
+have a local copy of the article, more than once I have seen articles
+just disappear into the ether.
+
+
+ sfeed ---> fdm ---> rdrview ---> mutt
+
+
+Above is the basic flow of the setup and you can watch a screen recording
+of my normal usage under the SEE ALSO section. This shows me running a
+wrapper script that updates the feeds with sfeed, converts this to mbox,
+and then calls fdm to do it's thing. I also open the feeds in mutt,
+showing the article content is now within the email body, I then open a
+few of the links in lynx/rdrview directly to show you can still view them
+externally, if needed.
+
+
+To achieve this setup, we need to do the following:
+
+
+ 1. sfeed_update downloads the latest feeds.
+ 2. sfeed_mbox creates an mbox file.
+ 3. fdm converts this to Maildirs based on the feed name.
+ 4. fdm rewrites the body, using rdrview.
+ 5. mutt then becomes the reader for these feeds.
+
+
+I won't cover the first 2 steps in much detail as these are covered very
+well in the sfeed documentation. In a nullshell, once you have created
+your feeds file, you run these two commands.
+
+
+ sfeedroot="$HOME/.config/sfeed"
+ feedsdir="${sfeedroot}/feeds"
+
+ sfeed_update "${sfeedroot}/sfeedrc"
+ sfeed_mbox "${feedsdir}"/* >${sfeedroot}/mbox
+
+
+Step 3 is also partly covered in the sfeed documentation, but I have
+stripped down my own fdm config below just to show at what point I call
+the script to rewrite the body. You can run fdm with this config, because
+the feed is disabled by default we must include the account name when
+running it. I only do this because I use fdm to fetch my normal mail,
+which also has a bunch of other filters, such as dumping mailing lists
+into other locations. The main workhorse of this script is match account
+on feeds, where it calls the action feedget:
+
+
+ fdm -f ${fdmconfig} -afeeds fetch
+
+
+This is the minimal fdm config you would need ~/.config/fdm/config
+
+
+ # macros, paths to cache file, where we want the Maildirs to live.
+ $path = "%h/.mail"
+ $feedcache = "%h/.mail/fdm.cache"
+ $feeddir = "%h/.mail/feeds/"
+ $strurl = "(http[s]?://.*|gemini://.*)"
+
+ # options, setting up the cache so we know what's a new feed.
+ set unmatched-mail keep
+ set no-received
+ cache "${feedcache}"
+
+ # accounts, disabled by default so we have to explicitly call it.
+ account "feeds" disabled mbox "%[home]/.config/sfeed/mbox"
+
+ # feed actions
+ action "feedtag" tag "msgid" value "%1"
+ action "feedget" rewrite "%h/bin/fdm_parse_feeds.sh"
+ action "feedsave" {
+ maildir "${feeddir}%1"
+ add-to-cache "${feedcache}" key "%[msgid]"
+ keep
+ }
+
+ # match on any feed from sfeed mbox and call the actions.
+ match account "feeds" {
+ match case "^Message-ID: (.*)" in headers action "feedtag" continue
+ match matched and in-cache "${feedcache}" key "%[msgid]" action keep
+ match $strurl action "feedget" continue
+ match case "^X-Feedname: (.*)" in headers action "feedsave"
+ }
+
+
+The heavy lifting of this script is when a feed is matched, it then
+calls the action feedget. This action calls an external script which
+either runs gemget to pull the page if its a gemini link, or if its a
+normal web page, run rdrview. The email is then returned back to fdm
+with the new content body.
+
+
+Here is the fdm_parse_feeds.sh script.
+
+
+ #!/bin/sh
+
+ data=$(cat)
+ url=$(echo "$data" | grep -o -E 'https?://[^"]+|gemini://[^"]+')
+ uri_lower="$(printf "%s" "$url" | tr '[:upper:]' '[:lower:]')"
+
+ case "$uri_lower" in
+ content=$(gemget -o - "$url")
+ ;;
+ content=$(rdrview -H "$url" | lynx -stdin --dump -force_html)
+ ;;
+ esac
+
+ printf "%s0s" "$data" "$content"
+
+
+I hope this helps anyone wanting to experiment with sfeed and fdm, or
+looking at different ways of going a bit more offline. As always, you
+can find all of these config my dotfiles repo, link on the gopher
+homepage if needed.
+
+
+.EOF