Mario Villalobos

Technology

Random Thoughts for a Saturday Morning

  • Notes
  • I want to learn bookbinding because I want to make my own notebooks. I want to scour the world for a specific type of paper that fits me and use that to make my notebooks with. Imagining this search for the perfect paper excites the hell out of me.
  • Technology is exhausting me, and I just want to spend all my time holding paper, writing on paper, drawing on paper.
Drawing of circles with cross hatching
  • Drawing these circles in my notebook was one of the most therapeutic things I’ve done in a long time.
  • I want to buy more books but I’m running out of space in my apartment.
  • How much does LASIK eye surgery cost? I don’t want to wear glasses or contacts anymore.
  • I don’t have any tattoos but I kinda want some tattoos. No idea of what, though.
  • I want to buy a record player and build a vinyl collection of all my favorite albums. Then I want to sit and listen to these records and do nothing else. Just listening.
  • I used to spend so much time in libraries, and then I used to spend so much time in bookstores, and I’ve stopped doing that because I live in Montana and everything good is a long car ride away. I can’t walk to these places on a whim like I used to.
  • One of my fondest memories from college was listening to my friends talk about movies and argue why The Departed was an awful movie and why Infernal Affairs was better. I really miss those times, and I really miss having a more active social life.
  • All my friends are married now and have kids, and I don’t think I’ll ever be married or have kids, and I’m okay with that. I still wish I had a more active social life, though.
  • I think the thought of sitting at an outdoor cafe, drinking a good cup of coffee, and watching people walk by for hours is a day well spent, and that’s all I want to do when I’m older.
  • I’ve been thinking a lot about death. Don’t mistake me: I want to live for another 30, 40, 50 years, so not like that. More of this idea that so many of us are afraid of dying that we don’t ever truly live. That, in a way, we’re more afraid of living than dying. At least, I am. That we can’t ever truly live until we’re comfortable and fully accept our mortality, with dying. Memento mori: remember that you have to die.
  • Sartre wrote that he hoped “the last burst of my heart would be inscribed on the last page of my work, and that death would be taking only a dead man.” I’ve been thinking a lot about that over the past few weeks, and that’s how I want to live, how I want to go out. The problem is that I don’t think I have to courage to live like that, but the other problem is that I’m running out of days to live like that.
  • Montaigne wrote about “The Master Day”: the day that is judge of all the others. It’s the last day of your life, the day that completes your story.
  • With that said, I wonder if I will spend the rest of my life talking about living or actually living. I’m hoping for the latter, but who knows.

Automating YouTube with yt-dlp

  • Notes

I spent last weekend thinking through and implementing some ideas that have been rattling around my head for months. I wanted a way to automatically download videos from every YouTube channel I followed and to download any ad hoc video I came across in my day-to-day life that I wanted to watch later. What I didn’t want was to manage any of this myself. I had been using my RSS reader to get new videos from the channels I subscribed to, but I had to then use my RSS reader, filter through the items, add each item to my YouTube list, then initiate the download command in the terminal myself. I explained how I did this in this post from November, but again, I wanted something more automated.

So I figured out how to make it more automated… by automating most of it!

Here’s how it works.

What you need

I won’t go through what yt-dlp is or why I set it up the way I did because I explained that in my previous post, so please read that if you need a quick explainer. What this post will go through is how to setup yt-dlp to “subscribe” to your own list of YouTube channels and to download your own list of ad hoc (or watch later) videos automatically.

I’m using a 2018 Intel-based Mac mini with yt-dlp installed per their installation instructions. That means this setup is intended for people with a device running macOS. Optionally, to make this setup just that tad bit more awesome, you will also need:

First things first

Before we can automate anything, we have to create a few files first. In my previous post, I created an archive.md file to log all the videos I’ve downloaded. This is important. The archive file is the most important piece to this process, so create it now. Good? Okay. I then created a file called subscriptions.md and placed that in my main YouTube folder where all my files live. In this subscriptions.md file, I added each channel I wanted to subscribe to, one channel per line. For example, a snippet of my file looks like:

https://www.youtube.com/@PeopleMakeGames
https://www.youtube.com/@PeterMcKinnon
https://www.youtube.com/@PickUpLimes
https://www.youtube.com/@primitivetechnology9550

Essentially, that’s all you need. There’s nothing fancy to this. Keep in mind that this will download all the videos these channels produce, including shorts and other things. I don’t mind that, so this is good enough for me.

