<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>kevbot.xyz blog</title><link href="https://kevbot.xyz/blog/" rel="alternate"/><link href="https://kevbot.xyz/feed.xml" rel="self"/><id>urn:uuid:adacfcfb-ceef-392d-8135-d67933916aa8</id><updated>2023-12-29T00:00:00Z</updated><author><name/></author><entry><title>Another Place to Write Content</title><link href="https://kevbot.xyz/blog/another-place-to-write-content/" rel="alternate"/><updated>2023-12-29T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:e1da44dc-8fca-38a7-801c-021f86a428e1</id><content type="html">&lt;p&gt;I've been using &lt;a href="https://github.com/zadam/trilium"&gt;Trilium&lt;/a&gt; to create a personal knowledgebase on my devices. One cool feature is that I choose to make certain groups of notes publicly accessible. Check it out!&lt;/p&gt;
&lt;p&gt;Here's the link: &lt;a href="https://tril.kevbot.xyz/share/articles"&gt;https://tril.kevbot.xyz/share/articles&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;So far the public sections include my recipes, Linux resources, and guides on competitive Super Smash Bros Melee. More to come.&lt;/p&gt;
&lt;p&gt;&lt;br&gt;
&lt;br&gt;&lt;/p&gt;
&lt;p&gt;Here's a song I thought about when titling this post:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;To Write Content&lt;/em&gt; by Touche Amoré&lt;/p&gt;
&lt;iframe width="560" height="315" src="https://www.youtube-nocookie.com/embed/OPxgpGupbpY?si=W_sq95UQNO7fmkle" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen&gt;&lt;/iframe&gt;</content></entry><entry><title>I Made an Internet Radio Station</title><link href="https://kevbot.xyz/blog/i-made-an-internet-radio-station/" rel="alternate"/><updated>2023-11-24T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:0eaa1b93-257c-326a-ba4c-9ce14121c716</id><content type="html">&lt;p&gt;I am now hosting a music service that plays songs 24/7. Anyone tuning in would have the current song be approximately synchronized with everyone else. Currently, the radio is streaming a mixtape of songs from 2023 that meant something to me. It's about 20 songs long. The exact songlist is subject to change over time, however.&lt;/p&gt;
&lt;p&gt;Check it out!&lt;/p&gt;
&lt;p&gt;&lt;a href="https://radio.kevbot.xyz/stream"&gt;https://radio.kevbot.xyz/stream&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;or&lt;/p&gt;
&lt;p&gt;&lt;a href="https://radio.kevbot.xyz/"&gt;https://radio.kevbot.xyz/&lt;/a&gt;&lt;/p&gt;
</content></entry><entry><title>Adding an Atom Feed to This Blog</title><link href="https://kevbot.xyz/blog/adding-an-atom-feed-to-this-blog/" rel="alternate"/><updated>2023-07-14T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:0c2dc34b-dc0f-34ea-8b91-cfc010b0cb76</id><content type="html">&lt;p&gt;Atom feeds are like RSS feeds: both subscribe and display new content from specific websites "live". To add my blog to your reader, add &lt;a href="/feed.xml"&gt;this link (/feed.xml)&lt;/a&gt; to your feed-reading program. Most RSS readers also support the atom standard. You will now be notified of all my new blog posts.&lt;/p&gt;
&lt;p&gt;I got this working on my site via the simple plugin here: &lt;a href="https://github.com/lektor/lektor-atom"&gt;https://github.com/lektor/lektor-atom&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Here's an example of how my feed may look in your reader. You even get a summary of the content and a direct link.
&lt;img src="2023-07-14-16-01.png"&gt;&lt;/img&gt;&lt;/p&gt;
</content></entry><entry><title>Making AI Vocal Covers</title><link href="https://kevbot.xyz/blog/making-ai-vocal-covers/" rel="alternate"/><updated>2023-07-12T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:753f6015-f9be-319e-bf22-ef2dc553d937</id><content type="html">&lt;p&gt;I made some silly AI vocal covers. I originally saw it in &lt;a href="https://youtu.be/DP9EY4xMlTE"&gt;this youtube video&lt;/a&gt; of Mr Krabs covering Billie Jean. Listen to understand what I mean. It sounds like Mr Krabs singing exactly in the style of Michael Jackson.&lt;/p&gt;
&lt;p&gt;To make my own AI covers, I followed &lt;a href="https://www.youtube.com/watch?v=jQBQfJqacLA"&gt;the tutorial&lt;/a&gt; in the description of the above video. You have to track down your desired song's vocal-only track (a.k.a. isolated vocals). You can often find these on youtube for most popular songs. Using google colab, you then have to choose a voice model to "replace" the vocals (Mr Krabs in this case). After processing (takes a few minutes), you now have a new vocal track sounding like your selected model. You then have to find an instrumental of the song and align it with your output. The hardest part was beat-matching the AI vocal track to the instrumental.&lt;/p&gt;
&lt;p&gt;Here's a playlist of the AI songs I created.&lt;/p&gt;
&lt;p&gt;&lt;iframe width="100%" height="300" scrolling="no" frameborder="no" allow="autoplay" src="https://w.soundcloud.com/player/?url=https%3A//api.soundcloud.com/playlists/1650616318&amp;color=%23ff5500&amp;auto_play=false&amp;hide_related=false&amp;show_comments=true&amp;show_user=true&amp;show_reposts=false&amp;show_teaser=true&amp;visual=true"&gt;&lt;/iframe&gt;&lt;div style="font-size: 10px; color: #cccccc;line-break: anywhere;word-break: normal;overflow: hidden;white-space: nowrap;text-overflow: ellipsis; font-family: Interstate,Lucida Grande,Lucida Sans Unicode,Lucida Sans,Garuda,Verdana,Tahoma,sans-serif;font-weight: 100;"&gt;&lt;a href="https://soundcloud.com/kevin-leutzinger" title="Kevin Leutzinger" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;Kevin Leutzinger&lt;/a&gt; · &lt;a href="https://soundcloud.com/kevin-leutzinger/sets/ai-vocal-covers" title="AI Vocal Covers" target="_blank" style="color: #cccccc; text-decoration: none;"&gt;AI Vocal Covers&lt;/a&gt;&lt;/div&gt;&lt;/p&gt;
&lt;p&gt;The cool thing is that I did this all for free on &lt;a href="https://colab.research.google.com/"&gt;google colab&lt;/a&gt;. Each track took a few minutes of cloud processing. I consider this quite fast, really. Also, you don't &lt;em&gt;have&lt;/em&gt; to use Mr Krabs, there are many, many other models (on discord). I didn't make any of these, other people did.&lt;/p&gt;
&lt;p&gt;Some of the thousands of voice models on discord.&lt;/p&gt;
&lt;p&gt;&lt;img src="2023-07-11-23-57.png"&gt;&lt;/img&gt;&lt;/p&gt;
&lt;p&gt;It looks like this when you are creating the AI vocal tracks. This is running on the cloud via colab.&lt;/p&gt;
&lt;p&gt;&lt;img src="2023-07-12-00-00.png "&gt;&lt;/img&gt;&lt;/p&gt;
</content></entry><entry><title>Streaming a Super Smash Bros. Melee Tournament on a Steam Deck</title><link href="https://kevbot.xyz/blog/streaming-melee-on-deck/" rel="alternate"/><updated>2023-05-07T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:fe40574e-32da-332f-a249-0115d57020a7</id><content type="html">&lt;ul&gt;
&lt;li&gt;&lt;a href="https://youtu.be/gWwsjefpa6k?t=3134"&gt;Link to the gameplay stream (youtube)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.start.gg/tournament/norcal-arcadian-7/details"&gt;Link to the bracket to see tournament results (start.gg)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;video autoplay controls muted loop src="./melee-stream.webm" type="video/webm" poster="./melee-stream.jpg"&gt;&lt;/video&gt; How &lt;a href="https://youtu.be/gWwsjefpa6k?t=3134"&gt;the stream&lt;/a&gt; looked like while broadcasting, running at 720p60.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Overall Context&lt;/h2&gt;
&lt;p&gt;This past Saturday in San Jose, California, there was &lt;a href="https://www.start.gg/tournament/norcal-arcadian-7/details"&gt;a large in-person tournament&lt;/a&gt; for Super Smash Brothers Melee. Over 150 players duked it out in a double elimination bracket over the course of about 6 hours, with one player crowned as the champion. The game in question is a 1 on 1 fighting game played on a console (GameCube) released in 2001. Because the game and console are over two decades old, there is only support for analog video output to connect the console to the TV*. Modern capture cards generally only support digital inputs (like HDMI), this makes streaming analog devices, such as older consoles, more difficult. We have workarounds, however, which I will outline in this blog post.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;img src="./pxl-20230506-235320241-1.jpg"&gt;&lt;/img&gt;&lt;ul&gt;
&lt;li&gt;The hardware used to play the game. Notice that we use big old CRT TVs. The Steam Deck is in the bottom left, which I use for my stream.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;img src="schematic.svg"&gt;&lt;/img&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: All gameplay is happening on the original GameCube hardware; the Steam Deck is used as a video capture device, not an emulator.&lt;/p&gt;
&lt;h2&gt;What is a Steam Deck?&lt;/h2&gt;
&lt;p&gt;Released on February 2022 The Steam Deck is a handheld gaming computer developed by Valve. It has a builtin controller and is great for playing PC games. Launching the device in "Desktop Mode" makes it behave as a small-footprint Arch Linux laptop. I use it here in lieu of a laptop because it is easier to squeeze onto a crowded table. And it looks cool.&lt;/p&gt;
&lt;h2&gt;Streaming Setup&lt;/h2&gt;
&lt;p&gt;Here is the full list of parts:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="https://store.steampowered.com/steamdeck"&gt;Steam Deck (256GB Model)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://jsaux.com/products/upgraded-docking-station-for-steam-deck"&gt;JSAux Steam Deck Dock&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.avermedia.com/it/product-detail/BU110"&gt;AverMedia BU110 Capture Card&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/dp/B00TQ43WI8?th=1"&gt;AverMedia Composite to HDMI Converter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/dp/B004FHO5Y6?th=1"&gt;Logitech C270 HD Webcam&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/dp/B01CT6CBE0?th=1"&gt;Unpowered composite y-splitter&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.amazon.com/dp/B07PZSXL9J?th=1"&gt;A third party USB-C/A charger&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;A summary of how I connect all these parts:&lt;/p&gt;
&lt;p&gt;From the GameCube, I split the video out in two using the y-splitter. One feeds directly into the TV, the other feeds into the composite to HDMI  powered converter. I then feed the HDMI signal into my AverMedia capture card. I connect the capture card to my Steam Deck which, and boom I have a stream. For audio, I used the Steam Deck's built in microphone to capture both the audio in the room and in turn, the TV. I find capturing the room audio to provide good atmosphere to the live stream. I also used a webcam to capture the players as they played.&lt;/p&gt;
&lt;p&gt;The Steam deck is seated into a usb-c dock. This gives me three usb-A ports, which I use to plug in the capture card, the webcam, and a microphone (optional). I powered the composite to HDMI converter via the extra usb cable on my Steam Deck charger.&lt;/p&gt;
&lt;p&gt;Using &lt;a href="https://obsproject.com/"&gt;Open Broadcaster Software (OBS)&lt;/a&gt;, I both live streamed to my &lt;a href="https://www.youtube.com/channel/UCANztgzBKoVk1WnoVKz4UPg/"&gt;youtube channel&lt;/a&gt; and locally recorded a &lt;a href="https://youtu.be/gWwsjefpa6k"&gt;VOD&lt;/a&gt; to the Steam Deck simultaneously. The venue didn't have perfect wifi, so my local recording reupload has a more consistent frame rate than the original live stream.&lt;/p&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Competitors in melee put their entire selves into every tournament set they play. The highs and lows of competing light fires inside each player — I capture and share these story lines.&lt;/p&gt;
&lt;h2&gt;Tidbits&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I found that this capture card works quite well with the Steam Deck when others don't. It just worked out of the box, while many others only support Windows.&lt;/li&gt;
&lt;li&gt;For next time to improve the stream, I want to use two webcams at once. Sometimes I could only see one player.&lt;/li&gt;
&lt;li&gt;I didn't update the stream overlay at all during the tournament (usually video overalys have info like player names, or the current round). I just set it up and let it run (for over 9.5 hours!).&lt;/li&gt;
&lt;li&gt;I've made many different streaming / local recording setups for tournaments before and I've made a spreadsheet comparing the advantages / disadvantages of each as both a competitor and a streamer. &lt;a href="https://docs.google.com/spreadsheets/d/1lO34rbQRMNVSH4PJ--4WnE0ROm5mhqv30bUi1Sh6grQ/edit?usp=sharing"&gt;See spreadsheet here&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;My stream was not the main stream, but rather a side stream. The main stream was &lt;a href="https://www.twitch.tv/guildhouse"&gt;here on twitch&lt;/a&gt;. I streamed to &lt;a href="https://www.youtube.com/channel/UCANztgzBKoVk1WnoVKz4UPg/"&gt;my youtube channel&lt;/a&gt; rather than &lt;a href="https://www.twitch.tv/kevbotssbm"&gt;my personal twitch&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href="https://docs.google.com/document/d/1ezavBjqVGbVO8aqSa5EHfq7ZflrTCvezRYjOf51MOWg/edit"&gt;Slippi Console Mirroring&lt;/a&gt; is another cool way to get a melee stream going. I haven't tried this yet with a Steam Deck, and instead opted for the capture card route.&lt;/li&gt;
&lt;li&gt;I am also a player myself known as &lt;a href="https://liquipedia.net/smash/Kevbot"&gt;Kevbot&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;* Technically some models of GameCubes support digital video output. Read more &lt;a href="https://www.retrorgb.com/gamecubeoutput.html"&gt;here&lt;/a&gt;. I have never seen these in use at a tournament because most TVs don't support it as an input.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;img src="./obs-on-deck.jpg"&gt;&lt;/img&gt;&lt;/p&gt;
</content></entry><entry><title>Mute All Discord Servers Script</title><link href="https://kevbot.xyz/blog/mute-all-discord-servers-script/" rel="alternate"/><updated>2023-02-06T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:38a83ea2-67d8-3522-88b5-204e432eaf29</id><content type="html">&lt;p&gt;TODO: add a video example here&lt;/p&gt;
&lt;script src="https://gist.github.com/kleutzinger/f10a8622c4f92581e6f1f0963bee04c9.js"&gt;&lt;/script&gt;</content></entry><entry><title>Popular Bands From Wikipedia</title><link href="https://kevbot.xyz/blog/popular-bands-from-wikipedia/" rel="alternate"/><updated>2021-04-14T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:58625172-93fb-3881-8dc0-b254ede5a4da</id><content type="html">&lt;p&gt;Here's a list of popular bands from wikipedia based on pageviews in the last 500 days.
The columns are
band_name, page_views, band_location&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Van Halen                 3678352 Los Angeles
Metallica                 3578022 San Francisco
Red Hot Chili Peppers     3519678 Los Angeles
Eagles (band)             3216278 Los Angeles
Beastie Boys              3038412 New York City
Wu-Tang Clan              2910395 New York City
R.E.M.                    2762807 Athens, Georgia
Lynyrd Skynyrd            2682106 Jacksonville, Florida
Foo Fighters              2648808 Seattle
Backstreet Boys           2641526 Orlando, Florida
Mötley Crüe               2479646 Los Angeles
Guns N&amp;#39; Roses             2468870 Los Angeles
Green Day                 2442694 Berkeley, California
Rage Against the Machine  2319905 Los Angeles
Pearl Jam                 2301367 Seattle
Talking Heads             2283065 New York City
Kiss (band)               2249243 New York City
Blink-182                 2164807 San Diego
Grateful Dead             2093998 San Francisco
N.W.A                     2041392 Los Angeles
ZZ Top                    2031063 Houston
The Pussycat Dolls        2013956 Los Angeles
System of a Down          1910150 Los Angeles
Simon &amp;amp; Garfunkel         1906716 New York City
The Smashing Pumpkins     1846394 Chicago
Chloe x Halle             1827581 Atlanta
Aerosmith                 1819782 Boston
Destiny&amp;#39;s Child           1773846 Houston
Alice in Chains           1737124 Seattle
Journey (band)            1716873 San Francisco
New Kids on the Block     1689526 Boston
Ramones                   1684684 New York City
Tool (band)               1672275 Los Angeles
The Doors                 1660277 Los Angeles
The Killers               1640228 Las Vegas
The Strokes               1587307 New York City
Haim (band)               1539943 Los Angeles
Fifth Harmony             1539325 Miami
NSYNC                     1538991 Orlando, Florida
Heart (band)              1536555 Seattle
The Temptations           1535653 Detroit
Evanescence               1534125 Little Rock, Arkansas
Black Eyed Peas           1468883 Los Angeles
Village People            1456982 New York City
Nine Inch Nails           1441549 Cleveland
Boyz II Men               1436106 Philadelphia
Toto (band)               1428697 Los Angeles
The Monkees               1424911 Los Angeles
The Clark Sisters         1418848 Detroit
Weezer                    1412776 Los Angeles
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;&lt;a href="https://gist.github.com/kleutzinger/321ab4006bace300dd0b8eb79580741e"&gt;https://gist.github.com/kleutzinger/321ab4006bace300dd0b8eb79580741e&lt;/a&gt;&lt;/p&gt;
&lt;script src="https://gist.github.com/kleutzinger/321ab4006bace300dd0b8eb79580741e.js"&gt;&lt;/script&gt;</content></entry><entry><title>Laptop Tour 2021</title><link href="https://kevbot.xyz/blog/laptop-tour-2021/" rel="alternate"/><updated>2021-02-24T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:622229b8-d316-324a-9d99-de21977069e0</id><content type="html">&lt;iframe width="100%" height="500px" src="https://www.youtube.com/embed/v1h6bt0SlnQ" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen&gt;&lt;/iframe&gt;&lt;p&gt;I'm in a hotel in Phoenix. Here's some cool stuff on my laptop. I'm using an Arch based distro called EndeavourOS with KDE. Laptop is T460s. Haircut is buzzcut.&lt;/p&gt;
&lt;p&gt;here's my &lt;a href="https://github.com/kleutzinger/dotfiles"&gt;dotfiles&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;here's &lt;a href="https://gist.github.com/kleutzinger/d9e9649546f33346a8b903a8556b8616/4824f20ef6a70e0f75fcfb88982b39901824a249"&gt;my installed pacman packages&lt;/a&gt; at the time of recording&lt;/p&gt;
</content></entry><entry><title>Why I Use Fish Shell</title><link href="https://kevbot.xyz/blog/why-i-use-fish-shell/" rel="alternate"/><updated>2021-01-22T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:153f449d-1872-30c5-bfc5-b572caf99779</id><content type="html">&lt;h3&gt;Fish - &lt;em&gt;The Friendly Interactive Shell&lt;/em&gt;&lt;/h3&gt;
&lt;h3&gt;Examples&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;&lt;span class="c"&gt;# Check installed packages vs requirements.txt inside a Python project&lt;/span&gt;
&lt;span class="c"&gt;# Works inside a virtualenv as well&lt;/span&gt;
diff &lt;span class="o"&gt;(&lt;/span&gt;python -m pip freeze &lt;span class="o"&gt;|&lt;/span&gt; &lt;span class="nb"&gt;psub&lt;/span&gt;&lt;span class="o"&gt;)&lt;/span&gt; requirements.txt

