hrbrmstr's Daily Drop<p><strong>hrbrmstr’s 2024’s Daily Drivers; Rep & Ren; Vim Tricks</strong></p> <p><em>Happy New Year (or, Happy Day 1,096 of 2020)!!!</em></p><p>We’ll start the year off with a post on Day 1 and the first proper-post of the Drop’s new home!</p><p>I <em>think</em> I got all subscribers on the new platform (if you’re getting this via RSS or socmed and did not see it in email, please try to re-sign-up).</p><p>Paid subscribers should be getting a Substack/Stripe refund this week as soon as the bank lets me use MFA to do the manual transfer Stripe requires. Bonus Drops will continue in 2024, and a kind/generous soul has already re-patroned, so I know that functionality works on WordPress. I won’t be re-auto-paid-subbing anyone since that feels super-icky (and, somewhat scary that it’s allowed with just a Stripe Id).</p><p>No TL;DR today as the first section perplexed Perplexity, and the summary was fairly useless.</p> <p><a href="https://dailydrop.hrbrmstr.dev/?post_type=post&p=139502198" rel="nofollow noopener noreferrer" target="_blank">Subscribe</a></p> Photo by Matt Hatchett on <a href="https://www.pexels.com/photo/black-jeep-wrangler-on-dirt-road-surrounded-by-trees-3248777/" rel="nofollow noopener noreferrer" target="_blank">Pexels.com</a> <p><strong>hrbrmstr’s 2024’s Daily Drivers</strong></p><p>I take some time at the end of each year to reassess what tech/services/idioms I use and see if any are in need of a re-think. To that end, here’s what I’d consider my “daily drivers” at the start of 2024.</p><ul><li><strong>Hardware</strong>: Apple all the way down. I will, likely, retire my home DL380 x86_64 “data science” server since I don’t need the RAM anymore, and move to some smaller, Ubuntu arm64 home server as finances allow.</li><li><strong>Cloud</strong>: Hetzner arm64. I’ll be migrating the main <code>rud.is</code> site & blog over to there once the contract at the current hosting provider (SSDNodes) is up.</li><li><strong>Operating System</strong>: Until Apple does something super-daft, I’m sticking with macOS, iOS, iPadOS, watchOS, tvOS.I run the Apple Developer Betas all the time on all hardware. Ubuntu is the primary server software.</li><li><strong>“VPN”</strong>: <a href="https://tailscale.com/" rel="nofollow noopener noreferrer" target="_blank">Tailscale</a>. I use it to get to all my servers and also to route connections through home when away on untrusted networks.</li><li><strong>Launcher</strong>: <a href="https://www.raycast.com/" rel="nofollow noopener noreferrer" target="_blank">Raycast</a> (paid).</li><li><strong>Desktop VM/Containers</strong>: <a href="https://orbstack.dev/" rel="nofollow noopener noreferrer" target="_blank">OrbStack</a> has won me over with their free, personal tier, rapid updates, cool features, and perfect Docker API/CLI compatibility.</li><li><strong>Endpoint Security</strong>: Everything from <a href="https://objective-see.org/" rel="nofollow noopener noreferrer" target="_blank">Objective-See</a>.</li><li><strong>Password Manager</strong>: Bitwarden (hosted, still). I’ll get around to finally enabling the local server sometime this year. It’s not a priority.</li><li><strong>Windowing</strong>: <a href="https://github.com/rxhanson/Rectangle" rel="nofollow noopener noreferrer" target="_blank">Rectangle</a> (Move and resize windows in macOS using keyboard shortcuts or snap areas).</li><li><strong>Audio/Video</strong>: <a href="https://obsproject.com/" rel="nofollow noopener noreferrer" target="_blank">OBS Studio</a> for what one would expect to use it for, <a href="https://hindenburg.com/" rel="nofollow noopener noreferrer" target="_blank">Hindenburg</a> for podcast-y/audio things that I can’t do with <code>ffmpeg</code>; <a href="https://github.com/yt-dlp/yt-dlp" rel="nofollow noopener noreferrer" target="_blank">yt-dlp</a> to free content from daft sites, <a href="https://krisp.ai" rel="nofollow noopener noreferrer" target="_blank">Krisp</a> for perfect sound and transcripts. Elgato kit for lights, Stream Deck, and mics.</li><li><strong>Browsers</strong>: <a href="https://arc.net/" rel="nofollow noopener noreferrer" target="_blank">Arc</a> is primary on desktop, <a href="https://browser.kagi.com/" rel="nofollow noopener noreferrer" target="_blank">Orion</a> is primary on mobile, and I use Safari when I need/want to use Apple Pay. I keep <a href="https://vivaldi.com/" rel="nofollow noopener noreferrer" target="_blank">Vivaldi</a> around if Arc ever decides to give in to Google, and keep Firefox updated for cross-platform testing. If Google makes it untenable for both Arc and Vivaldi to keep ahead of tracking shenanigans, I’ll switch to Orion everywhere. NOTE: I’ll get to Browser Extensions a bit later after getting through some of the services I use.</li><li><strong>Editors</strong>: I can’t seem to avoid using good ol’ Vim at the terminal, despite so many other cool and useful terminal editors I’ve linked to over the past two years. Some habits die super-hard. <a href="https://www.sublimetext.com/" rel="nofollow noopener noreferrer" target="_blank">Sublime Text</a> is my general purpose workhorse for casual notes, hacky-pasteboard, and quick-pastes I need to keep around for a bit. It’s also where any text from Perplexity lands before using it elsewhere. More on that later. Unfortunately, Visual Studio Code reduces enough cognitive load (a necessity since this daft long covid thing) that I’m sticking with it for most coding tasks/projects. Towards the end, I’ve added a section with some of the extensions I use/rely on. For work in R-proper (Quarto use is in VS Code), I still use RStudio (Dailies).</li><li><strong>Mail</strong>: I do not use any local clients on desktop, and still rely on hosted gmail for two domains I own. I looked at switching both of them, but it is not a priority unless Google does more dumb stuff.</li><li><strong>Calendar</strong>: <a href="https://flexibits.com/fantastical" rel="nofollow noopener noreferrer" target="_blank">Fantastical</a> (paid) is how I roll. It makes calendar ops tolerable on both desktop and mobile.</li><li><strong>Mastodon</strong>: I financially support both <a href="https://apps.apple.com/us/app/ivory-for-mastodon-by-tapbots/id6444602274" rel="nofollow noopener noreferrer" target="_blank">Ivory</a> and <a href="https://apps.apple.com/us/app/mona-for-mastodon/id1659154653" rel="nofollow noopener noreferrer" target="_blank">Mona</a> but use Ivory on desktop and mobile.</li><li><strong>Bluesky</strong>: I use their browser app on desktop and their mobile app on mobile. I did beta test <a href="https://graysky.app/" rel="nofollow noopener noreferrer" target="_blank">Graysky</a>, and do like it, but I’m not shelling out coin for more elite access to a still unproven social media site.</li><li><strong>Terminal</strong>: <a href="https://wezfurlong.org/wezterm/" rel="nofollow noopener noreferrer" target="_blank">WezTerm</a> still rules the CLI, here.</li><li><strong>RSS</strong>: <a href="https://inoreader.com/" rel="nofollow noopener noreferrer" target="_blank">Inoreader</a> (paid). It’s rock-solid, inexpensive (relatively), nad great “pro” features, and makes discovery easy.</li><li><strong>Bookmarks</strong>: <a href="https://raindrop.io/" rel="nofollow noopener noreferrer" target="_blank">Raindrop</a> (paid). <em>However</em>, now that I’ve bothered to setup my own “serverless” service, I will likely move off of Raindrop to it (we’ll be covering this across a few Weekend Project Editions).</li><li><strong>AI Assistant</strong>: <a href="https://www.perplexity.ai/" rel="nofollow noopener noreferrer" target="_blank">Perplexity</a> (paid). I know some folks are just plain against using these Chat/AI/Research-as-a-Service models for a host of reasons. You do you, leave me be, and I’ll refrain from listing the dozen or so reasons you’re wrong. Perplexity gives me</li><li><strong>Public Git</strong>: I financially support <a href="https://sourcehut.org/" rel="nofollow noopener noreferrer" target="_blank">SourceHut</a> and am switching from both GitHub and GitLab to <a href="https://codeberg.org/" rel="nofollow noopener noreferrer" target="_blank">Codeberg</a> for new projects (will slowly migrate old things there, too). I also financially support Codeberg. Sadly, I — unfortunately — need to keep up with tech on GitHub since most places I’ve worked for, work for, or may work for use GitHub. I use Tailscale to interact with a personal, centralize git (ssh) server.</li><li><strong>CLI App Development</strong>: Due to the aforementioned cognitive load thing, I mainly use Go and JavaScript (Node or Deno) for non-Bash CLI application development.</li><li><strong>GUI App Development</strong>: 2024 is the year of <a href="https://wails.io/" rel="nofollow noopener noreferrer" target="_blank">Wails</a>. It’s a Node + Go + WebKit framework for cross-platform apps. More on that as the year goes by.</li><li><strong>Fitness</strong>: Whoop, Peloton (bike—indoor/strength/walk), Garmin (bike—outdoor).</li><li><strong>News</strong>: Tons aggregated in RSS. Daily apps/sites visited: <a href="https://ground.news/" rel="nofollow noopener noreferrer" target="_blank">Ground News</a> (paid); <a href="https://www.pressherald.com/" rel="nofollow noopener noreferrer" target="_blank">Portland Press Herald</a> (paid); NYT (paid); WaPo (paid); WSJ (paid). I sub to a few others in gosh awful states to help ensure they at least document our demise.</li><li><strong>ObservableHQ</strong>: I did not know where to put this, but it’s an invaluable tool for both personal projects and work. Being able to use WebR for data wrangling, there, is a game changer for me.</li><li><strong>Quarto/Typst</strong>: I try to do all non-web/CLI projects in Quarto, and we’re doubling down on <a href="https://typst.app/" rel="nofollow noopener noreferrer" target="_blank">Typst</a> at work, this year. They’re a powerful combo.</li><li><strong>“Database”</strong>: DuckDB, SQLite, Postgres (in that order, whenever possible). Working on moving to <a href="https://iceberg.apache.org/" rel="nofollow noopener noreferrer" target="_blank">Iceberg</a> from Parquet as the year progresses. DuckDB is what’s making it possible to ditch the high-wattage server at home.</li><li><strong>WebDev</strong>: <a href="https://tachyons.io/" rel="nofollow noopener noreferrer" target="_blank">Tachyons</a> (CSS); <a href="https://lit.dev/" rel="nofollow noopener noreferrer" target="_blank">Lit</a> (JS/WebComponents); npm + <a href="https://vitejs.dev/" rel="nofollow noopener noreferrer" target="_blank">Vite</a>; WebR; Once Svelte moves 100% from TypeScript, I’ll likely move from Lit to it.</li><li><strong>Browser Extensions</strong>: uBlock Origin, Bitwarden, Canvas Blocker – Fingerprint Protect, LanguageTool, Ground News, Raindrop, Postlight Reader, Simple JavaScript Toggle, my Quartize extension, Perplexity, Kagi. I load as many from source as I can. The list is far to long for my comfort level, and I’ll likely remove some as the year progresses.</li></ul><p>If I’ve missed any tech/categories just drop a note and I’ll add them. However, most everything else likely just involves sync’d markdown files and Bash scripts.</p> Photo by Skitterphoto on <a href="https://www.pexels.com/photo/black-binocular-on-round-device-63901/" rel="nofollow noopener noreferrer" target="_blank">Pexels.com</a> <p><strong>Rep & Ren</strong></p><p>These <a href="https://blog.robenkleene.com/2023/12/26/introducing-rep-ren/" rel="nofollow noopener noreferrer" target="_blank">two utilities</a> (<a href="https://blog.robenkleene.com/2023/12/26/introducing-rep-ren/" rel="nofollow noopener noreferrer" target="_blank">rep GH</a>|<a href="https://github.com/robenkleene/ren-find" rel="nofollow noopener noreferrer" target="_blank">ren CH</a>)may end up in next year’s “daily driver” list. They’re two new command-line utilities designed for find and replace in files and renaming files (respectively).</p><p>Key features of these utilities include:</p><ul><li><p><strong>Standard input determines what should be changed</strong>: <code>rep</code> takes grep-formatted text via standard input to determine which lines to change, while <code>ren</code> takes a single file per line to determine which files to rename.</p></li><li><p><strong>Preview of the resulting diff</strong>: By default, both <code>rep</code> and <code>ren</code> print a diff of the changes that would result by performing the find and replace or rename.</p></li><li><p><strong>Write flag</strong>: To actually write the changes to disk, both utilities have a <code>-w</code> or <code>--write</code> flag.</p></li></ul><p>The utilities were inspired by the need for a more efficient and precise way to perform find and replace operations on the command line, as well as the desire for better repeatability and easier interpretation of the results.</p><p>Roben has plenty of examples to riff from, so I’ll leave you in his most capable hands.</p> Photo by Brett Sayles on <a href="https://www.pexels.com/photo/man-on-mid-air-performing-skateboard-trick-1996969/" rel="nofollow noopener noreferrer" target="_blank">Pexels.com</a> <p><strong>Vim Tricks</strong></p><p>Given my aforementioned devotion to good ol’ Vim, I feel compelled to also mention <a href="https://vimtricks.com/p/category/tips-and-tricks/" rel="nofollow noopener noreferrer" target="_blank">VimTricks</a> in this 2024 inaugural edition. The site is chock full of info on the world’s bestest editor. Vim can be painful to learn, at first, but Vim Tricks can make it both more accessible and fun to use.</p><p>This online archive comes from an email newsletter that delivered (it’s not active, anymore) a steady stream of Vim tips, tricks, how-tos, guides, and videos every Monday and Thursday. Whether you’re a Vim novice or a seasoned expert, VimTricks likely has something you will not have known before.</p> <p><a href="https://dailydrop.hrbrmstr.dev/?post_type=post&p=139502198" rel="nofollow noopener noreferrer" target="_blank">Subscribe</a></p> <p><strong>FIN</strong></p><p>I’m still working out some of the kinks (such as: how to have a topics block below the tagline like Substack had). ☮️</p> <p><a href="https://dailydrop.hrbrmstr.dev/2024/01/01/drop-395-2024-01-01-happy-new-year/" rel="nofollow noopener noreferrer" target="_blank">https://dailydrop.hrbrmstr.dev/2024/01/01/drop-395-2024-01-01-happy-new-year/</a></p><p><a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/apple/" target="_blank">#apple</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/linux/" target="_blank">#linux</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/mac/" target="_blank">#mac</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/ren/" target="_blank">#ren</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/rep/" target="_blank">#rep</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/ripgrep/" target="_blank">#ripgrep</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/software/" target="_blank">#software</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/technology/" target="_blank">#technology</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/vim/" target="_blank">#vim</a> <a rel="nofollow noopener noreferrer" class="hashtag u-tag u-category" href="https://dailydrop.hrbrmstr.dev/tag/vs-code/" target="_blank">#vsCode</a></p>