The next thing, and this is where the magic happens, is to simulate your yt-dlp command and add each file to your archive.md file. To do this, add both the --simulate and --force-write-archive commands. --simulate tells yt-dlp not to download anything and --force-write-archive adds all the videos from all your subscriptions to your archive.md file. Do you see why this is important? When you’re ready, you can now run your command. Mine looks like this:

yt-dlp -P "/path/to/YouTube/" -P "temp:tmp" -P "subtitle:subs" --simulate --force-write-archive -o '%(uploader)s-%(upload_date)s-%(title)s [%(id)s].%(ext)s' --download-archive '/path/to/archive.md' -f 'bestvideo+bestaudio/best' --sub-langs all,-live_chat --embed-subs --yes-playlist --batch-file '/path/to/subscriptions.md'

Depending on how many subscriptions you’ve added, this process could take a long time, so go outside, hang out with friends, read a book, do something else while this process runs. By the end of this, your archive.md file will most likely be huge. Mine has over 15,000 lines on it but barely cracks 300 KB. So really, you can leave this file alone forever and it’ll never cause you any issues (knock on wood).

This takes care of my subscriptions, but what about any ad hoc videos I may want to download and watch later? Well, I mostly answered that in my previous post (you should really read that post, it’s pretty good). Specifically, the important part is creating a youtube.md file and including the --batch-file command that points to it. Then, as I go along with my regular internet surfing life, I add links to any videos I want to watch later to this file using a simple Shortcut and my system automatically downloads it. How?

Well, I’m glad you asked!

Let’s automate the shit out of this

Time to create a few more files. I created four and called them: subscriptions.sh, subscriptions.plist, youtube.sh, and youtube.plist. I placed these files in my main YouTube folder, but the plist files can be moved or copied to /Library/LaunchAgents, which we’ll do later. I’ll focus on my subscriptions first.

In my subscriptions.sh file, I added:

#!/bin/bash
/usr/local/bin/yt-dlp -P "/path/to/YouTube/" -P "temp:tmp" -P "subtitle:subs" -o '%(uploader)s-%(upload_date)s-%(title)s [%(id)s].%(ext)s' --download-archive '/path/to/archive.md' -f 'bestvideo+bestaudio/best' --sub-langs all,-live_chat --embed-subs --yes-playlist --batch-file '/path/to/subscriptions.md'

This is similar to the code above but without the --simulate and --force-write-archive commands. This is the real deal command, so if you haven’t run the --simulate command, then you will be downloading everything in your subscriptions.md file. Maybe that’s what you want, so you do you. I’m not your mom.

The subscriptions.plist file is where the magic happens (lots of magic happening today). This file contains this bit of code:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>subscriptions</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/subscriptions.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>21600</integer>
    <key>disabled</key>
    <false/>
</dict>
</plist>

I’ve simplified my plist file compared to say, Jason, which I took a lot of inspiration from, but I customized his setup to fit my needs. He includes a few log files that are good practice to include, but I like living on the edge, so I didn’t include them. If you’d like to add them, include something like this in your plist file:

<key>StandardErrorPath</key>
<string>/path/to/ytdl_error.log</string>
<key>StandardOutPath</key>
<string>/path/to/ytdl_st_out.log</string>

A few things to note:

The Label key is essential if you plan on adding more than one file to the LaunchAgents folder. I gave this one a label of subscriptions to differentiate it from the others.

I set my StartInterval to 21600, which is 21,600 seconds, or 6 hours. I set it to this because this is not something I want running all the time, and it’s not something I want to be checking my downloads folder for to see if there’s something new. That’s the behavior I wanted to eliminate, so putting it to 6 hours has helped me pull away from my devices while still ensuring I have something new to watch a few times throughout the day. Honestly, I could set this to 24 hours and still be happy, which might be something I do in the future. Stay tuned.

Once this is all done and setup to your liking, navigate to /Library/LaunchAgents and copy your plist file into it. macOS might notify you that subscriptions.sh is an item that can run in the background. That’s exactly what you want. You may also have to add bash to your Files and Folders section in the Privacy & Security pane in your System Preferences. This ensures bash has permission to run on your system. Boy did that one have me scratching my head for a while.

And that’s essentially it. Rinse and repeat with the youtube.sh file:

#!/bin/bash
/usr/local/bin/yt-dlp -P "/path/to/YouTube/" -P "temp:tmp" -P "subtitle:subs" -o '%(uploader)s-%(upload_date)s-%(title)s [%(id)s].%(ext)s' --download-archive '/path/to/archive.md' -f 'bestvideo+bestaudio/best' --sub-langs all,-live_chat --embed-subs --yes-playlist --batch-file '/path/to/youtube.md'