&lt;span class="c"&gt;# parse manpages installed on the system&lt;/span&gt;
&lt;span class="c"&gt;# and create completion files in the fish configuration directory.&lt;/span&gt;
&lt;span class="nb"&gt;fish_update_completions&lt;/span&gt;
&lt;/pre&gt;&lt;/div&gt;
&lt;h3&gt;fish vs zsh&lt;/h3&gt;
&lt;p&gt;Many people who are fed up with bash switch to zsh. To me, zsh is just a band-aid still stuck in the confines known as &lt;a href="https://kb.hlrs.de/platforms/index.php/POSIX_compliant_shell_scripting"&gt;POSIX-compliance&lt;/a&gt;. Some people stick with zsh over fish because they &lt;em&gt;need&lt;/em&gt; access to the &lt;code&gt;ctrl+r&lt;/code&gt; functionality of zsh, also known as &lt;code&gt;history-incremental-search-backward&lt;/code&gt;. Many recommend using the up-arrow key to search backwards through history, but it's not quite as powerful as the zsh ctrl+r. You can't add on to the typing of it generally or see
Fish has this as a plugin! It's got some other goodies, too. Grab it here: &lt;a href="https://github.com/jethrokuan/fzf"&gt;fzf fish plugin&lt;/a&gt;. Install With &lt;a href="https://github.com/jorgebucaran/fisher"&gt;fisher&lt;/a&gt;. You'll probably want to set the environment variable &lt;code&gt;set -U FZF_LEGACY_KEYBINDINGS 0&lt;/code&gt; in your config.fish to get these newer nicer keybinds. More info in the &lt;a href="https://github.com/jethrokuan/fzf#quickstart"&gt;readme&lt;/a&gt; on github.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre&gt;&lt;span&gt;&lt;/span&gt;Keybindings     | Description                                     |
--------------- | ----------------------------------------------- |
Ctrl-o          | Find a file.                                    |
Ctrl-r          | Search through command history.                 |
Alt-c           | cd into sub-directories (recursively searched). |
Alt-Shift-c     | cd into sub-directories, including hidden ones. |
Alt-o           | Open a file/dir using default editor ($EDITOR)  |
Alt-Shift-o     | Open a file/dir using xdg-open or open command  |
&lt;/pre&gt;&lt;/div&gt;
&lt;p&gt;Hitting ctlr-r now give you a nice little fzf-sytle menu for your old commands. I'd say it's even more powerful than zsh's ctrl+r.&lt;br&gt;
&lt;img src="fish-ctrl-r.png" alt="ctl-r in fish"&gt;&lt;br&gt;
Here I hit ctrl+r and typed in &lt;code&gt;fish&lt;/code&gt;. I can see all previous commands that have &lt;code&gt;fish&lt;/code&gt; as a substring, and I'm able to select one my arrow keys, or by double clicking with the mouse. I can refine the search if I keep typing. It's very intuitive if you play around with it.&lt;/p&gt;
</content></entry><entry><title>Block Annoying Medium.com Signup Requests and Popups</title><link href="https://kevbot.xyz/blog/medium-block/" rel="alternate"/><updated>2021-01-09T00:00:00Z</updated><author><name>Kevin Leutzinger</name></author><id>urn:uuid:36ef2de2-4eb5-33c2-b981-48e6cc5e78df</id><content type="html">&lt;p&gt;Navigate to a Medium article and disable all cookies from medium.com and google.com. The reminder might stick around, but it will stay stuck on "2 Free Articles Left"&lt;/p&gt;
&lt;video id="vid" controls="yes" autoplay="yes" loop="yes"&gt;
  &lt;source type="video/webm" src="medium-block.webm"&gt;&lt;/source&gt;
  &lt;p&gt;Your browser does not support the video element.&lt;/p&gt;
&lt;/video&gt;&lt;p&gt;&lt;a href="https://medium.com/swlh/my-favorite-cli-tools-c2fa484cee52"&gt;article in video&lt;/a&gt;&lt;/p&gt;
</content></entry></feed>