<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.2.2">Jekyll</generator><link href="https://lottalinuxlinks.com/feed.xml" rel="self" type="application/atom+xml" /><link href="https://lottalinuxlinks.com/" rel="alternate" type="text/html" /><updated>2025-02-12T09:48:21-05:00</updated><id>https://lottalinuxlinks.com/feed.xml</id><title type="html">lottalinuxlinks (o\_!_/o)</title><subtitle>The lottalinuxlinks.com linux user web blog is where  an old linux user rambles on about linux, FOSS, movies, books, and other geekery. </subtitle><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><entry><title type="html">qutebrowser is pretty dang awesome</title><link href="https://lottalinuxlinks.com/qutebrowser-is-pretty-dang-awesome/" rel="alternate" type="text/html" title="qutebrowser is pretty dang awesome" /><published>2025-01-24T00:00:00-05:00</published><updated>2025-01-24T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/qutebrowser-is-pretty-dang-awesome</id><content type="html" xml:base="https://lottalinuxlinks.com/qutebrowser-is-pretty-dang-awesome/"><![CDATA[<p>I’ve used a lot of web browsers. My journey down the “Information
Super Highway” actually started before there were paved roads i.e.
before the WWW existed. My first use of the internet was mainly
using tools like gopher, archie, veronica, ftp, email, and usenet.
The first web browsers I can remember using were Cello and Mosaic,
but I may have used an older text mode web browser on a BBS prior to
that.</p>

<p>I’ve been using linux for going on 31 (DANG, that’s over half my
life) years now, and feel like the GUI web browsers I’ve spent the
most time in are Netscape and Firefox. In the terminal, it’s been
links, lynx, and w3m. I’ve happily used Firefox for the last
I-don’t-know-how-many-years, with the extensions ublock origin,
Joplin web clipper, Vimium (for Vim-style keybindings), and
Bitwarden.</p>

<p>The reasons I decided to try something else boil down mainly to
needing something keyboard-focused (Vim-like keybindings), minimal
GUI (less clunky), and light weight. Firefox with Vimium meets the
Vim-like keybindings, but with my tendency to have a lot of tabs
open, I was having to run a couple of extra extensions (OneTab and
Auto Tab Discard) just to manage the amount of memory Firefox was
consuming. As for the something-less-clunky requirement, Firefox
even with the menu and bookmark toolbars disabled still uses more
screen real estate than I’d like.</p>

<p>My search for a new alternative led me to the only browser that
checked all the boxes, qutebrowser.</p>

<p>From Wikipedia: qutebrowser is a free, open-source web browser that
is keyboard-focused and minimal in design. Written in Python and
using PyQt, qutebrowser aims to offer a lightweight browser that can
be primarily operated with keyboard commands inspired by Vim-style
keybindings.</p>

<p>So two months ago, I decided to stop using Firefox, and for at least
a week, do all my web browsing using qutebrowser; I figured I needed
a week to fully acclimate myself to the keybindings.</p>

<p>Qutebrowser, while new to me, is not new; it’s just recently turned
11 years old. The development team is very small, but what they’ve
created is an extraordinary, useful, and hackable browser. There’s
is NO way I will be able detail it’s many feature in this post, so a
short synopsis of what makes qutebrowser awesome will have to do.</p>

<p>Qutebrowser is WAY better at the Vim-like keybindings than Vimium.
There are so many keyboard short cuts, and they are sane as well.
There’s a cheat sheet online for default bindings, as well as a html
page listing them accessible at the address qute://bindings.  You
can edit, add, and disable keybindings too.</p>