And the youtube.plist file:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
    <key>Label</key>
    <string>youtube</string>
    <key>ProgramArguments</key>
    <array>
        <string>/path/to/youtube.sh</string>
    </array>
    <key>StartInterval</key>
    <integer>60</integer>
    <key>disabled</key>
    <false/>
</dict>
</plist>

And you have a fully automated YouTube setup. Note, I set the StartInterval to 60 because I don’t mind this running all the time because I don’t add too many ad hoc videos anymore, so when I do, I’d like to watch it sooner rather than later.

Because you took the time to add all your channel videos to your archive.md file, from this point forward, this setup will ensure you only download new videos as they’re posted to your subscriptions. Pretty nice, right?

But there’s one more piece to this that’s like icing on the cake. It’s not required, but I feel like this really completes the entire setup.

Tidying things up

The last thing I did was use a few apps to make this entire experience a tad nicer. First, I launched Hazel and added my YouTube folder. I then created… many rules:

  • Go into subfolders. I set the Kind to Folder and selected Run rules on folder contents. This rule ensures every rule hereafter is run within all the folders contained in my main YouTube folder. This is important because:
  • ‌Delete empty folders. Each rule hereafter creates lots of folders, and this rule tidies things up by deleting any empty folder. This rule is also simple. First, I set the Kind to Folder, and the Sub-file/folder Count to 0. I then Move any matches to the Trash. This is very important because:
  • Sorting subscriptions by folder. I created a rule for each and every subscription I have. The rule here is simple. I set the Name to contains the name of my subscription, e.g. MKBHD. I then used the Sort into subfolder option to sort my videos into its own folder. The pattern I used was Subscriptions ▸ <name of subscription>. Why do this? Because I don’t have time to watch TV all the time, and sometimes I want to binge through one channel’s output, and this makes that easier. After adding a rule for each of my subscriptions, I created my final rule:
  • Recently Added. This rule moves any file that hadn’t already been matched to a folder I called Recently Added. Again, this rule is very simple. All it has is Kind set to Movie and it Sort[s] into subfolder any matches to my folder called Recently Added.

Having this run 24/7 removes yet another cognitive weight from my life and just keeps things tidy. Work smarter not harder, right? And finally, on to the final step.

In Plex (you did download and install it, right?), I downloaded the YouTube-Agent.bundle plug-in and installed it per their installation instructions. This plug-in requires a bit of setup before you can take advantage of it. You have to create your own YouTube API key, which isn’t too tough, and each one of your movies needs to have the YouTube ID in its filename. Review my yt-dlp command and you may notice I’ve added [%(id)s] to my filename. This option is there to ensure YouTube-Agent.bundle adds the correct metadata to my movies.

Finally, I created two libraries, one called Subscriptions and the other called Recently Added. I pointed each to its respective folder, and in the Advanced section, I chose the YouTubeMovie plug-in in the Agent option. This is also where I added my API key.

If everything went well, then you truly have a (mostly) automated YouTube setup. I say mostly because I still have to add any ad hoc videos to my youtube.md file, but it literally takes 2 seconds to do so and that’s the only actual work I have to do. For the most part, I haven’t had to troubleshoot this setup yet, but knowing the pace of technology, I will have to sometime in the future.

Until then, I’ve been really enjoying this setup. Dare I say, it feels a tad magical, and I love it. Maybe you will, too.

My new FUJINON XF16-55mmF2.8 lens

Notes for November 25, 2022

  • Notes

I’ve done lots of sleeping and not enough reading this week, so this edition of my Notes (original name, huh?) will be shortish. Yeah, that’s the excuse I’m going with… Anyways! Here are some notes from today, this 25th day of November, 2022:

New lens

My new XF16-55mm lens arrived today. First impressions:

  • It’s big
  • It’s beautiful

That’s it because I haven’t really had a chance to play with it yet. Because Montana is very cold right now and because UPS doesn’t heat their trucks, my lens was ice cold as soon as I unpacked it. When I went to use it, condensation fogged up the lens, so I couldn’t really use it on anything. That’s fine because I wasn’t going to go out to shoot anything today anyway. Maybe this weekend?

Black Friday

How many people were ridiculously spammed today by emails from wish.com? Anyways, I setup a rule to automatically mark them all as spam, and my inbox has been quiet ever since.

I took advantage of some sales, many of which I did not really have my eye on, but when I saw them, I was like, why not? That’s how they get you. Well, me, at least.

