💾 Archived View for gemini.circumlunar.space › users › acdw › work-notes captured on 2023-12-28 at 15:50:36. Gemini links have been rewritten to link to archived content
⬅️ Previous capture (2020-09-24)
-=-=-=-=-=-=-
I take a lot of notes at work and email them to myself and then like ... don't read them or do anything with them. They usually just sit in my 'Work notes' folder in my email. But now...
You can see them too!!!!
At some point I might even automate this, but for now I'm doing it manually. Enjoy!
https://github.com/mrzool/bash-sensible
https://github.com/sindresorhus/awesome-scifi
or like, this one (latin modern mono)
crux -- at least look at these
(M-x package-install RET try RET first!!)
STUNNEL - to TLSify an awk server
dynamic range compression w/ffmpeg
from kumquat on #meta @ tilde.chat
1. remove the skins from the chickpeas
2. use white vinegar and not lemon juice
3. use the aquafaba to thin out the hummus, rather than water
a lot of times I don't want to drop $$ on marcona almonds, so I use just sliced almonds or another nut I have hanging out in the freezer. I've even used hazelnut meal when I didn't seem to have enough almonds ~~ kumquat
Still mostly emacs ...
But other stuff too ...
how to stop procrastinatin (still need to read)
And old computer searching ...
cool guy with cool emacs config
mac-centric config of emacs (based on rakhim's)
librefox, not-a-fork of firefox with better defaults
better than make? allegedly...
possibly far too incisive, really. kind of stings a bit.
"I for one welcome our Robot overlords"
-- email kensanata re: toki.transjovian.org
lasers & feelings -- also, curiously enough, from kensanata
https://github.com/amno1/dotfiles/blob/master/.emacs.d/lisp/init.org
https://www.emacswiki.org/emacs/ElDoc
https://github.com/debanjum/company-ledger
https://github.com/bbatsov/crux
literate configs
https://www.wisdomandwonder.com/wp-content/uploads/2014/03/C3F.html
https://pages.sachachua.com/.emacs.d/Sacha.html
They're full of beans
~ crossword clue and hilarious phrase
https://so.nwalsh.com/2020/02/29/dot-emacs
esp. look at appearance and custom file
some performance advantages of lexical scope
Bicycles and UNIX are the two best inventions I've interacted with. Well, they and Emacs.
Great example of the Web Gone Too Far:
electrek's best sub-1200 bikes
okay foreal tho: read this to get kNOWLEDGE
Configuring Emacs from scratch - use-package
EVIL
https://github.com/emacs-evil/evil-collection
https://github.com/emacs-evil/evil
Apropos of nothing, my Enter key on this keyboard is sticky... (as in it stays down, not that it's covered in anything)
more emacsy goodness from Alex Schroeder
this looks promising to check out
Database set for Practical SQL
-- the book is available from the library:
looks like a good computer recycler
read this - might be *too real*
looks like a good computer recycler
Let's try using Links, how bad could it be??
oblique strategies as an app // gp
seinen or josei - anime targeted toward an older (and hopefully less horny) audience
On Basilisk Station - David Weber
Chomsky PDF: "Strategies of Manipulation"
pizza recipe, found by easter egg in a personal website
(well, watch actually, whatever)
"Getting my tabs under control" - Solderpunk
~spring on republic.circumlunar.space
---
I need to look more at using vimwiki, seriously
and more, of course, courtesy of ~epoch
-> write up a spec proposal for :^) the sarcasm line in text/gemini
The decommoditization of protocols
refer for other business people
madi swan (heard on klsu, apparently local)
grab colors off this (red, yellow, green, blue, gray, bg, fg, cyan [window borders], )
openssl s_client -showcerts -servername your.host.com -connect host:port | openssl x509 –noout
openssl req -new -subj "/C=CA/CN=*.makeworld.gq" -addext "subjectAltName = DNS:makeworld.gq, DNS:*.makeworld.gq" -x509 -newkey ec -pkeyopt ec_paramgen_curve:prime256v1 -days 1825 -nodes -out cert.pem -keyout key.pem
https://michaelheap.com/self-signed-ssl-client-certificates/
https://portal.mozz.us/gemini/tilde.black/users/fox/journal/20200706-gemini-on-tor.gmi
https://community.torproject.org/onion-services/overview/
gopher://gopher.black/1/phlog/20180427-gopher-black-on-tor-part-1
gopher://gopher.black/1/phlog/20180428-gopher-black-on-tor-part-2
https://alexschroeder.ch/wiki/2020-07-02_An_overview_over_my_Gemini_projects
JOBS
https://scribe.breezy.hr/p/740a946753cf-scribe-ghostwriter
---
https://alexschroeder.ch/wiki/2020-06-04_Gemini_Upload
https://alexschroeder.ch/wiki/Baschdels_spin_on_Gemini_uploading
https://alexschroeder.ch/wiki/2020-06-04_Gemini_Upload
WFH
https://intern.textbroker.com/us/author-signup.php
https://www.oatmealstudios.com/html/pages/write-guide.php
https://ttec.taleo.net/careersection/10020/jobdetail.ftl?job=02OJ5&lang=en
https://www.scribendi.com/jobs.en.html#freelance
https://www.sps.com/greeting-card-guidelines-submissions
https://www.gramlee.com/jobs.html
https://www.kirkusreviews.com/about/careers/
https://boards.greenhouse.io/bevy/jobs/4755656002
OTHER
https://www.vanityfair.com/hollywood/2020/06/ziwe-fumudoh-baited-interview-alison-roman
https://en.wikipedia.org/wiki/Joan_Stark
---
that's so southern, louisiana pronunciation
---
https://blog.ebrpl.com/?s=business
- make list of already-posted-about businesses
- think of more emails to send
- bbb of baton rouge?
- john smith?
- Kelly?
- why not big names, like Caine's, etc?
- bicycle shops
- facebook post ?
- polish up question list
mmmm depends. one's i've played: Dark & Shattered Lands, Forgotten Kingdoms, Shadowgate, Genesis, BatMUD, Lost Souls, Discworld MUD
out of those, Forgotten Kingdoms is the most well-made, but also probably the least-populated
Discworld is fun, Genesis has a fantastic newbie area, DSL and Shadowgate have a lot of people but tend to be hack-and-slash MUDs
BatMUD has a *ton* of people but is very hack-and-slash
https://news.ycombinator.com/item?id=17787816
http://rickcarlino.com/2018/07/11/fabulous-text-only-websites-2018-edition-html.html
https://news.ycombinator.com/item?id=13337948
https://idle.nprescott.com/2020/why-bother-with-markdown.html
ALSO: WRITE A GETTING STARTED ON GEMINI GUIDE
---
SSS N: [redacted]
attached: the beginnings of a pager in bash (no scroll up??)
cf.
https://github.com/dylanaraps/fff/blob/master/fff
https://github.com/dylanaraps/pure-bash-bible
https://github.com/dylanaraps/writing-a-tui-in-bash#line-wrapping
[2020-06-23T21:59:21.348Z] <makeworld> Also make sure you're hashing SubjectPublicKeyInfo and not the whole cert if possible
[2020-06-23T21:59:26.722Z] <makeworld> Yeah in the TOFU threead
[2020-06-23T21:59:35.419Z] <acdw> oh good point -- I'll have to re read that thread
[2020-06-23T21:59:40.637Z] <acdw> okay I gotta go get on the desk
[2020-06-23T21:59:41.483Z] <acdw> o/
Public Key Pinning For TLS Using a Trust on First Use Model
gopher://zaibatsu.circumlunar.space/~solderpunk/phlog/why-gopher-needs-crypto.txt
attached: art thing and another art thing
attached: bollux with cert validation (no TOFU, no config)
attached: gmi/txt art (with png sources)
attached: gemlog post
CONTENT CREATOR -- ???
FREELANCE RESUME WRITER
GEMINI TEST CASES
- gempaper.strangled.net has a v1 cert, needs v3 (?)
file server for gemini BASIC AS HELL
CSS FOR .GALLERY - ACDW.NET
.gallery { display: grid; grid-template-columns: 1fr 1fr 1fr; } .gallery > figure { border: 1px dotted; /* or whatever */ margin: 0; padding: 1ch; text-align: center; }
https://letsencrypt.org/docs/a-warm-welcome-to-asn1-and-der/
use to put bollux source on gemini
https://portal.mozz.us/gemini/gemini.circumlunar.space/users/christina/
--- GEMINI INTERESTING THINGS ---
makeworld: saves hash of raw cert and expiry date for TOFU
xq: store pubkey?
--> PUBKEY // PRIVKEY
-> CERT == EXPIRATION DATE SIGNED WITH PUBKEY
it's like "i'm guaranteeing you for 3 months that i am in control of this server"
openssl x509 -pubkey -dates -wahtver
17:33 <makeworld> xq: Why store the fingerprint along with the pubkey, like why does it matter if the cert is refreshed or not, as long as the pubkey matches?
17:33 <xq> nah, doesn#t really matter
17:33 <xq> i would just announce to the user that something has changed in a non-intrusive way
https://tildegit.org/sloum/bombadillo/issues/173
17:37 <makeworld> My unreleased browser caches any text/gemini or text/plain pages, storing the rendered page, url and the link. The max number of pages and/or the max cache size in bytes is configurable
17:38 <makeworld> The cache is just in-memory, so it starts whenever the browser is opened
17:38 <acdw> oh cool -- yes I was thinking about an in-memory cache so like, backs and forwards wouldn't do a round-trip with the server
17:38 <makeworld> The cache is organized by URLs, and I also normalize the URLs so that if it has :1965 or no port it doesn't create a double entry
17:38 <makeworld> Yeah exactly
bollux: - => blastoff "${BOLLUX_URL%/*}"
USE URL-2.SH OMG
url.sh - split and join url. using 'eval'. is it secure? I'm not sure. it's attached.
another thing is attached too -- but whatever. why am I doing this again????
What I NEED to do is just parse the URL every time into a new array. I can't really pass arrays around in bash - it's not going to be super efficient but if I cared about that I wouldn't be programming it in BASH.
DECLARE -N OMG OMG OMG (bash 4.3)[[[[[[[[[[[[[[[[[[ URL-2.SH ]]]]]]]]]]]]]]]]]]]]
A variable can be assigned the nameref attribute using the -n option to the declare or local builtin commands (see Bash Builtins) to create a nameref, or a reference to another variable. This allows variables to be manipulated indirectly. Whenever the nameref variable is referenced, assigned to, unset, or has its attributes modified (other than using or changing the nameref attribute itself), the operation is actually performed on the variable specified by the nameref variable's value. A nameref is commonly used within shell functions to refer to a variable whose name is passed as an argument to the function. For instance, if a variable name is passed to a shell function as its first argument, running
declare -n ref=$1
inside the function creates a nameref variable ref whose value is the variable name passed as the first argument. References and assignments to ref, and changes to its attributes, are treated as references, assignments, and attribute modifications to the variable whose name was passed as $1.
If the control variable in a for loop has the nameref attribute, the list of words can be a list of shell variables, and a name reference will be established for each word in the list, in turn, when the loop is executed. Array variables cannot be given the nameref attribute. However, nameref variables can reference array variables and subscripted array variables. Namerefs can be unset using the -n option to the unset builtin (see Bourne Shell Builtins). Otherwise, if unset is executed with the name of a nameref variable as an argument, the variable referenced by the nameref variable will be unset.
something like this
openssl s_client ... | openssl x509 -noout -SHA256 -subject -dates -fingerprint | while IFS='=' read var val; do printf "%s='%s'\n" "$var" "$val" done
-- but what to do with the output? Save the whole thing, then...what? Source it? Hm....
---
icon adapted from
https://commons.wikimedia.org/wiki/File:H%C3%A9raldique_meuble_Cygne_passant.svg
install icon into $(PREFIX)/share/icons/hicolor/scalable/apps/
-- possibly convert to 48x48 png to $(PREFIX)/share/icons/hicolor/48x48/apps/
BOLLUX.DESKTOP -- install to $(PREFIX)/share/applications/
[Desktop Entry] Name=bollux GenericName=bollux Comment=Terminal gemini client Categories=Network; Icon=bollux Exec=bollux %u Terminal=true Type=Application MimeType=x-scheme-handler/gemini;x-scheme-handler/gopher;
after installed: -- update-desktop-database $(PREFIX)/share/applications
TOFU -- SET UMASK TO 077 -- LOOK AT
https://tildegit.org/solderpunk/AV-98/src/branch/master/av98.py#L290
see earlier email for actual code. this is going to be process
1. get domain's SSL fingerprint
2. do we already have the domain's fingerprint? -->
- text files in $XDG_DATA_HOME/bollux/certs/<domain.name>.fprint (?)
3. if it exists: is it the same?
- yes: OKAY GREAT
- no: OH NOES TELL THE USER - WHAT DO?
4. if it doesn't:
- OKAY FINE WE'LL JUST SAVE IT -- possibly notifying the user.
KEYBINDS
'-' run blastoff "${BOLLUX_URL%%/*}" # error handling - if path is '/' do nothing
OTHER NOTES STUFF
- to read header: `read -n 1027` (only read code + ' ' + 1024 bytes)
- how to see if header is too long???
- redirects: keep previous in an array and don't keep redirecting if we've been there before
- ask before cross-domain or cross-protocol redirect
- REALLY SHOULD JUST PASS AROUND URL AS ARRAY
---
GEMINI
======
COPROC
------
#!/usr/bin/env bash url="$1" serv="${url#*//}" serv="${serv%%/*}" echo "URL='$url' SERV='$serv'" coproc openssl s_client -servername "$serv" -connect "$serv:1965" -ign_eof -crlf openssl x509 -fingerprint -noout <&"${COPROC[0]}" >fingerprint printf "FINGERPRINT: %s\n" "$(cut -d'=' -f2 <fingerprint)" printf "SENDING REQUEST: $url\n" echo "$url" >&"${COPROC[1]}" printf "RESPONSE: \n" document=false while read -r; do hre='^[1-6][0-9] .+