<p>Basic keybindings to get you started (from qute://help):</p>

<ul>
  <li>Use the arrow keys or hjkl to move around a webpage (Vim-like 
syntax is used in quite a few places)</li>
  <li>To zoom in or out of a webpage, use the + or - keys 
respectively</li>
  <li>To go to a new webpage, press o, then type a url, then press Enter 
(Use O to open the url in a new tab, go to edit the current URL)</li>
  <li>If what you’ve typed isn’t a url, then a search engine will be 
used instead (DuckDuckGo, by default)</li>
  <li>To switch between tabs, use J (next tab) and K (previous tab), or 
press <Alt-num>, where num is the position of the tab to switch to</Alt-num></li>
  <li>To close the current tab, press d (and press u to undo closing a 
tab)</li>
  <li>Use H and L to go back and forth in the history</li>
  <li>To click on something without using the mouse, press f to show the 
hints, then type the keys next to what you want to click on 
(if that sounds weird, then just try pressing f and see what 
happens)</li>
  <li>Press : to show the commandline</li>
  <li>To search in a page, press /, type the phrase to search for, then 
press Enter. Use n and N to go back and forth through the matches, 
and press Esc to stop doing the search.</li>
  <li>To close qutebrowser, press Alt-F4, or :q, :wq, (or :ZZ) to save 
the currently open tabs and quit (note that in the settings you 
can make qutebrowser always save the currently open tabs)</li>
</ul>

<p>Hints are another absolutely awesome thing about qutebrowser. Just
hit the f key to list a hint for every clickable link the current
page, then type the hint and you’ve clicked it without even using
the mouse. Hit ; to enter hint mode and you’ll be greeted with a
list of bindings with description for actions that can be taken in
hint mode.</p>

<p><img src="/assets/images/qutebrowser-hints.png" alt="qutebrowser-hints" /></p>

<p>Type : to enter command mode and you’ll be greeted with a fzf
interface that list every command. From here you can set do a LOT.
Set bindings, update the ad-blocker, configure qutebrowser, and
more.</p>

<p><img src="/assets/images/qutebrowser-command-fzf.png" alt="qutebrowser-command-fzf" /></p>

<p>If you haven’t caught on yet, qutebrowser is modal. Modes include:
Normal, Caret, Command, Hint, Insert, Passthrough, Prompt, Register,
and Yesno.</p>

<p>One of the things that drew me to Qutebrowser was it’s minimal UI.
To say it doesn’t get in the way is an understatement. Other than
the webpage itself, all you have is a minimal tab row, and a status
bar, both of which can be disabled or toggled on and off. I really
like how minimal the UI is, and find that because of it, qutebrowser
is an excellent replacement for a TUI browser in one-off scripts and
for use in TUI programs like newsboat, neomutt, and tuir.</p>

<p><img src="/assets/images/qutebrowser-hide-tabs.png" alt="qutebrowser-hide-tabs" /></p>

<p>Qutebrowser’s documentation is excellent! All settings, commands,
and shortcuts are described and or documented online, in the fzf
finder pop-up interface, html pages accessible from the qute://
addresses, and from the built-in documentation accessible via the
:help command.  All commands can be started with the –help flag as
well.  You can configure qutebrowser in command mode, at the prompt,
or from the address qute://settings</p>

<p><img src="/assets/images/qutebrowser-settings.png" alt="qutebrowser-settings" /></p>

<p>Qutebrowser has built in ad-blocking, although not as effective as
ublock origin. However, it is adequate, and coupled with my
Raspberry Pi blocking ads network-wide with Pi-hole, my ad-blocking
experience is equal to, or better than with Firefox and ublock
origin.</p>

<p>Bookmark (and quickmark) management is another thing qutebrowser got
right. I was able to import my bookmarks, and searching through them
using the built-in fzf make for a superior experience. I won’t go
into the differences between bookmarks and quickmarks, but will say
that I’ve kept all my eggs in the quickmark basket so far.</p>

<p>Qutebrowser’s fzf-integration is excellent, and truly feels
built-in.  It is very useful, intuitive, and takes the whole
keyboard-focused thing to a whole new level.</p>

<p>Qutebrowser is light weight(-ish). Lacking any sort of concrete
data, and based solely on my experience so far, qutebrowser is
lighter weight than Firefox. I do find memory usage creeping up
slowly over long periods of time (weeks) if a lot of tabs have been
opened and closed. Restarting qutebrowser solves this. I have also
noticed an improvement with the latest release (3.4.0) in this
regard.</p>

<p>Really, the only thing that qutebrowser lacks for me is extension
support; you cannot install any extensions (yet). This hasn’t been
an issue for me though. I don’t need ublock-origin with
qutebrowser’s built in ad-blocking (coupled with my pi-hole). Also I
haven’t missed Bitwarden’s extension, as I’ve found a more than
adequate (and less clunky) replacement with a rofi/fzf script (rbw).
The only extension I used in Firefox that I miss using in 
qutebrowser is the Joplin web clipper; but with qutebrowser’s user script
capabilities I can envision different ways to regain that
functionality.</p>

<p>I can highly recommend qutebrowser if you are looking for a minimal,
lightweight, keyboard-focused, hackable web browser. Whether you’re
familiar with Vim-like keybindings or not, give it a try, explore
the online help system, and you will be rewarded with what I think
is a superior browsing experience. Once you’ve spent some time in
qutebrowser, it is very hard to use another browser!</p>

<p>Initially, this experiment was to last a week, but I’m on week 10
now, and I don’t see myself switching back.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="qutebrowser" /><category term="linux" /><category term="firefox" /><category term="links" /><category term="lynx" /><category term="w3m" /><category term="bitwarden" /><category term="pi-hole" /><category term="joplin" /><summary type="html"><![CDATA[I’ve used a lot of web browsers. My journey down the “Information Super Highway” actually started before there were paved roads i.e. before the WWW existed. My first use of the internet was mainly using tools like gopher, archie, veronica, ftp, email, and usenet. The first web browsers I can remember using were Cello and Mosaic, but I may have used an older text mode web browser on a BBS prior to that.]]></summary></entry><entry><title type="html">Welcome to the MODcast (again)</title><link href="https://lottalinuxlinks.com/welcome-to-the-modcast-again/" rel="alternate" type="text/html" title="Welcome to the MODcast (again)" /><published>2025-01-24T00:00:00-05:00</published><updated>2025-01-24T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/welcome-to-the-modcast-again</id><content type="html" xml:base="https://lottalinuxlinks.com/welcome-to-the-modcast-again/"><![CDATA[<p>Since updating and reviving my webpage, I noticed that the HTML5
embedded audio player had stop working on my <a href="/modcast">MODcast page</a>, 
where I serve a continuous playlist of 242,430 MOD files (think 
chiptune music if you do not know what MOD files are).</p>

<p>What was weird about this was that the embedded audio player had
been working just fine for 4 years–or so I thought. Sometime in
last 48 months the html player on the page stopped working. The
reason I had not noticed it had stopped working is that do not
listen to the stream from my webpage, but from a terminal, an app on
my phone or TV, from my icecast server URL, or in a browser tab
directly linked to the icecast stream mountpoint.</p>

<p>I guess the even weirder part was that when serving the Jekyll page
locally the embedded audio player worked just fine, but stopped
working once deployed on my website.</p>

<p>I racked my brain over this for almost 2 days, thinking the cause
had something to do with my updating Jekyll, or the new dark theme,
That did not make sense, but was the first route I went down trying
to fix this. I just could not figure out why the browser would open
and play the stream from a new tab, but not from the html audio
player.</p>

<p>After eliminating Jekyll as the cause, I got to looking at icecast.
Icecast is the only forward facing service I run without TLS/SSL.
Thinking that perhaps browsers had become more secure in the last 48
months (forbidding unencrypted streams in embedded audio players), I
decided to enable SSL on my icecast server.</p>

<p>The hitch I ran into next was that icecast requires certificates to
be bundled in one pem file–instead of separate fullkey and privkey
pem files like apache. The solution was amazingly straight forward,
and elegant.</p>

<p>All I had to do was (as root) cat the contents on the fullkey.pem
and privkey.pem files into one new file (e.g. bundle.pem) accessible
to icecast; that and update my icecast.xml and .buttrc files, and
change ports.</p>

<p>Even better, in the /etc/letsencrypt/renewal/ directory I was able
to append (prepended by post_hook = ) the cat command combining the
two pem files to the conf file, at the end of the renewal parems
section. Adding a &amp;&amp; systemctl restart icecast2.service at the end
of the cat command, ensures that when my letsencrypt certs are
renewed, icecast will get renewed too.</p>

<p>This solved my problem and now the embedded audio player works.  The
new https stream URL (now on port 8001) is now:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://lottalinuxlinks.com:8001/stream
</code></pre></div></div>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="MOD" /><category term="streaming" /><category term="retro" /><category term="music" /><category term="geekery" /><category term="SSL" /><category term="icecast" /><category term="letsencrypt" /><category term="jekyll" /><summary type="html"><![CDATA[Since updating and reviving my webpage, I noticed that the HTML5 embedded audio player had stop working on my MODcast page, where I serve a continuous playlist of 242,430 MOD files (think chiptune music if you do not know what MOD files are).]]></summary></entry><entry><title type="html">Update</title><link href="https://lottalinuxlinks.com/update/" rel="alternate" type="text/html" title="Update" /><published>2025-01-19T00:00:00-05:00</published><updated>2025-01-19T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/update</id><content type="html" xml:base="https://lottalinuxlinks.com/update/"><![CDATA[<p>It’s been a while…actually, almost 40 months since my last post. 
In fact, it’s been so long I thought I should update Jekyll before 
posting this. It will be interesting to see if this thing still works.</p>

<p>While a lot has changed since my last post, some things have not: I 
still use i3; still use X-org; still start my window manager with 
startx; and still run debian stable on everything but my daily driver 
laptop, which I moved from debian sid to arch 1332 days ago.</p>

<p>But some things have changed: I’ve retired; become a grandfather; have 
started 3d-printing; added a computer and a couple of raspberry pi to 
my already large list of home server machines; started using some 
docker containers; and have rejoined <a href="https://tllts.org">The Linux Link Tech Show</a>.</p>

<p>I hope to start posting here more often too.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="jekyll" /><category term="arch" /><category term="debian" /><category term="linux" /><category term="i3" /><category term="3d-printing" /><category term="TLLTS" /><category term="ramblings" /><summary type="html"><![CDATA[It’s been a while…actually, almost 40 months since my last post. In fact, it’s been so long I thought I should update Jekyll before posting this. It will be interesting to see if this thing still works.]]></summary></entry><entry><title type="html">Sid to Arch</title><link href="https://lottalinuxlinks.com/sid-to-arch/" rel="alternate" type="text/html" title="Sid to Arch" /><published>2021-10-13T00:00:00-04:00</published><updated>2021-10-13T00:00:00-04:00</updated><id>https://lottalinuxlinks.com/sid-to-arch</id><content type="html" xml:base="https://lottalinuxlinks.com/sid-to-arch/"><![CDATA[<p>I’ve been using debian linux since 1995; when I say using, I mean at
least one machine in my house has been running debian constantly
during that entire time, be it a server install running stable, a
laptop or desktop computer for the wife or one of my daughters
running stable, or maybe testing, and always my personal daily
driver laptop running sid. So when I changed my two personal daily
driver laptops (not any of my servers or other family member’s
computers) from debian sid to arch linux this past July, it could be
asked, why arch and why now?</p>

<p>I know and love debian. It works, I know all the ins and outs, and
it has never once broken, failed to update, or let me down in any
memorable way; these are the reasons debian is the only distro I
would ever install on a server.  Debian is not just for servers;
debian is everything anybody needs, meaning if you need stable they
have you covered, if you need more recent, less “stale” programs,
they have that covered as well, and if you need the latest and
greatest, then they have that too! If you want a minimal install, or
a full fledged out of the box, everything included, just works
distro, you have those options too. And no matter what you need,
they have security covered too. Installing packages from the
appropriate official repo, no matter stable, testing, or sid, you
can rest easy knowing that security has been handled appropriately.</p>

<p>Debian sid is often called a rolling release, and it’s accurate to
do so; outside of the freeze before a stable release, debian sid is
constantly being updated. Other than that, if one sticks to the
official repos, and doesn’t mix repos, just about everything you
could possibly need is there, and can be safely downloaded and
installed with almost zero unexpected gotchas to be had.</p>

<p>So why even try something new? Was there an itch that debian sid
wasn’t scratching for me? The short and only answer to the question
is that for my personal daily driver computers running sid, I have
been for years maintaining a list (paper and electronic) of packages
that were installed from source and outside of the standard sid
repos. The itch that arch seemed to scratch that debian sid does
not, is a solution for installing packages outside of the standard
repos using the package manager. Debian doesn’t do this as easily,
and more times than not, it’s easier to just build and install from
source. With arch however, using the aur, and the pkgbuild  system,
everything on my lists of things installed outside the package
manager on debain sid, could be installed using the package manager
and the aur.</p>

<p>Is it perfect? Is it safer? No to both questions. The aur doesn’t
feel as safe or secure as debian for sure; but it is just a safe as
installing from source on sid, if you take the time to read the
source –which is something you should be doing every time you
install anything from source. The main advantage with arch and the
aur is that you can install from source using the package manager.</p>

<p>So, for me it’s a win: if something is not in the official arch
repos, and it’s in the aur (which everything on my lists were) I can
install it with the package manager, which with arch is a superior
user experience.</p>

<p>Just from a more nebulous aspect though, having things installed
more close to source (less patches than with debian binaries) my
system seems a little more lean–it’s a feel thing but it seems a
little more lean and a little more snappy. One of the things I
really enjoy about a debian sid install is the minimal netinstall,
arch does this in spades, as you only install what you need and you
only enable or start the services you need as well. With arch I feel
more in control of every detail of my system.</p>

<p>Overall I am very happy replacing debian sid with arch, and I don’t
regret anything about it. YMMV</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="arch" /><category term="aur" /><category term="debian" /><category term="sid" /><category term="linux" /><category term="pkgbuild" /><summary type="html"><![CDATA[I’ve been using debian linux since 1995; when I say using, I mean at least one machine in my house has been running debian constantly during that entire time, be it a server install running stable, a laptop or desktop computer for the wife or one of my daughters running stable, or maybe testing, and always my personal daily driver laptop running sid. So when I changed my two personal daily driver laptops (not any of my servers or other family member’s computers) from debian sid to arch linux this past July, it could be asked, why arch and why now?]]></summary></entry><entry><title type="html">Pen and Paper</title><link href="https://lottalinuxlinks.com/pen-and-paper/" rel="alternate" type="text/html" title="Pen and Paper" /><published>2021-03-13T00:00:00-05:00</published><updated>2021-03-13T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/pen-and-paper</id><content type="html" xml:base="https://lottalinuxlinks.com/pen-and-paper/"><![CDATA[<p>Nothing earth shattering to see here, just a overdue, short post
about two things that I have carried with me everyday since since
graduating college in 1989: a pen and some kind of pocket notebook.</p>

<p>It really started earlier than that though, around 5th grade; I
evidently was lying about the amount of homework I had, and my mom
made me carry a notebook that I was to use to write down everything
that I had to do.  She probably had the teacher sign it too; I
can’t remember the details, but it worked, and I have used and
carried notebooks ever since.  In school I would carry it my bag,
but since then it has resided in my back pocket.</p>

<p>I take notes on my computer too of course. I have used a variety of
apps in the past; I am currently using a combination of Vim,
Joplin, syncthing, git, and nextcloud.  Notes stored on my computer
are more often for procedural or repetitive task, or things that I
may want to copy and paste. In most cases these digital notes are
as important to me as config files, and other things I routinely
back up, but the pen and paper notes server a different purpose,
and are also just quicker, easier, and more convenient. My analog
notes tend to be more list-like in nature, compared to the ones I
keep on my computer, and almost never need to be digitized, as they
are a mainly a complementary supplement to my digital note taking.</p>

<p>Since graduating college and entering the work force, I have used a
variety of pocket sized notebooks, spiral bound flip books, pads of
paper in a cover, pocket calendars, and day-timers; but for the
last 20 years or so, I can say that of all the pen and paper
solutions I have carried, the best I have found is simply this: a
Fisher Bullet Space Pen coupled with 3.5”x 5.5” dotted, memo books,
carried in a leather cover.</p>

<p align="center"><a href="/assets/images/pen-and-paper.jpg"><img src="/assets/images/pen-and-paper.jpg" alt="pen and paper" width="75%" /></a></p>

<p>What I love about this notebook, is that the leather cover makes it
very durable and comfortable to carry in my back pocket, and it can
hold 3, 64 page notebooks.  In one leather cover I can carry one
notebook for long term work-related things, one for mostly
linux-related things, and one for archived material from the
previous year.</p>

<p>The Fisher Bullet Space Pen is almost indestructible. The one I
carry now, I found near my driveway after losing it for over a
year. It had been run over by a car and exposed to the elements and
still serves as my everyday pen. It’s not the best writing pen, but
it is small and comfortable, and easily carried.</p>

<p>It may seem trivial, or an insignificant geeky thing, but my pen
and paper pocket notebook make me happy.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="vim" /><category term="joplin" /><category term="syncthing" /><category term="git" /><category term="nextcloud" /><category term="notebook" /><category term="pen" /><summary type="html"><![CDATA[Nothing earth shattering to see here, just a overdue, short post about two things that I have carried with me everyday since since graduating college in 1989: a pen and some kind of pocket notebook.]]></summary></entry><entry><title type="html">Adding a repurposed caps lock as a third mod key in i3</title><link href="https://lottalinuxlinks.com/adding-a-repurposed-caps-lock-as-a-third-mod-key-in-i3/" rel="alternate" type="text/html" title="Adding a repurposed caps lock as a third mod key in i3" /><published>2021-02-13T00:00:00-05:00</published><updated>2021-02-13T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/adding-a-repurposed-caps-lock-as-a-third-mod-key-in-i3</id><content type="html" xml:base="https://lottalinuxlinks.com/adding-a-repurposed-caps-lock-as-a-third-mod-key-in-i3/"><![CDATA[<p>When the i3 window manager is run for the first time, a
configuration wizard runs and allows you to set the modifier, or
mod key, that you want to use for your keybindings. The
configuration wizard allows you to choose either the Alt key or the
Super key, i.e. one or the other, but not more than one. i3 though
has support for all five modifier keys, and these can be set in
your i3 config file. My i3 config file was set up to use two mod
keys: mod4, the Super key, and mod1, the Alt key. For a while, I
was happily using two mod keys, but recently I have found myself
needing to use a third. This quick and dirty post will explain how,
and why I repurposed my Caps Lock key as mod3.</p>

<p>Disclaimer: what follows is what worked for me, and what I did, and
in the order I did it, to use the Caps Lock key for use as mod3 in
i3.</p>

<p>Here is the relevant excerpt from my i3 config file, from when I
was using just two mod keys:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set $mod Mod4                                                      
set $mod1 Mod1
</code></pre></div></div>

<p>And here is the xmodmap -pm command output (before repurposing the
Caps Lock Key) showing the default assignments for mod1 through
mod5:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap -pm
xmodmap:  up to 5 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3      
mod4        Hyper_L (0x42),  Super_L (0x85),  Super_R (0x86),  Super_L (0xce),  Hyper_L (0xcf)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
</code></pre></div></div>

<p>As you can see in the above output, mod3 is empty and mod4, in
addition to the Super key, also includes the Hyper key.</p>

<p>The first thing I did was run the following setxkbmap command to
change the Caps Lock key to the Hyper key:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>setxkbmap -option caps:hyper
</code></pre></div></div>

<p>This might seem like enough, but it’s not; next a ~/.Xmodmap file
needs to be created to clear out the mod4 designations, add the
mod3 designation, and then re-add the mod4 designations. Here is
the contents of the ~/.Xmodmap file I created:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>clear mod4
keycode 66 = Hyper_L NoSymbol Hyper_L
add mod3 = Hyper_L
add mod4 = Super_L Super_R
</code></pre></div></div>

<p>Note: the keycode for the Caps Lock key can be obtained using the
xev command like this:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xev -event keyboard
</code></pre></div></div>

<p>After creating the .Xmodmap file you either need to restart X or
source the .Xmodmap file. Here is the command to source the new
file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap ~/.Xmodmap
</code></pre></div></div>

<p>After running that above command, re-running the xmodmap -pm
command outputs the following:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>xmodmap -pm
xmodmap:  up to 3 keys per modifier, (keycodes in parentheses):

shift       Shift_L (0x32),  Shift_R (0x3e)
lock      
control     Control_L (0x25),  Control_R (0x69)
mod1        Alt_L (0x40),  Alt_R (0x6c),  Meta_L (0xcd)
mod2        Num_Lock (0x4d)
mod3        Hyper_L (0x42),  Hyper_L (0xcf)
mod4        Super_L (0x85),  Super_R (0x86),  Super_L (0xce)
mod5        ISO_Level3_Shift (0x5c),  Mode_switch (0xcb)
</code></pre></div></div>

<p>As you can see mod4 now only includes Super, and mod3 is no longer
empty, but contains Hyper.</p>

<p>Next (since I don’t run a display manager) I added the following to
my ~/.xinitrc:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[[ -f ~/.Xmodmap ]] &amp;&amp; xmodmap ~/.Xmodmap
</code></pre></div></div>

<p>This will source my custom ~/.Xmodmap file when I run startx.</p>

<p>And the last thing I did was add the following to my i3 config
file:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>set $mod3 Mod3
exec --no-startup-id setxkbmap -option caps:hyper
</code></pre></div></div>

<p>For clarity, I put the set $mod3 Mod3 line in the same section of
the file where I had set $mod and $mod4; and I put the exec
–no-startup-id setxkbmap command in the section of the file where
I put the programs that I want started when i3 starts up.</p>

<p>With the above changes made, I now have three modifier keys that I 
can use for keybindings in i3. This gives me another whole level of 
keybinding flexibility.</p>

<p>The main reason I did this though, is that a third mod key made it
more simple and intuitive to add and use an additional 10
workspaces, for a easily accessed total of 30. With i3 configured
this way I can now access workspaces 1-10 with Super+numbers 1-0;
workspaces 11-20 with Alt+numbers 1-0; and workspaces 21-30 with
Caps Lock+numbers 1-0.</p>

<p>Here is the excerpt from my i3 config with 30 workspaces:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Define names for default workspaces for which we configure key bindings later on.
# We use variables to avoid repeating the names in multiple places.
set $ws1 "1"
set $ws2 "2"
set $ws3 "3"
set $ws4 "4"
set $ws5 "5"
set $ws6 "6"
set $ws7 "7"
set $ws8 "8"
set $ws9 "9"
set $ws10 "10"
set $ws11 "11"
set $ws12 "12"
set $ws13 "13"
set $ws14 "14"
set $ws15 "15"
set $ws16 "16"
set $ws17 "17"
set $ws18 "18"
set $ws19 "19"
set $ws20 "20"
set $ws21 "21"
set $ws22 "22"
set $ws23 "23"
set $ws24 "24"
set $ws25 "25"
set $ws26 "26"
set $ws27 "27"
set $ws28 "28"
set $ws29 "29"
set $ws30 "30"

# switch to workspace
bindsym $mod+1 workspace number $ws1
bindsym $mod+2 workspace number $ws2
bindsym $mod+3 workspace number $ws3
bindsym $mod+4 workspace number $ws4
bindsym $mod+5 workspace number $ws5
bindsym $mod+6 workspace number $ws6
bindsym $mod+7 workspace number $ws7
bindsym $mod+8 workspace number $ws8
bindsym $mod+9 workspace number $ws9
bindsym $mod+0 workspace number $ws10
bindsym $mod1+1 workspace number $ws11
bindsym $mod1+2 workspace number $ws12
bindsym $mod1+3 workspace number $ws13
bindsym $mod1+4 workspace number $ws14
bindsym $mod1+5 workspace number $ws15
bindsym $mod1+6 workspace number $ws16
bindsym $mod1+7 workspace number $ws17
bindsym $mod1+8 workspace number $ws18
bindsym $mod1+9 workspace number $ws19
bindsym $mod1+0 workspace number $ws20
bindsym $mod3+1 workspace number $ws21
bindsym $mod3+2 workspace number $ws22
bindsym $mod3+3 workspace number $ws23
bindsym $mod3+4 workspace number $ws24
bindsym $mod3+5 workspace number $ws25
bindsym $mod3+6 workspace number $ws26
bindsym $mod3+7 workspace number $ws27
bindsym $mod3+8 workspace number $ws28
bindsym $mod3+9 workspace number $ws29
bindsym $mod3+0 workspace number $ws30
    
# move focused container to workspace
bindsym $mod+Shift+1 move container to workspace number $ws1
bindsym $mod+Shift+2 move container to workspace number $ws2
bindsym $mod+Shift+3 move container to workspace number $ws3
bindsym $mod+Shift+4 move container to workspace number $ws4
bindsym $mod+Shift+5 move container to workspace number $ws5
bindsym $mod+Shift+6 move container to workspace number $ws6
bindsym $mod+Shift+7 move container to workspace number $ws7
bindsym $mod+Shift+8 move container to workspace number $ws8
bindsym $mod+Shift+9 move container to workspace number $ws9
bindsym $mod+Shift+0 move container to workspace number $ws10
bindsym $mod1+Shift+1 move container to workspace number $ws11
bindsym $mod1+Shift+2 move container to workspace number $ws12
bindsym $mod1+Shift+3 move container to workspace number $ws13
bindsym $mod1+Shift+4 move container to workspace number $ws14
bindsym $mod1+Shift+5 move container to workspace number $ws15
bindsym $mod1+Shift+6 move container to workspace number $ws16
bindsym $mod1+Shift+7 move container to workspace number $ws17
bindsym $mod1+Shift+8 move container to workspace number $ws18
bindsym $mod1+Shift+9 move container to workspace number $ws19
bindsym $mod1+Shift+0 move container to workspace number $ws20
bindsym $mod3+Shift+1 move container to workspace number $ws21
bindsym $mod3+Shift+2 move container to workspace number $ws22
bindsym $mod3+Shift+3 move container to workspace number $ws23
bindsym $mod3+Shift+4 move container to workspace number $ws24
bindsym $mod3+Shift+5 move container to workspace number $ws25
bindsym $mod3+Shift+6 move container to workspace number $ws26
bindsym $mod3+Shift+7 move container to workspace number $ws27
bindsym $mod3+Shift+8 move container to workspace number $ws28
bindsym $mod3+Shift+9 move container to workspace number $ws29
bindsym $mod3+Shift+0 move container to workspace number $ws30
</code></pre></div></div>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="i3" /><category term="i3-gaps" /><category term="debian" /><category term="linux" /><category term="FOSS" /><category term="setxkbmap" /><category term="xmodmap" /><category term="xev" /><summary type="html"><![CDATA[When the i3 window manager is run for the first time, a configuration wizard runs and allows you to set the modifier, or mod key, that you want to use for your keybindings. The configuration wizard allows you to choose either the Alt key or the Super key, i.e. one or the other, but not more than one. i3 though has support for all five modifier keys, and these can be set in your i3 config file. My i3 config file was set up to use two mod keys: mod4, the Super key, and mod1, the Alt key. For a while, I was happily using two mod keys, but recently I have found myself needing to use a third. This quick and dirty post will explain how, and why I repurposed my Caps Lock key as mod3.]]></summary></entry><entry><title type="html">My gemini capsule has launched.</title><link href="https://lottalinuxlinks.com/my-gemini-capsule-has-launched/" rel="alternate" type="text/html" title="My gemini capsule has launched." /><published>2021-02-07T00:00:00-05:00</published><updated>2021-02-07T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/my-gemini-capsule-has-launched</id><content type="html" xml:base="https://lottalinuxlinks.com/my-gemini-capsule-has-launched/"><![CDATA[<p>And we have liftoff! I have a gemini capsule now.</p>

<p>If you already have a gemini client enter in the following address:</p>

<p><code class="language-plaintext highlighter-rouge">gemini://gemini.lottalinuxlinks.com</code></p>

<p>Gemini is a new privacy-respecting internet protocol that seeks to
fill the space between the web and gopher. It is still new to me,
so I am just getting into it; but
<a href="https://mastodon.social/@Samsai">@Samsai</a>, has a really good
<a href="https://samsai.eu/post/introduction-to-gemini/">post</a> about what
makes gemini intriguing.</p>

<p>Much like gopher, except way more modern, you will need a gemini
client to view gemini content.</p>

<p>Here is a <a href="https://github.com/kr1sp1n/awesome-gemini">list</a> of
clients, proxies, and servers that can be used with gemini.</p>

<p>If you don’t have a gemini client yet, you can use the <a href="https://portal.mozz.us/gemini/gemini.circumlunar.space/">gemini
portal</a> to
access gemini capsules with a web browser.</p>

<p>There isn’t a lot of information on the web about it, but <a href="https://gemini.circumlunar.space/">Project
Gemini</a>, and of course
<a href="https://en.wikipedia.org/wiki/Gemini_(protocol)">wikipedia</a>, have
a little more information if you are interested in learning more.</p>

<p>Special thanks to <a href="https://fosstodon.org/@ecliptik">@ecliptik</a> and his
<a href="https://github.com/ecliptik/ecliptik.github.io/tree/master/_scripts">_scripts
repository</a>.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="gemini" /><category term="gopher" /><category term="FOSS" /><summary type="html"><![CDATA[And we have liftoff! I have a gemini capsule now.]]></summary></entry><entry><title type="html">How to build and install i3-gaps from source on debian</title><link href="https://lottalinuxlinks.com/how-to-build-and-install-i3-gaps-on-debian/" rel="alternate" type="text/html" title="How to build and install i3-gaps from source on debian" /><published>2021-02-06T00:00:00-05:00</published><updated>2021-02-06T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/how-to-build-and-install-i3-gaps-on-debian</id><content type="html" xml:base="https://lottalinuxlinks.com/how-to-build-and-install-i3-gaps-on-debian/"><![CDATA[<p>i3-gaps is a fork of the i3 window manager that is kept up to date
with upstream i3, and adds the feature of allowing you to have
visible and configurable gaps between windows. This feature <strong>is</strong>
just eye candy, and may or may not actually aid the user by
providing some visible space between windows (at the expense of
some screen real estate) to make clearer the distinction between
adjacent windows.  What cannot be argued though, is that i3-gaps
just looks better.  Seriously though, it is just regular i3 but
with re-sizable gaps between windows that can be turned on or off.</p>

<p>Debian does not have i3-gaps in their repos, just plain i3.  If you
are running debian, and already have i3 from the debian repos
installed, and you want to use i3-gaps, I recommend uninstalling
the version from the debian repos before proceeding. The reason you
want to do this is that the i3-gaps binary is actually named i3, 
 just like the non-gapped i3 from which it is forked.</p>

<p>I don’t know why the forked version has the same name, but that’s
OK. You either want the gap option, or you don’t. If you want them
bad enough, just uninstall the i3 from the repo before proceeding.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo apt purge i3
</code></pre></div></div>

<p>Before we go any further, and in the spirit of full disclosure, I 
installed i3 in /usr/ instead of /usr/local/.<br />
 <em>I know, I know</em>…the instructions that follow though will assume
that you want to install i3-gaps in /usr/local/.</p>

<p>So, here is how to build from source and install i3-gaps on debian:</p>

<p>First install the dependencies:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>apt install meson dh-autoreconf libxcb-keysyms1-dev libpango1.0-dev libxcb-util0-dev xcb libxcb1-dev libxcb-icccm4-dev libyajl-dev libev-dev libxcb-xkb-dev libxcb-cursor-dev libxkbcommon-dev libxcb-xinerama0-dev libxkbcommon-x11-dev libstartup-notification0-dev libxcb-randr0-dev libxcb-xrm0 libxcb-xrm-dev libxcb-shape0 libxcb-shape0-dev
</code></pre></div></div>

<p>Then cd to the directory where you want to download the i3-gaps
source code and the run the following commands in the order shown.</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>git clone https://github.com/Airblader/i3 i3-gaps
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>cd i3-gaps
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkdir -p build &amp;&amp; cd build
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>meson --prefix /usr/local
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ninja
</code></pre></div></div>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo ninja install
</code></pre></div></div>

<p>The meson –prefix option allows you to pick where you want to
install i3-gaps. In the above example, everything will be installed
in sub-directories of the /usr/local/ directory.</p>

<p>As I mentioned before, this binary will not be called i3-gaps, but
it will be called i3.</p>

<p>If you are like me, and don’t use a display manager, just edit your
.xinitrc file and comment out your current window manager and add 
the following line:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>exec i3
</code></pre></div></div>

<p>If you are running a display manager you should be able to pick i3
from the login screen. Remember it will be called i3, not i3-gaps.</p>

<p>Once installed, you will need to edit your config file
(~/.config/i3/config) to enable the gaps feature, since the config
file that comes with i3-gaps is the same one as the default
non-gapped i3 from the repo. All you need to add is in the
README.md at the <a href="https://github.com/Airblader/i3">i3-gaps github
page</a>. Note that the i3-gaps
documentation states that window titlebars need to be disabled in
order for the gaps feature to work. I <em>think</em> that recommendation
may be out of date, as I have run gaps with window titlebars
enabled; but YMMV. I have since grown to love windows without
titlebars though, and keep my titlebars disabled..</p>

<p>Here is the pertinent part of my config file, and how I have the 
gaps configured:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># gaps
# disable window titlebars
for_window [class="^.*"] border pixel 0

gaps inner 6
gaps outer 2

bindsym $mod+Shift+g gaps inner all set 6; gaps outer all set 2
bindsym $mod+Shift+n gaps inner all set 0; gaps outer all set 0

# Only enable gaps on a workspace when there is at least one container
smart_gaps on

# Activate smart borders (always)
#smart_borders on

# Activate smart borders (only when there are effectively no gaps)
#smart_borders no_gaps

# Hide edge borders only if there is one window with no gaps
hide_edge_borders smart_no_gaps

# What follows here is optional and defines a mode that allows you to resize the gaps on the fly.
# Press $mod1+Shift+g to enter the gap mode. Choose o or i for modifying outer/inner gaps. 
# Press one of + / - (in-/decrement for current workspace) or 0 (remove gaps for current workspace).
# If you also press Shift with these keys, the change will be global for all workspaces.
set $mode_gaps Gaps: (o) outer, (i) inner
set $mode_gaps_outer Outer Gaps: +|-|0 (local), Shift + +|-|0 (global)
set $mode_gaps_inner Inner Gaps: +|-|0 (local), Shift + +|-|0 (global)
bindsym $mod1+Shift+g mode "$mode_gaps"

mode "$mode_gaps" {
        bindsym o      mode "$mode_gaps_outer"
        bindsym i      mode "$mode_gaps_inner"
        bindsym Return mode "default"
        bindsym Escape mode "default"
}

mode "$mode_gaps_inner" {
        bindsym plus  gaps inner current plus 5
        bindsym minus gaps inner current minus 5
        bindsym 0     gaps inner current set 0

        bindsym Shift+plus  gaps inner all plus 5
        bindsym Shift+minus gaps inner all minus 5
        bindsym Shift+0     gaps inner all set 0

        bindsym Return mode "default"
        bindsym Escape mode "default"
}
mode "$mode_gaps_outer" {
        bindsym plus  gaps outer current plus 5
        bindsym minus gaps outer current minus 5
        bindsym 0     gaps outer current set 0

        bindsym Shift+plus  gaps outer all plus 5
        bindsym Shift+minus gaps outer all minus 5
        bindsym Shift+0     gaps outer all set 0

        bindsym Return mode "default"
        bindsym Escape mode "default"
}
</code></pre></div></div>

<p>If you like i3, you’ll love i3-gaps; even if you don’t love gaps,
you can just turn them off and it will be just like regular i3.
That is a win-win-win scenario.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="i3" /><category term="i3-gaps" /><category term="debian" /><category term="FOSS" /><summary type="html"><![CDATA[i3-gaps is a fork of the i3 window manager that is kept up to date with upstream i3, and adds the feature of allowing you to have visible and configurable gaps between windows. This feature is just eye candy, and may or may not actually aid the user by providing some visible space between windows (at the expense of some screen real estate) to make clearer the distinction between adjacent windows. What cannot be argued though, is that i3-gaps just looks better. Seriously though, it is just regular i3 but with re-sizable gaps between windows that can be turned on or off.]]></summary></entry><entry><title type="html">Fosstodon</title><link href="https://lottalinuxlinks.com/fosstodon/" rel="alternate" type="text/html" title="Fosstodon" /><published>2021-01-31T00:00:00-05:00</published><updated>2021-01-31T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/fosstodon</id><content type="html" xml:base="https://lottalinuxlinks.com/fosstodon/"><![CDATA[<p>I have <a href="https://lottalinuxlinks.com/back-seat-dropout">posted
before</a> about my
experiences in the linux and FOSS community, and specifically about
getting in, fitting in, taking part in, and later dropping out of
the community. Since the recent rebirth of this dormant website, I
have revisited mastodon, and logged back in to my fosstodon account
again for the first time. I say the first time because I honestly
cannot remember the last time I had logged in, but thankfully
<a href="https://bitwarden.com/">bitwarden</a> had my password. In the short
two week period, at the time of this writing, that I have been back
on fosstodon, I can say it has been enjoyable and eye opening.</p>

<p>Mastodon is an open source, and Free as in freedom, privacy
respecting, own your data, social network server and micro blogging
platform. All mastodon servers can communicate with each other on a
federated network of decentralized servers; this means that if you
are have an account on one server, or instance, you can communicate
with all users on the server you are on, as well as users on other
servers. Additionally, mastodon is part of the larger fediverse and
can communicate with the other non-mastodon parts of the fediverse
too. That is the short and sweet, oversimplified explanation of
what mastodon is.</p>

<p>If you want to know why you should use mastodon, please read
<a href="https://fosstodon.org/@codesections">@codesections</a>’s
<a href="https://www.codesections.com/blog/mastodon-elevator-pitch/">post</a>
about how and why mastodon is better than twitter; he is one of the
moderators of the fosstodon mastodon instance, and he says it
better than I ever could.</p>

<p>So, after that brief, what, how, and why, I will get back to the
main purpose of the this post, and continue to gush a little about
the fosstodon mastodon instance. One of the things I love about
mastodon and it being federated, is that the instance you choose to
have an account with can, if you find the right instance, really
feel like a community. What I mean by that is if you are a Free and
open source linux geek, the fosstodon instance will feel like home
for you. The fosstodon instance is filled with people who care
about linux, Free and open source software, and all the various and
sundry geeky/nerdy things that those people are passionate about.
If you are passionate about something, being surrounded by, and
communicating with, people who are passionate about the same
things, puts you in an environment that both liberates and fosters
a healthy, fun, and engaging community.</p>

<p>I am living proof that, even someone like me who has suffered from
occasional impostor’s syndrome, can, and will, be accepted into the
linux and Free and open source software community. The fosstodon
instance is a place for people like me; an exciting, and engaging
place that allows anyone and everyone that is passionate about
these things to get in , fit in, and take part in, an accepting
community that feels like home.</p>

<p>Fosstodon, being just one instance of the larger mastodon federated
network,  isn’t a particularity small instance with over 15,000
users (and don’t forget you can still communicate with the other
instances), but it still feels like a community, as well connected
part of a larger unique part of the internet. And that is because
it is part of the fediverse, the larger universe made up of all the
federated networks, that in addition to mastodon include diaspora,
Friendica, GNU Social, Hubzilla, Misskey, PeerTube, Pleroma,
Pixelfed, Funkwhale, and possibly more. Together, all of these
decentralized networks of federated servers make up the larger
fediverse.  It is a small-feeling, interconnected corner of the
internet, that isn’t controlled by giant companies that mine your
data for their profits. It sort of reminds me of the internet
before the web became the way it is today; it somehow reminds me of
gopherspace and BBSs, when the internet felt, in a good way, 
smaller–but more connected.</p>

<p>I told you I was gonna gush.</p>

<p>None of this is rocket science, and it may not even be that
eye-opening for most people reading this,  but I have had my eyes
opened, again, by the linux and Free and open source software
community. Thanks fosstodon.</p>

<p>If you don’t have a home on mastodon yet, and especially, if you
are passionate about FOSS and linux, just click the link below to
sign up for an account on the fosstodon instance:</p>

<p><a href="https://fosstodon.org/invite/XrJRievw">Join fosstodon</a>.</p>

<p>And if fosstodon doesn’t sound like home to you, being able to
<a href="https://instances.social/">pick</a>, or even
<a href="https://github.com/tootsuite/mastodon">host</a>, your own instance
are just two more reasons that make mastodon, and the
<a href="https://fediverse.party/en/fediverse">fediverse</a> so awesome.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="fosstodon" /><category term="mastodon" /><category term="FOSS" /><category term="fediverse" /><category term="bitwarden" /><category term="gopher" /><category term="BBS" /><category term="community" /><category term="ramblings" /><summary type="html"><![CDATA[I have posted before about my experiences in the linux and FOSS community, and specifically about getting in, fitting in, taking part in, and later dropping out of the community. Since the recent rebirth of this dormant website, I have revisited mastodon, and logged back in to my fosstodon account again for the first time. I say the first time because I honestly cannot remember the last time I had logged in, but thankfully bitwarden had my password. In the short two week period, at the time of this writing, that I have been back on fosstodon, I can say it has been enjoyable and eye opening.]]></summary></entry><entry><title type="html">Welcome to the MODcast</title><link href="https://lottalinuxlinks.com/welcome-to-the-modcast/" rel="alternate" type="text/html" title="Welcome to the MODcast" /><published>2021-01-29T00:00:00-05:00</published><updated>2021-01-29T00:00:00-05:00</updated><id>https://lottalinuxlinks.com/welcome-to-the-modcast</id><content type="html" xml:base="https://lottalinuxlinks.com/welcome-to-the-modcast/"><![CDATA[<p>Shortly after I set up my gopher hole last year, I downloaded all
of the MOD files off of
<a href="http://artscene.textfiles.com/music/mods/">textfiles.com</a> thinking
I would mirror them on my gopher site. I decided not to once I had
finished the 54 gig download of over 140,000 MOD files.  The
directory structure of the downloaded files was going to make it a
little cumbersome to be useful on a gopher site. As an aside, I
can’t remember the exact details, but I pretty sure I used wget, or
maybe it was curl, to grab the files; either way it was easy. I
kept the files and have enjoyed listening to them as background
music on several occasions since then.</p>

<p>But wait, what are MOD files? MOD is short for module, and
<a href="https://en.wikipedia.org/wiki/MOD_(file_format)">paraphrased from
wikipedia</a> is a
file format, first developed for the Amiga computer in 1987, and is
mainly used to represent music. A MOD file (including files with
the extension MOD, XM, IT, 669, MTM, and S3M) contains a set of
instruments in the form of samples and a number of patterns
indicating how and when the samples are played. More information
about MOD files can be found at the <a href="http://cd.textfiles.com/darkdomain/faqs/faq-mod_v28-part1.txt">alt.binaries.sounds.mods
FAQ</a>,
retrieved and stored at <a href="http://textfiles.com">textfiles.com</a>.</p>

<p>All that aside, MOD files are both plenty fun and geeky; I have
fond memories of editing MOD files back in the day, changing the
instrument samples and completely changing the sound of the music.
And you can still do that today with with the MOD tracking program
<a href="https://milkytracker.org/about/">MilkyTracker</a>.</p>

<p>So, back to the story,  a couple of day ago I decided I would
stream a randomly shuffled, continuous playlist of 140,129 old
(from roughly 1987-1995) MOD files. That’s a lot of MOD files; 309
days, 6 hours, 2 minutes, and 48 seconds worth of mod files to be
exact! With this many files, there are sure to be some that are not
your cup of tea, but there will plenty of good ones too. So, if you
feel so inclined, tune in and give it a listen.  I can pretty much
guarantee you won’t hear the same song twice in 309 day of
continuous listening.</p>

<p style="text-align: center;"><audio id="audioplayer" style="text-align: center;" src="https://lottalinuxlinks.com:8001/stream" loop="loop" controls="controls"><br />
</audio></p>

<p>Web player not working? Click here → <a href="https://lottalinuxlinks.com:8001/stream">MODcast stream</a>.</p>

<p>Or simply just paste the following stream address in your media
player of choice:</p>

<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>https://lottalinuxlinks.com:8001/stream.m3u
</code></pre></div></div>

<p>I don’t know for sure how much my daily internet usage will affect
the stream quality, but I know there will be times when the stream
is less than ideal. I really don’t think this is going to blow up
the internet or anything like that, but if it gets to be a hassle
bandwidth wise (or even if it doesn’t), there is a decent chance
that I may end up moving the stream to a slot on
<a href="https://anonradio.net/listen/">anonradio</a> over at
<a href="https://sdf.org/">SDF</a>, or maybe
<a href="https://tilderadio.org/">tilderadio</a>. We’ll see what happens.</p>

<p><strong>tl;dr</strong>: I set up a pretty awesome internet <a href="https://lottalinuxlinks.com/modcast/">audio
stream</a> of over 140,000 MOD
files.</p>

<p>-dsyates</p>
<p>
(o\_!_/o)
</p>]]></content><author><name>(o\_!_/o)</name><email>dsyates@lottalinuxlinks.com</email></author><category term="MOD" /><category term="streaming" /><category term="retro" /><category term="gopher" /><category term="music" /><category term="MilkyTracker" /><category term="geekery" /><category term="anonradio" /><category term="tilderadio" /><category term="SDF" /><category term="wget" /><category term="curl" /><summary type="html"><![CDATA[Shortly after I set up my gopher hole last year, I downloaded all of the MOD files off of textfiles.com thinking I would mirror them on my gopher site. I decided not to once I had finished the 54 gig download of over 140,000 MOD files. The directory structure of the downloaded files was going to make it a little cumbersome to be useful on a gopher site. As an aside, I can’t remember the exact details, but I pretty sure I used wget, or maybe it was curl, to grab the files; either way it was easy. I kept the files and have enjoyed listening to them as background music on several occasions since then.]]></summary></entry></feed>