Here are some of the deals I took advantage of:

  • 25% off a lifetime license to Plex Pass. I’ve been using Plex for years, and I’ve always had my eye on this, so I decided to take advantage of it now. Doing so gave me access to Plexamp, quite possibly the best music player I’ve ever used. It’s not without some major flaws, but the good parts far outweigh the bad. I’ve been thinking of doing a deep dive into it… I just have to write it.
  • A lifetime license for GameTrack+. I discovered this app a few weeks ago when my guilt over my backlog finally forced me to do something about it. I downloaded the app, added over 100 games into it, and realized that 1) this app is fantastic, and 2) I wanted the ability to add more lists, which, alas, was hidden behind a paywall. $20 for a lifetime pass was worth it for me.
  • 50% off a basic Xnapper license. Another app I discovered a few weeks ago. I noticed some web development blogs using it for their screenshots, and I thought it looked really cool. Once I bought the license, I used it on this post from a few days ago. Simple and nice. I like it.
  • 50% off Every Layout, Heydon Pickering & Andy Bell’s awesome CSS course. I love web development, and I’m always looking to improve my skills. I cannot wait to get started on this.

Video Games

I finished Spider-Man: Miles Morales yesterday, and my goodness. I have so many thoughts about this game, thoughts I hope to write soon. This game hit me hard.

Once I finished it, I still wanted to play video games, so I started Uncharted: The Lost Legacy, another game I purchased a year or two ago and never played. I’ve been playing since yesterday, and I’m enjoying it! I love the Uncharted universe, and this game is hitting all the right spots.

Finding your people

Okay, I did do some reading. I read this post by Tom Critchlow on generating agency through blogging, and this part jumped out to me:

It’s common to think of blogging as “building an audience”, but this can sound negative, self-serving, sleazy and promotional. Instead we can think of blogging as “finding your people”, which sounds much more wholesome, generative and positive.

Finding your people. That sounds nice, doesn’t it? I’ve found some people through blogging, and having them in my life has made my life that much more fun. I think when I first started blogging, building an audience was something I cared about, but when the focus turned to that, I cared more about them and not on my writing, and that only made me hate blogging, so I quit. When I returned, I did not focus on building an audience, and because of that, I’ve enjoyed writing again.

I wonder if people can notice that. I really have no clue how many people are reading me because I don’t have analytics on my site, nor do I care to add them. The odd email here and there from a reader is more than enough for me.

Again, thank you for reading. I really appreciate it.

Notes for November 18, 2022

  • Notes

I’m still trying to wrap my head around what exactly I’m wanting to do with these weekly notes (this is only my second one), but I’m the type of person that needs to do something to get a feel for it and not one that’s good at planning ahead… Anyways! Here are some notes from today, this 18th day of November, 2022:

Grab two of everything and hop onto the Arc

Earlier this week, I received an invite to try the brand new, overly hyped, Arc browser. First impressions:

  • It’s… a browser? But the sidebar is on the left side, and it has a nice enough design, but that icon… it’s very ugly? Is that just me? It kinda looks like the Apple App Store icon had a baby with the Amazon logo.
  • I really like how the ⌘+T shortcut brings up the Command Bar instead of opening a new tab. That shortcut is already ingrained in my muscle memory, so using it how the people behind Arc want me to use their browser is easy enough. I like how I can switch between tabs from here, search the web, enter URLs, whatever. Clever idea.
  • I really like the idea of folders and spaces, and the easel seems like a great way to collect research and notes.
  • My problem with all that though (and the fact that it’s based on Chromium) is that I already have years and years of workflows built using Safari, not to mention some amazing Safari-only extensions that I simply cannot install in Arc. I want to like Arc, but old habits die hard.
  • If you’d like to try it, I have 5 invites to the first 5 people to click this link!

Not your father’s wrestling federation

Earlier this week, I hopped onto the Mastodon bandwagon, and I have mostly been enjoying myself. It’s not a place I’m spending too much of my time in, but when I do, it’s nice. Quiet. But it does have its quirks, quirks that were nicely explained in this article by the EFF:

No matter how much you love or hate email itself, it is a working federated system that’s been around for over a half-century. It doesn’t matter what email server you use, what email client you use, we all use email and the experience is more or less the same for us all, and that’s a good thing. The Web is also federated – any web site can link to, embed, refer to stuff on any other site and in general, it doesn’t matter what browser you use. The internet started out federated, and even continues to be.

I really liked this email analogy because once I read it, I immediately understood what a federated social media network actually meant and what it will mean in the future. This is what social media should have been all along!

However, it took email a long time before people fully grokked it, and I think the same will be true for Mastadon and other federated networks. Max Böck put it best when he wrote:

I think we’re at a special moment right now. People have been fed up with social media and its various problems (surveillance capitalism, erosion of mental health, active destruction of democracy, bla bla bla) for quite a while now. But it needs a special bang to get a critical mass of users to actually pack up their stuff and move.

When that happens, we have the chance to build something better. We could enable people to connect and publish their content on the web independently – the technology for these services is already there. For that to succeed though, these services have to be useable by all people - not just those who understand the tech.

Just like with migration to another country, it takes two sides to make this work: Easing access at the border to let folks in, and the willingness to accept a shared culture - to make that new place a home.

These services have to be useable by all people - not just those who understand the tech. Exactly. I think we can get there, though, especially if these services can accommodate more and more people, people who don’t want to understand all this “tech stuff.” Give it to the big guys, though: they made this stuff easy for anyone to understand. But it was this ease that got us into this mess in the first place!

“This enshittification [more mass surveillance, finer-grained and more intrusive ad targeting],” writes Cory Doctorow, “was made possible by high switching costs. The vast communities who’d been brought in by network effects were so valuable that users couldn’t afford to quit, because that would mean giving up on important personal, professional, commercial and romantic ties.”

With federated networks, these switching costs are no longer an issue. Hell, I created my Mastodon account in 2018, but I switched to the social.lol instance in just a few minutes. All my followers, everyone I followed, my block and mute lists, all transferred over just fine. The whole experience was slick! Again, this is what social media should be.

To the moon! Some stretchy stuff! 8 billion people!

NASA launched the Artemis 1 rocket earlier this week, “which will, among other things, take scientific experiments to produce metal on the moon.”

What if we could save money by using the resources that are already there? This process is called in-situ resource utilization, and it’s exactly what astrometallurgy researchers are trying to achieve.

[…]

While the moon has metals in abundance, they’re bound up in the rocks as oxides—metals and oxygen stuck together. This is where astrometallurgy comes in, which is simply the study of extracting metal from space rocks.

I love that astrometallurgy exists. What a cool word and what a cool science.

Apparently, scientists have created a “skinlike sticker” that “runs machine-learning algorithms to continuously collect and analyze health data directly on the body. The skinlike sticker… includes a soft, stretchable computing chip that mimics the human brain.”

“We envision that wearable electronics,” they continue

will play a key role in tracking complex indicators of human health, including body temperature, cardiac activity, levels of oxygen, sugar, metabolites and immune molecules in the blood. […] Our work is a good starting point for creating devices that build artificial intelligence into wearable electronics – devices that could help people live longer and healthier lives.

That always seems to be the promise, huh? This promise to “live longer and healthier lives.” Living longer is always nice, but should we? Our bodies might possibly go on for forever, but can our minds? Can a human mind handle 150, 500, 1000 years of being alive? At some point, we have to die. But this stretchable sticker idea is cool.

The UN reported earlier this week that humanity has surpassed 8 billion people. Imagine 8 billion people living for over 100 years. Can planet earth sustain that? I don’t think it can. I’m glad and excited that we’re pushing our species past our home and into the great unknown that is outer space, but earth is our home, too. Are we parasites or caretakers? Are we here to ravage this place and move on, or can we live with some sort of harmony with our ancestral home?

I hope we can, but unless I live to be 250 years old, I might not be alive to find out.

Sleeping while on duty

Finally, I learned a new term today: ‌inemuri (居眠り), or “present while sleeping” in Japanese. Basically, it’s this idea of taking power naps while at work, and in Japan, these naps are seen as virtuous because it signifies that you’ve worked to the point of complete exhaustion.

For me, though, it means that napping is a necessary part of modern human culture. I’ve been having trouble sleeping all year, but my 10, 20, 30 minute naps I have taken throughout the year have helped me stay sane. And yes, sometimes I have snuck a quick nap or two while at work, and I am not ashamed! It means I have worked myself to the point of complete exhaustion. Like a real American!

Creating My Own MTV Music Channel

  • Notes

I grew up in the ‘90s, and one of the most popular channels in my household growing up was MTV. Our family loved tuning into MTV and watching music video after music video (yes, MTV used to play music videos!). Every day before school, my mom would turn on the TV, and we would all get ready for school listening to the music from these videos. When I finished getting ready for school, I would sit on the couch waiting for my siblings to finish getting ready and watch music videos by Aerosmith and Jamiroquai and Mariah Carey and Nirvana, and on and on it went, music video after music video. This was my childhood, and I didn’t know I missed it until I inadvertently stumbled into my own music video channel.

A few years ago, I made an attempt to get rid of my reliance on Google and their services. At the time, ever since Google Reader’s demise (RIP), I had began transitioning away from Google, but I never made the full transition. I had switched from Google Search to DuckDuckGo, from Google’s productivity suite to Markdown files and Apple’s capable alternatives, from Gmail to iCloud Mail, but the one service I could not replace was YouTube. For years I kept my Google account active because of YouTube. I wanted to keep track of my subscriptions, to like videos, to create playlists—to use YouTube, essentially. But there was a way I could delete my Google account and still use YouTube without having to visit their website and watch their ads and train their algorithm.

That way was by using youtube-dl.

Using a command-line and a bit of configuration, I could use youtube-dl to download any video from YouTube at whatever quality I wanted, with whatever settings I wanted, and watch it later on whatever device I wanted. The original youtube-dl has, sadly, gone dormant, but because the project is open-source, some awesome people have forked it and made their own version, yt-dlp.

yt-dlp picks up where youtube-dl left off, and they have been awesome at keeping this project active and up-to-date.

Once I had yt-dlp setup, the next challenge was to “subscribe” to all my favorite channels so I wouldn’t miss any videos. Fortunately, YouTube has made it so each channel has its own RSS feed, and many RSS readers support YouTube right out of the box. My feed reader of choice, Reeder, supports YouTube, so adding all my favorite channels was a breeze.

Finally, I needed a place to watch my videos, and for me, the best app for this is Plex. Plex has been around forever, unlike others (remember Boxee???), and they have apps for most devices out there. I use them on my Apple TV, and the app has been nothing but great.

With yt-dlp setup, with a way to get all the videos I want, and with a way to watch them, my dependence on my Google account vanished, and I could finally delete my Google account. So a few years ago, I did.

But wait, I might hear you saying, wasn’t this supposed to be about creating my own music video channel?

Why yes! Yes it was. I wanted to get all that out of the way to get to how I do things. First things first, here is the command I use to download my videos:

yt-dlp -o '/path/to/YouTube/%(uploader)s-%(upload_date)s-%(title)s.%(ext)s'
--download-archive '/path/to/archive.md'
-f 'bestvideo+bestaudio/best'
--sub-langs all,-live_chat
--embed-subs
--yes-playlist
--batch-file '/path/to/youtube.md'

I have a dedicated YouTube folder on an external SSD (CALYPSO) that saves each video with the channel name first, the upload date, then the title of the video. For example, downloading this video by Jomboy Media will output as: Jomboy Media-20221117-Tom Brady falls and trips player during botched trick play, a breakdown.webm. I prefer this format because sometimes I can go days or weeks without watching videos, and when I find the time, I like watching a certain channel’s output by the order they were released and catch up that way. It’s how I like to watch my videos.

The --download-archive setting helps ensure I don’t download the same video twice.

The -f 'bestvideo+bestaudio/best' ensures I get the highest quality version available.

I follow lots of foreign-language channels, so --sub-langs all,-live_chat helps download subs, and --embed-subs simply embeds the file in the video itself, and when I go to watch it on Plex, I can select the file and view the video with subtitles.

--yes-playlist downloads playlists. Simple enough.

Finally, --batch-file and the file itself is where some of the magic happens. I can go through my day, and I can simply add the URLs for all the YouTube videos I come across in my various feeds and append them to this file, and when I’m ready to download them, I run my yt-dlp command once, and all my videos start downloading. It’s really nice.

I know there are ways to run this automatically or on a schedule, but I download my videos to an SSD I take with me everywhere, and I don’t want my desktop at home to be my only media server. So I run this command manually when I need to, and it has worked fine for me.

As part of my RSS subscriptions, I subscribe to a lot of music websites and YouTube channels. Whenever there’s a new video out, either from someone I know or, especially, someone I don’t, I add the video to my YouTube.md file, and sometime later, after adding more and more videos to this file, I download all the videos.

Within my main YouTube folder, I have another folder called music, and within this folder, I add every music video and song I have downloaded. I do this for days, weeks, sometimes months, and I don’t watch them. I let them pile up for a while, and when I’m feeling the urge to sit on my couch and jam out to some music videos, I navigate to this folder in Plex—and here’s the fun part—I click on the “shuffle” button.

Music video bliss.

Doing this has brought back all the nostalgia from my childhood, back when I could sit on my couch before having to go to school and simply watch and listen to some amazing music. Those really were the days…

Literally Advanced Civilization

  • Notes

Chris Coyier quoting Dan Cederholm:

As soon as I typed the HTML for my first hyperlink, the power of it hit me. This is the DNA of the web, the fabric that connects all of the bits and pieces all over the globe. It sounds so primitive now, but when this was all new to me and I was discovering how it all worked and how simple it was to create links, it was magic.

It’s still magic! URLs are one of mankind’s greatest achievements. It took a lot for them to exist, and now that they do, they have literally advanced civilization. They are the ultimate unbeatable feature.

I couldn’t sleep last night (big surprise), and when I can’t sleep, I either watch TV or think. I watched this tutorial on how to create and organize a Capture One Catalog (yes, I like watching webinars sometimes), but that wasn’t enough to knock me out. So I lied in bed, and I thought—about my life, about my friends, about my writing, about things I’ve read.

About a week and a half ago, I read Tom Critchlow’s post titled Small b blogging. In it, he wrote:

And remember that you are your own audience! Small b blogging is writing things that you link back to and reference time and time again. Ideas that can evolve and grow as your thinking and audience grows.

As Venkatesh says in the calculus of grit - release work often, reference your own thinking & rework the same ideas again and again. That’s the small b blogging model.

Before I read this, I always believed that “small b blogging” was about linking to my ideas again and again, that none of my “ideas” or “essays” or “posts” existed in a vacuum. I’ve always considered my website as my second brain, and by linking to other things I’ve written, I’ve been able to reinforce these connections in my head, helping me remember things I’ve thought about and thus, helping me connect disparate ideas together and create new connections. It’s really fun when I think, “Wait… didn’t I mention something like this before?” And I search for it, and there, I did write about it before, so I link to it and move on, this new connection firmly created in my brain.

I don’t know how many people actually follow my links (my guess is not many), but that’s okay. I write mostly for myself. It’s like I’m holding a conversation with myself through time, and each time I link back to something from before, I’m crafting this web of ideas that only really makes sense in my head. Am I “literally advancing civilization” like Chris says? I doubt it, but I’m advancing myself, I think, and that’s pretty cool.

Small b blogging is cool.

Notes for November 11, 2022

  • Notes

I’m trying something new. Here are some notes from today, this 11th day of November, 2022:

  • I slept for 9 hours and 8 minutes. 9 hours and 8 minutes! I woke up fully rested and ready to go. I have been happy all day. I wish I could sleep in every day.
  • I bought an annual subscription to Capture One. This was something I was thinking about earlier this week, and I decided to go for it this morning. Consequence of getting a good night’s sleep? Yes, I think. Now to migrate from Lightroom…
  • Earlier this week, Affinity released version 2 of their creative suite of apps. I had purchased version 1 of their apps, but I found myself not using them too much. The one app I used the most was Affinity Designer, and I enjoyed that app when I needed it. As long as it still works, I’m keeping version 1. That means missing out on their 40% launch discount, but that’s okay. Now that I’m moving away from Adobe, I’ve been using Pixelmator Pro on my Mac and Pixelmator Photo on my iPhone. These apps satisfy all my needs for now. They are fast, beautiful, and just powerful enough.
  • The one thing I love about Affinity are their educational videos. They are so well-done and produced. I remember going through all their Affinity Photo and Designer videos back in the day, and I nerded out so hard on them. Good times!
  • Along with a Capture One subscription, I bought this SanDisk 2TB Extreme Portable SSD. I wanted this to act as a middle man between my SD Card and my long-term storage, something to load all my photos into while I processed them and something to then backup to my other hard drives later. Its rugged nature is what drew me in. This will be something I toss in my bag and not something that lies stationary on a desk.
  • Cultured Code, the makers of Things, has a really cool link builder on their website. I wanted to create a custom url scheme to create a specific type of task that I could fire with Shortcuts whenever I needed to, and this tool helped me build it easily and quickly. A great find and a great resource!
  • My ArticRisk name is Mario Extreme Winters Villalobos. Fits!

I’m not sure how many of these I will do, but I always liked the idea of collecting links and other tidbits from my day and aggregating them into a post. I can finally cross that off the list.

Happy Friday, everyone!

Old Tools and New Tools

  • Notes

Earlier today, I opened Capture One on my Mac. Capture One is a photo editing application, very similar to Lightroom. I am and have been a Lightroom user for years, and I haven’t had any inkling to change that, but when I opened Capture One, I decided to play with it. I don’t remember why I opened this application or the circumstances that led to it, but I have to admit, I had fun with it. I grabbed a random Fuji RAW file from my hard drive and played with the tools, learned the interface, made my edits, and in all, I found the entire experience to be nice. Thoughts started swirling around in my head, and I started asking myself, Should I switch to Capture One from Lightroom?

Concurrently, I had been toying with the idea of incorporating Obsidian into my workflow in some way. Obsidian is a very powerful tool for those who keep and work with Markdown files, like I do. I had been and still very much am a loyal user of iA Writer. iA Writer, in my opinion, provides the best writing experience of any writing app I have ever used. I am using iA Writer to write this post right now, and it’s the app I have used to write every blog post I’ve written since my return to blogging in 2020. Quite simply, I love this app.

But…

Obsidian is so nice! I love how it displays my Markdown files with its own “Live Preview” editing mode, I love how fast it is, and I love its vast amount and variety of community plugins. It’s a really nice app, and I really like it, but unlike with Capture One, I don’t have to migrate from iA Writer to Obsidian. I can use both concurrently, and I really like that. The only change I had to make was with my folder structure, and that was because my document folders were scattered all over the place, and that didn’t quite jive with Obsidian’s “Vault” concept. So I reorganized my files, and neither Obsidian or iA Writer cared.

My toying around with both Capture One and Obsidian had got me thinking about my tools again. A few months ago, I returned to using Scrivener because I missed a few of its more powerful features, something iA Writer didn’t have, and that experience has been fine, great even. I use Panic’s Nova to write all the code for this website, and I use Things to manage all my tasks. All these apps—these tools—are great and all, but at the end of the day, I have to sit down and do the work.

I’m a nerd, and I love playing around with new tools, with old tools, with tools in general, but these tools are meant to help me get work done. I can’t be like Julian Simpson and obsess over my tools, but I can be like Julian Simpson in the sense that he gets so much work done. Switching over to Capture One isn’t going to make me a better photographer, just like switching back to Scrivener isn’t going to make me a better novelist. At the end of the day, I have to use my tools to get work done, and I want to get work done.

The Harder the Conflict, the More Glorious the Triumph

  • Notes

I came across a tweet earlier this morning that took me down an interesting path.

On December 19, 1776, Thomas Paine first published The American Crisis, and it starts like this:

These are the times that try men’s souls. The summer soldier and the sunshine patriot will, in this crisis, shrink from the service of their country; but he that stands it now, deserves the love and thanks of man and woman. Tyranny, like hell, is not easily conquered; yet we have this consolation with us, that the harder the conflict, the more glorious the triumph.

I wanted to learn more, so I went to the Wikipedia page for The American Crisis in search of the full text and found the Standard Ebooks version of the book. I had never heard of Standard Ebooks, but I’m grateful I know about them now.

Their mission statement is incredible. I’ve downloaded and read many books from Project Gutenberg, but it always felt like I was reading a simple plain text file and not a modern book. But Standard Ebooks takes pride in its presentation, from internal code style to semantic enhancement and typography rules. I’m impressed!

I went ahead and download about half a dozen books from their site and loaded them on my phone, and I’m very eager to get started on them. But not yet because I feel awful today. This booster shot has messed me up today.

No pain, no gain, right?

If You Want to Be in Control of Your Life, Then You Have to Be in Control of the Things That You’re Interacting With on a Daily Basis

  • Notes

The above quote comes from this New Yorker article by Julian Lucas. In it, he writes about distraction-free writing tools like iA Writer, my personal app of choice. The entire article is worth a read, especially the section on iA Writer. I especially found this section where Oliver Reichenstein, the creator of iA Writer, details how he came up with the custom monospace font used in the app:

He drew inspiration from mechanical typewriters, especially for the app’s focus mode and signature font. While most books are typeset using proportionate typography, allotting each character space in accordance with its width, monospaced fonts give each character, whether a lowly period or an initial capital, an equal span. “When you write in a monospaced font, you get a feeling of moving forward,” Reichenstein said. “Even if you don’t click away like crazy, you feel that your text is growing.”

“When you write in a monospaced font, you get a feeling of moving forward.” I find that so beautiful and so true. Sometimes at work, I find myself having to write something in Google Docs, and I always felt this background hum that made me feel uneasy whenever I did so, and I wasn’t sure why. Was it all the extra chrome? The distracting buttons? The font?

“A minor literary doctrine holds that great writing should be platform-independent,” writes Julian in his closing paragraph.

Let amateurs mess around with gadgets and gizmos; Wole Soyinka wrote “The Man Died” in a Nigerian prison with Nescafé for ink and a chicken bone for a stylus. Yet the ability to write with anything and the drive to experiment with everything likewise reflect the fact that the means, no less than the matter of writing, should adapt to our selves and to our circumstances. The quest to match writer and machine may be as necessary, in its way, as literature’s unending effort to reconcile experience and expression.

“Experience and expression.” Is that not what all art is? This attempt by us to let the universe know we existed once and that our life mattered?

Page 1 of 3