Compare commits

...

No commits in common. "master" and "pages" have entirely different histories.

104 changed files with 14977 additions and 6435 deletions

View file

@ -1,36 +0,0 @@
on:
push:
branches:
- master
jobs:
jekyll:
runs-on: docker
container:
image: jvconseil/jekyll-docker
steps:
- name: Checkout source
uses: actions/checkout@v4
- name: Checkout built site
uses: actions/checkout@v4
with:
ref: pages
path: _site
- name: Setup cache directory
run: mkdir .jekyll-cache
- name: Install dependencies
run: bundle install
- name: Build the site
run: jekyll build --trace
- name: Include the Codeberg pages .domains file
run: cp ${{ env.GITHUB_WORKSPACE }}/.domains ${{ env.GITHUB_WORKSPACE }}/_site/.domains
- name: Publish Site
run: |
cd _site
git config --global --add safe.directory ${{ env.GITHUB_WORKSPACE }}/_site
git config user.name "Scribe [bot]"
git config user.email "scribe@niblock.tech"
git add -A .
git status
git commit -m "Automated Publish"
git push

63
.gitignore vendored
View file

@ -1,63 +0,0 @@
# Global gitignore file
##
# Stolen from octocat: https://gist.github.com/octocat/9257657
##
# Compiled source #
###################
*.com
*.class
*.dll
*.exe
*.o
*.so
# Packages #
############
# it's better to unpack these files and commit the raw source
# git has its own built in compression methods
*.7z
*.dmg
*.gz
*.iso
*.jar
*.rar
*.tar
*.zip
# Logs and databases #
######################
*.log
*.sql
*.sqlite
# OS generated files #
######################
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db
##
# Additions
##
# Vim Related #
###############
*.swp
.netrwhist
*.un~
# Ruby #
########
*.gem
/.yardoc/
# Jekyll #
##########
.jekyll*
_site*

748
2015/01/01/Ireland-Log.html Normal file
View file

@ -0,0 +1,748 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Ireland Log</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/01/01/Ireland-Log.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="day-1-072710">Day 1: 07/27/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Melon... *scatter*
</code></pre></div></div>
<p>Today is travel day! Heading out right now towards JFK, then a 5 hour lay-over
there, then finally taking off towards the Emerald Isle! Im both excited and
anxious, but surprisingly calm. I think its to the point where Im ready to get
things moving.</p>
<p>This flight will be rather uneventful: short 55 minute hop to JFK. Im looking
forward to the longer flight. The time will give me opportunity to read, relax
and think… something I havent done enough of in the past week.</p>
<h1 id="day-2-072810">Day 2: 07/28/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Left is safe!
</code></pre></div></div>
<p>Today we finally arrived in Ireland, first in Dublin and then Shannon. The trip
over was a bit of a challenge: a lack of sleep combined with an atmosphere
trying to promote one, all wrapped in the situation of no comfortable way to
actually get sleep helped to contribute to me not sleeping more than 30 minutes
tops. On the plus side, I did get to watch Dorian Grey and Percy Jackson on the
way over. Also, they served a very delicious beef stew for dinner; I was
pleasantly surprised.</p>
<p>Upon arrival, we immediately set out to retrieve our luggage, which arrived
mostly unmolested. Then, as we proceeded out of the terminal, we finally found
our 4th member, Suf, waiting eagerly for our arrival; he had arrived a day
earlier, and had many a story to share about his adventures in Limerick (our
eventual destination for the day). We got our car, forgot our GPS, recovered our
GPS, and began driving toward Limerick from Shannon Airport. We quickly
discovered that, given our American driving-habits, we thought every car driving
on the “wrong side of the road” was going to kill us. I think twice we all
panicked for fear of our lives. But, once we adjusted (or at least, once Suf
did… Cary is still a bit iffy) the drive was relatively quick and painless. We
arrived not more than 30 minutes later in Limerick, and made for the City Center
to explore on foot the many shops and eateries that the city had to offer, as
well as pay a visit to “The Bitter End” Pub, where Suf had visited on the
previous night. We explored for a bit, had lunch at The Bitter End, visited a
shop so Cary could purchase a couple shilelagh (spelling), wander to a tourist
booth for information and, with said acquired directions, made for our first B&amp;B
of the trip: Coonagh Lodge. We relaxed and napped a bit at the Lodge, enough to
recouperate for a voyage back to Limerick, and made for some dinner and
adventure. We explored around, eventually stopping in at a place called
“Wokking” for some authentic Irish Chinese food, which turned out to be very
tasty and filling. We then explored for a pub, stopping at “Charlie St.
Georges” pub for a quick pint and some people-watching. Then, we explored a bit
more, and wound up back at The Bitter End to enjoy an evening cup of tea and
some relaxing time. After this, we made back to the B&amp;B, where I discovered that
my power brick likes to make a weird noise as it charges my laptop. I account it
to the different voltage, and pray that it doesnt explode and kill us all.</p>
<p>Of most important note, Suf decided to enlighten us with some of his arab cab
driving slang, most notable of which is “Why for you fuck my road?” An important
question, to be sure, and one to be answered in the days to come. A very steady
lean into this adventure, which I prefer to the alternative “kick-in-the-door”
style. Hopefully I can figure out some way to get my computer to connect to WPA2
connections so I can have internet more readily. At least for tonight, I
probably wont get back on (unfortunate news for my KoL desires. Too many
adventures will be wasted after I waste the NS… Oh well…)</p>
<h1 id="day-3-072910">Day 3: 07/29/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Ya know, you keep that shirt on much longer, you gonna get jungle rot" - Biff McBodyspray
</code></pre></div></div>
<p>Today was our first big travel day. We left Limerick around 11:00 am and made
for Galway. Along the way we stopped in at the Cliffs of Moher, and then
continued on to our destination in Kinvara.</p>
<p>The Cliffs of Moher are quite the site to see. Set along the Atlantic Ocean is a
couple-mile stretch of sheer cliffs, topped with walkways and occasional watch
towers, or at least ruins of them. We walked the Cliffs for about an hour, just
exploring the different angles and particulars of the cliffs themselves: the
numerous outcroppings, the way the waves would collide with the rock, the caves
and small inlets that the water had born away. All these details helped to
complete one heck of a view! I also enjoyed the visitor center, which was built
into the hillsides near the cliffs.</p>
<p>After the cliffs, we make our way to Kinvara. We stop briefly at the Burren, a
barren area of rocks and not much else. Once we arrive, we check into our B&amp;B
and decide to hold off on Galway until tomorrow night. This leaves us with
plenty of time to explore Kinvara proper. We relax for a bit and make to town
for some dinner and adventures. We decided to stop in at an Italian place called
The Full Tide Inn, and while waiting for our food, had quite the heated
philosophical discussion. It really put into perspective for me just how
unprepared I am to defend my own view/the Stoic view of topics. After dinner, we
walked out to Dunguaire Castle, which was unfortunately closed, but we still
were able to explore the surrounding grounds. We learned a bit of background
from a fellow tourist, and then made our way back into town to buy a few snacks
before heading back to our B&amp;B. That night, despite our best laid plans, we
werent able to get to Scion. However, luckily for me, the internet access at
the B&amp;B was unprotected and therefore I could hop onto KoL and finish up my
ascension! I bought the trophie available to me (the one regarding food
recipies) and clammered through the astral gash to return once more to my life
of adventuring. I ascended as a Sauceror, holding onto Pastamancy so I can
really start to rack up the bonus adventures from my cooking. A few adventures
gone, I manage to get to level 2 the first day, and am very excited to really
get this sauce boiling.</p>
<h1 id="day-4-073010">Day 4: 07/30/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Be-buh-buh-day, be-buh-buh-day, E-DAY-OH, E-DAY-OH, THAT'S OK!
</code></pre></div></div>
<p>Holy crap, today seemed like an entire months worth of exploration and
adventure. After a delicious traditional Irish breakfast, we made for Galway.</p>
<p>In Galway we parked and set out for our busiest and most fun day yet. I can tell
you now that my feet are none to happy about the amount of walking we achieved,
but if nothing else this is a good reminder to properly prepare next time: make
sure my shoes are comfortable enough to walk around in almost constantly. So, we
park and make towards the city center. Galway is situated along the coast of
Galway Bay (go figure…) and has a river running through the center of town. We
head down the busy pedestrian walkway and hit up a few shops. Chris, Suf and
Cary all check out a couple tattoo parlours, and me being less interested make
for some good people watching and relax a bit. We continue our walk through the
busy crowds, and eventually make our way to the river. Exploring it for a bit,
Cary and I decide to stop off at a river-side restaurant called Mustard, where
I get one of the most delicious pulled-pork sandwiches Ive ever enjoyed.
Afterwards, we met back up with Chris and Suf, and walked out towards the bay a
bit. As we voyaged further away from the city, we met with a couple of fellow
travelers, and discovered a great bar to stop at in town, known as E Brun or
The Bridge. At the bar we met Bill, a local of Galway, who told us of many
great sites and happenings around town. An important detail of our stay in
Galway is that the Galway Races were going on. Evidently, theyre a big deal.</p>
<p>So, after our stop in the pub and a delicious Guiness, we make to explore and
find The Crane, where Shelas son will be playing live music later in the
evening. We find it, and gather from another local (and rather attractive) girl
the location of a couple of good niteclube. After finding the Crane we decide to
hunt our a place to eat, and eventually wander back to Kellys, which helps to
bring back nostalgic memories of Geneseo and our own Kellys. We enjoy a
deliciously filling meal there, compliments of Chris, and find out that later in
the evening we can enjoy Crane for some authentic (and rather good) Irish jazz
(which sounds not much different from any other type of jazz…). Thus far,
although Ive been able to explain our day in only a few short paragraphs, weve
experienced to us what has felt like a lifetime worth of exploration. But, the
fun is only just about to start.</p>
<p>10:20pm, and we just left The Crane Bar to head back to the B&amp;B for some
kick-ass Scion action. Along the way, we overhear a few clubs, but nothing
really catches our ear until we get to Kellys. We can hear the beats from
outside, we can feel our feet aching but wanting to join in, so we head upstairs
and find (!!!)… a bunch of people standing around as a DJ mixes. What a let
down! Well, Suf wouldnt have any of this, and neither would the rest of us, so
after settling into our comfortable corner, Suf finally finds a song that hell
groove to. And groove he does. Following quickly in suite, we join him on the
floor and find ourselves almost alone dancing. The 4 American tourists are the
only ones dancing in the Irish Niteclub. Almost poetic, mostly pathetic. Well,
this quickly changes, as more people flock to the dance floor after seeing our
amazing example. And by no means am I exaggerating! We literally started the
dance party at a niteclub. We groove it and move it for a good couple of hours
before we take off for new adventures. After a bit of exploring, and a lot of
drunk people, we decide to split up: Chris and Suf head back to Kellys for some
more dancing, Cary wanders the street talking to people, and I, the lamest of
the group, head back to the car to call it a night. Before long, we all
reconvene, load up the GPS and make our way back to the B&amp;B. This night has been
legendary, and no degree of detailed description can truly capture just how epic
the night was.</p>
<p>Simply put: Galway was unforgetable.</p>
<h1 id="day-5-073110">Day 5: 07/31/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Where are we heading again? Ballerina?" "BALLINA!"
</code></pre></div></div>
<p>After the unbelievable adventure of Galway, we head out for our next stop in
Northwest Ireland: Ballina.</p>
<p>We set off after saying goodbye to our thus-far favorite B&amp;B and host Shiela,
and head north. As were driving, we spot a few turn offs and decide to stop at
one of them to explore a bit of the countryside. We find our way onto a
mountain, scale the smaller hills leading up to it, and eventually make our way
back to the car to continue walking. As were driving, we happen across one of
the more epic scenes of our voyage: the carved out “seat” of a mountain, which
we refer to afterwards as The God Seat. Surely, the scene of epic Scion games
to come.</p>
<p>As we continue along our voyage, we stop off at Kylemore Abbey, the most
stunning scene Ive seen in my life thus far. Imagine a white and grey castle,
then make it less war-oriented and more beautiful, then set it on a gorgeous
lake, at the base of a very impressive mountain. Thats Kylemore Abbey. We park
and explore a bit, and I get several good pictures. Further, I manage to spot a
statue of something half way up the mountain, made of white stone. Whoever made
this statue certainly had a lot of determination!</p>
<p>We leave the Abbey and finish our journey to our B&amp;B for the evening. We relax,
settle in, and finally get to playing some Scion. Cary volunteered to run
first, so we play through the first half of his one shot: saving a shie from
an Irish scion and his giant lackies. My character, a defensive tank named
Derrick Nasher, does quite well. We finish up the session, spend our exp (making
us even more boss), and crash for a relatively early night.</p>
<p>This B&amp;B also has an encrypted internet, so at first Im out of luck. However,
on a whim I try out the Chromium build I brought along (thanks Hexxeh!!), and
manage to easily set up a connection through that! I cant upload any files or
pictures very well, but I can still play some KoL and post a few updates to my
social sites. Also, Google Voice has proven to be a godsend! Being able to text
from a website has been my primary means of keeping in contact with the family
back at home.</p>
<h1 id="day-6-080110">Day 6: 08/01/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"...just chillax..."
"Woah... I never expected to hear 'chillax' outside of the states!"
- A conversation between Kim and Chris
</code></pre></div></div>
<p>Day 2 of our stay in Ballina. We eat an early breakfast and make for Killary
Adventure for some archery!</p>
<p>We arrive in Killary around noon, and enjoy an hour of arching with our
instructor Kim and another instructor named Dugal. I managed to shoot 2
bullseyes! Its amazing that if you actually hold the weapon properly and keep
proper form, you can actually aim with it. Never would have thought otherwise…
(/sarcasm). We joked, tried out some trick shooting, played a HORSE-style game,
and all-in-all came out of the adventure feeling really great. Plus, we all got
some wicked “battle wounds” from the bow on our forearms.</p>
<p>After the archery, we decide to head to Westport, on advice from Kim, for some
shopping and to get lunch. We immediately (perhaps fatefully) stumble upon a
place called The Asgard and decide that theres no better place to eat in town
than here. I enjoy some Bangers and Mash - Asgard Style - and feel the wonderful
feeling of fulness once more. This trip has been a wonderful venture in
delicious foods. The traditional Irish breakfast (Egg, real bacon, sausages,
black and white pudding, half a tomatoe, toast, tea and juice) is so filling
that most of the time we feel no need to eat before dinner. Today, though, was a
glaring exception; that, and we had a different breakfast of pancakes and
poached eggs. After the Bangers and Mash, we split up: I head off to explore the
riverway and the port, while the others go shopping. I manage to snap quite a
few nice pictures, and figure out some more features on the camera, before we
meet back up and head back to Ballina, and then onwards to Enniscrone, the
birthplace of Carys ancestors, the Grimes.</p>
<p>We arrive in Enniscrone around 4:00 in the afternoon, to a beautiful sunny day
and warm weather. Enniscrone in a beach town, so we split up once again, with me
heading out towards the beach and the others once more hitting up the shops. I
walk along the Atlantic Ocean, soaking in the waves and the rays, and eventually
make my way back to the car to relax for a bit. We head back to the B&amp;B, rest
for a bit, and decide that heading back to Enniscrone for some delicious,
authentic Irish-Chinese food would be best. And best it was: we discovered the
awesomness and addictivness that is puffed-rice prawn crisps. Dinner was good,
too.</p>
<p>We head back to the B&amp;B and finish up Carys session of Scion. Chris set his
crab-tank relic for self-destruct and took care of all the giants for us, while
I managed to manipulate our crazy Irish scion friend Brian that he forgot how to
fight, which led to his untimely demise (or at least him falling
unconscious…). We saved the shie, secured the relic protected inside it, and
got Brians birthrights for ourselves. A success, and a good start to our Scion
adventures yet to come. Cary hands the GM torch over to Chris, and we begin his
session tonight: we get tasked by Brigid (one of the Tuatha) to help out one of
her daughters. We manage to find her just in time for the night to expire, and
so we call it there. In KoL, Ive managed to get to level 4, half-way towards 5,
before I call it a night. I havent yet played all my available turns, but Im
making decent progress. With a bit more practice I can probably get getting to
level 6 a 2-day process, which will help to speed through the slower part of the
game.</p>
<h1 id="day-7-080210">Day 7: 08/02/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Worst. Bank. Holiday. Ever.
</code></pre></div></div>
<p>After a restful evening, and another delicious breakfast of pancakes and poached
eggs, we enjoy a quick chat with John, our host, before heading off on our
“driving day from hell.” Our course will take us through the middle of Ireland,
stopping off at Athlone to see the oldest bar in Ireland (and perhaps the world)
and eventually into Tipperary for the evening</p>
<p>Our first stop of the day is in Athlone, a city smack-dab in the middle of
Ireland. The drive to Athlone was a bit long, but still strikingly beautiful. It
seems like Ireland, despite its rather small size, is still host to some of the
most grandiouse and beautiful scenes Ive ever seen. We arrive in Athlone around
noon, and wander around a bit. Suf, Cary and I all stop in at The Snug for a
quick pint, before we take off across the bridge in the middle of town to hit up
some shopping. We stop off in Athlone Castle along the way for some great
pictures, and run into Chris, who had wandered off to find some shops, after we
cross the bridge. Chris and I decide to backtrack to the Castle, then wander
around before we head back to Seans. Seans is the oldest bar in Ireland,
dating back towards 900AD, and quite possible the oldest bar in the world.
Obviously, I enjoy a pint of Guiness before we head back to the car and continue
along our days journey.</p>
<p>We decide to stop off at Clanmocnoise Abbey, a ruined abbey just south of
Athlone, before heading out to Tipperary. The sites there are truely amazing,
and the ruined Abbey is quite cool as well. The conservation attempts have, thus
far, done a good job of maintaining what was salvageable, but the Abbey itself
is beyond repair. After some cool pictures, we continue on our way to Tipperary.</p>
<p>We finally arrive at our destination for the evening. Tipperary is a small town,
with a good amount of shops and a very comfortable atmosphere. Unfortunately,
and unknown to us, due to the Bank Holiday most of the food shops are closed. We
settle for a fast-food place called “American Stars” and apologize to our
digestive tracks before heading back to our B&amp;B for some Scion action.</p>
<p>Scion has us defending Nikki from a couple of Fenrir, which we succeed in doing,
and then finding out our target was, in fact, a doppleganger. We discover this a
bit too late, though, and end our session assaulting The God Seat and a Norse
Scion, who claims that “the ginger bitch has got to go.” Well, Derrickll be
damned if he lets a potential future employer die that easily. The stage is set
as both Derrick and the Norse Scion enter their Collosus Armor, Carys Scion
enters his Warpspasm, and Sufs Scion prepares to make pincushins out of the
Frost Giants. After Scion comes KoL, which sees my progression to level 5 and
acquisition of Advanced Sausecrafting. I adventure for a bit more, before
fatigue wins and I succumb to sleep.</p>
<h1 id="day-8-080310">Day 8: 08/03/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"There any bars... excuse me... pubs around here?"
"Welcome to Ireland, lad!"
- A conversation between me and a bouncer
</code></pre></div></div>
<p>Today we headed back to the Rock of Cashel to get a great tour around the castle
grounds. I took lots of pictures, bought a few things for myself and a great
sweater for my mom, fall down a few steps while wandering the castle grounds
(resulting in a beautiful leg-bruise to match my archery-provided battle wound
on my forearm), and we wrap up Tipperary and head to Cork.</p>
<p>We arrive in Cork and are immediately thrust into the realization that Cork is
quite the large, industrial city. After a bit of confusion finding our way to
our B&amp;B for the night, we decide to take some naps to recover some energy and
mana, and head out to find dinner and some nighttime entertainment. On the
generocity of our very funny and cheery innkeep, we head to a place called
Zaks, and are pleasantly surprised in the meal; I had a delicious Irish-beef
burger, some awesome garlic bread, and a Murphys to wash it all down (Murphys
is brewed in Cork; Guiness is not very welcomed here). We finish dinner, and
head out to find some clubs for the night.</p>
<p>We start our evening off wandering the neighborhood around Zaks. We find a
place, rather populated and playing somewhat good music, but quickly discover
its overpopulated with Binfo for the night. We pass this pub, and ask the
bouncer for any suggestions, and get pointed towards a place called “Sober
Lane.” Ignoring the odd name, we head off in the appropriate direction and run
into a metal pub along the way, so I insist we stop in and enjoy a drink. We get
a pint, enjoy the music, and move on. Sober Lane turns out to be a much
younger-oriented pub, which doesnt dissappoint us, but it really pulls through
when Chris discovers the dart board in the back corner. We quickly take it over,
playing darts until the pub closes (oddly early, for our expectations), and
Chris and I head out to relax outside. Cary and Suf, being the charmers that
they are, end up chatting it with two girls local to the area, who invite all of
us back to a place called Cruscien Lar (which we all continually misunderstand
as crusifixion). We follow them through the streets of Cork, and eventually wind
up at the closed pub. They hit the secret side enterence, and convince the owner
and co. to let us in.</p>
<p>Cruscien Lar (which Im sure Im spelling wrong), ended up being the undeniable
high point of Cork. Once we got a bit more comfortable and began chatting with
everyone, we really ended up enjoying ourselves! And then, we met Alan. Alan is
a veritable world travelling musician. He has been pretty much everywhere,
including state side, with his band The Jordans and he had many tales to share
with us. He mentioned that the prices for alcohol (and women (…and drugs))
were best in Slovakia, that youll never see anything more beautiful than the
Southeastern Asian countries, and that Russia really isnt that bad a place.
Really a lot of what we talked about fell into those topics, and it was a
conversation which I enjoyed thoroughly. Alan taught me that being a world
traveller doesnt take gobs of money and resources. All it takes is a desire to
explore, and a willingness to step outside your comfortable little box.</p>
<p>Throughout the night we talked with Alan, and his friends Marie and Ger (the
girls which Cary and Suf connected with), about not only their travels, but also
their taste in music (which was gloriously metal-oriented), their careers, their
adventures and their aspirations. As the night wound down, we all said our
farewells, and left through the side door. Our night was almost at an end! As we
wandered back to the B&amp;B, we stumbled across a rather rowdy bunch, and Suf,
being the social butterfly that he is, decided to hop on board. We eventually
were introduced to Nollagh and her friends, who were travelling in our direction
to a supposed party. Considering were still young, as was the night, we tagged
along and were eager to arrive at another Irish party. Sadly, the party was a
bit of a bust, and seeing as we were so close to home, we decided to just call
it a night. An awesome night, almost so much to as to rival our crazy adventures
in Galway.</p>
<h1 id="day-9-080410">Day 9: 08/04/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>My father's name is Merry Merry Mack!
</code></pre></div></div>
<p>After a rather enjoyable rest, we departed from Cork on our way to our final
“big city” stop: Killarney. Killarney has a very homey feel about it. There are
plenty of tourist shops, plenty of sites and sounds to experience, and the night
life is absolutely amazing, but more on that in a bit.</p>
<p>We arrived at our B&amp;B to find that the owner had stepped out for a bit, so we
decided to just park and wander into town. We quickly found some great shops,
restaurants, pubs, and other such attractions. Chris and I wandered around a few
places, and I ended up finding a few good gifts for the family: a corkscrew and
wine stopper for dad, both made of pewter; and a hat for Eric, which I think
will suit him quite nicely. After a bit more wandering, we headed back to the
B&amp;B to relax and recover before we hit the town.</p>
<p>I think the most memorable part of Killarney for me was all the festivities
going on at night in the city. Almost every pub had live music, there were
people out walking and having a great time. There were lights, and food, and
music, and drinks… it just felt like a fun place to be! We started our night
wandering around a bit, and found ourselves at an outside banquet of sorts, with
life music. Suf and I, exemplifying our boistrious nature, led the singing of
the chorus (see the quote), and made our mark early in the Killarney
perspective. After our job was done there, we found our way to a pub called
Scruffys, near an amazing hotel. The band playing there had some great
traditional music as well, which we joined in on. Had a pint, made some friends,
moved on down the road to our final destination for the evening: McSorleys.
McSorleys is appropriately named because my feet at the end of the night were
very McSore. To say the least, McSorelys is about 50% enough to keep me in
Ireland. The drinks were great, the atmosphere was amazing, and, the best part
of all, the music was fantastic. This particular evening we were treated to a
performance by a ground called “Zoot Allures”, a cover band. They played an
AMAZING set, with so many great songs, and such great energy, that it made me
really wish American clubs would pull their heads out of their asses and
actually play good music. Anyways, amazing music was played, several videos
were filmed, more-than-several beverages were consumed, and at the end of the
night, the lead singer from the group gave me a great, big bear hug. Naturally,
I returned the favor.</p>
<p>Well, Zoot Allures wasnt the end of the night for us, as McSorelys has a
secret back room dance club, so we obviously had to make use of that. We danced
for a good while, then Chris, Cary and I decided to take off and get back to the
B&amp;B to sleep. We left a window open for Suf. Once again, to say the least,
Killarney is absolutely amazing!</p>
<h1 id="day-10-080510">Day 10: 08/05/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>The room fell silent, as the man lowered his microphone to the crowd. A single
bewildered bystander asked, "Yeah?" The man only nodded, a knowning nod. The
bystander tipped his head back, and breathed deep the pub air, and finally, as
the tension grew to an unberable level, cried out: "THUNDERSTRUCK!!!"
</code></pre></div></div>
<p>I thought the first night was amazing. Holy crap this town just keeps getting
better and better!</p>
<p>So, day 2. After some great, great sleep (which, of the 4 of us, Im the only
one to wake up in time for breakfast), I clean myself up and head to town.
Yesterday I had seen an “internet cafe,” and figured it would be similar to what
we call internet cafes in America (I was wrong), so I made my way there to get
my KoL fix, and check up on the tubes. Well, the internet cafe was a
pay-per-use computer room, so I threw my cash at the front desk and got a couple
hours of hardcore internet access. KoL Update: beat the boss bat, the Goblin
King, and the first part of my Nemesis quest. Not bad, I guess, but I think its
safe to say that juggling an acension with travelling abroad is a bit difficult,
unless you know what youre doing. I dont, for the most part.</p>
<p>After lunch at a (surprise!) Chinese food place, we decided to take the
afternoon off and head back to the B&amp;B to play some more Scion, before
McSorleys opened up again. We did some great stuff, saved the freckled Scion,
then I made the decision to let her die (which ended up coinciding with some
major character development, so thats nice), and then Carys character died
defending her. So, all in all, we failed our mission, but succeeded at Scion.
Huh.</p>
<p>Anyways, McSorleys opened up shortly after the game, so we hit up dinner (more
Chinese), and I spent some time wandering around getting pictures of the pubs we
had visited. Its funny: my dad complimented me on all the pictures of the
beautiful scenary and what not, but he asked a very important questions: where
are all the pubs?? So I tried to rectify that our last night in Killarney,
snapping a picture of a few placed before winding my way back to McSorleys for
the evening. Round 2… FIGHT!</p>
<p>The cover band at McSorleys tonight was not as good as the other band, which is
the equivalent as saying that the 200000 Candle-Power flashlight isnt as bright
as the 300000 Candle-power one: theyre both way brighter (or, awesomer in this
case) than the required flashlight (or, typical American cover band, in this
case). Tonights show was by Revenge, who paid tribute to some of the older
songs, including quite a bit of ACDC. We rocked out hard core, really supporting
the band out front by dancing and singing along. Then the moment happened, the
moment that Chris has claimed is the most epic moment of the trip. The quote
says it all, but in short: the band was playing Thunderstruck by ACDC, and the
lead singer lowered the mic to me to scream “THUNDERSTRUCK!!” into, and it was
amazing timing. I do have to say, sometimes my timing is spectacular. Anyways,
that memory will stick with me forever, and I think with Chris, Suf and Cary as
well, so I consider this night an unbelievable success.</p>
<p>Once more, we invaded the back room, only this time we stayed until close. We
danced our way into another dance party, because evidently were all Lords of
the Dance, and met some new friends: May, a French girl there with friends. We
danced with them, we danced with total strangers, and we danced until we
couldnt dance any more! I literally understood what it meant to be out of mana
that night. I had barely the energy to return home, before I just passed out on
my bed.</p>
<p>Killarney is the city I would most enjoy in Ireland. Of all the places weve
gone, its the city which feels the most alive. It has the loudest pulse, the
brightest flash, the sweetest music; its the type of environment I want to live
in. While I dont think Ireland is quite the island for me, if I did decide to
live here, Killarney would be my final destination.</p>
<h1 id="day-11-080610">Day 11: 08/06/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Wow, this place is nice. I don't think we belong here.
</code></pre></div></div>
<p>Today we all are taking a bit of a down day. After the past 2 nights, Im
exhausted, and ready to just sit around a do nothing for a bit. Well,
conveniently Cary is getting his tattoo today, so I got my wish. We check out of
our B&amp;B, pack up the car, park in town and go exploring a bit more. After I
stop at the Tourist Information, I learn of a free Wi-Fi pub nearby, and relax
there for a couple of hours, enjoying some tea and playing some KoL. I dont
really achieve anything of any worth in game, and Suf, Cary and Chris show up
just in time for us to work on our Scion characters a bit and head to dinner. We
go to the Chinese food place we hit up last night for lunch, and then Cary must
depart for his tattoo. Chris, Suf and I all decide to wander back into the pub
for a bit, where I finish up my KoL for the day, enjoy some more Scion, check
the email, and generally just chillax.</p>
<p>We leave Killarney around 5:30 and arrive at our second-to-last destination,
Ballyseede Castle Hotel. Since we have nothing to do until later, we settle in,
relax for a bit and get to playing some more Scion. Thats right: WE ROLEPLAYED
IN A CASTLE.</p>
<p>After the session, we split up: Cary, Suf and Chris all head back to Killarney
(a whopping 15 minute drive) to hit up McSorleys again, and I lame out and take
the night off. Whilst waiting for sleep to drift in, I enjoy some good ol
American past-time and watch a bit o telly: Analyze That was on. I watched
Analyze That in a castle. Today is just full of achievements!</p>
<h1 id="day-12-080710">Day 12: 08/07/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Ma'am? A quick question. We named the dogs: this one is named Roger the Mighty,
and this one is named George the Stout. How close were we?"
</code></pre></div></div>
<p>After a wonderful nights rest in the castle, we pack up our things, enjoy a
delicious breakfast, explore the castle grounds a bit more, and head off to our
final B&amp;B, just outside of Shannon.</p>
<p>As we approached our destination, we decided to stop by Limerick for
lunch/dinner and just explore our initial landing grounds one last time. We
wander to The Bitter End, take some pictures, and find our way to a Chinese
food place (big surprise) and an outdoor pub. Since we couldnt decide on which
one to go to, I suggested we go to both. This decision was met with much
happiness. After we finished our Chinese food (quite delicious), we headed next
door, and was met with delicious desserts and beautiful women. Our waitress let
slip it was her birthday, so in true, boistrious American style, we sang her
Happy Birthday! (Hope it was a good one, Sam!). Apparently she got in trouble
for that… Oops…</p>
<p>Anyways, we hit up our B&amp;B to drop stuff off, and repack our bags for tomorrows
trip, and finish up our Scion campaign. We hopped out to Durty Nellys for a
quick dinner (and sadly, our waitress Una already had her birthday a month ago)
of traditional Fish and Chips, then back to the B&amp;B to finish up our night
rolling the dice. With the campaign finished, we hit the hay in preparation for
tomorrows voyage. Hopefully none of my loot gets wrecked!</p>
<h1 id="day-13-080810">Day 13: 08/08/10</h1>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>"Do I really have to be the asshole to say that we travelled back in time in
that hot tub?" - Hot Tub Time Machine
</code></pre></div></div>
<p>And just as quickly as it began, our whirlwind tour comes to an end. We left the
B&amp;B early this morning to get to the airport, returned the car without a fuss,
checked in our baggage, shuffled through customs and passport checks, and
eventually found our way to the gate. The airport in Shannon has free Wi-Fi,
which is epic, so I whiddle away at my turn-count in KoL, achieving little but
still enjoying the game. Shoot off a text to mom letting her know things are on
time, and eventually board my first of three flights for the day.</p>
<p>The flight is rather uneventful. Were seated next to a kid flying back from a
wedding, so it was fun to chat with him for a bit. Then, onto the free movies:
Iron Man 2 (pretty boss), Hot Tub Time Machine (really, quite the unknown
comedy. Hilarious!) and Repo Men (meh, not really my bowl of soup…) round out
the trip. We land soundly in JFK, disembark, and find our next flight delayed,
so Chris, Suf and I, after bidding farewell to Cary at the Terminal, head to
NYC Sports Grill, right outside our arrival gate from the beginning of the
voyage, and enjoy some good ol fashion American burgers before our flight to
Boston.</p>
<p>The flight to Boston is painless, despite the Logan Airports best attempt at
being the worst air port ever (I just really dont like it). We land safe and
sound back home, and I eagerly make my way to baggage claim to make sure
everything is safe there. I get my bags (w00t), find everything in one piece and
accounted for (w00t x2), and bid Chris and Lindsay farewell as my parents drive
up in the van.</p>
<p>Thus, our voyage ends. A successful first trip overseas, and a more-or-less
successful first attempt at travel blogging too. Methinks Ill have to try this
again sometime. Farewell, and as they say on the Emerald Isle: CHEERS!</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-01-01
<br />
[
<a href="/topics/life">life</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,231 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Bye Bye Windows</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/04/28/Farewell-to-Windows-Tour.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Farewell to Windows Tour 2015</h1>
<p>It has come time to bid Windows farewell. Once upon a time Windows was
the only digital world I knew. It began when I was young, during the
venerable 3.1 era. I remember booting up our family computer into DOS, and
before starting Windows I could start Doom 2 or Keen's Dream, or any
number of other games. That was my first interaction with a command line.
My, my, how times have changed.</p>
<p>From Doom 2 and Keen I went on to Baldur's Gate and Battlezone. I
dabbled here and there in NES/Sega/SNES/Genesis stuff, but PC gaming
always held my attention. The only exception to this was my Gameboy with
Pokemon, because that game is literal crack to a 12 year old. Baldur's
Gate held my attention like only a classic RPG can, and I remember
pouring over the manual and this guidebook I had to learn as much as I
could about the world the game created. Around this time I was also
getting into Dungeons and Dragons (Satan's game!), so there was a
definite mixture of digital and tabletop gaming. Battlezone, on the
other hand, was introduced to me by my good friend Rob, and became a
classic among my group of friends. Then, of course, Smash Bros became
a thing and that was our game of choice. That and Soul Calibur; ah
memories.</p>
<p>It wasn't until relatively recently that I ever even tried gaming on
Linux. My senior year of high school I was introduced to Linux by my
friend Ben. That spawned the interest, but it was always secondary to
my true love of computers, gaming. Throughout college I had an Asus
netbook, which was always my Linux machine, but I still had my Windows
desktop, which was my gaming machine. Windows was essential for gaming:
Steam; Final Fantasy 11 (yes, I know.); triple-A titles. These
were "Windows Exclusives," unless I wanted to venture into console
territory. Thus it remained, throughout college and my early-mid 20's.
Then something magical happened: Steam came to Linux. That was the
deathblow to Windows in my book, at least for my needs. I had long ago
dropped my interest in many games, leaving a small but well-loved list of
games that I do still care about. The majority of these are now supported
on Linux, but there are a few which remain Windows only. That is what this
"tour" is for; the last few games I want to play on Windows, before I go
Linux only.</p>
<h3>Featuring</h3>
<p>The list isn't huge, but there are some definite strong players:</p>
<ul>
<li>Dark Souls and Dark Souls 2</li>
<li>Dishonored</li>
<li>Duke Nuken Forever</li>
<li>Far Cry 3: Blood Dragon</li>
<li>Spec Ops: The Line</li>
</ul>
<p>Mostly "newer" games, mostly graphics-intensive games. I know these
run fine on Windows, and they may work in Wine but I don't feel like
either figuring out if they do, or trying to make them play nice.</p>
<h3>Special Guest Appearances By</h3>
<p>There are a few games that I will fiddle with to get working in Wine
though, and these are games I don't quite want to let go, but still are
Windows only: Skyrim and Guild Wars 2. I love Guild Wars 2, I think it's
the best MMO on the market, with the most supportive and friendly
community and one of the best developers. Skyrim is, well, Skyrim; I like
hitting things. Chivalry would be a close third on this list, but Chivalry
is on Linux now, so I can scream my lungs out and stab people whenever I
want. Regardless, I imagine I'll be playing plenty of each of these while
finishing up the main list.</p>
<h3>Tickets on Sale Now!</h3>
<p>Well, not exactly. But this would be a fantastic way to get into
streaming, and maybe I'll transition from Windows to Linux with that as
well. Streaming has always been something I've wanted to do, but never had
the time nor effort to pursue. So, either tradition will hold strong, or a
new challenger will appear. Until then.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-04-28
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,256 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Philosophy of Bill</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/05/04/Philosophy-of-Bill-1.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="perception-and-thought">Perception And Thought</h1>
<p>I consider myself a very philosophical person. That doesnt mean Im any
good at philosophy, I just tend to think a lot about ethics, morality, and
happiness. Recently Ive been thinking more about my worldview, what I
value as important, and how I achieve happiness in my daily life. I wanted
to jot down what I feel is a brief examination of my basic tenants; the
basic Philosophy of Bill.</p>
<p>I derive a lot of my philosophy from my Christian up-bringing and
Stoicism. Im not a very religious person, though. I never really was. My
belief of what God is falls strongly under the agnostic category: Im not
sure what God is, or if I believe in a God, but I do believe in a higher
power of some sort. I feel its logical to always assume there is something
more powerful than yourself, but I also feel its impossible to prove this.
I like to define faith as simply irrational belief. I have faith in many
things, both permanent and temporary. I like faith, actually, quite a bit.
I admire those who have strong faith, so long as they maintain reason and
are not fanatical. I also try to maintain a very open approach to religion.
I believe everyone has the right to worship however they choose, so long as
it does not involve anything overly immoral, such as killing. I have a hard
time tolerating people who are overly zealous about their faith, or about
denouncing someone elses faith. Nothing is more disgusting than attacking
someone for their beliefs. They are called beliefs for a reason; they are
not fact, they are opinion. Its ineffective to attack opinions, because
they are ephemeral to begin with. Like trying to hit a ghost with a
lamp-post: it just wont do what you think it will.</p>
<p>I love debate and discussion, but there is a clear difference between
debate for truth and argument for winning. I try to keep in the first camp,
but Im not super-human and I have an ego so I often visit the later.
However, I always learn when I make mistakes, and I cherish when I fail,
because it only serves to better myself. I think thats the most
fundamental under-lying theme of my philosophy: always better myself;
always learn something. That ego thing, though, thats a tough monster to
handle. Ive found myself adopting views similar to Zen Buddism (I think)
often when trying to quell my ego:</p>
<ul>
<li>All will return to nothingness.</li>
<li>Ergo, what I do will be inconsequential.</li>
<li>Ergo, I am inconsequential.</li>
</ul>
<p>I think most people hear this and grow disheartened or depressed, but I
view it as very uplifting. Theres a certain freedom in knowning that, no
matter how much I fail, in the end it wont matter much. Its sobering to
remember that no matter how much Ive achieved or won, in the end it wont
matter much. Its important to remember that I am nothing but an improbable
spec of matter floating on a rock in an unimaginably vast and empty space.
Too many people get caught up on that “in the end” part, though, and they
begin to question why they should act at all. Well, theres a bit of time
between now and “the end” and you need to fill the void with something. For
me, thats learning, and understanding, and appreciating.</p>
<p>In my studies, Ive discovered and adopted Stoicism as a philosophy. I
wont explain too much what Stoicism is about, since there are many sources
online which do that. I apply Stoicism mostly in the mental aspects of the
philosophy, and less in the faith/religious aspects. From Stoicism, I have
reinforced my beliefs in the importance of understanding our environment. I
remind myself every day of things I cannot control, and that I can only
control my perception of things. I try to act according to logic and
wisdom, and not according to feelings, which can hamper reason. For
example, I try not to let anger control my actions if I get trolled by my
friend Nick. I understand that anger, love, stress, and all other feelings
are very much out of my control, but allowing them to control me is well
within my control. In other words, I very much get angry, or grow lustful,
or prideful, but I try not to let those feelings dictate my actions. I
believe it was Seneca the Younger who said, “Men are not angered by things,
but by their perceptions of them.” One of many mantra I keep in
reserve.</p>
<p>The most important thing in my life, though, is not control but
happiness. I can seek to control my perceptions and emotions all I want,
but if it does not lead to happiness, it is a fruitless endeavor. I find
happiness most when I learn; when I understand a system. Im an engineer at
heart, so I view the world as a system of systems (of systems, of
systems…) each of which is bare to understanding. I free myself from ego
and oppression so that I can learn without fear of failure or the
disapproval of my peers. I like to always remind myself that the only
person who truly cares about me, is me. Thats not to say others dont care
about me, but they care about themselves first, and me afterwards. Thats
how things are; its not wrong or depressing or hurtful its just the way
the system works. I care for many people, but Im always number one on the
list.</p>
<p>While all this is well and good, philosophy is an ever changing system;
a CICD environment. I am constantly integrating new ideas and concepts into
my understanding of the world, and sometimes purging old or unnecessary
ones. I have my fair-share of quandries, perhaps more so than others;
perhaps its an unfair-share. Thats what makes it worth it, though, to me.
I seek to learn, and in doing so, find happiness and confusion. Its a
recursive system: the confusion leads to learning, which leads to happiness
and confusion. And I love recursion.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-05-04
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

302
2015/05/06/TLS-Part-1.html Normal file
View file

@ -0,0 +1,302 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: An Examination of TLS, Part 1</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/05/06/TLS-Part-1.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>TLS: An Examination Into the Security of the Internet, Part 1</h1>
<p>TLS, more often referred to as SSL, is the means by which a secure
connection is established over a computer network. Most often these
connections are established over the Internet, between a client (ex., web
browser) and a server (ex., a web site). In the specific case of web sites,
HTTP is layered on TLS/SSL to ensure a secure and private connection; HTTPS
is not a separate protocol, rather a combination or protocols. Establishing
a secure connection thus requires a few steps:</p>
<h2>Step 1: Establish an TCP connection</h2>
<p>TCP is a transport-layer protocol that establishes a connection which is
reliable and fault-tolerant. As opposed to UDP, TCP will seek to verify
that information is transferred successfully and as intended. This is
important for the next step. The connection is established as follows:</p>
<ol>
<li>A client will contact a server and announce it wishes to
establish a connection. (Called a SYN, short for synchronize). This
SYN is a number, stored as part of the TCP header; we'll call it
A.</li>
<li>The server will respond to the client announcing it has
received the client's wish, and also state that it wishes to establish
a connection. (Called a SYN-ACK, short for synchronize-acknowledge).
Ths SYN-ACK is actually two values: One is the ACK value, A+1. The
second is the server's SYN value, which we'll call B.</li>
<li>The client then acknowledged the server's wish, thus
establishing a connection (Called simply an ACK). Because it was
expecting an ACK value in step 2, and expecting that value to be A+1,
it can verify that this connection is the same as the one it started.
Additionally and similarly, the ACK which gets returned to the server
as B+1.</li>
<li>At this point, the connection is established. Both client and
server have assured themselves of a proper connection thanks to the
three-way handshake described above. From this point forward, the
server has bound a specific port to listen for any further
communications with the client. </li>
</ol>
<h2>Step 2: Establish an SSL/TLS Connection</h2>
<p>TLS, Transport Layer Security, is appropriately on the same layer as
TCP, the transport layer. TLS relies on public key authentication to
establish a secure connection between the aforementioned client and server.
The connection is established as follows:</p>
<ol>
<li>A client will announce to the server it wishes to establish a
TLS/SSL connection. It will include information such as it's TLS/SSL
version, the ciphersuites it wishes to use, and which compression
methods it wishes to use.</li>
<li>The server then uses the highest possible TLS/SSL version, chooses
one of the ciphersuites available to the client, chooses one of the
compression methods available to the client, and sends it's
certificate. A certificate is basically a container for a server's
public key, but with many additional details, and often signed by a
certificate authority, to further verify the certificate contains the
proper key. More on certificates in part 2.</li>
<li>The client then uses the server's public key to encrypt a secret.
This secret is then sent back to the server.</li>
<li>The server decrypts the secret with it's private key. This secret
is now shared by only the client and the server, and from this point
on is used for symmetric encryption.</li>
</ol>
<p>From this point forward, the connection is encrypted and secure from
external threats. Of course, this all depends on a trusted certificate and
proper encryption algorithms.</p>
<h2>Step 3: Establish an HTTP connection</h2>
<p>HTTP is an application-layer protocol, and is responsible for translating
the information from the transport layer into information used by an
application. Your web browser, for example, will utilize HTTP to translate
a bunch of hexidecimal information into alpha-numeric information, which is
then formatted and presented to you as a web page. Security is previously
established thanks to TLS/SSL, and reliability is previously established
thanks to TCP.</p>
<p>Part 2 focuses more on the specifics of TLS: certificates, cipher
suites, and public key authentication.</p>
<h1>Sources</h1>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Public-key_cryptography">
Wikipedia: Public-key Cryptography</a></li>
<li><a
href="https://security.stackexchange.com/questions/6290/how-is-it-possible-that-people-observing-an-https-connection-being-established-w">Stack
Exchange: How is it possible that people observing an HTTPS
connection being established wouldn't know how to decrypt
it?</a></li>
<li><a
href="https://security.stackexchange.com/questions/20803/how-does-ssl-tls-work">
Stack Exchange: How Does SSL/TLS work?</a></li>
</ul>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes (because why remove them?)
Asymmetric Key Authentication:
- Relies on two keys: Public key, Private key
- Both keys are related, but impossible (computationally infeasable) to
identify the private key based on the public key [1][2]
- The public key can be distributed publicly
- Used to encrypt message to the owner of the private paired key
- Used to verify signatures from the private key
- The private key is kept secret
- Used to decrypt message from the public paired key
- Used to as a digital signature
Basics of an Asymmetric Key handshake:
1. Client reaches out to server, requesting a secure connection
2. Server acknowledges request, sends back it's public key
- This is commonly known as a certificate. Often signed by a
third-party to ensure it is what it's supposed to be.
3. Client uses this public key to encrypt a secret, and sends the package
back to the server.
4. The server then uses it's private key to decrypt the public-key
encrypted secret, and uses that secret hence forth to encrypt all traffic.
5. A private connection is now established.
Basics of Certificates
1. A certificate is a vessel for a server to provide authentication
information.
2. Typically a certificate will contain the following information:
- A UUID of the certificate itself
- The subject of the certificate
- The signature, and signature algorithm used
- The issuer of the certificate, as well as dates when it is valid
- The purpose of the key
- The thumbprint, and algorithm, used to hash the key
- The public key itself
3. Certificate Authorities act as a third part to verify the integrity of
public keys.
-->
<!-- ================================= -->
<!-- ================================= -->
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-05-06
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,217 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: A Good Friend's Father</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/07/09/A-Friends-Father.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>A Good Friend's Father</h1>
<p> A good friend's father died. He was quite a strong figure in my
childhood. He was compassionate, endearing, strong, and happy. He is
succeeded by two of my best childhood friends, and his second wife. I will
always remember him as smiling, or laughing, or even sometimes frustrated
with his children.</p>
<p> When I learned of his passing, I immediately thought of my position in
life. My father is roughly the same age, and my mother slightly younger.
Was this death too early? Is there such a thing? If I stick to my
philosophical beliefs, then death is fated, regardless of where or when;
never early, never late. When I told a friend of the passing, his remarks
were expectedly typical: "That's fucked up. He died so early. He died so
young." The trick with beliefs is they are always tested. I found myself
caught up in grief and worry. Surprised at the passing, worried with the
thought of my parents dying. I even grew anxious of the funeral and calling
hours. Suddenly this anxiety was like a weed, finding it's way into the
cracks in my beliefs and understanding, unsettling and disrupting my peace
of mind. Instead of mourning the loss, I tangled myself into an emotional
knot, and selfishly so.</p>
<p> I sat, a few days after the news, watching the rain. I considered how
the rain falls where it is due, regardless of what it falls on. The
rain cares not, it simply is. I considered the millions of drops falling on
the millions of people all around the globe. Their situations in life as
unique as each drop; in structure similar, yet in action ever slightly
divergent. In life, I cannot decide where or when I exist, I can only
decide how to perceive my existance. Epictetus wrote, "man is disturbed not
by things, but by the views he takes of them." My perceptions were skewed,
my understanding flawed, and thus I was disturbed.</p>
<p> One of my favorite analogies is Bruce Lee's metaphor about water. It is
a reminder to be fluid and formless, adaptable and potent; "If nothing
within you stays rigid, outward things will disclose themselves." There's
no way for me to know what will be asked of me, as my life moves forward.
I must be shapeless, so when obstacles appear I flow around or through
them, without hesitation. I cannot affect when or how these obstacles
appear, only how I perceive them. I had forgotten this. </p>
<p> A good friend's father died, and he reminded me how to live.</p>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes
Rest in peace, Chaz. You were a good man, a good father, and a friend.
-->
<!-- ================================= -->
<!-- ================================= -->
<!-- cursor: 11 -->
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-07-09
<br />
[
<a href="/topics/philosophy">philosophy</a>
<a href="/topics/life">life</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

285
2015/11/10/TLS-Part-2.html Normal file
View file

@ -0,0 +1,285 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: An Examination of TLS, Part 2</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2015/11/10/TLS-Part-2.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>TLS: An examination into the Security of the Internet, Part 2</h1>
<p>TLS, more often referred to as SSL, is the means by which a secure
connection is established over a computer network. Part 1 examines how to
establish a secure connection using TLS. This article examines further the
techniques and technology that makes TLS secure. Specifically, a brief
examination of certificates, cipher suites, and public-key
authentication.</p>
<h2>Certificates</h2>
<p>A certificate is a vessel for a domain to provide authentication
information. More specifically, and perhaps most importantly, a certificate
is the package which transfers a key. TLS relies entirely upon Public-Key
Authentication to setup a secure connection. The challenge with Public-Key
Authentication is often sharing keys in a verifiable and secure manner.
This is to say that, despite public keys being public, you still need to
verify the owner of the key. This is where certificates, and Certificate
Authorities come in. Each certificate is tailored to a specific domain. It
includes not only the public key for a user to connect to the server with,
but also meta-data about the certificate: a UUID, and information about the
Certificate Authority; a signature authorizing the certificate, as well as
the encryption used for the signature; a thumbprint of the key, and details
of the algorithm used to hash the key; and a purpose for the certificate.
Certificates may contain additional details, but the aforementioned list is
required.</p>
<p>A Certificate Authority (CA) is a trusted third-party repository of
signed keys. The purpose of a CA is very specific: verification. A CA will
generate and issue a key-pair to a domain. The domain can then share the
public key using a certificate. How specifically a CA verifies the domains
and keys is out of scope of this discussion, but Wikipedia provides many
details on the techniques used.</p>
<h2>Cipher Suites</h2>
<p>A cipher is the algorithm used to encrypt information. Ciphers are
incredibly complex mathematical formulae, and are well beyond my
understanding. However, it is important to note that the strength of a key
is only as strong as the cipher suite used to generate it. Likewise, the
strength of a certificate is only as strong as the cipher used to sign
it. Keep this in mind when you generate and work with keys.</p>
<h2>Public-Key Authentication</h2>
<p>The most important part of TLS is public-key authentication. I would
argue that public-key authentication is one of the most important facets of
the technical world. Because of this, I want to recap in more general terms
how public-key authentication works:</p>
<ol>
<li>Two parties want to establish a secure connection.</li>
<li>Each party generates two keys: one to share publicly, one to keep
secret.</li>
<li>Each party then shares their public keys.</li>
</ol>
<p>Now, whenever one of the two parties wants to securely communicate with
the other, they "sign" (encrypt) the communication with their private key.
The second party can then use the public key of the first party to verify
the identify of the sender, and decrypt the message.
<h2>Conclusion</h2>
<p>Security is a very deep and involved topic, but one I feel every
Sys-Admin should know a bit about. While these posts are only meant to serve
as a high-level overview of TLS, there are many more-detailed sources
available. I would suggest a visit to your local Wikipedia as a good first
step. Thanks for reading.</p>
<h1>Sources</h1>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Public-key_cryptography">
Wikipedia: Public-key Cryptography</a></li>
<li><a
href="https://security.stackexchange.com/questions/6290/how-is-it-possible-that-people-observing-an-https-connection-being-established-w">Stack
Exchange: How is it possible that people observing an HTTPS
connection being established wouldn't know how to decrypt
it?</a></li>
<li><a
href="https://security.stackexchange.com/questions/20803/how-does-ssl-tls-work">
Stack Exchange: How Does SSL/TLS work?</a></li>
</ul>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes (because why remove them?)
Asymmetric Key Authentication:
- Relies on two keys: Public key, Private key
- Both keys are related, but impossible (computationally infeasible) to
identify the private key based on the public key [1][2]
- The public key can be distributed publicly
- Used to encrypt message to the owner of the private paired key
- Used to verify signatures from the private key
- The private key is kept secret
- Used to decrypt message from the public paired key
- Used to as a digital signature
Basics of an Asymmetric Key handshake:
1. Client reaches out to server, requesting a secure connection
2. Server acknowledges request, sends back it's public key
- This is commonly known as a certificate. Often signed by a
third-party to ensure it is what it's supposed to be.
3. Client uses this public key to encrypt a secret, and sends the package
back to the server.
4. The server then uses it's private key to decrypt the public-key
encrypted secret, and uses that secret hence forth to encrypt all traffic.
5. A private connection is now established.
Basics of Certificates
1. A certificate is a vessel for a server to provide authentication
information.
2. Typically a certificate will contain the following information:
- A UUID of the certificate itself
- The subject of the certificate
- The signature, and signature algorithm used
- The issuer of the certificate, as well as dates when it is valid
- The purpose of the key
- The thumbprint, and algorithm, used to hash the key
- The public key itself
3. Certificate Authorities act as a third part to verify the integrity of
public keys.
-->
<!-- ================================= -->
<!-- ================================= -->
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2015-11-10
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -1,15 +1,40 @@
---
tabtitle: Developing Stoic Understanding
title: Developing Stoic Understanding
topics: philosophy
pub: "2016-01-30"
short_desc: "Sherman J. Clark wrote a fantastic article on the Stoicism Today blog in
December which really spoke to me. It approached some of the questions and
problems I've had with Stoicism in an elegant and enlightening way, which
has led to my significantly greater understanding of Stoicism."
---
<h1>Revelations: Developing Stoic Understanding</h1>
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Developing Stoic Understanding</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2016/01/30/Revelations-Stoic-Understanding.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Revelations: Developing Stoic Understanding</h1>
<p>Sherman J. Clark wrote a fantastic article on the Stoicism Today blog in
December which really spoke to me. It approached some of the questions and
problems I've had with Stoicism in an elegant and enlightening way, which
@ -187,3 +212,129 @@ philosophy that works only if you do not think about it too carefully"
<!-- ================================= -->
<!-- ================================= -->
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2016-01-30
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -1,15 +1,40 @@
---
tabtitle: "Random Thoughts"
title: "Random Thoughts 1"
topics: [technology, gaming]
pub: "2016-03-11"
short_desc: "I'm on vacation this week, which is pretty grand. Thus far
I've accomplished one of the 4 rather meager goals I set for myself, played
plenty of games, caught up on some reading and videos and feeds, and slept
in far later than I should have."
---
<h1>Disjointed Thoughts</h1>
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Random Thoughts</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2016/03/11/Random-Thoughts-1.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Disjointed Thoughts</h1>
<p>I'm on vacation this week, which is pretty grand. Thus far I've
accomplished one of the 4 rather meager goals I set for myself, played
@ -186,3 +211,131 @@ Sources:
<!-- ================================= -->
<!-- ================================= -->
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2016-03-11
<br />
[
<a href="/topics/technology">technology</a>
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,281 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Azulien Blackblade</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/11/Character-Azulien.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>Heres the character backstory for one of my older characters from a game long
since forgotten: Azulien Blackblade. This character was a fighter-sorcerer,
built for a custom 3.5 game run by my friend Bill. He was loads of fun to play,
though I may have spoken up when I should have stayed silent. He died as a pile
of pieces, after taunting a demi-god and, expectedly, being eviserated. Enjoy!</p>
<h2 id="character-backstory-azulien-blackblade">Character Backstory: Azulien Blackblade</h2>
<p>I was a prestigious man. Once I wore the robes of a wizard. I studied at the
greatest libraries, spoke with the most intelligent scholars, and kept company
with the Archmages. But one day that all changed. The day I will never forget in
all my life: the day the Urdeshi attacked.</p>
<p>We were travelling through the northern regions of the desert, making our way to
ruins located among the dunes. As we stopped to drink and rest, our party was
beset upon by raiders, shielding their faces with wrapped fabrics, and attacking
us relentlessly with blades and spears. Of the 15 in our band, only 3 lived
through the attack. We were the unlucky ones. My robes were bloodied and torn,
my spellbook was burned before my eyes, my components along with it, and my
knowledge of the arcane became a secret lest I beg for death. Many times I had
considered revealing my talents, and welcoming the purge that would follow. The
particular group of Urdesh we found were skeptical of magic: they broke all our
potions, our wands, anything that didnt smell normal. My familiar, my dear
raven, was roasted and force fed to me. I didnt eat for days afterwards.</p>
<p>They tought me how to fight. How to use the weapons they used. They tought me
how to skirmish with only a scimitar to defend myself with. How to cast aside
blows, how to use a handful of sand to distract my opponent from my incoming
blow. They taught me pain. They taught me to not fear an incoming attack. Not to
fear death. From that, only rage grew. My hatred for the Urdesh slowly filled my
now-empty mind. Where once was scholarly knowledge and magical aptitude there
stood only revenge. A lust that was never fulfilled. A hunger that was never
sated.</p>
<p>For 5 years of my life I was haunted and tormented by the Urdesh. I was made a
puppet in their games; a gladiator in their arenas. My skills with the scimitar
and spear grew to legend. Armed with my rage and my revenge, I would let no
other gladiator steal from me the potential to see my captors destroyed. I would
never bow, never break, never surrender. My blade grew black from all the blood
and sand and grime. With each fight, I became more. I was no longer a slave, now
I was a name: Blackblade; the Raven Swordsman; Death. Names appropriate to my
appearance and my promise. The old me was dead, and the new me was never alive.</p>
<p>My insatiable revenge crept into the corners of my mind, revealing the
locked-away arcane knowledge. The fury of hundreds of gladitorial battles,
thousands of cracks of the whips, and millions of possibilities of better lives
all converged on the power I had stored away. No longer was I afraid of them. No
longer did their skepticism seem like a threat. Now it was their weakness. Now,
vengeance was mine.</p>
<p>With the cover of darkness, I scoured my memories for every shred of arcane
knowledge I could muster. I found my cantrips, my little tricks I had used to
harass the pretty girls at the college. Flares and dancing lights wouldnt do
what I needed, but they could help. I needed more power. I crept deeper. There I
felt it. The coldness of death, but the screaming of life, entwined. I could
feel the grasp of skeletons and ghasts, but they did not scare me; it was almost
like familiy. I could see the faces of people I had never known. They seemed
familiar, almost connected to me. I could feel their anger, their undying need
for vengeance. Like me, they were captives of fear and torment. Their rage was
almost unbearable, but I would not turn away. I would not submit to an illogical
existance as a mindless machine of death. I would overcome the rage, channel the
rage, harness the anger, focus the vengeance. I would take their blessings of
undeath and turn them upon my enemies as a curse. I knew now that the power I
had was not from study. It was always within me, welled up like a great lake,
full of untapped resources. I felt the presence of their blood grow, their power
now released. They were now me. I was their vessel. The scimitar I used, Raven I
called it, was now a weapon of death.</p>
<p>Their time had come. They had no reason to fear the unknown, until now.</p>
<p>The first to go was the guard. As he came, right on schedule, to deliver my
food, I offered him a choice. I had grown to like Mukeesh. He was stupid, and
because of that he was compasionate. He was too afraid. He was too loyal. He
died. From him, I lifted the keys with magic, commanding them into the lock,
releasing me. As I left, I could feel his blood calling to me. With his
head-wrap and Raven I made my way to the barracks. It was night time. There were
little defenses around those who defend. They died one by one. I would cup their
mouth, and slit their throat just enough for them to wake before they bled out.
Their last moments were all the same: horror, struggling, moaning, pleading,
acceptance, sorrow. They wept occassionally. There were a few who were
unsurprised, and stared into my eyes until theirs went dark. They were the
brave. They had faced death. But none can win against death. The blood running
from my captors veins was unbearable. I tasted it, the nector of life. It was
ambrosia, life itself, sustaining me. Their lives were my feast.</p>
<p>I made my way through the camp, finally settling on the gladiator pits. Some of
my bretheren ran, some clung to some twisted form of loyaly and fought. The all
died. I drank in their life, their essence, and their sacrifice healed me.
Through the death of my enemies I grew strong, through the blood of the fallen
did I reclaim my dominance. Not only were the powers of death mine to harness,
but the fruits of its labor were sweet and nourishing.</p>
<p>The last to fall was my teacher. He was the only one I awoke before I killed
him. I waited for him to pray, to be ready for his gods. He tried to fight me,
but the master had become weak. His attacks were predictable. His tactics were
rotten. His flesh was soft, and my blade was sharp. He died a warrior, as he had
lived. His blood was the most satisfying of them all. I have no remorse for him.
It is pathetic to pity anyone; death comes for all.</p>
<p>I gathered up all the resources I needed, took all the coin I could find, and
left. To this day I still hear tales of the Swordsman of Death who slaughtered
an entire Urdesh gladiator camp. “They are right to fear him.” I always reply.
“Death is patient but swift. It may come on the wings of an angel or the sword
of a stranger. But death always comes.” I escaped that night and found a human
settlement. My scars and tattoos I covered as best I could, but they always
found me out. A run-away slave, an escaped prisoner; a fugitive. The humans
would at least treat my as their own. I found temporary refuge, but left
quickly. In the following days there were many hunters that I encountered. One
of them gave me the scar that marks me today. His name was Al-Kadaf, and his
blade was called Plight. It cut me from above my left eye to my right cheek. He
told me that wound would stay forever. My blade ending his life was my only
response.</p>
<p>Still I am hunted. Still the Urdesh search for the Raven Swordsman. But I go by
a different name now. I am Azulien Blackblade, Scourge of the Urdesh. Send your
hunters. Send your armies. I walk with death. I hunger for your life. And
tonight, I will feast.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-12
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,196 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Moral Letters :: Index</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/15/Letters-To-Lucilius.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>My friend Rob and I have recently been disucssing Seneca's
Moral Letters to Lucilius. As a companion to those discussions, I'm
documenting my responses to each letter. This page will serve as an index for
all of my responses.</p>
<h2>Seneca's Moral Letters to Lucilius</h2>
<ul>
<li><a href="
/2018/01/15/letter-to-lucilius-1.html">
Letter 1: On Time</a></li>
<li><a href="
/2018/01/15/letter-to-lucilius-2.html">
Letter 2: On discursiveness in reading</a></li>
<li><a href="
/2018/01/28/letter-to-lucilius-3.html">
Letter 3: On True and False Friendship</a></li>
<li><a href="
/2018/01/28/letter-to-lucilius-4.html">
Letter 4: On the Terrors of Death</a></li>
<li><a href="
/2018/02/11/letter-to-lucilius-5.html">
Letter 5: On the Philosopher's Mean</a></li>
<li><a href="
/2018/02/11/letter-to-lucilius-6.html">
Letter 6: On Sharing Knowledge</a></li>
<li><a href="
/2018/01/28/letter-to-lucilius-11.html">
Letter 11: On the Blush of Modesty</a></li>
</ul>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius">
Collection of Seneca's Moral Letters to Lucilius on Wikisource
</a></p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-15
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,255 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 1</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/15/letter-to-lucilius-1.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Letter 1: On Time</h1>
<h2>Original Text</h2>
<p> Greetings from Seneca to his friend Lucilius.</p>
<p>1. Continue to act thus, my dear Lucilius set yourself free for your own
sake; gather and save your time, which till lately has been forced from you,
or filched away, or has merely slipped from your hands. Make yourself
believe the truth of my words, that certain moments are torn from us, that
some are gently removed, and that others glide beyond our reach. The most
disgraceful kind of loss, however, is that due to carelessness. Furthermore,
if you will pay close heed to the problem, you will find that the largest
portion of our life passes while we are doing ill, a goodly share while we
are doing nothing, and the whole while we are doing that which is not to the
purpose. 2. What man can you show me who places any value on his time, who
reckons the worth of each day, who understands that he is dying daily? For
we are mistaken when we look forward to death; the major portion of death
has already passed. Whatever years be behind us are in death's hands.</p>
<p>Therefore, Lucilius, do as you write me that you are doing: hold every hour
in your grasp. Lay hold of to-day's task, and you will not need to depend so
much upon to-morrow's. While we are postponing, life speeds by. 3. Nothing,
Lucilius, is ours, except time. We were entrusted by nature with the
ownership of this single thing, so fleeting and slippery that anyone who
will can oust us from possession. What fools these mortals be! They allow
the cheapest and most useless things, which can easily be replaced, to be
charged in the reckoning, after they have acquired them; but they never
regard themselves as in debt when they have received some of that precious
commodity, time! And yet time is the one loan which even a grateful
recipient cannot repay.</p>
<p>4. You may desire to know how I, who preach to you so freely, am practising.
I confess frankly: my expense account balances, as you would expect from one
who is free-handed but careful. I cannot boast that I waste nothing, but I
can at least tell you what I am wasting, and the cause and manner of the
loss; I can give you the reasons why I am a poor man. My situation, however,
is the same as that of many who are reduced to slender means through no
fault of their own: every one forgives them, but no one comes to their
rescue.</p>
<p>5. What is the state of things, then? It is this: I do not regard a man as
poor, if the little which remains is enough for him. I advise you, however,
to keep what is really yours; and you cannot begin too early. For, as our
ancestors believed, it is too late to spare when you reach the dregs of the
cask. Of that which remains at the bottom, the amount is slight, and the
quality is vile. Farewell.</p>
<h2>Response</h2>
<p>Time management. I'm pretty bad at time management. It's interesting
re-reading this letter after having read ahead a few. This one reads much
less personal than his later letters. Perhaps an indication of a developing
relationship.</p>
<p>Much of the letter emphasizes the importance of being present, and aware. One
of the most impactful parts of this letter epitomizes this: "Whatever years
be behind us are in death's hands." The acceptance of death as a necessary
and constant part of life is a Stoic theme, but this sentence reminds us of
this reality without remorse. Replace 'years' with 'time', and the letter's
theme is laid bare: time is an expense account you can only hope to balance,
and never credit. Seneca himself makes this comparison, noting that he only
balances his by being aware of his expenditures. To him, it seems being
aware of the waste is enough to balance the waste itself, which I find
interesting.</p>
<p>Seneca's account of how we spend our time strikes me as a tad cynical:
"...the largest portion of our life passes while we are doing ill, a goodly
share while we are doing nothing, and the whole while we are doing that
which is not to the purpose." Essentially, we spend most of our life not
doing what we intend to do, either because we fail to act, or we "[do] ill".
If I interpret "doing ill" to mean not pursuing Stoic virtue, I can
extrapolate "the purpose" to mean living a virtuous life. I think the
statement seeks more specific examples than the entirety of life's pursuit,
though, and in those cases "doing ill" could mean doing that which does not
benefit the specific pursuit. This could be playing video games instead of
cleaning my house, for example. In this case, it seems apt to define "doing
ill" as procrastination, and "the purpose" being whatever our goal is at
that particular moment. Though an interesting third option is more of a
relativity approach: we feel that life passes us by fastest while "doing
ill" or doing nothing, and in general life seems to pass by faster when we
are not focusing on our task than when we are. The ol' "Time flies while
you're having fun" chestnut. Not to say "doing ill" is having fun, though.
Rather, "doing ill" is like partying until 4am, and wondering how it got so
late.</p>
<p> Live in the moment, be aware of how you spend your time, and always act to
spend it wisely. Just be aware: no matter how carefully you budget, your
account will always be indebted to death.</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_1">
Moral Letters to Lucilius, Letter 1 on Wikisource
</a></p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-15
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,234 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 2</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/15/letter-to-lucilius-2.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Letter 2: On Discursiveness in Reading</h1>
<h2>Original Text</h2>
<p>1. Judging by what you write me, and by what I hear, I am forming a good
opinion regarding your future. You do not run hither and thither and distract
yourself by changing your abode; for such restlessness is the sign of a
disordered spirit. The primary indication, to my thinking, of a well-ordered
mind is a man's ability to remain in one place and linger in his own company.
2. Be careful, however, lest this reading of many authors and books of every
sort may tend to make you discursive and unsteady. You must linger among a
limited number of master thinkers, and digest their works, if you would derive
ideas which shall win firm hold in your mind. Everywhere means nowhere. When a
person spends all his time in foreign travel, he ends by having many
acquaintances, but no friends. And the same thing must hold true of men who
seek intimate acquaintance with no single author, but visit them all in a hasty
and hurried manner. 3. Food does no good and is not assimilated into the body
if it leaves the stomach as soon as it is eaten; nothing hinders a cure so much
as frequent change of medicine; no wound will heal when one salve is tried
after another; a plant which is often moved can never grow strong. There is
nothing so efficacious that it can be helpful while it is being shifted about.
And in reading of many books is distraction.</p>
<p>Accordingly, since you cannot read all the books which you may possess, it is
enough to possess only as many books as you can read. 4. "But," you reply, "I
wish to dip first into one book and then into another." I tell you that it is
the sign of an overnice appetite to toy with many dishes; for when they are
manifold and varied, they cloy but do not nourish. So you should always read
standard authors; and when you crave a change, fall back upon those whom you
read before. Each day acquire something that will fortify you against poverty,
against death, indeed against other misfortunes as well; and after you have run
over many thoughts, select one to be thoroughly digested that day. 5. This is
my own custom; from the many things which I have read, I claim some one part
for myself.</p>
<p>The thought for today is one which I discovered in Epicurus; for I am wont
to cross over even into the enemy's camp, not as a deserter, but as a scout.
6. He says: "Contented poverty is an honourable estate." Indeed, if it be
contented, it is not poverty at all. It is not the man who has too little, but
the man who craves more, that is poor. What does it matter how much a man has
laid up in his safe, or in his warehouse, how large are his flocks and how fat
his dividends, if he covets his neighbour's property, and reckons, not his past
gains, but his hopes of gains to come? Do you ask what is the proper limit to
wealth? It is, first, to have what is necessary, and, second, to have what is
enough. Farewell.</p>
<h2>Response</h2>
<p>I'm not sure who named the letters, but I think they should always read "On
Whatever I Intend to Write About, oh and this generally unrelated quote
probably from Epicurus." Which isn't to complain, I just find it amusing.
And, to be fair, this letter and quote combination do fit together.</p>
<p>The gist of this letter is the importance of focus. Seneca posits having too
broad a focus with regard to authors or topics will make Lucilius
"discursive and unsteady." A jack-of-all-trades is a master of none. His
comparisons with travel, food, medicine, and agriculture are all apt, though
a tad misleading, as each topic necessitates a differing degree of focus,
not to mention each may pursue different ends; the pursuit of reading or
travel may be ephemeral, whereas the pursuit of medicine or treatment may be
more lasting. Considering the theme of the letter, though, I don't want to
argue these particulars, since I like the metaphors.</p>
<p>The secondary theme of the letter deals with possessions. Both Seneca, and
the surprisingly on-topic quote from Epicurus encourage only owning enough
to cover what is needed, not necessarily what is desired. "It is, first, to
have what is necessary, and, second, to have what is enough." As an aspiring
minimalist, I couldn't agree more.</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_2">
Moral Letters to Lucilius, Letter 2 on Wikisource
</a></p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-15
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

382
2018/01/27/halvar.html Normal file
View file

@ -0,0 +1,382 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Character Write-up: Halvar</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/27/halvar.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="character-backstory-halvar-rune-bearer">Character Backstory: Halvar, Rune Bearer</h1>
<p>The boy stirred. A movement in his room brought his senses to him. It moved like
a shadow, hunting across his wall, and he feared he was the prey. Slipping
quietly from his blankets, he reached under his bed, and swiftly brought forth
the shield his father had given him. None too soon, as green flame erupted from
the shadow, streaking across the room. The boy raised his shield, as the flames
crashed upon him. In the same moment it was over, the boy standing among the
scorched wood, his shield glowing brightly from the runes inscribed on its face.
The shadow stepped forward, no longer a monster but a human figure, and bowed
deeply.</p>
<p>“You have within you the secret of the runes,” it said in a voice impossible to
place. Shifting in tone and pitch, the boy was uncertain if he was watching a
woman or a man. He was starting to think it was another entirely.</p>
<p>“The gods are not dead, nor is magic. Your sword, your blood, is proof enough.
Your destiny calls you, Halvar. Take forth your sword, and learn its true name.
Reveal the secret of the runes. You, Halvar, you will</p>
<p>A loud belch erupted from the man next to him.</p>
<p>“Give it up, Halvar! Weve heard your tale a thousand times. Its a good story
but a better lullaby once we get into the mead!”</p>
<p>Laughter sprung up, and Halvar leaned back into his chair. The dark bedroom
faded from his mind, replaced with the warmth of the nearby fire. The inn was
empty, save them, and it felt vast compared to his memories. After a long drink
from his cup, he spoke.</p>
<p>“Alright Baldur, I see I may talk you children to sleep with my tales of
greatness and destiny. Come then, you tell us one!”</p>
<p>As others rallied the cry, the door to the inn was thrown open, and a figure
stumbled in. Dressed in the armor of a town guard, he glanced around the room in
a panic, before focusing on the hearth and the gathering of men there.</p>
<p>“The road! Wolves! The caravan is under attack!” He shouted.</p>
<p>Halvar rose without hesitation, as those around him looked to him.</p>
<p>“Baldur, watch closely. This is how legends are made!”</p>
<p>He ran from the inn, reaching to his hip and finding his sword. He hadnt
remembered putting his belt on earlier. He must have done so without thinking.</p>
<p><em>Too eager for song and drink!</em> He mused.</p>
<p>As he neared the edge of the village, several others joined with him, and
together they began down the road. Howling could be heard on the wind, and the
woods were lit with the dancing light of torches.</p>
<p>Halvar turned to the others. “I will go first, and draw their attention. Ivar,
try to target the ones in the back with that bow. Tad, you go for the wagon. Our
goal is to draw them from the caravan. Once theyre away, get the wagon moving!”</p>
<p>He turned, then, and ran, not waiting for his companions replies. He knew time
was short, and greatness lay only around the bend.</p>
<p>Running fast, sword in hand, he came upon the caravan. The horses were frenzied,
but still harnessed. A small blessing, he thought, then regretted, seeing the
first of the dead. To his left he could see two wolves in the brush, and he
guessed three more must be near his flank. He turned his back on the two,
taunting them, as he moved past the wagon. His simple farce worked, and the
wolves made to pounce. The first wolf fell to his blade, as the second danced to
his side. From behind, he heard movement, then a yelp. He dared a glance, and
saw two more wolves. One was laying on its side, an arrow from its neck. The
other began to circle.</p>
<p>A sudden crack of reins drew his attention away to see the cart lurch forward.
The distraction was enough, and one of the circling wolves lunged. It caught
Halvars empty arm, and pulled him off balance, to the ground. Slashing wildly,
Halvar quickly recovered. His arm was mangled, the blood dripping from his hand
as the spittle dripped from the wolves mouths. The second wolf then lept, but
was caught mid flight by an arrow, and fell to the ground lifeless. Now
outnumbered, the remaining wolf retreated to the darkness of the woods.</p>
<p>Ivar was upon him then, supporting him as they quickly made after the caravan.
His arm burned, his chest pounded, and his head swam with anticipation of
Baldurs face, when he shared of his glory.</p>
<p>“Good shooting, Ivar! Thats two for you and two for me! Wait until Baldur</p>
<p>In a white blur, Ivar was torn from his side. Stumbling slightly, he turned to
see a great white wolf, the size of a small horse, with Ivars neck in its
teeth. With a snarl, it ripped the life from him, and as blood dripped from its
mouth, it spoke in the common tongue.</p>
<p>“You will die this night, rune bearer. You cannot be allowed to live.”</p>
<p>Halvar took up his stance. His left arm useless, he put it between him and his
enemy. The wolf then bellowed an unearthly howl, which echoed in the woods and
was joined by more voices.</p>
<p><em>Unfortunate</em>, he thought, <em>This would make for a great tale. And not a single
skald around to watch!</em></p>
<p>The two circled. The great wolf snarled a laugh of sorts.</p>
<p>“Do you know of me, manling? I am a daughter of Fenrir. I am to join my father
in Ragnarok. I will feast upon your gods carcasses, and drink of their blood!
You are not a god. What hope have you against one as great as me? Bare your
neck, and I will end your life quickly.”</p>
<p>Halvar smiled. “Do you know of me, pup? I am Halvar, son of Haakon, son of
Eirik, son of Odinson. I carry the secrets of the runes, and will herald the
return of the gods! You dare impede my destiny?! You will serve only to further
my legend!”</p>
<p>With renewed vigor, Halvar attacked. Sword was met with fang, as blow after blow
was traded. The great wolf, no stranger to the weapons of man, danced around the
blade. As each grew bloodied, they parted, panting and weary.</p>
<p>“You fight well, for a runt.” Halvar managed between breaths. “Tell me your
name, great wolf. No warrior should live in legend unknown!”</p>
<p>The wolf bared its teeth, perhaps mimicking a smile. “I am called Ísstonn, ice
fang. A vetrgarmr. Daughter of Vetrkona, Daughter of Hati Hróðvitnisson.”</p>
<p>A crushing of snow behind him signalled more wolves. Halvar knew his time was
over.</p>
<p><em>Never a skald around…</em> He began, then was interrupted by a yelp and a thud. He
glanced over his shoulder to see one of the two wolves laying still, an ax in
its side. From the woods, a figure emerged.</p>
<p>“Youre not a skald, but youll do!” Halvar shouted, a grin now upon his face.
His father stepped forth, drawing the handax from the wolf, and moved to join
him.</p>
<p>“Father and son shall fall by my fangs!” Ísstonn barked, and the fight resumed.</p>
<p>Once more, sword met fang, and blows were traded. Halvar and Haakon fought the
winter wolf, as other wolves howled in the dark woods. The bravery and skill of
the two was too much for the great wolf, and before long she lay bloodied and
defeated on the snow.</p>
<p>“You fight with conviction, Haakonson,” she spit, as blood ran from her mouth.
“Beware my fathers fang, manling. He will devour your gods.” The light faded
from the great beast, as the last fog of its breath disappeared into the cold night
air.</p>
<p>The two men made haste to the village. The night now silent.</p>
<p>“Halvar, what happened tonight, no one in the village may know of it.” Haakon
said, as he bandaged Halvars arm.</p>
<p>“Surely you joke! What happened tonight is a story to rival the legends of old!
Ow!” Haakon squeezed Halvars arm tightly. Tears welled in his eyes, as he
stared with an intensity Halvar had not seen for many years.</p>
<p>“Halvar. You indeed have a great destiny before you. This village is in danger
if you remain. You must leave here, and find your legend beyond these fields.”</p>
<p>Haakon then stood, and dared clear his eyes with his sleeve. After a brief
pause, he went and retrieved a small chest. He heaved the heavy container onto
the floor besides Halvar, and beckoned him open it.</p>
<p>Within, Halvar found a suit of chain mail, polished and oiled. Beneath it, a
leather tunic, and nestled next to it all, a helmet.</p>
<p>“This was your grandfathers, and his before him.” Haakon said. “If the stories
are to be believed, this mail saw many battles, some during the great war.”</p>
<p>Haakon then placed two hand axes next to the chest. “These are yours now. Muninn
and Huginn, named for the All Fathers favorite ravens. May they serve you well,
as they do him”</p>
<p>Finally, he laid Halvars sword upon his lap. “And this, you know of. What you
may not know is the legend of this sword. Here, a drink and our final toast.”
Haakon handed a cup to Halvar, and they drank.</p>
<p>“Ages past, when myths were made, and magic was commonplace, the keepers of the
runes used their powers to gift man with powerful weapons and armor and other
trinkets. This sword is one such weapon. I know not its true name. My father
told me it was called Eljunvegr, Enduring Hope, as I have told you, but there
is another name, lost to time. These runes, they are more than just decoration,
as you well know. Legend says, in the time of the great war, this sword was used
by a great berserker of Odin. Odins ritual to save humanity would destroy any
and all around him, and Odin commanded his men flee and live. This berserker
refused the command of the god, and fought alone to protect the All Father,
ensuring his victory. He fought with this sword, as you now will.”</p>
<p>Haakon then helped Halvar don his armor, and brought to him a pack. They then
went outside, to meet the dawn. Haakon led to Halvar a horse, and then returned
to the house. Before entering, he turned.</p>
<p>“You do honor to your family, Halvar. Never forget that.” With that, Haakon
moved inside, and closed the door.</p>
<p>As Halvar neared the edge of the village, there stood two men. He recognized one
as Baldur, and after a moment recognized the second as Tad.</p>
<p>“Leaving so soon? Surely youve tales of your daring rescue last night?” Baldur
said, stifling a yawn. “Where are you off to so early? It looks like you ride to
war!” He chuckled.</p>
<p>“You saved this village last night. That caravan had food and medicine.” Tad
chimed in.</p>
<p>“We saved the village, Tad. You, me and Ivar. We did.” Halvar replied, his voice
lacking in its usual bravado.</p>
<p>“Well, seems your adventures were a bit humbling. I admit, I fear what an actual
adventure will make you!” Baldur laughed. His expression then grew sober. “Every
great warrior needs a shield, Halvar. I know how much this means to you. I
restored it as best I could.”</p>
<p>From his side, Baldur lifted a round shield. It was expertly crafted, and
perfectly balanced. Upon its face, a rune was burned into the wood, and gelded
in silver.</p>
<p>“Take this too, its from my family.” Tad held forth a horn, carved of bone with
a steel mouthpiece. “Consider them a reminder: your legend started here. Now go,
your father will have our beards if were seen with you.”</p>
<p>With a nod, Halvar rode from the village. He knew not to where he went, but he
knew his destiny would not let him stray far.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-27
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,263 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 11</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/28/letter-to-lucilius-11.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="letter-11-on-the-blush-of-modesty">Letter 11: On the Blush of Modesty</h1>
<h2 id="original-text">Original Text</h2>
<p>[1] Your friend and I have had a conversation. He is a man of ability; his very
first words showed what spirit and understanding he possesses, and what progress
he has already made. He gave me a foretaste, and he will not fail to answer
thereto. For he spoke not from forethought, but was suddenly caught off his
guard. When he tried to collect himself, he could scarcely banish that hue of
modesty, which is a good sign in a young man; the blush that spread over his
face seemed so to rise from the depths. And I feel sure that his habit of
blushing will stay with him after he has strengthened his character, stripped
off all his faults, and become wise. For by no wisdom can natural weaknesses of
the body be removed. That which is implanted and inborn can be toned down by
training, but not overcome. [2] The steadiest speaker, when before the public,
often breaks into a perspiration, as if he had wearied or over-heated himself;
some tremble in the knees when they rise to speak; I know of some whose teeth
chatter, whose tongues falter, whose lips quiver. Training and experience can
never shake off this habit; nature exerts her own power and through such a
weakness makes her presence known even to the strongest. [3] I know that the
blush, too, is a habit of this sort, spreading suddenly over the faces of the
most dignified men. It is, indeed more prevalent in youth, because of the warmer
blood and the sensitive countenance; nevertheless, both seasoned men and aged
men are affected by it. Some are most dangerous when they redden, as if they
were letting all their sense of shame escape. [4] Sulla, when the blood mantled
his cheeks, was in his fiercest mood. Pompey had the most sensitive cast of
countenance; he always blushed in the presence of a gathering, and especially at
a public assembly. Fabianus also, I remember, reddened when he appeared as a
witness before the senate; and his embarrassment became him to a remarkable
degree. [5] Such a habit is not due to mental weakness, but to the novelty of a
situation; an inexperienced person is not necessarily confused, but is usually
affected, because he slips into this habit by natural tendency of the body. Just
as certain men are full-blooded, so others are of a quick and mobile blood, that
rushes to the face at once.</p>
<p>[6] As I remarked, Wisdom can never remove this habit; for if she could rub out
all our faults, she would be mistress of the universe. Whatever is assigned to
us by the terms of our birth and the blend in our constitutions, will stick with
us, no matter how hard or how long the soul may have tried to master itself. And
we cannot forbid these feelings any more than we can summon them. [7] Actors in
the theatre, who imitate the emotions, who portray fear and nervousness, who
depict sorrow, imitate bashfulness by hanging their heads, lowering their
voices, and keeping their eyes fixed and rooted upon the ground. They cannot,
however, muster a blush; for the blush cannot be prevented or acquired. Wisdom
will not assure us of a remedy, or give us help against it; it comes or goes
unbidden, and is a law unto itself.</p>
<p>[8] But my letter calls for its closing sentence. Hear and take to heart this
useful and wholesome motto: “Cherish some man of high character, and keep him
ever before your eyes, living as if he were watching you, and ordering all your
actions as if he beheld them.” [9] Such, my dear Lucilius, is the counsel of
Epicurus; he has quite properly given us a guardian and an attendant. We can get
rid of most sins, if we have a witness who stands near us when we are likely to
go wrong. The soul should have someone whom it can respect, one by whose
authority it may make even its inner shrine more hallowed. Happy is the man who
can make others better, not merely when he is in their company, but even when he
is in their thoughts! And happy also is he who can so revere a man as to calm
and regulate himself by calling him to mind! One who can so revere another, will
soon be himself worthy of reverence. [10] Choose therefore a Cato; or, if Cato
seems too severe a model, choose some Laelius, a gentler spirit. Choose a master
whose life, conversation, and soul-expressing face have satisfied you; picture
him always to yourself as your protector or your pattern. For we must indeed
have someone according to whom we may regulate our characters; you can never
straighten that which is crooked unless you use a ruler. Farewell.</p>
<h2 id="response">Response</h2>
<p>This letter stikes me as another casual writing of Senecas. Some of his letters
seem very serious, and some are much more conversational. In this letter, Seneca
remninds us that the faults which nature gave us are beyond the power of wisdom
to fix. This, he assures us, is not something we should feel ashamed of or take
as a weakness, since it lies outside our control. His examples generally focus
on blushing, hence the title and theme, but its easy for us to extend it to
many facets of our physical self; height comes to mind most immediately.</p>
<p>As with many sources of Stoicism, when I read the reassurances of authors long
since gone, I cant help but feel a sense of comfort. The problems of today, the
personal struggles we all endure, the anxieties we fight to overcome; theyre
not new. Others before us have encountered them, and others after us will. I
think the Stoics would be quick to remind us, it is our place to endure and then
help others endure. At least, thats what I am quick to remind myself of.</p>
<p>The quote, another from Epicurus (Senecas secret man-crush, no doubt), speaks
of finding a good role-model. Reflecting on his quote made me realize I dont
have many role-models in life, at least not many living. Perhaps that matters
little, but I think having a living example you can work from makes matters
easier. Seneca rightly shows how it goes beyond simply living by your
role-models standards, but also using them as an ever-present companion, in
order to help with decisions and actions. Very reminiscent of “What would Jesus
do?” Personally, I like this idea, and I must look for a role-model I can
follow. A few names jump out: Tim Ferris, and Elon Musk. Ferris for his
unrelenting pursuit to better himself, and Musk for his unrelenting pursuit to
better the world around him.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_11">Moral Letters to Lucilius, Letter 11 on Wikisource</a></li>
</ul>
<h6 id="letter-index"><a href="/2018/01/15/Letters-To-Lucilius.html">Letter Index</a></h6>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-28
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,260 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 3</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/28/letter-to-lucilius-3.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Letter 3: On True and False Friendship</h1>
<h2>Original Text</h2>
<p>1. You have sent a letter to me through the hand of a "friend" of yours, as
you call him. And in your very next sentence you warn me not to discuss with
him all the matters that concern you, saying that even you yourself are not
accustomed to do this; in other words, you have in the same letter affirmed
and denied that he is your friend. 2. Now if you used this word of ours in
the popular sense, and called him "friend" in the same way in which we speak
of all candidates for election as "honourable gentlemen," and as we greet
all men whom we meet casually, if their names slip us for the moment, with
the salutation "my dear sir," so be it. But if you consider any man a
friend whom you do not trust as you trust yourself, you are mightily
mistaken and you do not sufficiently understand what true friendship means.
Indeed, I would have you discuss everything with a friend; but first of all
discuss the man himself. When friendship is settled, you must trust; before
friendship is formed, you must pass judgment. Those persons indeed put last
first and confound their duties, who, violating the rules of Theophrastus,
judge a man after they have made him their friend, instead of making him
their friend after they have judged him. Ponder for a long time whether you
shall admit a given person to your friendship; but when you have decided to
admit him, welcome him with all your heart and soul. Speak as boldly with
him as with yourself. 3. As to yourself, although you should live in such a
way that you trust your own self with nothing which you could not entrust
even to your enemy, yet, since certain matters occur which convention keeps
secret, you should share with a friend at least all your worries and
reflections. Regard him as loyal, and you will make him loyal. Some, for
example, fearing to be deceived, have taught men to deceive; by their
suspicions they have given their friend the right to do wrong. Why need I
keep back any words in the presence of my friend? Why should I not regard
myself as alone when in his company?</p>
<p>4. There is a class of men who communicate, to anyone whom they meet, matters
which should be revealed to friends alone, and unload upon the chance
listener whatever irks them. Others, again, fear to confide in their closest
intimates; and if it were possible, they would not trust even themselves,
burying their secrets deep in their hearts. But we should do neither. It is
equally faulty to trust everyone and to trust no one. Yet the former fault
is, I should say, the more ingenuous, the latter the more safe. 5. In like
manner you should rebuke these two kinds of men, both those who always
lack repose, and those who are always in repose. For love of bustle is not
industry, it is only the restlessness of a hunted mind. And true repose
does not consist in condemning all motion as merely vexation; that kind of
repose is slackness and inertia. 6. Therefore, you should note the
following saying, taken from my reading in Pomponius: "Some men shrink into
dark corners, to such a degree that they see darkly by day." No, men should
combine these tendencies, and he who reposes should act and he who acts
should take repose. Discuss the problem with Nature; she will tell you that
she has created both day and night. Farewell.</p>
<h2>Response</h2>
<p>In this letter I take away two themes: one of friendship, and one of
discussions. Of friendship, I think Seneca's definition sets a high bar,
though rightfully so. A friend (perhaps a "true friend", considering
Facebook et al) is one you can confide in without restriction, except for
the most tightly held of secrets. I can personally count the number of
people I could call this type of friend on one hand. To Seneca, as with me,
friend is an honorable position.</p>
<p>In today's social-media-fueled world, I find that the term "friend" resonates
much closer to Seneca's sick burn: "friend" in the same way in which we
speak of all candidates for election as "honorable gentlemen." Perhaps,
though, there's a bit of syntactic significance here. To the Stoics, the
importance of community and brotherhood is found throughout. Marcus Aurelius
has a famous quote about it, as masterfully illustrated by the great Gavin
at Zen Pencils: [<a href="https://zenpencils.com/comic/aurelius/"> Link
</a>]. I think it safe to say we should be friendly and helpful to all we meet,
whereas to welcome one as a friend is a significant event, and one which
requires careful consideration.</p>
<p>The second theme, discussion, is only touched on but I think is significant
enough to warrant attention. Seneca mentions the importance of moderation in
trust and discussion with others. Do not share freely and constantly, and
also do not withdraw within yourself too far. I think here we see a
blueprint for discussion with others. To borrow from Marcus, we are all
brothers, and in that sense we should be comfortable discussing common
matters. However, it is only with friends that we should be comfortable
discussing more personal matters, and even then we must be considerate. Once
again, our social-media-centric world finds many of us sharing freely into a
void we do not recognize as a crowd. Many would do well to remember: social
media is not empty! There are those who greedily capture every word you give
freely, like a stray animal to a buffet. Judge well what you decide to
share, for likely it is not with "true friends" that the message solely
goes.</p>
<p>Reflecting on this letter made me carefully evaluate my friendships. I rarely
have difficulty with people, though admittedly I take time to "warm up" to
them. In terms of discussions, I don't find much to be beyond common topics.
In that sense, I think I am a bit too loose-lipped, though perhaps not as
much as I think. However, I do know that it is a small group with which I
confide the most personal challenges or achievements I have made. And, as
Seneca does suggest, I do not allow entry into this group lightly!</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_3">
Moral Letters to Lucilius, Letter 3 on Wikisource
</a></p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-20
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -1,14 +1,40 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 4"
title: "Seneca's Letter to Lucilius, Letter 4: On the Terrors of Death"
topics: [philosophy]
pub: "2018-01-20"
short_desc: "Letter 4 was the first letter I ever read. Seneca discusses
death, life, and how to deal with both. I found it during a time of great
anxiety and strife, yet even now I find it enlightening."
---
<h1>Letter 4: On the Terrors of Death</h1>
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 4</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/01/28/letter-to-lucilius-4.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Letter 4: On the Terrors of Death</h1>
<h2>Original Text</h2>
<p>1. Keep on as you have begun, and make all possible haste, so that you may
@ -149,3 +175,129 @@
<p><a href="https://www.theonion.com/world-death-rate-holding-steady-at-100-percent-1819564171">
The Onion, "World Death Rate Holding Steady at 100 Percent"
</a></p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-01-20
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,273 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 5</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/02/11/letter-to-lucilius-5.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="letter-5-on-the-philosophers-mean">Letter 5: On the Philosophers Mean</h1>
<h2 id="original-text">Original Text</h2>
<p>I commend you and rejoice in the fact that you are persistent in your studies,
and that, putting all else aside, you make it each day your endeavour to become
a better man. I do not merely exhort you to keep at it; I actually beg you to do
so. I warn you, however, not to act after the fashion of those who desire to be
conspicuous rather than to improve, by doing things which will rouse comment as
regards your dress or general way of living. Repellent attire, unkempt hair,
slovenly beard, open scorn of silver dishes, a couch on the bare earth, and any
other perverted forms of self-display, are to be avoided. The mere name of
philosophy, however quietly pursued, is an object of sufficient scorn; and what
would happen if we should begin to separate ourselves from the customs of our
fellow-men? Inwardly, we ought to be different in all respects, but our exterior
should conform to society. Do not wear too fine, nor yet too frowzy, a toga.
One needs no silver plate, encrusted and embossed in solid gold; but we should
not believe the lack of silver and gold to be proof of the simple life. Let us
try to maintain a higher standard of life than that of the multitude, but not a
contrary standard; otherwise, we shall frighten away and repel the very persons
whom we are trying to improve. We also bring it about that they are unwilling to
imitate us in anything, because they are afraid lest they might be compelled to
imitate us in everything.</p>
<p>The first thing which philosophy undertakes to give is fellow-feeling with all
men; in other words, sympathy and sociability. We part company with our promise
if we are unlike other men. We must see to it that the means by which we wish to
draw admiration be not absurd and odious. Our motto, as you know, is “Live
according to Nature”; but it is quite contrary to nature to torture the body, to
hate unlaboured elegance, to be dirty on purpose, to eat food that is not only
plain, but disgusting and forbidding. Just as it is a sign of luxury to seek
out dainties, so it is madness to avoid that which is customary and can be
purchased at no great price. Philosophy calls for plain living, but not for
penance; and we may perfectly well be plain and neat at the same time. This is
the mean of which I approve; our life should observe a happy medium between the
ways of a sage and the ways of the world at large; all men should admire it, but
they should understand it also.</p>
<p>“Well then, shall we act like other men? Shall there be no distinction between
ourselves and the world?” Yes, a very great one; let men find that we are unlike
the common herd, if they look closely. If they visit us at home, they should
admire us, rather than our household appointments. He is a great man who uses
earthenware dishes as if they were silver; but he is equally great who uses
silver as if it were earthenware. It is the sign of an unstable mind not to be
able to endure riches.</p>
<p>But I wish to share with you to-days profit also. I find in the writings of
our Hecato that the limiting of desires helps also to cure fears: “Cease to
hope,” he says, “and you will cease to fear.” “But how,” you will reply, “can
things so different go side by side?” In this way, my dear Lucilius: though they
do seem at variance, yet they are really united. Just as the same chain fastens
the prisoner and the soldier who guards him, so hope and fear, dissimilar as
they are, keep step together; fear follows hope. I am not surprised that they
proceed in this way; each alike belongs to a mind that is in suspense, a mind
that is fretted by looking forward to the future. But the chief cause of both
these ills is that we do not adapt ourselves to the present, but send our
thoughts a long way ahead. And so foresight, the noblest blessing of the human
race, becomes perverted. Beasts avoid the dangers which they see, and when they
have escaped them are free from care; but we men torment ourselves over that
which is to come as well as over that which is past. Many of our blessings bring
bane to us; for memory recalls the tortures of fear, while foresight anticipates
them. The present alone can make no man wretched. Farewell.</p>
<h2 id="response">Response</h2>
<p>Mean as in average. Not, like… being a jerk. In this letter, Seneca encourages
us to live a life which does not ostracize us from society. Instead, we should
look beyond the facade, and understand the intentions behind our and others
actions. Living within and conforming to society is not a problem, so long as we
do not neglect our virtue: “Inwardly, we ought to be different in all respects,
but our exterior should conform to society.”</p>
<p>I take from this letter two important lessons: live your life for you, not for
others; and dont be afraid to be normal. Though, maybe “live your life for you
and pursue virtue” is better. Seek modesty (and moderation) in all things. Be a
philosopher in thought, word, and deed, but be an everyday person too, and
perhaps primarily. Nobody likes being lectured to, but people do enjoy talking
to each other. A big aspect of Stoicism is sharing what we learn with others;
improving ourselves to improve others. The only way to do that is by being, for
lack of a better word, normal. As Seneca puts it, “We part company with our
promise if we are unlike other men.”</p>
<p>Senecas included quote at the end comes from Hecato, and re-enforces the
significance of moderation. “Cease to hope, and you will cease to fear.” Seneca
expands on this to stress the importance of staying present: “…memory recalls
the tortures of fear, while foresight anticipates them.” The way Seneca
approaches and expands the quote, though, is simply poetic, and something I will
certainly remember moving forward: “Just as the same chain fastens the prisoner
and the soldier who guards him, so hope and fear, dissimilar as they are, keep
step together; fear follows hope.”</p>
<p>A few more things worth noting:</p>
<p>“Repellent attire, unkempt hair, slovenly beard, open scorn of silver dishes, a
couch on the bare earth, and any other perverted forms of self-display, are to
be avoided.” This seems like a direct response (and another patented Seneca Sick
Burn) to the Cynics.</p>
<p>“It is the sign of an unstable mind not to be able to endure riches.” I read
this a few different ways. First, endure the riches of others, and do not let
them effect your sense of self-worth. Second, endure the riches of yourself, and
do not let it inflate your self-worth. Finally, endure all riches, and recognize
them as an indifference, preferred but never at the expense of virtue.</p>
<h1 id="source">Source</h1>
<ul>
<li><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_5">Moral Letters to Lucilius, Letter 5 on Wikisource</a></li>
</ul>
<h6 id="letter-index"><a href="/2018/01/15/Letters-To-Lucilius.html">Letter Index</a></h6>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-02-11
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,250 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Seneca's Letter to Lucilius, Letter 6</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2018/02/11/letter-to-lucilius-6.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="letter-6-on-sharing-knowledge">Letter 6: On Sharing Knowledge</h1>
<h2 id="original-text">Original Text</h2>
<p>I feel, my dear Lucilius, that I am being not only reformed, but transformed. I
do not yet, however, assure myself, or indulge the hope, that there are no
elements left in me which need to be changed. Of course there are many that
should be made more compact, or made thinner, or be brought into greater
prominence. And indeed this very fact is proof that my spirit is altered into
something better, that it can see its own faults, of which it was previously
ignorant. In certain cases sick men are congratulated because they themselves
have perceived that they are sick.</p>
<p>I therefore wish to impart to you this sudden change in myself; I should then
begin to place a surer trust in our friendship, the true friendship which hope
and fear and self-interest cannot sever, the friendship in which and for the
sake of which men meet death.</p>
<p>I can show you many who have lacked, not a friend, but a friendship; this,
however, cannot possibly happen when souls are drawn together by identical
inclinations into an alliance of honourable desires. And why can it not happen?
Because in such cases men know that they have all things in common, especially
their troubles.</p>
<p>You cannot conceive what distinct progress I notice that each day brings to me.
And when you say: “Give me also a share in these gifts which you have found so
helpful,” I reply that I am anxious to heap all these privileges upon you, and
that I am glad to learn in order that I may teach. Nothing will ever please me,
no matter how excellent or beneficial, if I must retain the knowledge of it to
myself. And if wisdom were given me under the express condition that it must be
kept hidden and not uttered, I should refuse it. No good thing is pleasant to
possess, without friends to share it.</p>
<p>I shall therefore send to you the actual books; and in order that you may not
waste time in searching here and there for profitable topics, I shall mark
certain passages, so that you can turn at once to those which I approve and
admire. Of course, however, the living voice and the intimacy of a common life
will help you more than the written word. You must go to the scene of action,
first, because men put more faith in their eyes than in their ears, and second,
because the way is long if one follows precepts, but short and helpful, if one
follows patterns.</p>
<p>Cleanthes could not have been the express image of Zeno, if he had merely heard
his lectures; he shared in his life, saw into his hidden purposes, and watched
him to see whether he lived according to his own rules. Plato, Aristotle, and
the whole throng of sages who were destined to go each his different way,
derived more benefit from the character than from the words of Socrates. It was
not the class-room of Epicurus, but living together under the same roof, that
made great men of Metrodorus, Hermarchus, and Polyaenus. Therefore I summon you,
not merely that you may derive benefit, but that you may confer benefit; for we
can assist each other greatly.</p>
<p>Meanwhile, I owe you my little daily contribution; you shall be told what
pleased me to-day in the writings of Hecato; it is these words: “What progress,
you ask, have I made? I have begun to be a friend to myself.” That was indeed a
great benefit; such a person can never be alone. You may be sure that such a man
is a friend to all mankind. Farewell.</p>
<h2 id="response">Response</h2>
<p>This letter is very casual, more of an update than anything, I feel. Seneca
draws reference to the significance of friendship once more, as was covered in
letter three. Expanding upon it, he emphasizes the importance of sharing
knowledge: “And if wisdom were given me under the express condition that it must
be kept hidden and not uttered, I should refuse it. No good thing is pleasant to
possess, without friends to share it.” Beyond just sharing, though, is the
importance of experiencing. His mentions of Cleanthes to Zeno, and Plato or
Aristotle to Socrates, help illustrate this notion.</p>
<p>What strikes me of significance in this letter is the quote Seneca includes from
Hecato: “What progress, you ask, have I made? I have begun to be a friend to
myself.” It reminds me of a quote from an article I read written in the 1920s:
“I am persuaded that no one ever achieves anything worth-while in this world
unless he has so great a respect for his work that he compels all other men to
respect it.” In my eyes, the first is a requirement for the second; before you
can respect yourself and your work, you must be a friend with yourself. Instead
of fighting against every negative feeling or doubt, you must find strength and
power. Only then will you live with such assurance that you will harbor respect
wherever you walk.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_6">Moral Letters to Lucilius, Letter 6 on Wikisource</a></li>
<li><a href="https://mikecanex.wordpress.com/2012/12/26/1922-why-i-quit-being-so-accommodating/">Why I Quit Being So Accomidating</a></li>
</ul>
<h6 id="letter-index"><a href="/2018/01/15/Letters-To-Lucilius.html">Letter Index</a></h6>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2018-02-11
<br />
[
<a href="/topics/philosophy">philosophy</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

255
2020/06/03/post.html Normal file
View file

@ -0,0 +1,255 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: An Update</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/06/03/post.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="an-update">An Update</h1>
<p>There is nothing Ive experienced as humbling as powerlessness. The immediate
realization that, despite all the capabilities which may be before you, you can
do nothing to affect a situation. It is a powerful reminder that we are, all,
parts of a whole. That could mean “cogs in a machine” or other such cynical
metaphors, or it could mean part of a team, working together towards a goal. I
often fall for the former, and rally to the later. Right now, I see examples of
the later all around me: protesters on streets, in parks, joining together to
oppose a borderline dictator who chooses military action over reform. Yet, I
dont understand how I can fit in. I understand how, literally, I can join in
the protests. Im not worried about my health or my status in doing so, yet I
still hesitate. Because I feel powerless. Because I look at protests, and I see
peaceful citizens opposed by military bullies. I see the desperate grasps for
control furthering oppression and injustice. I see “their” power, and I feel
“their” power, and I sit here, thoughts gasping for breath in a sea of rage and
regret. I know adding my voice would not be in vain. I understand that another
body in the crowd is not just a number, but a show of support. And yet I still
hesitate. Perhaps out of fear; perhaps I was wrong to boldly claim I was
unconcerned with my health or status. I like to think I can set aside those and
other “indifferents” during times when virtuous action is required; I like to
think I would be one to race towards danger, if it was the right thing to do.
Yet, as the saying goes, often our actions speak louder than words.</p>
<p>But perhaps this is a misperception. There are many ways to show support, many
avenues to fight oppression. If fear dictate I stay in my house, “safe” from the
troubles in the world, then what can I do from here? Much like a voice in the
crowd, throwing a blog post out to the world may seem ineffective, but to expect
change on this scale be made only by my voice, is selfish and fantasy. This blog
post represents my voice online. It is my space, where I can share my ideas and
theories, my creations and my fears. In our digital world, this is my personal
park from which I can protest, and so I shall. And just like protest in
meatspace, it need not end at this. I can still contact my representative, my
congressperson, and anyone I feel can and should know my opinion. And so I
shall. And I encourage anyone who stumbles across this post, in good times and
bad alike, to know that you have options. That powerlessness, while humbling, is
not a force of oppression, but a call to examine your perceptions.</p>
<h2 id="resources">Resources</h2>
<p><a href="https://www.house.gov/representatives/find-your-representative">Find your
Representative</a></p>
<p><a href="https://www.senate.gov/senators/contact">Find your Senators</a></p>
<h1 id="and-now-for-something-completely-different">And now for something completely different…</h1>
<p>Rails! Ive been learning Ruby on Rails (again… again) as a means to build
some of the applications Ive been thinking of. The most immediate, and the
motivation for the recent return, is to build a character sheet system for
roleplaying games, specifically Pathfinder and D&amp;D 5e. For a long time, I have
considered how cool it would be to have a dynamic character sheet that can
calculate all my rolls for me, help me level up, and provide me contextual
information. I want to explore tying it to a chat bot, available first on Matrix
but later on Discord and perhaps others, to allow for in-line reference and
rolling with character awareness, for both players and DMs. Ive been working my
way through Michael Harts <a href="https://www.learnenough.com/ruby-on-rails-6th-edition">Ruby on Rails
Tutorial</a>. Im literally
on the last chapter of building the example application, and look forward to
using it as the foundation to build my application. I also played around with
<a href="https://matrix.org/">Matrix</a> and a <a href="https://github.com/ananace/ruby-matrix-sdk">Ruby
API</a> for building a bot. Glaub, my
WIP bot, was able to connect to the Heroku-deployed application and query it for
information via REST calls. I look forward to exploring this more as well.</p>
<p>I also stumbled across <a href="https://100daystooffload.com">#100DaysToOffload</a>. I
think its a cool idea, and Im going to try and pursue it. I have plenty I
think about and do every day, and some of it may be helpful.</p>
<p>Finally, Ive been very interested in a number of things since being confined
during quarantine: self-hosting, decentralized platforms, exercise, cooking,
gaming, streaming. Some of these are continued hobbies, some of these are
relatively new, and some are completely new to me. I see many synergies between
them, and as part of my writing goals, I want to explore them. I already
highlighted one: Matrix, a decentralized platform, and building a
character-sheet bot. In fact, it also incorporates self-hosting, since I
followed <a href="https://matrix.org/blog/2020/04/06/running-your-own-secure-communication-service-with-matrix-and-jitsi">this fun
tutorial</a>
and setup and configured my own Matrix homeserver and Jitsi Meet instance.
Because part of the #100DaysToOffload is to share these posts on socials, Im
also resuming my look into <a href="https://joinmastodon.org/">Mastodon</a> and considering
self-hosting a homeserver of that as well. Im also considering finding a
<a href="https://joinpeertube.org/">Peertube</a> community to upload videos to. I think
Peertube is a cool idea, and as someone pointed out, theres not a lot of gaming
content on it. I could help promote the platform as an alternative for finding
fun gaming videos. Well, at least, for finding gaming videos.</p>
<p>Thats all for now. Stay safe, stay vigilant, pursue virtue in all that you do.
If youre not sure what to do, consider writing a blog! Im writing this post as
part of <a href="https://100daystooffload">#100DaysToOffload</a>, an initiative to inspire
writing habits. Perhaps you could do the same.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-06-03
<br />
[
<a href="/topics/writing">writing</a>
<a href="/topics/life">life</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,382 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Setting Up a BTRFS RAID-1</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/06/14/setting-up-btrfs.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="btrfs-smooth-as-butter">BTRFS: Smooth as Butter</h1>
<p>I have a habit of calling BTRFS “butter-F-S.” Conveniently in text I dont feel
a need to say that, because its easier to type out BTRFS than “butter-F-S”, as
opposed to being easier to say the latter than the former. Regardless, BTRFS is
a file system, which can be thought of as the organization system used by a hard
drive to store files. File systems provide the functionality necessary for
handling data; without one, data would exist on a disk with no means of (simple,
reliable) access, management, or use. Every operating system provides the
necessary configurations for using at least one file system, and often times can
be expanded to understand more file systems, as is the case with Linux. If
youre used to Windows, youll be primarily familiar with two file systems:
NTFS, and FAT. If youre familiar with Linux, youll have probably dealt with
those, as well as EXT. If youre adventerous, you have have tried additional
file systems such as ZFS, or BTRFS.</p>
<p>When I returned to Linux full-time on my desktop, I decided I wanted to setup a
storage system. I initially shopped around for a NAS: network-attached storage.
This would be a separate device, basically a motherboard with hard-drives. It
would include software for storing data reliably, as well as applications for
serving that data, such a Plex. There are many top-rated off-the-shelf options
available, but many are costly, propietary, and lock you in to that solution. I
decided to go with something a bit more readily available, and turn two existing
3 terrabyte drives into a storage system that would live as part of my desktop.
The remainder of this post will deal with how I setup BTRFS on my Linux desktop,
using sub-volumes, creating automated snapshots, and setting up a back-up
schedule.</p>
<h2 id="setting-up-btrfs">Setting up BTRFS</h2>
<p>Linux has “first-class” support for BTRFS, which was a deciding force between it
and ZFS. (Though, recently, ZFS has made some strides as well.) The only
requirements necessary for using BTRFS is to install the <code class="language-plaintext highlighter-rouge">btrfs-progs</code> program,
which is required for basic operations. With requirements done, the next step is
to setup the filesystem on your disk of choice. This will delete all information
on your disk, so only do this when youre certain any existing data has been
backed-up, or you dont mind losing it.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkfs.btrfs /dev/partition
</code></pre></div></div>
<p>I decided to go with a partitionless setup, which is a slightly modified version
of the above command. The above command also allows for adding a disk label, as
well as a few other options; <code class="language-plaintext highlighter-rouge">man mkfs.btrfs</code> will give you all the details. I
decided to call my BTRFS storage system my “Bag of Holding.”</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mkfs.btrfs -L BagOfHolding /dev/sdg
</code></pre></div></div>
<p>Creating a partitionless setup removes the MBR or GPT partitioning schemes, and
relies on subvolumes to simulate partitions. Because Im only using these disks
for storage, and I wont be booting from them, this seemed like the way to go.</p>
<p>My setup will take two drives, and combine them together into a RAID-1. In order
to allow for me to get the data from the drives into my new RAID, I did one disk
at a time, and moved data between them, I then balanced the RAID.</p>
<h2 id="configuring-a-btrfs-raid">Configuring a BTRFS RAID</h2>
<p>At this point, I have two separate drives. One of my drives has all my data on
it, the other drive is a raw, partitionless filesystem. At this point, we can
leverage BTRFS to combine both our disks into a single “device”, and then
balance it. All these commands will leverage the <code class="language-plaintext highlighter-rouge">btrfs</code> command, which needs to
be run as root.</p>
<p>First, mount one of the drives. In my case, I mounted the drive with data</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>mount -t btrfs /dev/sdg /mnt/BagOfHolding
</code></pre></div></div>
<p>Next, I added my second device to the mounted file system</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>btrfs device add /dev/sdh /mnt/BagOfHolding
</code></pre></div></div>
<p>At this point, we have a filesystem with two devices, but the data and metadata
hasnt been balanced yet. To simply balance the data, and replicate a RAID-0
setup, you would run the <code class="language-plaintext highlighter-rouge">btrfs balance</code> command, specifying the
mounted filesystem. In my case, I wanted to replicate a RAID-1 setup, having the
two disks mirrored instead of striped. The command is modified to include a
“balance filter”:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>btrfs balance -dconvert=raid1 -mconvert=raid1 /mnt/BagOfHolding
</code></pre></div></div>
<p>This command will take time, since it has to re-balance the data across the
devices. A convenient time for a short aside:</p>
<h3 id="buzzwords-of-butter">Buzzwords of Butter</h3>
<ul>
<li>Copy-on-Write (COW): Basically, only make copies to data when there are
written changes to it. I dont fully understand Copy-on-Write, and is
possibly a good candidate for a future post.</li>
<li>Subvolumes: Like a partition, but not a block device. The BTRFS Wiki defines
it as “an independently mountable POSIX filetree.” I think of subvolumes as
“software partitions” which Im sure is both wrong and infuriating to people
who know more about it than I do.</li>
<li>Snapshots: A snapshot is a subvolume that shares its data with another
subvolume, using copy-on-write. This means if there are no changes to the
underlying data, a snapshot is basically just a reference to the exactly
same data as the initial subvolume. As changes get made, the snapshot
references a copy of “old” data, as opposed to the new data. Thus, a
snapshot represents data at a specific point in time.</li>
</ul>
<h2 id="setting-up-subvolumes">Setting up Subvolumes</h2>
<p>At this point, I have a single device made of two disks. The device, when
queried using <code class="language-plaintext highlighter-rouge">btrfs filesystem show</code> shows the total available and used space,
and the individual disks composing it. Creating subvolumes is optional; by
default, a BTRFS filesystem has one subvolume (with id 5) as the “root.” If you
mount the device, youll mount that, and see the entire device. I wanted a bit
more organization, and options for snapshots, so I created a number of
subvolumes for different files: Books, Code, Documents, Games, Misc, Music,
Pictures, Videos. I mount each separately, and then sym-link directories in my
home directory to a corresponding subvolume.</p>
<p>Creating a subvolume is very straight forward, using the <code class="language-plaintext highlighter-rouge">brtfs subvolume
create</code> command. I made many, as mentioned before, and Ill walk through how I
setup the Books subvolume. I followed the same steps for all other subvolumes.</p>
<p>First, I created it:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>btrfs subvolume create /mnt/BagOfHolding/Books
</code></pre></div></div>
<p>Then, I configured it to automatically mount. This involved adding a line to my
fstab file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
UUID=658cc4e0-93e1-43b5-b068-d889b44ae98d /mnt/BagOfHolding/Books btrfs subvol=/Books,defaults,nofail,x-systemd.device-timeout=5
...
</code></pre></div></div>
<p>Looks very similar to other entries, except that the option <code class="language-plaintext highlighter-rouge">subvol=/Books</code> is
necessary! This whole line tells the file system to mount the BTRFS subvolume
located at Books <em>relative to the “root” subvolume</em>, to the mount point
“/mnt/BagOfHolding/Books”. The other important thing to remember is that
subvolumes are not block devices. For the BTRFS device, there is only one block
device, and thats the RAID we setup earlier. If you run <code class="language-plaintext highlighter-rouge">btrfs filesystem show</code>
youll see the device has a single UUID, despite having the two individual
disks. In fact, if you were to mount either of the disk devices, you would mount
the raid; in my case, if I were to use <code class="language-plaintext highlighter-rouge">/dev/sdg</code> or <code class="language-plaintext highlighter-rouge">/dev/sdh</code> instead of the
UUID, it would do the same thing. UUIDs are more reliable, though, so I tend
towards them. My fstab has a line like the above for each subvolume. Once thats
done, unmount the RAID, and then either run <code class="language-plaintext highlighter-rouge">mount -a</code> or restart to get each
individual subvolume mounted. The final step I did was to symbolic link
directories from my home directory to the corresponding subvolumes. Following
with Books, I did <code class="language-plaintext highlighter-rouge">ln -s /mnt/BagOfHolding/Books Books</code> from my home directory.
Now, if I <code class="language-plaintext highlighter-rouge">cd ~/Books</code> I get to the subvolume on my RAID.</p>
<h2 id="scheduling-snapshots">Scheduling Snapshots</h2>
<p>With the RAID established, and subvolumes created, mounted and linked, I now can
schedule automatic snapshots. An easy way to do so is with a program called
Snapper. Installing that provides the application, as well as schedules both via
cron and Systemd. Because Im running Arch, well rely on the Systemd timer.
Before that, we need to create a Snapper configuration.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>sudo snapper -c books create-config /mnt/BagOfHolding/Books
</code></pre></div></div>
<p>This will create the configuration file in “/etc/snapper/configs/”. The
configuration includes limits on how many snapshots to keep of different types
(“hourly”, “weekly”, etc..). The defaults seemed sane enough for me. Without a
cron scheduler, though, nothing else happens. (If you have a cron scheduler,
then it will have started automatically and will run accordingly). The final
step is to enable and start the “snapper-timeline” timer. If desired, modify the
timer frequency (I believe the default is hourly, which is good enough).</p>
<p>One last thing to do for Systemd is to also enable and start the
“snapper-cleanup” timer, which will cull snapshots down to the configured amount
from the configuraiton file.</p>
<p>An interesting thing about snapshots is that, unless something has changed, they
wont take up space. Creating 10 snapshots will not replicate data 10 times.
What each snapshot will capture are any changes that have been made to the data.</p>
<h2 id="creating-backups-from-snapshots">Creating Backups from Snapshots</h2>
<p>The final phase of my BTRFS journey is to establish backups. One thing that must
be emphasized: <strong>SNAPSHOTS ARE NOT BACKUPS</strong>. They can be used to make backups,
though. The way Im doing that currently is with a program called snap-sync.
snap-sync will iterate through each Snapper config, and send a snapshot from
each to a remote BTRFS-formatted source. In my case, the remote source is an
external hard drive. I formatted it similar to my RAID drives, without a
partition. Once done, I ran <code class="language-plaintext highlighter-rouge">snap-sync</code> as root, which provides guidance for
choosing a disk, and walks through each Snapper config. I ran it once, to get
each directory established on the external drive. The manual (<code class="language-plaintext highlighter-rouge">man snap-sync</code>)
includes example Systemd timers, which I used to create a timer and service in
“/usr/lib/systemd/system”. Then, I enabled and started the timer. The example
runs once a week, though I think I may update that to once a day.</p>
<h2 id="conclusion">Conclusion</h2>
<p>With that, I feel I have a good solution to my storage needs. I can keep all my
data on a RAID drive with backups, accessible easily from the primary machine I
use. I further synchronize music and pictures to and from my phone using
Syncthing, which will be an upcoming topic of discussion. Some next steps:</p>
<ul>
<li>setup and configure Calibre for my books</li>
<li>better configure Demlo for my music</li>
<li>look into accessing my RAID from my Raspberry Pi, perhaps via NFS, and
leveraging wake-on-lan, to allow for streaming media remotely whenever,
without having to leave my desktop on</li>
</ul>
<p>Im writing this post as part of <a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire writing habits. Perhaps
you could do the same.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://wiki.archlinux.org/index.php/Btrfs">btrfs on the Arch Wiki</a></li>
<li><a href="https://wiki.archlinux.org/index.php/Snapper">Snapper on the Arch Wiki</a></li>
<li><a href="https://github.com/wesbarnett/snap-sync">snap-sync</a></li>
<li><a href="https://btrfs.wiki.kernel.org/index.php/Main_Page">The BTRFS Wiki</a></li>
</ul>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-06-14
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,290 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Character Story: Gabriella's Fall</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/06/18/gabriella_s-fall.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="character-story-gabriellas-fall">Character Story: Gabriellas Fall</h1>
<p><em>Gabriella de la Rodriguez Alejandra Santa Lucia, you are hereby relieved of
duty and dishonorably discharged from the Barakhan Army.</em></p>
<p>The morning was cold. Its always cold. Something Gabriella knew but rarely
experienced. She had not slept well since the hearing, and had taken to
wandering the city.</p>
<p><em>You are charged with gross negligence, gross incompetence, and failure to
repair. The results of your actions have cost the lives of 8 Barakhan soldiers
under your command.</em></p>
<p>With a start she awoke to fresh dew. She had apparently dozed off. How swiftly
her discipline had faltered. Yet another indication of her failure.</p>
<p><em>Gareth Brand. Ryal Cross. Willem Frost. Davis Mason.</em></p>
<p>She stopped paying for rooms, since she spent so little time in them. The
streets werent that bad at night, despite what some may think. In the gardens
or along the parkways, there were always trees to rest beneath. The city, the
one she had dreamt about as a child; the one she has sworn to defend; the one
she now walked as a ghost. The city somehow still welcomed her, still provided
for her. Who was she to deserve it?</p>
<p><em>Francis Potter. Cordon Stone. Richard Stone. Samuel White.</em></p>
<p>She did not.</p>
<p><em>All possessions of the army are now to be reclaimed. You will doff your armor,
remove your shield, and place them on the floor beside you. All possessions
which belong to you have been gathered, and are now presented to you.</em></p>
<p>A sack, with several sets of clothing. A few books. Her Uncles sword. These
items were handed to her by a court clerk. She took them, and in stunned
silence, stared at the floor in front of her.</p>
<p><em>This dismissal is now complete. As of this moment, you are forbidden interaction
with any members of House Barakhan, until you return to Mnemar and make amends
for your actions.</em></p>
<p>She couldnt move. She could barely breathe. The Field Marshall closed the book,
and placed it on the table before him. The Imperial Magister, with the slightest
smirk on his face, was the first to leave. After what seemed like ages, one of
Field Marshall Barakhan Randalls captains escorted Gabriella to the exit.</p>
<p>This was the fourth time she walked into the temple. This time she was
determined to at least try. She spotted a secluded space, and knelt at a pew.
After a few moments, she rose. This is pointless, she thought, and began to walk
out. She paused, then slowly returned to the pew. Again she knelt, and as she
had done so many times since Rattimas, whispered quietly the names of her men.
<em>Gareth, Ryal, Willem, Davis, Francis.</em> She stopped, took a deep breath, and
continued. <em>Cordon, Richard, Samuel.</em> Silence. She stared at her hands, clasped
before her.</p>
<p>“Ive never done this before. Ive seen my men pray to gods. Ive seen the
citizens and refugees with their shrines and books. Ive never been convinced it
was worth my time. I guess, now that I have nothing left, it doesnt seem such a
waste.”</p>
<p>She smiled, and laughed quietly. “This is pointless.”</p>
<p>She rose, and as she did, a voice from behind her spoke.</p>
<p>“Where I walk, so must you.”</p>
<p>Gabriella turned, and before her saw a woman dressed in stately attire. Her
white gown was precisely fitted, and simply decorated with pearls and rubies.
Her hair was fashioned up into a wide fin around a golden comb. In her hands she
held a scepter, of golden shaft and topped with a red orb, which itself was
surrounded by a golden crown.</p>
<p>“Beg your pardon, maam. I am not so desperate as to find employ as a servant.”
Gabriella replied.</p>
<p>“You have always been my servant, Gabriella. Ever since you first dreamt of my
city.” The woman sat, and gestured for Gabriella to do the same. As she did, the
woman continued.</p>
<p>“My city is under threat, and you have come very far to protect it. The army
provided you with training, which will serve you well. While your discharge from
the army is unfortunate, it is but a slight bump in the road.”</p>
<p>The woman waited, then. Gabriella returned her gaze, confused. This woman was
not present at her dismissal, and news of it had not spread outside the
barracks. If this woman was Barakhan, she was forbidden to speak with Gabriella.</p>
<p>“I am not worthy of protecting this city. My failures are paramount, and my
actions found wanting. I have failed my family, my army, my homeland, and
myself.” Gabriella replied.</p>
<p>“The events which led to your dismissal are unfortunate, but the judgement is
fair.”</p>
<p>Gabriella winced. If the woman noticed, she paid no heed.</p>
<p>“You will make amends yet. Now is no time for this pathetic exercise in
self-pity. For nearly two weeks you have lived as a vagrant and it has not done
you well. Cities have inns for a reason. Get a room at The Red River Way. Tork,
the keeper, is a good man and will charge you a fair price. You need a bath, and
to properly dress yourself. I cannot give you the armor you are familiar with,
but this cloak will keep you warm.”</p>
<p>The woman rose then, and looked down upon Gabriella.</p>
<p>“You must walk my city. Every road and alley way. Upon its stones and bricks you
will discover your strength. You have asked for help, and this is how you shall
earn it. You once swore to protect this city, and by proxy have sworn fealty to
me. In return, once you have proven your fealty, I will extend my blessing to
you.”</p>
<p>Gabriella stood, as the woman thrust the cloak into her arms.</p>
<p>“I will find you once more, here, when you are done.”</p>
<p>“Who are you to command me? I have no commander. I have no lord. I dont want
your charity and I dont want your chores!” Gabriella responded, a fury rising
in her voice.</p>
<p>“I am the patron of Silent Fall. I am Erathis. You asked for my help. I have
given it.”</p>
<h1 id="100-days">100 Days</h1>
<p>Im writing this post as part of
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
writing habits. Perhaps you could do the same.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-06-18
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -1,22 +1,49 @@
---
tabtitle: "Character Write-up: Jhoric Stonehammer"
title: "Character Write-up: Jhoric Stonehammer"
topics: [gaming, writing]
pub: "2020-06-19"
short_desc: "The backstory of my proud cleric of Moradin, Jhoric
Stonehammer."
---
Jhoric Stonehammer is the character I'm playing in the `Descent into Avernus`
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Character Write-up: Jhoric Stonehammer</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/06/19/jhoric_background.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>Jhoric Stonehammer is the character Im playing in the <code class="language-plaintext highlighter-rouge">Descent into Avernus</code>
campaign. The backstory was originally developed for a different character, and
a different campaign. However, by Moradin's Hammer, I decided to play a cleric,
a different campaign. However, by Moradins Hammer, I decided to play a cleric,
and as I began building the character, I realized the dwarven cleric I had in
reserve would do fine. The last bit of his backstory was quickly thrown
together, as part of the hook into the campaign, but it works well enough.
together, as part of the hook into the campaign, but it works well enough.</p>
# Character Backstory: Jhoric Stonehammer
<h1 id="character-backstory-jhoric-stonehammer">Character Backstory: Jhoric Stonehammer</h1>
Most of the great halls of the world have been built by dwarven masons and
<p>Most of the great halls of the world have been built by dwarven masons and
smiths. The mighty vaulted ceilings and buttresses of cathedrals, the
impregnable walls of keeps, and the humble alcoves of libraries, can all call
themselves brethren. Birthed by the greatest architectural minds of the realms,
@ -28,9 +55,9 @@ worked with the stone, not against it. When they finished, the product was one
never seen before, and never to be seen after. Unique not only in shape, but in
spirit. The lifeforce of the dwarf, with the lifeforce of the stone, combined
into a creation of such quality, the divines would be impressed. In fact, as
many a dwarf will boast, the Halls of Valhalla are built by their ancestors.
many a dwarf will boast, the Halls of Valhalla are built by their ancestors.</p>
Becoming a stonemason is a great honor for a dwarf. Many of the families of many
<p>Becoming a stonemason is a great honor for a dwarf. Many of the families of many
settlements have long and storied histories and traditions, none-the-least of
which involves dedicating a child to the masons or smiths. Being of a trusted
family is not enough, though. No dwarf is admitted to the masons craft before
@ -49,9 +76,9 @@ Still, they are taught to focus on learning. As they grow, the students begin to
see the learning opportunities in all they do. Every tool created offers secrets
of iron; every block cut reveals the history of the stone. When a dwarf exclaims
this revelation to his masters, only then is he considered eligible for
training.
training.</p>
Now, having been worthy of applying to become a mason or a smith, a dwarf must
<p>Now, having been worthy of applying to become a mason or a smith, a dwarf must
begin work on his entrance piece. For a smith, this is often a weapon of
masterwork quality. For a mason, this may be an architectural design, or a
finely crafted stone idol. Once their creation is completed, a task which may
@ -64,9 +91,9 @@ stone teaches blood, as iron teaches blood. In circumstances where a bloodline
relative is not an option, a dwarf may find apprenticeship to the second or
third representative from a bloodline. In doing so, the dwarf generally seeks to
renew their bloodline, through the assistance of the stronger one. This is seen
as an honorable position for a second or third representative of a bloodline.
as an honorable position for a second or third representative of a bloodline.</p>
As an apprentice, the dwarf discontinues any previous expeditions in favor of
<p>As an apprentice, the dwarf discontinues any previous expeditions in favor of
working exclusively in the workshop of his chosen craft. For a decade or more,
the dwarf apprentice practices their craft. A smith may start off working the
bellows of his masters smith. After several years, the dwarf may be trusted to
@ -80,9 +107,9 @@ for every mason is often to create several pallets worth of cut blocks, whether
it be stone, brick, or less common materials, and to assemble the necessary
chemicals for mixture into plaster, grout, and other cements. After many years
of this, the apprentice is often called upon to assist their master with
foundations, extensions, roadwork, and more intricate stone working.
foundations, extensions, roadwork, and more intricate stone working.</p>
Generally after two decades of apprenticeships, a dwarf will be given the title
<p>Generally after two decades of apprenticeships, a dwarf will be given the title
of journeyman. At this point, they are permitted by the councils to open their
own shops, and sell their own services. Journeyman shops are often specialized,
so as to find a niche they can work in and profit. Once they have proven their
@ -97,11 +124,11 @@ apprentices. This is also when a dwarf is permitted (and sometimes expected) to
leave their settlement in search of foreign (though still often dwarven)
settlements in need of their craftsmanship. It is expected at this time, when a
dwarf is generally 110 to 150 years of age, that they start and family to
continue their tradition.
continue their tradition.</p>
It is not the first time that Jhoric defied expectations.
<p>It is not the first time that Jhoric defied expectations.</p>
Jhoric Stonehammer, born of Namrok Stonehammer and Hilga Stoutwood, was the
<p>Jhoric Stonehammer, born of Namrok Stonehammer and Hilga Stoutwood, was the
second born. His older brother, Horace, was to be a smith, and so Jhoric was to
be trained a stonemason. He was trained in the tradition of his Uncle, Hilgas
brother Thordon. In his 23rd year, Jhoric went on a 5 year expedition to the
@ -117,9 +144,9 @@ year, Jhoric began work on his entrance piece to the masons council: a lecter
the base of which was granite, the stand of which was marble, the desk of which
was yellowstone sandstone. The desk was decorated as a scroll, inlay with
obsidian lettering of a prayer to Moradin. After his admission as an apprentice
to Thordon, Jhoric donated the lecturn to the temple of Moradin.
to Thordon, Jhoric donated the lecturn to the temple of Moradin.</p>
Jhorics apprenticeship initially saw him dealing primarily with block cutting
<p>Jhorics apprenticeship initially saw him dealing primarily with block cutting
and transportation. Drawing on their previous arrangements, Jhoric arranged with
Horace a caravan to transport cut stone and iron. The arrangement was further
improved when the shops of Thordon and Horace (who had attained the rank of
@ -131,32 +158,160 @@ directly with architectural design, structural design, foundation laying, and
resource acquisitions. On his 70th birthday, Thordon and the council announced
that Jhoric had achieved the rank of journeyman. Jhoric continued to assist with
the construction of the temple, until its completion during his 87th year.
During those 17 years, Jhoric had established his own shop to work from and for.
During those 17 years, Jhoric had established his own shop to work from and for.</p>
On his 88th birthday, Jhoric had a divine vision, and was compelled by Moradin
<p>On his 88th birthday, Jhoric had a divine vision, and was compelled by Moradin
to pursue a specific artifact in a lost temple. After consultation and
confirmation with the priest of Moradin at the temple he just completed, Jhoric
assembled a small adventuring party and pursued the relic. He obtained the relic
during his 91st year. Upon returning the relic, the priest of Moradin instructed
Jhoric that he must travel to Baldur's Gate. Little detail was given as to the
reasoning, aside from that Moradin had once again chosen Jhoric's path. He
transferred ownership of his shop to Thordon.
Jhoric that he must travel to Baldurs Gate. Little detail was given as to the
reasoning, aside from that Moradin had once again chosen Jhorics path. He
transferred ownership of his shop to Thordon.</p>
Upon arrival in Baldur's Gate, Jhoric took up employ with the Shattershield
Guild. Having learned that this guild constructed the walls around Baldur's
<p>Upon arrival in Baldurs Gate, Jhoric took up employ with the Shattershield
Guild. Having learned that this guild constructed the walls around Baldurs
Gate, it seemed the most appropriate place for him. A wealthy noble, Jopalin,
contracted him through the guild to construct some elaborate building materials
for an addition to his building, which contains his tea shop as well his living
quarters. After several weeks, the materials were completed. Plans to deliver
the materials to the construction site were temporarily waylaid by ruffians
attempting to steal some of the finer looking items. By Moradin's hammer, they
attempting to steal some of the finer looking items. By Moradins hammer, they
were smote. As Jhoric stood outside the building watching the construction, the
tea shop exploded. Nearly everyone, including Jopalin, died. There was one
survivor from inside the shop: a half elf. A contingent from the Flaming Fist
arrested Jhoric, the half-elf, and a nearby gnome that witnessed the explosion.
This is where his story truly begins.
This is where his story truly begins.</p>
# 100 Days
I'm writing this post as part of
[#100DaysToOffload](https://100daystooffload.com), an initiative to inspire
writing habits. Perhaps you could do the same.
<h1 id="100-days">100 Days</h1>
<p>Im writing this post as part of
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
writing habits. Perhaps you could do the same.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-06-19
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,551 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Pathfinder One-Shot: The Crater of Igrevor</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/07/10/crater-of-igrevor.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="preamble-to-the-pathfinder">Preamble to the Pathfinder</h1>
<p>For many years now, Ive been playing in several Pathfinder games. I very much
enjoy the system, if only because I love options in roleplaying games. During
the COVID-19 pandemic and lockdown, in addition to my weekly game, a second
group started a weekly game. This one, unlike the campaign Ive been playing in
for the last 6 years (were level 9), sees the characters level up after
each adventure, and is meant more as a quick and fun string of one-shots. After
a few weeks of Lizzie starting and running the “campaign,” I volunteered to run.
This post covers my one-shot <code class="language-plaintext highlighter-rouge">The crater of Igrevor</code>.</p>
<h2 id="background">Background</h2>
<p>Before hopping in, a little background. The party at this point had gone on
several adventures and made a name for themselves in a relatively small town.
They decided to settle down, and because the details of this town werent known
at the time, all the players collaborated to establish the Town of Ulriksted. I
took some liberties with the what we established, and decided that a powerful
wizard has also moved to the town, seeing it as an opportunity for trade, but
also a good place for a fancy tower. Wizards love their towers. Thus, Igrevor
was born.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Igrevor Thel'lessell
Lawful Neutral Elf
Cleric of Abadar: 3 // Wizard (Conjurer: Teleportation): 3 // Mystic Theurge: 10
</code></pre></div></div>
<p>As a follower of Abadar, Igrevor is very interested in trade and travel, both on
the material and other planes. His arcane studies also focus on extraplanar
travel and research. And because Ive always been interested in the <code class="language-plaintext highlighter-rouge">Mystic
Theurge</code> class, I decided this was a perfect opportunity to make use of it. As a
trader, I focused his build on several magical crafting feats: wonderous items,
magical arms and armor, and constructs.</p>
<p>Igrevors tower sits to the north of town, along the river which flows through
Ulriksted. He offers his arcane services to the town, as well as crafting and
selling his magical wares to adventurers when they travel through. Unfortunately
for him, a powerful <a href="https://www.d20pfsrd.com/bestiary/monster-listings/monstrous-humanoids/hag/hag-night">Night
Hag</a>
has taken an interest in him, and has been haunting his dreams for a while now.
Being a powerful wizard, hes been able to defend himself and his tower
accordingly, but the Hag has decided to get some assistance. You see, Igrevor
has established a powerful teleportation and planar travel system within his
tower, albeit a well protected one. The Hag, studying this herself, conspired to
exploit this with the help of a several extraplanar allies: Several
<a href="https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/xill">Xill</a>
raiding parties, to which she provided
<a href="https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/nightmare/">Nightmare</a>
mounts; and two <a href="https://www.d20pfsrd.com/bestiary/monster-listings/dragons/dragon/-primal-umbral/umbral-dragon-juvenile">Umbral
Dragon</a>
brothers.</p>
<h1 id="the-crater-of-igrevor">The Crater of Igrevor</h1>
<blockquote>
<p><em>While enjoying a pint and a quiet night at Tuckleberrys tavern, The Leaf and
Lyre, the party is rudely interrupted by the sound of a massive explosion,
north of town. As they race outside, they see a swirling vortex of colors
stretching high into the sky, roughly where Igrevors tower is. Screams shortly
follow, and as the party pulls their attention closer, they see looming shapes
approaching the town.</em></p>
</blockquote>
<p><strong>Encounter: Xill Raiding Party</strong></p>
<blockquote>
<p><em>Four-armed, flame-red insect-like humanoid creatures, riding upon steeds of
smoke and fire</em></p>
</blockquote>
<p>The first encounter is relatively easy for the party, considering at this point
theyre level 9. There are 4 Xill, each riding a Nightmare. Each has a special
elemental key, tied to each of the four elemental planes: earth, air, water, and
fire. The last Xill looted also has a note, written in Infernal: “These keys
will keep the portals open, and the tower inaccessible. Once you have your new
hosts, return to the Ethereal plane. DO NOT LOSE THEM!” Whoops.</p>
<blockquote>
<p><em>As you move further, the party can clearly see the vortex of colors that now
envelop Igrevors tower. A chaotic flow of earth, wind, water and fire create an
impenetrable globe around what remains of the upper half of the tower, which
hangs unsupported in the sky. Beneath it, a crater is all that remains of the
bottom of the tower. As the party draws closer, you can make out 4 shimmering
portals, at each of the cardinal directions. From each, a distinct color and
element can be seen: north, a verdant green and stony landscape identifies a
portal to the plane of earth; south, a clear portal surrounded by gusts of
strong winds indicate the portal to the plane of air; to the west, a fiery
hellscape indicates the portal to the plane of fire; and to the east, a flood of
water flowing from the portal to the plane of water. Where the 4 regions meet,
the elements clash and swirl about, surging upward, creating the sphere around
the tower. As the party takes in the scene, they suddenly receive a Sending from
Igrevor: <strong>In dire need of assistance. Tower under attack. Must close portals.
Please hurry! WILL REWARD! Use teleportation circle in foyer; top of tower</strong></em></p>
</blockquote>
<p>At this point, I also introduce a small mechanic related to the portals: Each
elemental portal gives the PCs a boon:</p>
<ul>
<li>Plane of Earth: DR 1/- for each elemental planar portal open</li>
<li>Plane of Fire: Aura, 5ft: 1 fire damage for each elemental planar portal open</li>
<li>Plane of Water: Fast Healing 1 for each elemental planar portal open</li>
<li>Plane of Air: Bonus 1ft. Movement speed for each elemental planar portal open</li>
</ul>
<p>Each of these boons is removed as soon an the associated portal is closed.</p>
<p><strong>Puzzle: The Elemental Portals</strong></p>
<p>To reach the tower, the party much figure out a way to close the portals.
Initially, each portal claims a quarter of the ground around the portal. Closing
a portal causes the adjacent portals to claim the ground, increasing their power
and decreasing the power of the opposite portal. If coordinated, it should be
possible for the party to close all portals simultaneously.</p>
<blockquote>
<p>Earth Portal</p>
<ul>
<li>Trying to close the earth portal causes vines to sprout. If fire is still
open, the fire aura burns away the vines before they can entangle.</li>
<li>Closing the earth portal causes the fire and water portals to increase in
power, and the air portal to decrease in power (modified DC)</li>
<li>Entangle, DC 15: Thorny vines restrict movement and deal damage. Each round,
any creature trying to move through the area must make a reflex save or become
entangled, reducing movement speed to 10 feet and dealing 1d6 acid damage.
<ul>
<li>If the Fire or Water portal has been closed, the DC increases by 2, to a
maximum of 19 if both portals are closed.</li>
<li>If the Air portal has been closed, the DC decreases by 2</li>
<li>If a creature enters the area with the fire aura, the entangle checks
automatically succeed: The aura from the plane of wire withers the vines as
they try to wrap around you.</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote>
<p>Fire Portal</p>
<ul>
<li>Trying to close the fire portal causes intense heat waves. If water is still
open, the aura cools the temperature</li>
<li>Closing the fire portal causes earth and air to increase in power, and the
water portal to decrease in power (modified DC)</li>
<li>Heat Waves, DC 15: Intense heat radiating from the portal causes damage and
fatigue. Each round, any creature trying to move through the area must make a
fortitude save or become fatigued and take 1d6 fire damage.
<ul>
<li>If the Earth or Wind portal has been closed, the DC increases by 2, to a
maximum of 19 if both portals are closed</li>
<li>If the water portal has been closed, the DC decreases by 2</li>
<li>If a creature enters the area with the water aura, the fatigue checks
automatically succeed: The aura for the plane of water cools the area,
keeping the heat at bay.</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote>
<p>Water Portal</p>
<ul>
<li>Trying to close the water portal causes buffeting waves and sheets of rain to
disorient and hamper the player. If the air portal is still open, the aura
keeps visions clear.</li>
<li>Closing the water portal causes the earth and air portals to increase in
power, and the fire portal to decrease in power (modified DC)</li>
<li>Stormy Weather, DC 15: Torrential rain and slick ground causes difficult
terrain and disorientation. Each round, any creature trying to move through
the area must make a reflex save or fall prone, and a will save or become
disoriented, moving in a random direction (Roll 1d4: 1, move in intended
direction; 2, move to the left; 3, move to the right; 4, move backwards)
<ul>
<li>If the Earth or Wind portal has been closed, the DC increases by 2, to a
maximum of 19 if both portals are closed</li>
<li>If the earth portal has been closed, the DC decreases by 2</li>
<li>If a creature enters the area with the air aura, there is no risk of
disorientation. If a creature enters the area with the earth aura, there is
no risk of falling.</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote>
<p>Air Portal</p>
<ul>
<li>Trying to close the air portal causes strong winds and electrical shocks. If
the earth portal is still open, it helps to resist the winds.</li>
<li>Closing the air portal causes the fire and water portals to increase in power,
and the earth portal to decrease in power (modified DC)</li>
<li>Tornado, DC 15: Strong winds buffet and shock. Each round, any creature trying
to move through the area must make a fortitude save or be blown 10 ft away
from the portal, and take 1d6 electricity damage.
<ul>
<li>If the water or fire portal has been closed, the DC increases by 2, to a
maximum of 19 if both portals are closed</li>
<li>If the earth portal has been closed, the DC decreases by 2</li>
<li>If a creature enters the area with the earth aura, the push checks
automatically succeed: The earth aura grounds you, giving you resistance to
the forceful winds</li>
</ul>
</li>
</ul>
</blockquote>
<blockquote>
<p><em>As the last portal closes, the last remnants of the elemental sphere around the
tower dissipate. The tower floats silently above the group, with ruins frozen in
the air hanging beneath it. The closest pieces, which could be used to climb
into the tower proper, are 20 feet in the air.</em></p>
</blockquote>
<p>With the four elemental portals closed, the tower is now accessible. The party
must somehow ascend 20 feet into the air to get to the lowest ruins, and then a
Climb (DC 10) check to get to the rest of the tower, 10 feet further up. This,
like a few other obstacles, was a way to force the party to use resources. The
sorcerer of the group knows fly, and so this was a way to get him to use a
spell. The way I tend to run many of my games is to try and force my players to
think about their resources, and manage them accordingly. To be fair, I try to
give alternatives. For example, the party could use rope to climb up. I think in
this case, they used either <code class="language-plaintext highlighter-rouge">Mage Hand</code> or a familiar to loop rope around some
rubble, then the fighter climbed up and attached a better rope, and they were
able to ascend without expending many resources at all.</p>
<blockquote>
<p><em>Once inside, there is a corkscrew stairwell along the walls of the tower,
ascending roughly another 20 feet. At the top, light and shadows play on the
wall near where the stairs enter a new floor.</em></p>
</blockquote>
<p>If the party is perceptive or stealthy enough, they can notice several figures
waiting on the next floor, as well as get the drop on them!</p>
<p><strong>Encounter: Xill and Night Hag</strong></p>
<blockquote>
<p><em>A tall, gaunt figure with long limbs stands with two more Xill. Her skin
stretches tightly across her bones, and a grin stretches across her nightmarish
visage. Claws and fangs betray her intent.</em></p>
</blockquote>
<p>Here, again, I tried to force a change of tactics. The room the party fights in
is only 20 by 20. The usual <code class="language-plaintext highlighter-rouge">Fireball</code> approach would be dangerous. The party
was clever and perceptive, though, and the sorcerer was able to approach the
room invisibly, and place a <code class="language-plaintext highlighter-rouge">Fireball</code> in a way so as to kill the Xill. The Hag
is immune to fire, conveniently, and so the party had to deal with her some
other way. Also, she can cast <code class="language-plaintext highlighter-rouge">Invisibility</code> at will, which helper her get the
drop on the party. The sorcerer <code class="language-plaintext highlighter-rouge">Fireball</code>s the room, ducking down the
stairwell to avoid the blast. While no one can see her, she goes invisible. The
party doesnt see any threats, enters the room, and she pounces. Hags are great
opponents. They have a great kit for DMs to play with; great defenses, including
damage reduction, a solid set of immunities, and spell resistance 24! The lore
of hags, as extraplanar scavengers and traders, is also fascinating. Id like to
use one in a future campaign, especially an evil campaign, and have this be a
companion NPC or something.</p>
<p>With this encounter completed, the party stands in the aforementioned foyer, and
on the ground they see an arcane circle: the teleportation circle.</p>
<blockquote>
<p><em>The corpse of the night hag fades into shadow, as it disappears from the
material plane. With the room now secured, you see arcane symbols inscribed in
the center of the room. This must be the teleportation circle Igrevor mentioned
in his sending. As you step into the circle, you find yourself transported to a
large, cylindrical room. An inner wall breaks at four equidistant places,
revealing an outer wall, and a shimmering pool of light in a small alcove.</em></p>
</blockquote>
<blockquote>
<p><em>Exploring the space, the inner room has the teleportation circle, and many
arcane symbols drawn into the stone and the walls.</em> A Knowledge(Arcana) or
Spellcraft, DC 15, reveals the symbols to be protections related to
teleportation, plane shifting, and the like. <em>Checking the outer ring, you find
the four aforementioned pools, as well as a wall of force blocking a hallway.</em></p>
</blockquote>
<blockquote>
<p><em>Oh a whim, you glance up, and see two spheres circling the room. One is pure
white, and the other black. They maintain a perfect distance from each other.</em> A
Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
and negative energy, respectively. <em>You now notice, as the spheres pass by the
alcoves, the pools briefly shift towards the color of the sphere, and the wall
of force slightly…</em></p>
</blockquote>
<p>Or, at least, that was the original intention. As so often happens, I wasnt
quite satisfied with this part of the original adventure, and modified this it
slightly. Originally, the party was going to fight a “Planar Scion.” Initially,
the party would find two humanoid energy beings, one made of positive energy and
one made of negative energy. The beings would be indestructible, and the party
would have to merge them to create a single being, which was now vulnerable.
But, I couldnt figure out a good way to convey this information, while making
the combat engaging, in the time I had, so I scrapped it for a puzzle instead.</p>
<p><strong>Puzzle: Spheres and Pools</strong></p>
<blockquote>
<p><em>As you navigate the room, you find the hallway leading from this room, and an
opaque barrier blocking the way forward.</em></p>
</blockquote>
<blockquote>
<p><em>Oh a whim, you glance up, and see four spheres circling the room. Two are pure
white, and the others black. They maintain a perfect distance from each other.</em> A
Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
and negative energy, respectively. <em>You now notice, as the spheres pass by the
alcoves, the pools briefly shift towards the color of the sphere, and the
barrier slightly dissipates</em></p>
</blockquote>
<p>The only way through this barrier is to stop the rotating spheres. As alluded to
in the descriptive text, the pools and the spheres are related. As the spheres
pass over the pools, they shift the pools from clear towards the color of the
sphere, and I added that the spheres appear to slow down very slightly. The
party had to use positive and negative energy sources to shift the pools to the
appropriate attunement, which stopped the spheres, and opened the barrier.</p>
<p><strong>Final Encounter: Umbral Dragon</strong></p>
<blockquote>
<p><em>As the spheres stop, above the pools, they descend into the pools, and
dissolve the barrier blocking the way out of the room. Moving through the
hallway, you come to a large meeting hall. An oak table, which could almost
seat the entire town of Ulriksted, sits in the middle of the hall, with chairs
and tables strewn about. Making your way into hall, you see Igrevor to your
right, as he finishes casting a spell and striking down one of two juvenile
dragons standing opposite him. He turns to you, and speaks, “The Lords of
Ulriksted! And just in time! I am sorry, friends, I cannot assist you further;
one of these beasts took most of my arsenal to defeat. I beg your assistance!”
As he finishes, you see a sphere arise around him, and him kneel to catch his
breath.</em></p>
</blockquote>
<p>The boss battle! The juvenile Umbral Dragon! I toned down the beast a bit, but I
definitely shouldnt have. It was a good fight, and the barbarian did not hold
back. As the party defeated them, Igrevor thanked them, and their reward was any
single magical item that he can make. In addition, because Im prone to giving
my PCs overpowered items, I allowed each of them to have an item made from the
scales of the dragon, which gives them the immunities of the dragon. This turned
out to be a <em>very</em> powerful option: immune to cold, death effects, negative
energy, paralysis, sleep.</p>
<h1 id="aftermath">Aftermath</h1>
<p>I had a lot of fun with this one. The party made their way with through with
consistent progress, and the boss battle was challenging but not overwhelming. I
think, if run again, I wouldnt tone down the boss. I ended up running a
follow-up adventure, which is currently untitled, but which became a two parter,
and the driving motivation for my upcoming third adventure. I look forward to
sharing those as well! Feel free to make use of this adventure in your own
games!</p>
<h1 id="maptools">MapTools</h1>
<p>But wait, theres more! This adventure was my first foray into MapTools, a free
and open-source virtual table top system. It allows you to create detailed
maps, add tokens, set sight lines, and much more. You can host a server locally
that your players can connect to, and they can move things around themselves.
Or, if youre a bit lazier like me, you can share your screen on your voice call
of choice, and just move the tokens for players instead. I had a lot of fun
crafting Igrevors Tower in MapTools, and then sharing that with my players
during the session. It really made the game more enjoyable, and more immersive
than just a standard voice-and-video call.</p>
<p>The community for the MapTool suite has built a lot of tokens, tile sets, and
additional assets to really explore and build <em>exactly</em> what you want. I
certainly made good use of CSPs Dungeon Geomorphs (available for free directly
within MapTools, and made by <a href="https://www.crookedstaff.co.uk/">Kristian
Richards</a>), <a href="https://immortalnights.com/tokensite/">Devin
Nights</a> tokens (some of which are
available for free, but are well worth the price) and Torstans Markers and
Objects (also available directly within MapTools). Im not sure if the campaign
will load without those enabled, but for anyone interested, you can find a link
to the campaign maps for this adventure <a href="https://www.theinternetvagabond.com/src/campaigns/crater_of_igrevor.cmpgn">here (click to download)</a>.</p>
<h1 id="100-days">100 Days</h1>
<p>Im writing this post as part of
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
writing habits. Perhaps you could do the same.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://www.rptools.net/toolbox/maptool/">MapTools</a></li>
</ul>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-07-10
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,255 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Brief Exploration of Syncthing</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/07/19/syncthing-part-1.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="a-brief-exploration-of-syncthing">A Brief Exploration of Syncthing</h1>
<p>Syncthing is an incredible tool. Many days past I stumbled upon it as an
alternative to Dropbox. Its different from Dropbox, or similar services,
though, in a number of ways. For one, Syncthing is a peer-to-peer
synchronization program, whereas Dropbox is a centralized file storage and
synchronization service. When you setup and use Syncthing, the files only ever
live on whichever peers you setup. This is different from Dropbox, or similar
services, where files live on their servers. Theres more to it, and for all the
details, the <a href="https://syncthing.net/">Syncthing</a> website provides plentiful
information.</p>
<p>In this post, I want to discuss how to setup Syncthing, and some use-cases for
it. In future posts, I want to explore setting up custom relay servers, and
perhaps some more use-cases as well.</p>
<h2 id="setup">Setup</h2>
<p>Install the appropriate package for your operating system. Syncthing is
available on just about every OS out there. Syncthing already has <a href="https://docs.syncthing.net/intro/getting-started.html">thorough
installation
documentation</a>, so I
wont re-write whats already available. I will discuss how I setup my Syncthing
instead.</p>
<p>On my desktop, running Arch Linux, I installed the necessary package:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>$ sudo pacman -S syncthing
</code></pre></div></div>
<p>When I was running Gnome, I also installed <code class="language-plaintext highlighter-rouge">syncthing-gtk</code> to provide a tray
icon. After my switch to KDE Plasma, the Syncthing application displays a tray
icon by default, and so I removed the now unnecessary package. When I had a
Windows partition, I also installed <code class="language-plaintext highlighter-rouge">SyncTrazor</code> for a tray icon.</p>
<p>The second device of choice is my Android phone, where I installed the Syncthing
app (helpfully available on F-Droid too!).</p>
<p>With packages installed on both devices, I then followed the guide. All things
considered, it was a very easy process.</p>
<h2 id="use-case-music">Use-Case: Music</h2>
<p>One of the most immediate uses I had for Syncthing was music. I finally decided
to drop all streaming services, and start buying my music. As a result, I
suddenly had a growing music library available on my desktop. This was the
primary reason I decided to try Syncthing: to get music files from my desktop
onto my phone. After setup, syncing was a breeze. The new problem became space:
I have quite a bit of music now, and I dont necessarily want all of it on my
phone. Conveniently, Syncthing allows for creating a <code class="language-plaintext highlighter-rouge">.stignore</code> file, which
tells Syncthing which files to exclude from synchronizing. The
<a href="https://docs.syncthing.net/users/ignoring.html">documentation</a> provides a great
breakdown of available options. One challenge is that the <code class="language-plaintext highlighter-rouge">.stignore</code> file is
<strong>not</strong> synchronized. To get around this, I setup my ignore file to include a
second file, which <em>does</em> get synchronized. That file lists every directory and
subdirectory in my music folder, and then ends with <code class="language-plaintext highlighter-rouge">**/*</code>. For any directory or
subdirectory (generally artist and album, respectively) that I want to sync, I
place a <code class="language-plaintext highlighter-rouge">!</code> before it. The eventual plan is to automatically update the file
whenever new music is added to the directory. When I get around to that, Ill
almost certainly post about it.</p>
<h2 id="use-case-notes--to-do">Use-Case: Notes / To-Do</h2>
<p>Not long after music, I started looking around for a good to-do / note-taking
app for my phone. I wanted an application that was simple, without bells and
whistles. I tried a few before settling on
<a href="https://gsantner.net/project/markor.html">Markor</a>. This app is wonderful.
Everything I want, with almost nothing I dont. Its open-source, actively
developed, available on F-Droid; it works on local files, and <em>thats it</em>. I
started using it to track my gym workouts, make grocery lists, or track
suggestions for media. As long as I was on wi-fi, those files were waiting for
me on my desktop. Very convenient, simple, and effective.</p>
<h2 id="use-case-pictures">Use-Case: Pictures</h2>
<p>Another straight-forward use case: synchronizing pictures. As I continue to
“de-Google” my life, I needed a replacement for Google Photos. I have a Flickr,
but Im not certain that Ill hang onto it. For now, I just need a simple way to
synchronize pictures between my phone and my desktop, and Syncthing provides
that.</p>
<h1 id="100-days">100 Days</h1>
<p>Im writing this post as part of
<a href="https://100daystooffload.com">#100DaysToOffload</a>, an initiative to inspire
writing habits. Perhaps you could do the same.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://syncthing.net/">Syncthing</a></li>
<li><a href="https://github.com/canton7/SyncTrayzor">SyncTrayzor</a></li>
<li><a href="https://gsantner.net/project/markor.html">Markor</a></li>
</ul>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-07-19
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,425 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Pathfinder: Let's Make a Druid</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/09/06/pathfinder-druid.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="lets-make-a-druid">Lets Make a Druid</h1>
<p>Pathfinder has been the tabletop game of choice for my longest-running group.
One of my favorite activities is creating characters. I love theory crafting,
pouring through source material, and setting limits. While Ive made many,
<em>many</em> characters, once class I havent touched is druid. The first character I
ever made, back in a D&amp;D Second Edition, was a druid. I dont remember much from
that character, except that I had a double-scimitar (think Darth Maul
lightsabre, but scimitars). Since that, I havent done much with druids, which I
think is a shame, because its a fascinating class that ticks many of the boxes
I look for in a character. I love characters with options, that require a bit of
mastery to play. Many characters I like the most are multi-classed, mixing
spellcasting with melee combat. Some classes, though, provide all this
out-of-the-box. From the core book, both cleric and druid satisfy my demands. I
hold, still, that cleric is the most powerful class. I had this belief in D&amp;D
Third Edition, and I carry it forward into Pathfinder and D&amp;D Fifth Edition.
Thats a topic for another post, though.</p>
<h2 id="concept">Concept</h2>
<p>All of my characters come from a concept. Sometimes the concept is really
straight forward: I want a “realistic” fighter. I want a “proper” Eldritch
Knight. Sometimes, the concept is more story based, as is the case with this
druid. I read a story about a moose in Alaska that ate some apples which had
fermented, and wandered into a town drunk. I thought, “that would make a fun
animal companion!”, and thus the idea for a druid. The full backstory for the
character will be around here somewhere. For now, Ill spend the rest of this
post focusing on the build.</p>
<h2 id="build">Build</h2>
<p>Drunk moose. Drunk… spirit moose! OK, now were getting somewhere. As I
fleshed out the story, and spoke with a friend about druid, I liked the idea of
dipping one level in barbarian, then continuing with druid. That one level gets
me quite a bit: d12 hit dice (and max at first level!); +1 BAB; +10 movement
speed; and rage. The biggest downside is a delay in spellcasting, but I think
its a fair trade-off. Considering the build is equally focused on spellcasting
and melee combat, the rage will provide an additional resource where spells and
standard attacks may not be sufficient. Obviously, druid will be our favored
class.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Barbarian 1, Druid X
</code></pre></div></div>
<h2 id="skills">Skills</h2>
<p>Druids arent reknown for being particularly skillful, but they get some great
class skills. Of note, we get Handle Animal, Heal, Knowledge(Nature),
Perception, and Survival. At 4+INT skill points, we can reliably grab most of
these. Throw a point of two into Fly, Climb, and Swim, and between having a
great strength, and wild shape, we can deal with whatever obstacles those skills
require.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Handle Animal
Heal
Knowledge (Nature)
Perception
Survival
</code></pre></div></div>
<h2 id="race">Race</h2>
<p>Pathfinder has no shortage of races to choose from. For most of my builds, I try
to stick to the “basics” provided in the Core Rulebook, but I also allow myself
the Advanced Race Guide races. For this build, though, mostly due to the
backstory/concept, I went human. Well opt for a bonus HP each level in druid,
for our favored class bonus.</p>
<h2 id="feats">Feats</h2>
<p>Human gets a bonus first level feat, then all characters get a first level feat.
I tend to make characters for whatever level our campaign is at, and for now
thats 8th level. That gives me five feats total. At fifth level, Im taking
Natural Spell. Since Im a melee bruiser, Im interested in Power Attack, Vital
Strike, Toughness, and Powerful Shape, but I cant get the last one just yet.
Druids are fantastic summoners, and its very tempting to pick up Augmented
Summons. For this build, though, its a two feat investment for a strategy I
wont be using much. For first level, I went with Toughness and Power Attack. As
a first level barbarian, those two feats give me a lot of staying power. As a
druid, my BAB wont progress as strongly, but in wild shape it can give me a lot
of damage. Combined with vital strike, certain shapes will give me a single,
“two-handed” attack for a significant amount of damage at a good attack bonus.</p>
<p>Thematically, Ive opted for the feat Spirits Gift. It fits my drunken spirit
moose concept perfectly.</p>
<p>That leaves level 7. The aforementioned vital strike could be a great option.
Theres also furious focus: for a single, two-handed power attack, remove the
power attack penalty. Since well be taking advantage of our animal companion,
theres also the option for teamwork feats. Animal companions get feats, too,
and there are a few in particular that would work very well: Shake It Off would
give us both +1 on all saves; Improved Spell Sharing would let me share buffs
better; and then there are the charges. These interested me. I need to step back
briefly to consider the animal companion, so well leave our feats in an
undecided state for now.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Bonus: Toughness
Lvl 1: Power Attack
Lvl 3: Spirit's Gift
Lvl 5: Natural Spell
Lvl 7: ???
</code></pre></div></div>
<h2 id="animal-companion">Animal Companion</h2>
<p>By now it should be clear this is not really a min-max guide. There are plenty
of guides that exist already for that sort of build; Ill link a few Ive
referenced below. In those guides, animal companion choses are pretty clear:
take a wolf/dire wolf if you want to be a trip artist; take a big cat for
superior damage; take one of any number of dinosaurs for superior options. No
where is a moose mentioned, because theyre not “optimal.” Thats fine. I dont
want optimal, I want drunken spirit moose.</p>
<p>Moosen start off pretty bland. They dont get any special attacks, theyre
medium size, an average AC, an average attack, and relatively low damage. At
level 7, they get significantly better: large size; better AC; better damage,
and powerful charge. For this build, Ill focus on charging. Both I and the
moose will charge hard into whatever enemy we want to focus first. With some of
the team work feats alluded to above, we can emphasize significant bonuses and
improvements to charging.</p>
<p>If I wanted to change this to a more optimal build, Id probably go for an axe
beak. It could be the in-universe thematic equivalent of a moose. Qwark.</p>
<h2 id="feats-completed-this-time">Feats, Completed This Time</h2>
<p>In addition to my feats, I get feats for my animal companion. At character level
8, Im a 7th level druid, which means my animal companion gets 3 feats, with a
4th coming next level. The charge feats Im considering would be 3 feats
minimum: 2 teamwork feats, and then Coordinated Charge. The requirements for
Coordinated Charge are 2 teamwork feats, and a BAB +10. My animal companion, of
any flavor, wont have that until level 17! Thats a bit of a downer, but there
are some other interesting ones that lead up to it nicely. Distracting Charge
would give either my moose or me a +2 to hit against the target of a charge.
Intercept Charge could provide significant defensive benefits, though neither my
moose nor I are particularly defensive oriented. Shake It Off would give Moose
and Me +1 on all saves while were adjacent. And Improved Spell Sharing helps
with buffing. The one thing about ISS though is the requirements are a bit…
odd. It <em>seems</em> to be intended for use by a class that can share their teamwork
feats, but I think a discussion with a DM can resolve the issue.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Druid:
- Bonus: Toughness
- Lvl 1: Power Attack
- Lvl 3: Spirit's Gift
- Lvl 5: Natural Spell
- Lvl 7: Improved Spell Sharing
Moose:
- Lvl 1: Toughness
- Lvl 2: Weapon Focus (Gore)
- Lvl 5: Improved Spell Sharing
</code></pre></div></div>
<p>Looking forward slightly, next level we each get another feat.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Druid:
- Lvl 9: Powerful Shape
Moose:
- Lvl 8: Improved Natural Attack (Gore)
</code></pre></div></div>
<h2 id="gear">Gear</h2>
<p>Since were wild-shaping, we dont need to worry <em>too</em> much about armor and
weapon. We can get the benefits of a shield, so well want a decent one of
those. Ring of Protection (+1) is a standard, and Ill also opt for a Cloak of
Resistance (+2). Were a bit MAD (multi-attribute dependent), wanting high
strength and wisdom primarily, with good dexterity and constitution still. Ill
take a Headband of Inspired Wisdom (+2), and a Belt of Physical Prowess
(Strength and Constitution +2). In exchange for a weapon, Ill pick up an Amulet
of Mighty Fists (+1). Finally, because wild shape is so important, well pick up
Druid Vestments, which give us an extra wild shape use per day.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Headband of Inspired Wisdom, +2
Amulet of Mighty Fists, +1
Cloak of Resistance, +2
Druid Vestments
Belt of Physical Prowess (STR/CON), +2
Ring of Protection, +1
Heavy Wooden Shield, +1
Scimitar
</code></pre></div></div>
<p>I have a mundane item pack I generally pick up as well, which includes things
like a mirror, fishing hooks, and the like. Normally its all in a Handy
Haversack, but since Im shapshifting so often, for the druid thatll shift to a
Polymorphic Pouch.</p>
<p>Also, a Ring of Eloquence is a solid buy, to allow for discussion which
shapeshifted.</p>
<h2 id="spells">Spells</h2>
<p>Druids have a <em>lot</em> of spell options. Were a melee fighter, so many of our
spells will focus on buffing, debuffing, and control. We can also include some
out-of-combat utility. There are too many options to list, and again, guides
already exist that go through every spell and analyze them. Here are the spells
that Ill consider regularly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Level 1:
- Entangle [Control]
- Faerie Fire [Control][Debuff]
- Frostbite [Buff][Damage][Debuff]
- Goodberry [Utility]
- Longstrider [Buff]
- Magic Fang [Buff]
- Mudball [Damage][Debuff]
- Thorn Javelin [Damage][Debuff]
- Thunderstomp [Control][Debuff]
Level 2:
- Barkskin [Buff]
- Lockjaw [Buff][Control]
- Natural Rhythm [Buff][Damage]
- Resist Energy [Buff]
- Sickening Entanglement [Control][Debuff]
- Stone Call [Damage][Debuff]
- Vine Strike [Control][Damage][Debuff]
- Whip of Spiders [Damage][Debuff]
- Wilderness Soldiers [Control][Damage]
Level 3:
- Call Lightning [Damage]
- Earth Tremor [Damage][Control][Debuff]
- Fey Form I [Utility]
- Fungal Infestation [Debuff]
- Greater Magic Fang [Buff][Damage]
- Greater Thunderstomp [Control][Debuff]
- Spike Growth [Control][Damage][Debuff]
- Thorny Entanglement [Control][Damage]
- Vermin Shape I [Utility]
Level 4:
- Aspect of the Stag [Buff][Damage]
- Cape of Wasps [Buff][Damage][Debuff]
- Echolocation [Buff]
- Freedom of Movement [Buff]
- Grove of Respite [Utility]
- Slowing Mud [Control][Debuff]
- Spike Stones [Control][Damage][Debuff]
- Strong Jaw [Buff][Damage]
</code></pre></div></div>
<h2 id="gameplay">Gameplay</h2>
<p>Ive never played this build! Im sure it could use some modifications. The
emphasis on choosing a moose over other animal companions could be a serious
hinderance. I think the general play would go like this: buff self, sharing the
buffs with my animal companion; enter melee combat, preferably by charging at a
target with my animal companion; throw around control and debuff spells as
necessary.</p>
<p>This is very much a first draft, but I think it could be a fun one!</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://www.d20pfsrd.com/">Pathfinder SRD</a></li>
<li><a href="https://docs.google.com/document/d/1PXamF43boZgYtCUlyJAMojfrPaAdYyjPOaGOo1vfqdM/edit#heading=h.nxj7sifd7tvs">Prometheus Guide to the Druid</a></li>
<li><a href="https://docs.google.com/Doc?docid=0AcNyxDTKvAmqZGRtZzhzdjZfNDZnNHpzcmdodA&amp;hl=en">Treantmonks Guide to Druids</a></li>
</ul>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-09-05
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,465 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Pathfinder: Building My Eldritch Knight</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/09/27/pathfinder-eldritch-knight.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="building-my-eldritch-knight">Building My Eldritch Knight</h1>
<p>Pathfinder has been the tabletop game of choice for my longest-running group.
One of my favorite activities is creating characters. I love theory crafting,
pouring through source material, and setting limits. My favorite archetype of
characters are those that take the combat focus of a warrior and supplement it
with magic. The druid, which I <a href="/2020/09/06/pathfinder-druid.html">already touched
on</a>, is a class that
has this built in. This blending of magic and metal is often called a
<a href="https://en.wiktionary.org/wiki/gish">Gish</a>.</p>
<h2 id="concept">Concept</h2>
<p>All of my characters come from a concept. This concept is heavily mechanics
focused, and heavily opinionated: I want a “proper” eldricth knight. To me, a
proper eldritch knight doesnt use any gimmicks or tricks to get into the
prestige class sooner, doesnt rely too heavily on especially unique or strange
equipment, and sticks to a limited set of rule books.</p>
<h2 id="build">Build</h2>
<p>For this build, Ill be limiting myself the these rule books:</p>
<ul>
<li>Core Rulebook</li>
<li>the Ultimate books (Combat, Magic, Intrigue, Wilderness, and Equipment)</li>
<li>the Advanced books (Players Guide, Race, and Class)</li>
</ul>
<p>Eldritch Knight needs a martial class, and an arcane class. While there are
plenty of options, I wanted to start with the most basic options:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Fighter 1 / Wizard (Enchantment) 5 / Eldritch Knight X
</code></pre></div></div>
<p>Wizards have the option of taking a school, and it makes a lot of sense for
a melee combatant to focus on buffing itself. Thus, I went for a Transmutation
school, and specifically for the Enchantment school. For opposed schools, I
opted for Evocation and Necromancy. I lose out on some nice spells, certainly,
but considering our focus, we wouldnt be using many blasting spells. Not to
mention, our spell penetration will be relatively weak by comparison to more
spell-focused builds. Obviously, open to alternatives, but I would advise
against choosing Illusion, since it has some of the better non-transmutation
buffs in the game.</p>
<p>Wizards also have to choose an arcane bond, which is either a familiar or an
item. Familiars are incredibly useful, but for this build I really liked the
idea of having my arcane bond be my weapon. This can be <strong>very dangerous!</strong> If
your bonded item is taken from you, or destroyed, you will have a <em>very
difficult time</em> casting spells.</p>
<h2 id="traits">Traits</h2>
<p>In our Pathfinder group, we dont <em>really</em> use traits, but I use traits.
Specifically, I always use 1 trait when it is applicable, because I believe
without this trait, any Gish build that relies on multiple classes is severely
penalized: Magical Knack. This trait will allow me to up my caster level for
Wizard by up to +2, up to my maximum hit dice. This doesnt give me more spells
per day, but it does affect spell details such as duration, or saving throw DC,
that rely on caster level. Conveniently, for this build, we have exactly two
levels that do not give a bonus to wizard caster level: the 1 level of fighter
we take, and the first level of eldritch knight.</p>
<p>If two traits are allowed, solid choices are <code class="language-plaintext highlighter-rouge">Reactionary</code> for a bonus to
initiative; <code class="language-plaintext highlighter-rouge">Deft Dodger</code> for an improved reflex save; <code class="language-plaintext highlighter-rouge">Eyes and Ears of the
City</code> for a bonus on perception and to add it as a class skill; or <code class="language-plaintext highlighter-rouge">Armor
Expert</code> to reduce all armor check penalties by 1.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Magical Knack (Wizard)
</code></pre></div></div>
<h2 id="race">Race</h2>
<p>Human. Elf as a very close second. The bonus for spell penetration, the bonus to
perception and spellcraft skills, and the ability score modifiers are all solid.
But, this build wont need to worry about puncturing spell resistance, and
because were a melee combatant, we need all the constitution we can get. Human
provides a bonus +1 skill point per level, a bonus feat, and a floating +2
ability score increase, which we can use for our strength or intelligence.</p>
<h2 id="skills">Skills</h2>
<p>None of the three classes in this build provide a significant number of skills;
all three give 2 + INT per level. However, being a wizard, we <em>do</em> have a nice
intelligence score, and as a human we get an additional +1. At a minimum, well
probably get 5 skill points per level. There are no skill requirements to get
into eldritch knight, so we can focus on the “important” skills:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Knowledge (Arcana)
Knowledge (Dungeoneering)
Knowledge (Nature)
Knowledge (Planes)
Knowledge (Religion)
Perception
Sense Motive
Spellcraft
Survival
</code></pre></div></div>
<p>I also like to drop a single point in <code class="language-plaintext highlighter-rouge">Climb</code>, <code class="language-plaintext highlighter-rouge">Swim</code>, <code class="language-plaintext highlighter-rouge">Ride</code>, and <code class="language-plaintext highlighter-rouge">Fly</code>, if I
can afford to. Getting the trained bonus, combined with our generally good
strength and dexterity, means we can accomplish the basics. As a wizard, we can
further supplement these with spells. Unfortunately, we do not get perception as
a class skill, and so using a trait for that would make sense.</p>
<h2 id="feats">Feats</h2>
<p>It is very easy to get lost in feats. Like most aspects of Pathfinder, there are
an excess of options. To narrow down my focus, I tried to consider what the
characters options were: warrior focused on melee combat; wizard focused on
buffing and crowd control. Being in melee means Ill be wearing armor, and that
brings the <code class="language-plaintext highlighter-rouge">Arcane Armor Training</code> feats into relevance. Theres also the
<code class="language-plaintext highlighter-rouge">Arcane Strike</code> feat, which is perfect for arcane gish builds. Initiative is the
king of combat, and as a wizard Ill want to try going first as often as
possible. I also dont have the most hit points, due to those 5 levels of
wizard. <code class="language-plaintext highlighter-rouge">Improved Initiative</code> and <code class="language-plaintext highlighter-rouge">Toughness</code> make sense. Considering the
possibility of being in combat when buffing, <code class="language-plaintext highlighter-rouge">Combat Casting</code> makes sense. Ill
probably focus on a specific weapon, so <code class="language-plaintext highlighter-rouge">Weapon Focus</code> makes sense, and as a
fighter/eldritch knight, those levels will stack for feat requirements. That
means, <code class="language-plaintext highlighter-rouge">Weapon Specialization</code> is a possibility in the future.</p>
<p>While Im sure there are some crazy feats in other books, all these feats come
from the Core Rulebook. That excites me for some reason. Thus far, the only
non-core rulebook thing weve done is traits, and for this build we can live
without those if absolutely necessary. Again, this limit isnt necessary, but it
was something I wanted to adhere to for this build.</p>
<p>The number of feats laid out above is very quickly growing. Conveniently, Im
entering the game with 3: one for level 1, a bonus for human, and a bonus for
fighter. Thats <code class="language-plaintext highlighter-rouge">Improved Initiative</code>, <code class="language-plaintext highlighter-rouge">Toughness</code>, and <code class="language-plaintext highlighter-rouge">Weapon Focus</code>. Any
two-handed weapon will do, though Im partial to the good ol greatsword. Using
a sword-and-board will severely restrict my casting abilities, because both
hands will be full.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Improved Initiative (Level 1)
Toughness (Human bonus feat level 1)
Weapon Focus (Greatsword) (Fighter level 1 bonus combat feat)
Scribe Scroll (Wizard level 1 bonus feat)
Combat Casting (Level 3)
Arcane Strike (Level 5)
Craft Wonderous Items (Wizard level 5 bonus feat; debatable)
Arcane Armor Training (Eldritch Knight bonus combat feat)
Power Attack (Level 7)
</code></pre></div></div>
<p>The wizard gets a bonus feat at level 5, which is limited to an arcane crafting
feat, a metamagic feat, Spell Mastery, or an arcane discovery. I opted for
<code class="language-plaintext highlighter-rouge">Craft Wonderous Items</code> because I like the options it opens up. There are some
good metamagic options I considered though: <code class="language-plaintext highlighter-rouge">Extend Spell</code> makes sense for
buffing; <code class="language-plaintext highlighter-rouge">Still Spell</code> makes sense since were in armor; <code class="language-plaintext highlighter-rouge">Toppling Spell</code> can
give Magic Missile and other force damage spells some crowd-control. Since
evocation is one of my opposed schools, though, it wouldnt work for me.</p>
<p>Wizards at first level also get <code class="language-plaintext highlighter-rouge">Scribe Scroll</code> as a bonus feat. Scrolls are
great for situational spells.</p>
<h2 id="gear">Gear</h2>
<p>Theres only one piece of gear that is unusual here, and its the armor. Kikko
armor is from Ultimate Equipment, and specifically is a type of eastern setting
armor. It provides a +5 armor bonus, allows for a dexterity bonus of +4, incurs
a -3 armor check penalty, and has 20% arcane spell failure. However, it is
primarily made of metal, and thus can be made from mithral. A mithral suit of
kikko armor provides +5 armor bonus, allows for a dexterity bonus of 6, incurs
no armor check penalty, and has a 10% arcane spell failure. Those numbers are
fantastic. No armor check penalty is great for the odd <code class="language-plaintext highlighter-rouge">Climb</code> or <code class="language-plaintext highlighter-rouge">Swim</code> check,
and for when I can <code class="language-plaintext highlighter-rouge">Fly</code>. The 10% arcane spell failure chance is lowered to 0%
by <code class="language-plaintext highlighter-rouge">Arcane Armor Training</code>, allowing me to safely cast in armor when I so
choose. If limited to the core rule book, the next best bet will be either a
breastplate, or hide armor.</p>
<p>As for the weapon, I went with a greatsword. You could go with a falchion, and
“crit-fish,” but Id rather have the raw damage. Numbered enchantment bonuses
are good, but there is one specific enchantment I would highly suggest: called.
A called weapon can be teleported to the wielders hand as a swift action.
Considering our greatsword is our arcane focus, well want that in our
possession at all times, and this greatly increases the chances of that. Keen
wouldnt be too bad; increasing the critical threat range to 17-20. Spell
storing obviously makes a lot of sense, too.</p>
<p>Im a spell caster, so I picked up a few <code class="language-plaintext highlighter-rouge">Pearls of Power</code>, a few wands (<code class="language-plaintext highlighter-rouge">Cure
Light Wounds</code>, <code class="language-plaintext highlighter-rouge">Protection from Evil</code>, and <code class="language-plaintext highlighter-rouge">Expeditious Retreat</code>), and a bunch
of potions of <code class="language-plaintext highlighter-rouge">Lead Blades</code>. The reason for the potions and not scrolls or a
wand is to avoid <code class="language-plaintext highlighter-rouge">Use Magic Device</code> checks.</p>
<p>I have a collection of mundane items, including things like a bedroll, rope,
sewing needles, chalk, and a handful of alchemical items, that I like to carry
in a <code class="language-plaintext highlighter-rouge">Handy Haversack</code>.</p>
<p>Beyond all this, I went with the remainder of the “Big 6”: a <code class="language-plaintext highlighter-rouge">Cloak of
Resistance</code>, a <code class="language-plaintext highlighter-rouge">Ring of Protection</code>, a <code class="language-plaintext highlighter-rouge">Headband of Intellect</code>, and a <code class="language-plaintext highlighter-rouge">Belt of
Strength</code>.</p>
<p>With any left over funds, investing in additional spells known, scrolls, copies
of your spellbook, and cheaper wonderous items is always nice.</p>
<h2 id="spells">Spells</h2>
<p>Im a wizard (Harry), with the most versatile spell list in the game, and a book
(or books) that can get them all! Aside from the opposed school (but even then,
there are some worth getting, such as <code class="language-plaintext highlighter-rouge">False Life</code>), I went for every spell that
I even remotely thought I would use. On my sheet, thats 62 spells across levels
1 to 3. I wont mark them all here, but there are some which I wouldnt want to
be without.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Level 1
- Comprehend Languages (also a great scroll)
- Enlarge Person
- Magic Missile (despite being opposed, a solid fall-back)
- Mount
- Protection from Alignment (generally, evil and chaos make the most sense)
- Shield
- Vanish
Level 2
- False Life
- Glitterdust
- Invisibility
- Mirror Image
- Resist Energy
- Rope Trick
Level 3
- Ablative Barrier
- Fly
- Haste
- Phantom Steed
- Sleet Storm
- Versatile Weapon
</code></pre></div></div>
<p>At character level 9, we get access to 4th level wizard spells. Some spells on
my wishlist include great crowd-control like <code class="language-plaintext highlighter-rouge">Acid Pit</code> and <code class="language-plaintext highlighter-rouge">Black Tentacles</code>;
self-buffs like <code class="language-plaintext highlighter-rouge">Stoneskin</code> and <code class="language-plaintext highlighter-rouge">Greater Invisibility</code>; and utility like
<code class="language-plaintext highlighter-rouge">Dimension Door</code>, <code class="language-plaintext highlighter-rouge">Stone Shape</code>, and even <code class="language-plaintext highlighter-rouge">Wall of Fire</code> or <code class="language-plaintext highlighter-rouge">Wall of Ice</code>,
despite them being from an opposed school.</p>
<p>Also, as a wizard I got <code class="language-plaintext highlighter-rouge">Scribe Scroll</code> at first level. Many spells in my
spellbook are almost only there so I can make scrolls of them. Examples include
<code class="language-plaintext highlighter-rouge">Identify</code>, the various ability enhancements (<code class="language-plaintext highlighter-rouge">Cats Grace</code>, etc..), and so on.</p>
<h2 id="gameplay">Gameplay</h2>
<p>Ive actually played this build 3 times. The first time, as the human shown
here. The second time, as this build but with the zombie lord template added.
And a third time, but with the skeleton champion template added. Needless to
say, those templates make this build <em>incredibly powerful</em>. However, I made some
poor play decisions, thinking I was a bit more resistant that I actually was,
and so all of these characters died rather unfortunate and avoidable deaths.</p>
<p>What Ive learned through all three characters is to be patient! This build is
very capable, with many options. It can wade into combat and deal some
significant damage, even before buffs. Out of combat, it has the flexibility
that a well-filled spell book can provide, and a good coverage of knowledge
skills.</p>
<p>When engaging in combat, I always try to make sure I have the following
self-buffs up, or ready to be up:</p>
<ul>
<li><code class="language-plaintext highlighter-rouge">Protection from Alignment</code></li>
<li><code class="language-plaintext highlighter-rouge">Shield</code></li>
<li><code class="language-plaintext highlighter-rouge">Resist Energy</code></li>
<li><code class="language-plaintext highlighter-rouge">Mirror Image</code></li>
<li><code class="language-plaintext highlighter-rouge">Ablative Barrier</code></li>
</ul>
<p>For damage, theres a ranger spell called <code class="language-plaintext highlighter-rouge">Lead Blades</code> which is so good it
should almost be considered essential. <code class="language-plaintext highlighter-rouge">Versatile Weapon</code> can help with damage
resistance which is overcome with special materials.</p>
<p>As for party buffs, few options beat <code class="language-plaintext highlighter-rouge">Haste</code>.</p>
<p>For crowd-control, Ill tend towards a <code class="language-plaintext highlighter-rouge">Glitterdust</code>, <code class="language-plaintext highlighter-rouge">Pyrotechnics</code>, or <code class="language-plaintext highlighter-rouge">Sleet
Storm</code>.</p>
<p>In combat, get buffed to a point you feel capable. This may take 2 or 3 rounds.
Thats OK! Youre the second line. Use your swift action for <code class="language-plaintext highlighter-rouge">Arcane Armor
Training</code>, buff yourself, move in. Do that again, maybe moving in for a flank.
Third round, swift action for <code class="language-plaintext highlighter-rouge">Arcane Strike</code>, and unload with a <code class="language-plaintext highlighter-rouge">Power Attack</code>
greatsword swing! If youve got <code class="language-plaintext highlighter-rouge">Lead Blades</code> up, thats 3d6 + 6 (<code class="language-plaintext highlighter-rouge">Power
Attack</code>) + 2 (<code class="language-plaintext highlighter-rouge">Arcane Strike</code>) + 1.5x strength bonus. Not bad! Unfortunately,
Eldritch Knights lag behind for base-attack bonus, so at level 8 (which is the
level for all my builds) its only 1 attack a round. At level 9, you get two
attacks a round. You can also fall back on a composite longbow, which you can
also use <code class="language-plaintext highlighter-rouge">Arcane Strike</code> with for 1d8 + strength bonus + 2 (<code class="language-plaintext highlighter-rouge">Arcane Strike</code>),
which isnt as impressive as that big sword, but can still contribute. And, if
weapons wont due, youre a wizard! Keep your prepared spells flexible. <code class="language-plaintext highlighter-rouge">Scribe
Scroll</code> allows you to have certain spells available at all times. <code class="language-plaintext highlighter-rouge">Craft
Wonderous Items</code> can allow you to create plenty of gizmos and gadgets that give
you once-per-day options. Crafting is powerful; use it!</p>
<p>Ive always had fun with this build. I have, no joke, lost sleep just figuring
out cool spells to add to the spell book, worthwhile scrolls, and just imagining
scenarios. Despite the apparent short-comings, the Eldritch Knight can
definitely hold its own, though it does require a ramp-up time.</p>
<h1 id="sources">Sources</h1>
<ul>
<li><a href="https://www.d20pfsrd.com/">Pathfinder SRD</a></li>
<li><a href="https://docs.google.com/document/d/10x042PGSyqX4JqHbYFf7vDsK1NCnhBT2ck8i1eG6kpc/edit">The Muscle Wizard Guide</a></li>
</ul>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-09-27
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,237 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Character Write-up: Dabbledop Humblebumple</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2020/10/23/gnome-cleric-wizard.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>Gnomes are interesting. I cant help but play them as small frantic stressballs.
Like hobbits from <em>Lord of the Rings</em>, dialed up to 11, minus the extra
breakfasts, and plus ceaseless banter. Gnomes are fun. This write up was for a
character for the same campaign as <a href="/2018/01/27/halvar.html">Halvar</a>, when he had
to step away for a bit.</p>
<h2 id="backstory">Backstory</h2>
<p>Nothing is more tiresome than midweek afternoon service. All the candles, and
the verses, and the never-ending procession. Odins great and all, but I dont
think he cares about this. Of course, I mention that one time to the head priest
and its latrine duty for the week! I guess now it doesnt matter. All these
acolyte duties were from many years ago. It was pure fate, the day my current
teacher Maellezharon wandered into our village. He needed certain gemstones,
which my family was renowned for, and which I was responsible for that day. I
just happened to bring exactly the number he needed with me to the church that
day. Thats a habit I have. The priests say Im “blessed by foresight.”</p>
<p>Anyway, Maellezharon wanders in, and finds me, and I tell him I know hes
looking for these gemstones, and hes a bit surprised, but mentions that he
hadnt had his serious anti-divination protections up, since he figured no one
would care. I told him I didnt know what that meant. The priest chimed in that
I was blessed by foresight. Maellezharon said that was shit. I was blown away.
The priest huffed and wandered off, and I just stared at this elf who seemed
completely unphased by an ability the priests couldnt stop fawning over me for.
So I push him a bit on it, and he says that divination is mighty common, and
that if I wanted to learn more he could teach me, and hed be willing to give me
a discount on his services if I gave him a discount on the gems!</p>
<p>And man temples are booooring! So yeah, I just packed up some stuff and told the
priests I had to go because “foresight told me I had to!” and caught up with
Maellezharon and off we went! I brought some extra gems, and a few extra
sandwiches (which he seemed off-put by, which I account to his dainty elf ways,
which meant more for me!).</p>
<p>For the most part, it was kind of boring - but not as boring as the temple!
Nothing is as boring as that. Trust me. Just routine travel along “safe and
well-known roads” (says Maellezharon) to “respectable and trustworthy
merchants” (says Maellezharon) for “law-abiding and fair trade deals.” (says
Maellezharon). I was a bit surprised to find myself still saying a prayer here
and there but old habits die hard. The more we travelled, the more Maellezharon
would teach me. First he helped me refine my portent abilities, and got me a
spellbook, and let me copy some of his spells into it. Then, in each town we
went to, we would combine our powers to get the best deals possible. I would
call upon my divine powers to aid him, and he would wheel-and-deal his way
through trade deals and contracts. He insisted, time and again, that we do
things “legally and fair” (his words) which was fine by me.</p>
<p>Then, the event happened. And magic suddenly left, and Maellezharon… did not
take that well. I should say, this was probably 5 or so years into his
mentorship. He had taught me many things, and I was developing into “quite the
capable wizard, if I do say so myself” (Maellezharon said that). We had
travelled all over the place, and eventually Maellezharon decided hed like to
“invest in real estate since its like free money” so he bought a tower and did
the whole typical wizard thing: magic plants, and a few animated objects as
guards, and what not. I helped with that too, which was really fun. Anyway when
the event happened, we were trading and suddenly I just felt this… emptiness.
Like, a part of my body was suddenly missing. I looked at Maellezharon and he
was pale as bone. He just stared at his hands, then looked at the merchant and
told him he had to go, and he just left. He didnt even get his things, he just
stumbled out of the shop. I grabbed anything that was ours, and walked outside
and saw him just standing there, waving his arms and trying to say the words,
and his eyes were a bit crazy-like, and he was sweating. After about 20 minutes,
he just sat down and stared. It took me almost 4 hours to finally get him up and
to an inn. The next day we went back to the tower, and it was really quite a sad
sight. The plants had all died (and not because I forgot to water them I always
watered them I am responsible), the guards were piles of rubble. I helped him
in, to his room, to his favorite chair, where he just slumped down and stared
into the empty, cold fireplace. For a few weeks I tended to him, making sure he
at least ate. And I kept up the place, cleaning as best I could. But after a
while, I started worrying about my family, and so I hired a local farm boy to
take care of Maellezharon while I was gone (feed him twice a day, make sure he
uses the loo, and dont let him hurt himself).</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2020-10-23
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,392 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Oblivion on Linux Part 1, Tools</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2021/11/20/oblivion-linux.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>Oblivion holds a special place in my heart. I remember spending a summer in the
town I went to college in, and playing Oblivion almost every day while listening
to Dream Theaters <em>Systematic Chaos</em>. Back then, I wasnt aware of modding, so
it was literally just vanilla Oblivion for hours upon hours. I also used
Windows, so the game would run fine. Now, things have changed. The easier issue
to deal with is playing Oblivion on Linux. Thanks to Valve, Oblivion runs
excellent with Proton out of the box. The more challenging issue is mods, and
thats what this write-up is all about!</p>
<h1 id="vanilla-oblivion">Vanilla Oblivion</h1>
<p>Starting from the beginning, Oblivion is available on many platforms, but my
experiences here will assume the Steam installation. The primary difference will
be with respect to how the tools used to mod Oblivion are run. Ive got the
Game of the Year edition, which is Steam ID <code class="language-plaintext highlighter-rouge">22330</code>.</p>
<h1 id="modding-tools">Modding Tools</h1>
<p>Much of modding Oblivion is done with the help of additional tools. A mod
manager is used for installing and configuring the mods. There are several
options for Oblivion, and the one Ive been suggested and use is called <code class="language-plaintext highlighter-rouge">Wrye
Bash</code>. Mod load order is also important, and the tool Im using to help with
that is <code class="language-plaintext highlighter-rouge">LOOT</code>. Finally, <code class="language-plaintext highlighter-rouge">TES4Edit</code>, <code class="language-plaintext highlighter-rouge">TES4LODGen</code> and <code class="language-plaintext highlighter-rouge">BethINI</code> each helps with
performance and configuration.</p>
<p>I have the following directory structure setup for my mods:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>OblivionMods
|- Archives
|- Backups
|- Tools
|- WryeBash
</code></pre></div></div>
<p><em>Archives</em> is where I store the actual archives of the mods I use. <em>Backups</em> is
where I store any relevant backups for my Oblivion game, such as saves or
configuration files for the mods. <em>Tools</em> is where I put the executables for all
the tools I mentioned above. <em>WryeBash</em> is used to store the unarchived mods
(which it calls “projects”) and mod data that <code class="language-plaintext highlighter-rouge">Wrye Bash</code> uses.</p>
<p>Because each of these tools is run using Proton, I also have a set of aliases
configured. Similar aliases could be setup for using Wine instead. For each
alias, modify the paths accordingly for your setup. I should also note that Im
running Oblivion using <a href="https://github.com/GloriousEggroll/proton-ge-custom">Glorious Eggrolls
Proton</a>, version 6.16. I
havent experimented with different Proton versions to find the most performant
version, but if I do in the future, Ill mention it.</p>
<h2 id="wrye-bash">Wrye Bash</h2>
<ul>
<li><a href="https://github.com/wrye-bash/wrye-bash">Project Link</a></li>
<li><a href="https://wrye-bash.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/22368">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">Wrye Bash</code> is involved. I dont know how to use it fully. There are a few
guides that helped me learn how to use it enough to get mods installed and
configured though. The first, and very relevant, is at <a href="https://www.shrine-of-kynareth.de/wrye-bash-on-linux">Shrine of
Kynareth</a>. I referenced
this guide, and the
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab">other</a>
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-2-load-order-bashed-patch-and-savegame-profiles">written</a>
<a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-3-ini-edits-tools-and-tricks">guides</a>
to learn how Wrye Bash works and what to setup. I also learned some tricks from
the <a href="https://www.nexusmods.com/oblivion/mods/49898">Oblivion Comprehensive Modding Guide by
Dispensation</a>.</p>
<h3 id="setup">Setup</h3>
<p>The easiest option is to use the stand-alone executable from the GitHub releases
page. Extract the archive, and then use Proton to run the executable in the
<em>Mopy</em> directory. This is the alias I use; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-wrye='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/Mopy/Wrye\ Bash.exe'
</code></pre></div></div>
<p>Additionally, I copy the <em>Mopy/bash_default.ini</em> file to <em>Mopy/bash.ini</em> and set
the <code class="language-plaintext highlighter-rouge">sOblivionMods</code> to “Z:\path\to\OblivionMods\WryeBash”, <code class="language-plaintext highlighter-rouge">sBashModData</code> to
“Z:\path\to\OblivionMods\WryeBash\Bash Mod Data”, <code class="language-plaintext highlighter-rouge">sInstallersData</code> to
“Z:\path\to\OblivionMods\WryeBash\Bash Installers”, and <code class="language-plaintext highlighter-rouge">sOblivionPath</code> to
“Z:\path\to\steam\steamapps\common\Oblivion”. In Wine, <code class="language-plaintext highlighter-rouge">Z:</code> references your
local file system. Theoretically, because Wine is awesome, you may be able to
use Linux file system paths in the configuration, but I went with this.</p>
<h3 id="usage">Usage</h3>
<p>The guides above provide a very thorough explanation of use. Of note: <code class="language-plaintext highlighter-rouge">Wrye
Bash</code> in Wine does not like drag-and-drop actions, so dont do them. I dont do
anything special with my usage of <code class="language-plaintext highlighter-rouge">Wrye Bash</code>: run the alias, install mods from
the Installers tab, enable or disable mods from the Mods tab. I generally dont
do anything else.</p>
<h2 id="loot">LOOT</h2>
<ul>
<li><a href="https://github.com/loot/loot">Project Link</a></li>
<li><a href="https://loot.github.io/">Homepage</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">LOOT</code> sets the proper load order for mods. There is a native Linux client, but
I ran into <a href="https://github.com/loot/loot/issues/1615">this issue</a> and decided to
just use the Windows version. The GitHub releases page includes a 7z archive
with a stand-alone executable, and thats what I used.</p>
<h3 id="setup-1">Setup</h3>
<p>Download the stand-alone executable, and extract it to <em>OblivionMods/Tools</em>.
This is the alias I use; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-loot='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/LOOT/LOOT.exe'
</code></pre></div></div>
<p>On first run, it should auto-detect the Oblivion installation and configure
everything accordingly. If it doesnt, there are instructions on the Homepage
for configuration.</p>
<h3 id="usage-1">Usage</h3>
<p><code class="language-plaintext highlighter-rouge">LOOT</code> is pretty straight forward. It references a master list of mods to
determine the optimal load order for all installed mods. I ran into an issue
where <code class="language-plaintext highlighter-rouge">LOOT</code> couldnt properly download the master list, and so as a work-around
I manually downloaded the master list, and then configured <code class="language-plaintext highlighter-rouge">LOOT</code> to use that
local file instead of the remote Git repository. Those instructions are covered
<a href="https://loot.github.io/docs/help/LOOT-FAQs.html#git-errors">in the FAQ</a>. If
everything works, and the list of mods is there, then you can run a sort, and
apply the changes. <code class="language-plaintext highlighter-rouge">LOOT</code> will inform you of any “dirty” mods, which you can use
the next tool the clear up. I ended up keeping <code class="language-plaintext highlighter-rouge">LOOT</code> open, while stepping
through the cleaning procedure for each mod, until everything looked happy.</p>
<h2 id="tes4edit">TES4Edit</h2>
<ul>
<li><a href="https://github.com/TES5Edit/TES5Edit">Project Link</a></li>
<li><a href="https://tes5edit.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/11536">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">TES4Edit</code> is the Oblivion version of <code class="language-plaintext highlighter-rouge">xEdit</code>, which is an incredible tool. All
I use it for is to clean dirty mods. <code class="language-plaintext highlighter-rouge">LOOT</code> provides a link to the <a href="https://tes5edit.github.io/docs/7-mod-cleaning-and-error-checking.html#ThreeEasyStepstocleanMods">quick cleaning
guide</a>,
which gives us exactly the steps required.</p>
<h3 id="setup-2">Setup</h3>
<p>Download the latest build from GitHub, and extract it to <em>OblivionMods/Tools</em>.
This is the alias I use, which runs the “Quick Auto Clean” function; replace
paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit-quick='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4EditQuickAutoClean.exe'
</code></pre></div></div>
<p>TES4Edit is also useful for other, non-quick-clean functionality, so I have this
alias for that:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4edit='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4Edit.exe'
</code></pre></div></div>
<h3 id="usage-2">Usage</h3>
<p>Run the quick-clean alias, select the problematic file, and click “OK”. Only one
file can be cleaned at a time.</p>
<h2 id="tes4lodgen">TES4LODGen</h2>
<ul>
<li><a href="https://github.com/TES5Edit/xLODGen">Project Link</a></li>
<li><a href="https://tes5edit.github.io/docs/16-xLODGen.html">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/15781?tab=description">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">TES4LODGen</code> will generate the relevant LOD files ahead of time. Apparently it
helps with performance in-game, but may result in slower initial load times when
starting the game.</p>
<h3 id="setup-3">Setup</h3>
<p>I downloaded the files from Nexus, and extracted the archive to
<em>OblivionMods/Tools/TES4LODGen</em>. Heres the alias; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-tes4lodgen='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4LODGen/TES4LODGen.exe'
</code></pre></div></div>
<h3 id="usage-3">Usage</h3>
<p>Run the alias. The program should auto-find everything, do some magic, and will
eventually report that it has finished. At that point, you can close the
application.</p>
<h2 id="bethini">BethINI</h2>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/46440">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">BethINI</code> helps manage the “oblivion.ini” file, providing sane options and a
wizard for configuration. While not required, it does help with optimizations.</p>
<h3 id="setup-4">Setup</h3>
<p>I downloaded the files from Nexus, and extracted the archive to
<em>OblivionMods/Tools/Bethini</em>. If you use AutoHotKey apparently you can use that
to run it, but that doesnt make sense to me, so I went with the stand-alone
executable. Heres the alias; replace paths accordingly:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>alias oblivion-bethini='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/BethINI/BethINI.exe'
</code></pre></div></div>
<h3 id="usage-4">Usage</h3>
<p>Just like the rest, run the alias and answer the questions. <code class="language-plaintext highlighter-rouge">BethINI</code> will make
backups of the modified INI files before over-writing them.</p>
<h1 id="next-steps">Next Steps</h1>
<p>Once all the tools are assembled, and usable, the next step is mods! In my next
post, Ill cover some of my favorite mods. The third part will then be a
complete walk-thru of my installation of my full mod list.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2021-11-28
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,331 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Oblivion on Linux Part 2, Mods</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2021/12/09/oblivion-linux-2.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<p>Every players mod list is different. Some will focus on visuals, making the
game as graphically impressive and pretty as possible. Others care primarily
about additional content. I tend towards the later, with a preference for
additional survival or realism mods. I recommend starting with the “Core Mods”
section in the <a href="https://www.nexusmods.com/oblivion/mods/49898">Oblivion Comprehensive Modding Guide by
Dispensation</a> which will cover
some essential performance and enhancement mods.</p>
<p>Below are some specific mods I would like to highlight, and which I enjoy.</p>
<h2 id="survival-related">Survival Related</h2>
<h3 id="basic-primary-needs--personal-hygiene">Basic Primary Needs &amp; Personal Hygiene</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/37088">Nexus Link - Basic Primary Needs</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/42038_">Nexus Link - Basic Personal Hygiene</a></li>
</ul>
<p>These two mods cover most of the survival aspects of my mod pack. “Basic Primary
Needs” adds hunger, thirst, and fatigue, while “Basic Personal Hygiene” adds
cleanliness. Managing these will feel tedious to some, but I really like having
to eat and drink, and visiting a bath house after a long time adventuring.</p>
<p>Each mod can make use of <a href="https://www.nexusmods.com/oblivion/mods/34905">additional HUD Status
Bars</a>, which makes tracking the
new needs much easier.</p>
<h3 id="travelers-tent">Travelers Tent</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/49654">Nexus Link</a></li>
</ul>
<p>This mod adds a portable player home, and is supremely comfy. Because I avoid
fast-travel, I wanted some sort of camping mod. I originally used <a href="https://www.nexusmods.com/oblivion/mods/37197">Maskars
Camping Mod</a> before learning of
this mod. By comparison, the tent in Travelers Tent feels almost like cheating,
but sometimes its important to treat yourself.</p>
<h2 id="world-enhancement">World Enhancement</h2>
<p>These I would consider my graphical improvements. Im generally not too
concerned with making the game look good, but I love making the game feel more
realistic. These mods make Cyrodiil feel more alive.</p>
<h3 id="better-cities">Better Cities</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/16513/">Nexus Link</a></li>
</ul>
<p>This is a massive collection of city overhaul and enhancement mods. I was
awe-struck when I walked around the Imperial City for the first time with this
mod enabled. Bravil felt like a dangerous, crowded harbor town. Leyawin looks
like an actual place people live. Though the improvements do come with FPS hits.
Doubly-so if enabling the Open Cities option, which moves cities into the
overworld space, instead of their own individual instances. Its a balancing
act: the immersion of walking directly into a city sometimes isnt worth
crashing to desktop when adventuring around cities.</p>
<h3 id="cobl">COBL</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/21104">Nexus Link</a></li>
</ul>
<p>“Common Oblivion” enriches the world of Oblivion by adding lots of little
things, and helping different mods “talk” to each other. I like to think of it
as filling in a lot of the details that feel missing from vanilla Oblivion.</p>
<h3 id="enhanced-economy">Enhanced Economy</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/25078">Nexus Link</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/47184">Lubrons Patch</a></li>
</ul>
<p>This mod and the corresponding patch make the economy of the world more dynamic.
What I really like are the merchant quests that are added. Several merchants in
each town will ask you to find an item in one of the nearby dungeons. It adds
flavor to the game in just the right way.</p>
<p>Lubrons Patch for Enhanced Economy fixes some bugs and cleans up the code a
bit.</p>
<h3 id="lights-of-oblivion---road-lanterns">Lights of Oblivion - Road Lanterns</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/46131">Nexus Link</a></li>
</ul>
<p>A very simple mod that I feel really enhances my travel around Cyrodiil. I avoid
fast-traveling whenever possible, and walking lit roads at night feels comfy.
Im partial to the Imperial model.</p>
<h3 id="natural-environments">Natural Environments</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/2536">Nexus Link</a></li>
</ul>
<p>Arguably the only graphical enhancement mod, Natural Environments provides
options for modifying the weather, water, and vegetation around Cyrodiil. The
weather and vegetation enhancements especially stand out. Overall the mods
dont cause me much performance impact, if any.</p>
<h3 id="cyrodiil-travel-services">Cyrodiil Travel Services</h3>
<ul>
<li><a href="https://www.afkmods.com/index.php?/files/file/263-cyrodiil-travel-services/">AFK Mods Link</a></li>
</ul>
<p>I really enjoyed that in Skyrim there was a dude with a wagon you could pay to
travel to the various cities. This mod adds similar functionality, and then
some. Useful when playing the game without fast-travel enabled.</p>
<h2 id="overhauls">Overhauls</h2>
<p>Arguably, these are the heavy hitters. These mods will alter the mechanics of
the game, often making things more challenging but also more rewarding.</p>
<h3 id="maskars-oblivion-overhaul">Maskars Oblivion Overhaul</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/42780">Nexus Link</a></li>
</ul>
<p>Maskars Overhaul is a massive endeavor. It “[improves] many aspects of the
game, while maintaining the overall feel of the game and ensuring compatibility
with most other mods.” I think it does so with great success! However, be
forewarned, that this overhaul makes the game more challenging.</p>
<p>There is too much to cover about Maskars in this post, but I highly recommend
it. It comes with a PDF instruction manual, which is 61 pages long.</p>
<h3 id="vanilla-combat-enhanced">Vanilla Combat Enhanced</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/45314">Nexus Link</a></li>
</ul>
<p>As the name implies, this overhaul adjusts but does not change the vanilla
combat experience. Whereas other mods add new moves or fatigue systems, this mod
updates the vanilla combat experience to be more challenging and fair. It works
with Maskars after a small modification, which will be covered in the next
part. This is one of the mods that I havent played with for too long, and
there are definitely some additional or alternative combat mods Im considering.
Namely, <a href="https://www.nexusmods.com/oblivion/mods/49873">Dynamic Oblivion Combat</a>
and <a href="https://www.nexusmods.com/oblivion/mods/49939">Combat Additions</a>.</p>
<h3 id="supreme-magicka">Supreme Magicka</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/12466">Nexus Link</a></li>
</ul>
<p>Rounding out the trio is a magic overhaul. Supreme Magicka approaches magic in
Oblivion in a similar way to Vanilla Combat Enhanced with combat: it seeks to
improve and expand, without replacing. To continue similarities, this mod is one
I havent sank my teeth into as much. The characters Ive been playing most
recently havent achieved very powerful magical capabilities yet. An alternative
to this mod is <a href="https://www.nexusmods.com/oblivion/mods/49096">Av Latta
Magicka</a>.</p>
<h2 id="next-steps">Next Steps</h2>
<p>In the last part of this series, I want to walk through a complete install of
Oblivion from scratch.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2021-12-09
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,299 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Syncthing on the Steam Deck</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2022/07/04/steam_deck_syncthing.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="syncthing-on-the-steam-deck-updated">Syncthing on the Steam Deck (Updated!)</h1>
<h2 id="update">Update</h2>
<p>Turns out, when you update the SteamOS, it completely over-writes the operating
system. All of the setup I had originally written was great, if I never update,
which is unacceptable. Not all is lost; the quest simply gets harder. If I cant
rely on system-wide services, then I rely on user services.</p>
<h3 id="the-wrong-way-system-wide-services">The Wrong Way: System-Wide Services</h3>
<p>My first attempt was to setup Syncthing as a system-wide service managed by
<code class="language-plaintext highlighter-rouge">systemd</code>, installed via <code class="language-plaintext highlighter-rouge">pacman</code>. There are several problems with this. First,
it requires disabling the read-only file-system. Next, <code class="language-plaintext highlighter-rouge">pacman</code> is not setup nor
reliable, since every SteamOS update will over-write any changes I make to any
of the read-only file-system, including the directories that <code class="language-plaintext highlighter-rouge">pacman</code> relies on.
Related, the update will also erase the Syncthing package. This means I either
never update (inadvisable, and unacceptable), or I setup Syncthing not in the
read-only file-system.</p>
<h3 id="the-right-way-user-services">The Right Way: User Services</h3>
<p>systemd allows for non-root-based services, called user services. The Arch Wiki
<a href="https://wiki.archlinux.org/title/Systemd/User">systemd/User</a> article describes
this functionality much more than I will. Here are the relevant details:</p>
<ul>
<li>User services can be enabled to start when a user logs in</li>
<li>Service files are stored in the users home directory (specifically
<code class="language-plaintext highlighter-rouge">~/.config/systemd/user</code>)</li>
<li>No root privileges are required. No modifying the read-only file-system</li>
</ul>
<h2 id="syncthing">Syncthing</h2>
<p>Syncthing is incredible. Ive <a href="2020/07/19/syncthing-part-1.html">written about it
before</a>, but the setup here is a bit more
involved. The Steam Deck runs Arch Linux (and have I told you yet today that I
do too?), so the Arch Wiki <a href="https://wiki.archlinux.org/title/Syncthing">article on
Syncthing</a> gives some good insight.
When I initially started this process, I installed the SyncthingGTK application
from the Discover Store. This means it is a Flatpak application, and so doesnt
require elevated user privileges. I also tried the Syncthingy application, which
explicitly calls out Steam Deck users. However, both require running the Flatpak
in the background (like some users do for Discord or Spotify). I dont like
this, it feels off, and thus I sought a different approach.</p>
<h2 id="sshd-still-incredibly-useful">SSHD: Still Incredibly Useful</h2>
<p>I got real tired real quick of using the on-screen keyboard. After
complaining, a friend recommended I enable <code class="language-plaintext highlighter-rouge">sshd</code> and just remote in to the
device. Doing so was a breeze, and I recommend to others who dont have a
physical keyboard they can plug into their device. Drop to desktop mode
(hold the power button for a few seconds, and select the option), and start a
terminal (default is Konsole). Before remotely accessing the device, or using
elevated privileges via <code class="language-plaintext highlighter-rouge">sudo</code>, I need to set a password for the default user,
<em>deck</em>. In the terminal, type <code class="language-plaintext highlighter-rouge">passwd</code> and set it (and then put it in your
password vault so you dont forget. You <em>do</em> have a password vault, right?).
Start the service, <code class="language-plaintext highlighter-rouge">sudo systemctl start sshd</code>, and optionally enable it to have
<code class="language-plaintext highlighter-rouge">sshd</code> automatically started on each boot (<code class="language-plaintext highlighter-rouge">sudo systemctl enable sshd</code>). Get
the device IP with <code class="language-plaintext highlighter-rouge">ip addr list</code>, from my desktop run <code class="language-plaintext highlighter-rouge">ssh deck@ip-address</code>,
type in the password, and now Im a grade-A Hackermans.</p>
<p>This setting is not reset on SteamOS updates, that I can tell. Once enabled,
this will always start at boot, and always be on until explicitly turned off. Be
mindful of that if you decide to wander away from your home network; maybe turn
it off in public if you dont need it.</p>
<h2 id="setup">Setup</h2>
<p>There are 2 things required: a systemd service file, and the <code class="language-plaintext highlighter-rouge">syncthing</code>
binary. Syncthing is written in Go, and a compiled binary can be downloaded that
has no dependencies or installation requirements. It can be downloaded from
the <a href="https://github.com/syncthing/syncthing/releases/tag/v1.20.3">Syncthing
Releases</a> page for
many platforms and architectures. The Steam Deck is a Linux platform, using the
AMD64 architecture (or x86_64), so I grab that one. Ill note here, since I have
SSH access, I do all the editing and downloading on my desktop, and then
transfer the files using <code class="language-plaintext highlighter-rouge">scp</code> to the Deck. All of these steps can be done on
the Deck itself, without SSH access. Once the proper tarball has been
downloaded, extract it, and within will be the <code class="language-plaintext highlighter-rouge">syncthing</code> binary, ready to
rock. I copy/move the binary to <code class="language-plaintext highlighter-rouge">~/.local/bin/syncthing</code> on the Deck. The exact
location is less important than ensuring the binary is within my home directory
on the Deck.</p>
<p>The systemd serivce file can also be taken from the extracted tarball, but
requires modification. In the tarball, it is
<code class="language-plaintext highlighter-rouge">etc/linux-systemd/user/syncthing.service</code>. Copy this file to
<code class="language-plaintext highlighter-rouge">~/.config/systemd/user</code> on the Deck, and edit the “ExecStart” line in the
“[Service]” section from</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
[Service]
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
...
</code></pre></div></div>
<p>to</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>...
[Service]
ExecStart=/home/deck/.local/bin/syncthing serve --no-browser --no-restart --logflags=0
...
</code></pre></div></div>
<p>(or wherever you decided to put the local <code class="language-plaintext highlighter-rouge">syncthing</code> binary)</p>
<p>With everything in place, I can now enable and start the Syncthing user service:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>systemctl --user enable syncthing.service
systemctl --user start syncthing.service
</code></pre></div></div>
<p>Since I dont have a physical keyboard plugged in, I modify my SSH command
slightly to forward the Syncthing web-UI from the Deck to my local machine:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>ssh -L 31337:deck-ip-goes-here:8384 deck@deck-ip-goes-here
</code></pre></div></div>
<p>Now, on my local machine I can open one tab to <code class="language-plaintext highlighter-rouge">localhost:8384</code>, to show
Syncthing on my local machine, and another tab to <code class="language-plaintext highlighter-rouge">localhost:31337</code> to show
Syncthing on my Deck. From here, I add my local machine as a device on my Deck,
and begin sharing folders.</p>
<h2 id="closing-thoughts">Closing Thoughts</h2>
<p>Ive been using this setup for about a week now. Ive synced almost 20GB of
files, including configurations and saves for Retroarch. It works after
restarts, OS and client upgrades, and waking the device from sleep. It sits
quietly in the background, without having to start up applications. The biggest
problem is that it doesnt automatically update to the newest version of
Syncthing. Its also a bit involved to setup. To that end, Ive written a tool
to help with setup: <a href="https://codeberg.org/VagabondAzulien/steam-deck-syncthing">Steam Deck Syncthing
Setup</a>. Im still
finishing it up, but I intend to make use of it to keep my version of Syncthing
up-to-date. If you use it, let me know!</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2022-07-12
<br />
[
<a href="/topics/gaming">gaming</a>
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,289 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Funkwhale On Linode with Object Storage</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2022/09/27/linode_funkwhale.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="funkwhale-on-linode-with-object-storage">Funkwhale on Linode with Object Storage</h1>
<h2 id="funkwhale-setup">Funkwhale Setup</h2>
<p><a href="https://funkwhale.audio/">Funkwhale</a> is a decentralized music service,
connecting to the <a href="https://en.wikipedia.org/wiki/Fediverse">fediverse</a> using the
ActivityPub protocol. It is a web-based application, allowing users to upload,
listen, and share music and podcasts. I think its a cool project, and I can
self-host it, so I did. For a while, Funkwhale offered an all-in-one Docker
container, but they shifted focus to a multi-container approach. I had delayed
my transition from all-in-one to multi-container, but finally this past weekend
I found myself with time and motivation to get it done. The installation of
Funkwhale using Docker is very straight forward. The community has developed a
series of templates that can be fetched, modified, and used to get started very
quickly and easily. Those instructions are
<a href="https://docs.funkwhale.audio/installation/docker.html#multi-container-installation">here</a>.
The only significant modification I made was using <code class="language-plaintext highlighter-rouge">/opt/funkwhale</code> as my
default data and media root. I keep all my Docker configuration in directories
in my home directory as well. Much of these changes can be established in the
<code class="language-plaintext highlighter-rouge">.env</code> file discussed in the installation instructions, but I also scrubbed the
template files created and used during installation to make sure the directories
were as I wanted them. I also proxy Funkwhale and many other services behind
nginx, and there were a few <a href="https://docs.funkwhale.audio/installation/index.html#nginx">additional
steps</a> I had to
take. With all that complete, I had transitioned successfully. I already had SSL
certificates, but if thats also a requirement, they can easily be provisioned
using <a href="https://certbot.eff.org/">Certbot</a>.</p>
<h2 id="object-storage-setup">Object Storage Setup</h2>
<p>In my old setup, I leveraged Funkwhales ability to <a href="https://docs.funkwhale.audio/admin/importing-music.html">in-place import
music</a>. I transferred
about 70GB worth of music to my VPS (using Syncthing &lt;3), filling the disk
almost entirely (<em>98%</em>). It was a temporary solution for a road trip, and I
knew I couldnt keep it that way for long. Funkwhale has the ability to leverage
S3-compatible object storage, and Linode, the provider I already use for my VPS,
offers object storage. Any of the other major cloud providers will also do the
trick; I just went with what was easiest. On the Linode side, theres not much
to it. I created a new bucket, labeled it accordingly, created an access key,
and that was it. The Funkwhale side proved to be a bit challenging, but not, it
turns out, due to configuration. Well, <em>technically</em> it was.</p>
<p>The relevant configuration options on the Funkwhale side, in the <code class="language-plaintext highlighter-rouge">.env</code> file:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>## External storages configuration
# Funkwhale can store uploaded files on Amazon S3 and S3-compatible storages (such as Minio)
# Uncomment and fill the variables below
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_STORAGE_BUCKET_NAME=
# An optional bucket subdirectory were you want to store the files. This is especially useful
# if you plan to use share the bucket with other services
# AWS_LOCATION=
# If you use a S3-compatible storage such as minio, set the following variable
# the full URL to the storage server. Example:
# AWS_S3_ENDPOINT_URL=https://minio.mydomain.com
AWS_S3_ENDPOINT_URL=
# If you want to serve media directly from your S3 bucket rather than through a proxy,
# set this to false
# PROXY_MEDIA=false
# If you are using Amazon S3 to serve media directly, you will need to specify your region
# name in order to access files. Example:
# AWS_S3_REGION_NAME=eu-west-2
# AWS_S3_REGION_NAME=
# If you are using Amazon S3, use this setting to configure how long generated URLs should stay
# valid. The default value is 3600 (60 minutes). The maximum accepted value is 604800 (7 days)
# AWS_QUERYSTRING_EXPIRE=
# If you are using an S3-compatible object storage provider, and need to provide a default
# ACL for object uploads that is different from the default applied by boto3, you may
# override it here. Example:
# AWS_DEFAULT_ACL=public-read
# Available options can be found here: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl
AWS_DEFAULT_ACL=
</code></pre></div></div>
<p>Ive included the comments. The entire file is commented, and generally easy
enough to figure out. On the Linode side, when I generated the access key, it
provided me an <em>Access Key</em> and a <em>Secret Key</em>. I had already created a bucket,
and so I had the <em>Bucket Name</em>. The challenge for me was what the <em>Endpoint URL</em>
was, and if I needed to set a <em>Region Name</em> and <em>ACL</em>. Linodes documentation on
their object storage offering is a bit anemic, and so I made use of their setup
instructions for <a href="https://www.linode.com/docs/products/storage/object-storage/guides/s3cmd/">using s3cmd with Linode object
storage</a>.
From this guide, I was able to both setup <code class="language-plaintext highlighter-rouge">s3cmd</code>, and also determine what the
<em>Endpoint URL</em> would be. I also set the <em>Region Name</em> and <em>ACL</em> to match what
the UI was showing, but Im still not certain their necessary. Heres the trick,
and the cause of a few hours-worth of confusion: restarting the Docker
containers wasnt re-reading the <code class="language-plaintext highlighter-rouge">.env</code> file; I had to completely stop and
re-create them. It wasnt until I ran <code class="language-plaintext highlighter-rouge">docker inspect funkwhale-docker_api_1</code>
and noticed the environment variables werent set that I figured this out. Could
be this is common knowledge for Docker-gurus; now I know. With the
configuration in place, and the containers recreated, I was able to upload files
through Funkwhale, and watch them be stored in my Linode bucket. My final
configuration options were as follows:</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>AWS_ACCESS_KEY_ID=&lt;stuff&gt;
AWS_SECRET_ACCESS_KEY=&lt;secret stuff&gt;
AWS_STORAGE_BUCKET_NAME=funkwhale-music-bucket-name
AWS_S3_ENDPOINT_URL=https://us-southeast-1.linodeobjects.com
AWS_S3_REGION_NAME=us-southeast-1
AWS_DEFAULT_ACL=public-read
</code></pre></div></div>
<h2 id="next-steps">Next Steps</h2>
<p>The downside of Funkwhales S3-compatible object storage integration lies in how
files are uploaded. One cannot simply <del>walk into</del> upload files to the bucket;
music must be uploaded through Funkwhales API (via web or other means), and
then Funkwhale stores it accordingly (like for local uploads). I have a lot of
music, and I cant be asked to manually upload it all. Thats, like, 2 hours of
half-hearted work. No, instead, the obvious solution is to build a script that
can automatically upload any new music from my local music directory to
Funkwhale automatically. What Im considering now is how I want to do that. I
could leverage systemd to watch my local music directory, and run the upload
script whenever new music is uploaded. Could even expand it to remove music
whenever I delete it locally, though that seems a bit odd. I could instead setup
a cron or systemd-timer to run at a set interval, and check for any new files
since the last run, and upload them. Regardless of the trigger, the upload
functionality should ideally avoid duplicates, run in a non-blocking fashion,
maybe batch upload files, and be low impact on my desktop. So thats next.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2022-09-27
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,332 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Automatic Backups with RClone</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2023/05/07/rclone-backups.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="automatic-backups-with-rclone-systemd-and-backblaze">Automatic Backups with RClone, systemd, and Backblaze</h1>
<h2 id="quick-note">Quick Note</h2>
<p>Backups are not complicated. They may seem like it, but in reality the
complications arise from restoration. If youre not doing anything fancy with
your data now, then dont do anything fancy with your backups. Follow the 3-2-1
methodology: 3 copies of (important) data, in 2 different locations, 1 of which
is off-site. Many others have written about this in better detail than I ever
can; Jeff Geerling has a great article and several videos about it <a href="https://www.jeffgeerling.com/blog/2021/my-backup-plan">on his
site</a>. The time (and
often money) investment now can reduce worry, stress, and loss should the data
you care about ever become unusable.</p>
<p>(There are no affiliate links in this post, nor was I paid to recommend any
product or service.)</p>
<h1 id="my-needs">My Needs</h1>
<p>Backups are as important as the data you have. If all youve got is a directory
full of meme GIFs that you dont mind losing, then backups may be a waste of
time and money. I have recently taken to buying as much of my music as possible
(especially through Bandcamp, and especially on Bandcamp Fridays!). While much
of the music I buy does exist on a remote server at a company somewhere, the
cost of having to re-download and re-organize all of it well outweighs the cost
of proper backups. Not to mention the music which I cant get anywhere else
anymore. Nor to further mention the other data which I have. All of this is to
say: backups are worth it to me.</p>
<p>Recently I wanted to setup NFS on my home network. I was concerned about messing
something up, and erasing the directory I had intended to share, so I wanted to
backup the data. For a while Ive been intending to setup backups (as everyone
probably does), but it was never a priority. This project helped to prioritze
it. I had read about <a href="https://rclone.org/">RClone</a>, a command-line utility for
interacting with an incredible number of cloud services. I messed around a bit
with it, found it to my liking, and started shopping around for a cloud storage
solution. Enter <a href="https://www.backblaze.com/">Backblaze</a>. The folks that publish
all those hard-drive stats? Turns out they also run a business where they
provide cloud storage. Its inexpensive, reliable, and straight-forward. The
last step was to automate it with systemd timer units.</p>
<h2 id="backblaze-setup">Backblaze Setup</h2>
<ul>
<li><a href="https://www.backblaze.com/">Backblaze Site</a></li>
<li><a href="https://www.backblaze.com/help.html">Backblaze Docs</a></li>
</ul>
<p>First step is to setup Backblaze. Create an account, verify email address, all
that jazz. Id recommend enabling multi-factor authentication on the
<strong>Account</strong> -&gt; <strong>My Settings</strong> page, under <strong>Security</strong>. Next, click on the
<strong>Account</strong> -&gt; <strong>Application Keys</strong> page, and generate a new key. Fill in the
blanks (I gave my key full access to all buckets), copy the important bits, and
store them somewhere safe (like your password vault).</p>
<h2 id="rclone-setup">RClone Setup</h2>
<ul>
<li><a href="https://rclone.org/">RClone Site</a></li>
<li><a href="https://rclone.org/b2/">RClone Backblaze B2 Page</a></li>
</ul>
<p>Download and install RClone. Next run <code class="language-plaintext highlighter-rouge">rclone config</code> and walk through the
prompts. Im using Backblaze, so I select “Backblaze B2” as my storage backend.
Then I add the application key ID and application key secret (key) at the
relevant prompts. For all of this configuration, I named the remote “backblaze”,
though a shorter name can make commands easier. Regardless, verify the
configuration is setup properly by running <code class="language-plaintext highlighter-rouge">rclone lsd backblaze:</code>, which will
list buckets. Unless a bucket was already configured, nothing will show up, and
also there wont be any errors.</p>
<h2 id="backup-configuration">Backup Configuration</h2>
<p>Now, figure out how you want to backup your data. I have a <a href="/2020/06/14/setting-up-btrfs.html">BTRFS RAID setup
with multiple sub-volumes</a>, each for a
different data type: one for Books, one for Music, and so on. Since creating a
bucket doesnt cost anything, I decided to split my backups similarly. I created
the buckets I wanted, and did a “manual” RClone sync of the data.</p>
<p><code class="language-plaintext highlighter-rouge">rclone sync --fast-list --transfers 20 /path/to/Books
backblaze:bucket-for-Books-backups</code></p>
<p>The “fast-list” and “transfers” options are specified on the <a href="https://rclone.org/b2/">RClone
Backblaze B2 page</a>, along with some others that may be
of interest.</p>
<p>At this point, my data was “backed-up”, and I could muck about with it more
confidently. Also, at this point, configuring back-ups is done. Run those RClone
sync commands once a week, and all is set. I dont want to remember to do
things, though.</p>
<h2 id="automating-the-process">Automating the Process</h2>
<p>The first thing to do is create a user-agnostic location for the configuration
file and some additional files. I chose <code class="language-plaintext highlighter-rouge">/etc/rclone</code>, and copied the RClone
configuration file generated previously to this directory as <code class="language-plaintext highlighter-rouge">backblaze.conf</code>.</p>
<p>Next, I created a filter file. RClone has extensive <a href="https://rclone.org/filtering/">filtering
options</a>. For my current needs, a single file
will suffice.</p>
<h3 id="defaultfilter">default.filter</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code># Exclude BTRFS snapshot directories
- .snapshots/**
# Exclude Syncthing configuration directories
- .stfolder/**
</code></pre></div></div>
<p>systemd timer units ( [<a href="https://wiki.archlinux.org/title/Systemd/Timers">Arch
Wiki</a>]
[<a href="https://man.archlinux.org/man/systemd.timer.5">Manual</a>] ) are triggers that
activate on a schedule. That schedule can be dynamic (relative to a
previous/other trigger), or static (at 6:15 every day). A timer unit triggers a
service unit, which does the work. For my backups, I decided to run a sync every
hour, at sometime between the 15 and 45 minute mark of that hour. To simplify
having multiple timer units that all do the same thing, I setup a template unit
(see the <strong>Note</strong> here: <a href="https://wiki.archlinux.org/title/Systemd#Using_units">Arch
Wiki</a>).</p>
<h3 id="rclone-backuptimer">rclone-backup@.timer</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Unit]
Description=RClone Backup Timer Template
[Timer]
# Run every hour, sometime between the 15 minute and 45 minute mark
OnCalendar=*-*-* *:15:00
AccuracySec=30min
RandomizedDelaySec=5min
# The %i is whatever value is after the "@" for the configured unit. For
# example, rclone-backup@Books.timer will run the rclone-backup@Books.service
Unit=rclone-backup@%i.service
[Install]
WantedBy=timers.target
</code></pre></div></div>
<p>Then I can <code class="language-plaintext highlighter-rouge">enable</code> and <code class="language-plaintext highlighter-rouge">start</code> a timer for each directory to backup. To
minimize configuration, I also setup the service file to be a template. This
requires a bit of inflexible coordination: the directory name must match to a
part of the bucket name.</p>
<h3 id="rclone-backupservice">rclone-backup@.service</h3>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>[Unit]
Description=RClone Backup of %I
[Service]
Type=simple
ExecStart=/usr/bin/rclone sync -v --config "/etc/rclone/backblaze.conf" --fast-list --transfers 20 --filter-from "/etc/rclone/default.filter" /path/to/%i/ backblaze:bucket-for-%i-backups
</code></pre></div></div>
<p>The <code class="language-plaintext highlighter-rouge">--config</code> option allows us to specify the configuration in the <code class="language-plaintext highlighter-rouge">/etc</code>
directory. I include <code class="language-plaintext highlighter-rouge">-v</code> to have some additional output in the journal.
Again, <code class="language-plaintext highlighter-rouge">--fast-list</code> and <code class="language-plaintext highlighter-rouge">--transfers</code> are used to speed up the process and keep
costs lower. Then I <code class="language-plaintext highlighter-rouge">--filter-from</code> the “default.filter” file.</p>
<p>Place each of these files (<code class="language-plaintext highlighter-rouge">rclone-backup@.timer</code> and <code class="language-plaintext highlighter-rouge">rclone-backup@.service</code>)
into <code class="language-plaintext highlighter-rouge">/etc/systemd/system</code>. For each directory, enable and start the timer
unit; <code class="language-plaintext highlighter-rouge">systemctl enable rclone-backup@Example.timer</code> and <code class="language-plaintext highlighter-rouge">systemctl start
rclone-backup@Example.timer</code> will backup <code class="language-plaintext highlighter-rouge">/path/to/Example/</code> to the
<code class="language-plaintext highlighter-rouge">bucket-for-Example-backups</code> bucket.</p>
<h1 id="next-steps">Next Steps</h1>
<p>I would like to get some sort of metrics and dashboards setup to track backup
status and statistics. It could be very useful to be notified if a backup ever
fails.</p>
<p>Eventually, Ill upload this to a repository somewhere for ease of access and
backup. When I do, Ill update this post.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2023-05-07
<br />
[
<a href="/topics/technology">technology</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,238 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Life in Progress: August, 2024</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2024/08/19/life-in-progress-august.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="life-in-progress-as-of-2024-08-19">Life In Progress, as of 2024-08-19</h1>
<ul>
<li>Learning <a href="https://www.youtube.com/watch?v=LZVpvJsqTMM">Stan Rogers
<em>Bluenose</em></a> on mandolin and voice</li>
<li>Building a few games in the <a href="https://tic80.com">TIC-80 fantasy console</a></li>
<li>Deploying my own <a href="https://codeberg.org/Codeberg/pages-server/">“Pages” server</a></li>
<li>Building a Forgejo Action for deploying game builds to Itch.io using
<a href="https://itch.io/docs/butler/">butler</a></li>
<li>Building a custom WordPress Docker container that uses SQLite</li>
<li>Starting my own business</li>
</ul>
<h2 id="music">Music</h2>
<p>Adam and I continue our semi-weekly jam sessions! Weve settled on <a href="https://www.youtube.com/watch?v=LZVpvJsqTMM">Stan Rogers
<em>Bluenose</em></a> for our first piece. I
normally pick up lyrics pretty quick, but this song eludes me. We worked on the
chord progression last week, and Ive been actually practicing!</p>
<h2 id="game-dev">Game Dev</h2>
<p>Still having a blast with <a href="https://tic80.com/">TIC-80</a>. I made a small farming
experiment game, to learn <a href="https://fennel-lang.org">Fennel</a> some more and also
nail-down some basic design principles. Some of the ideas in that experiment,
namely generating the map with a loop and <code class="language-plaintext highlighter-rouge">mset</code> instead of using the built-in
map designer, gave me some insight for solving my darkness troubles in
Nightgolf. Im still wrapping my head around it, but I think this will be a
solution.</p>
<p>The farming experiment game lives on
<a href="https://vagabondazulien.itch.io/farm-experiment-1">Itch.io</a> and the <a href="https://tic80.com/play?cart=3965">TIC-80
Webzone</a>.</p>
<h2 id="tech-dev">Tech Dev</h2>
<p><a href="https://forgejo.org/">Forgejo</a> continues to be rewarding, and Im looking
forward to expanding my deployment of it by deploying my own <a href="https://codeberg.org/Codeberg/pages-server/">“Pages”
server</a>. This will allow me to
deploy my static sites on my own infrastructure. Im also working on an “Action”
for leveraging <a href="https://itch.io/docs/butler/">butler</a> to publish games I publish
the source code for from my Forge to Itch.io.</p>
<p>In preparation for both my own use, and my business use, I need to learn more
about Nextcloud. Im also working on building a custom WordPress Docker
container that relies on SQLite instead of MySQL.</p>
<p>Hovering about all this is backups and monitoring, both of which I sprinkle into
my learning voyage. Im looking forward to writing up some documentation about
my implementation.</p>
<h2 id="entrepreneurship">Entrepreneurship</h2>
<p>Im happy to report I was accepted into New Yorks Self-Employment Assistance
Program, <a href="https://dol.ny.gov/SEAP">SEAP</a>. I will be starting a business offering
managed online services, such as website design and deployment, personal cloud,
and email. I would like to offer these services to local small businesses and
not-for-profits. I think of it as “Silicon Valley experience” at reasonable,
local prices. Im excited to dive into the parts Im not very familiar with,
namely the business side of things. I have extensive technical experience and
mastery, but I lack any significant business experience.</p>
<h2 id="gaming">Gaming</h2>
<p>Ive started a new playthrough of <a href="https://en.wikipedia.org/wiki/Darkest_Dungeon">Darkest
Dungeon</a>. Its mildly
frustrating, but mostly fun. I have fun yelling at the game; its like stress
relief. Ive been generally successful, but the Crimson Court has been very
rough to me. It is a game about challenges and loss, though, so nothing
unexpected.</p>
<p>Ive continued my play-through of
<a href="https://en.wikipedia.org/wiki/Sundered">Sundered</a>, though have put it down for
a bit. Im playing it on my Steam Deck using <a href="https://lutris.net/">Lutris</a>, and
it works very well. Lutris continues to impress me, and I want to try writing an
installer for a game.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2024-08-19
<br />
[
<a href="/topics/life">life</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,263 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Life in Progress: September, 2024</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2024/09/24/life-in-progress-september.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="life-in-progress-as-of-2024-09-24">Life In Progress, as of 2024-09-24</h1>
<ul>
<li>New hardware: laptop, phone, and NAS</li>
<li><strong>TWO</strong> game jams!</li>
<li>Finishing up Morrowind</li>
<li>SEAP/Self-Employment Progress</li>
</ul>
<h2 id="new-hardware">New Hardware</h2>
<h3 id="framework-laptop">Framework Laptop</h3>
<p>This new <a href="https://frame.work">Framework</a> is great! Ive only had it for a few
weeks, but it is wonderful. Ive been slowly syncing and migrating workflows
from my various existing options to it. Being able to work for multiple hours
without worrying about battery life is nice.</p>
<p>Previously, the Chromebook I have was my go-to remote personal macine.
Considering its age, and the inherent limitations of a Chromebook, it served me
better than I ever could have hoped. However, I knew its time was drawing
near, and the Dell I got as part of my work severance was not going to cut it.
Considering Im starting a business doing technology, I needed a reliable,
“all-day” machine with Linux. The ARM-based Macs are incredibly tempting, but
I am not a fan of Mac. Ive been eyeing Framework for a bit now, and their
newest 13-inch model with AMD components checked enough of the boxen for me to
dive in.</p>
<h3 id="phone">Phone</h3>
<p>For a while Ive been eyeing Mint Mobile. In the US, they have a plan offering
unlimited text and talk, plus 5 GB of data, for $15 per month. I generally use
less than 1 GB of streaming data, so this seemed like a clearly better option
than the $30+ I was paying for Google Fi. When I decided to switch, they had an
incredible deal offering a Google Pixel 9 plus a years service for a great
price, so I not only switched carrier, I also snagged a new phone! I had a
Samsung S21, which was more than sufficient for my needs, so switching isnt
quite as significant as with the laptop, but its still a nice new experience.
The OS and environment on the Pixel is much nicer than Samsung phones, so
thats quite the plus!</p>
<h3 id="nas">NAS</h3>
<p>I bought a 2-bay Synology NAS from a friend a few months ago, and with the
myriad other changes, decided to set it up proper. I setup
<a href="https://www.navidrome.org/">Navidrome</a> for audio, and <a href="https://jellyfin.org/">Jellyfin</a> for video. I had previously used Navidrome, then
switched to Jellyfin for both audio and video, but with the new phone comes a
return to form. I like <a href="https://gitlab.com/ultrasonic/ultrasonic">Ultrasonic</a>,
and Navidrome plays nicely with it.</p>
<p>The other big additions with the NAS is more backup scripts, and also pulling
down some YouTube series I like for local copies. More details in a full post.</p>
<h2 id="game-making">Game Making</h2>
<p>Two game jams! One for the entire month of September, <a href="https://itch.io/jam/clone-jam-game-a-month">Clone
Jam</a>, and a
<a href="https://itch.io/jam/mini-jam-167-cyber">Mini-Jam</a>. For the Clone Jam, I was
working on building a ray-casting-based dungeon scavenger, similar to “Legend
of Grimrock”, but with less combat. However, while I have made great progress
understanding how ray-casting works, and how to implement it, I wont have time
to finish such a game. That knowledge wont go to waste, though! Theres a
game-jam at the end of October where I intend to make use of it. Instead, Ill
be touching-up and submitting a clone of Minesweeper I made:
<a href="https://vagabondazulien.itch.io/ticsweeper">TICsweeper</a>.</p>
<p>For the Mini-Jam, I decided to make a “runner” type game: you maneuver your
sprite to collect and/or avoid certain projectiles. I also made this game in
the <a href="https://tic80.com">TIC-80</a>. While I didnt pull any all-nighters, focusing
on a single project for 72-hours with as little down-time as possible is still
quite exhausting! My submission was called
<a href="https://vagabondazulien.itch.io/runr">RUNR</a>. It ranked 48th out of 66
submissions, which is honestly disappointing, but not enough to demotivate me
from continuing my game-making journey!</p>
<h2 id="game-playing">Game Playing</h2>
<p>I finally finished my play-through of Morrowind, and one of its two expansions,
Tribunal. (Note: before “DLC”, new game content for existing games was
distributed like the game itself, on a piece of data-storing media, such as a
CD. These were called “expansion packs.”) I have thoroughly enjoyed my time in
The Elder Scrolls III, and I definitely understand why many claim it as their
favorite. I will talk more about my experience in a full post, just like I did
for my recent Fallout 3 replay (I mean, just like I <em>will</em>. I <em>WILL!</em>)</p>
<h2 id="business-time">Business Time</h2>
<p>Alas, while game making and playing are great uses of my time, they do not get
me the resources I need to pay my bills. I continue to work on starting my own
business. Ive met with two mentors, one business and one technology, to help
get me started and provide guidance. In fact, this week marks what I would
consider the proper beginning of my business. With some dedication, Ill have
more exciting news to share about this next time!</p>
<h2 id="thats-all-for-now">Thats All For Now!</h2>
<p>I think the original intention of a “Now” page is to be less verbose, but I
find the monthly cadence of a somewhat comprehensive update to be more
appealing! Until next month!</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2024-09-24
<br />
[
<a href="/topics/life">life</a>
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

264
2025/01/03/life-update.html Normal file
View file

@ -0,0 +1,264 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Life in Progress: January, 2025</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2025/01/03/life-update.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="life-in-progress-january-2025">Life in Progress: January, 2025</h1>
<p>My <a href="/now">now page</a> is growing too verbose. Instead, Ill leave that page as a
summary of what this/these page(s) will explore. Ill start with a retrospective
of 2024, up to now, the beginning of 2025. Maybe a bit of ambitions too.</p>
<h2 id="2024-retrospective">2024 Retrospective</h2>
<p>2024 was a significant year. The most notable change being that I was laid off
in April. The remaining 8 months were quite nice. Before April, the year doesnt
feel much different or significant. From what I remember, I was stressed,
unhappy, and overall dissatisfied with my situation. I was in the process of
saving money to leave, when I was laid off and paid a generous (enough)
severance. Its nice when the universe solves problems.</p>
<p>Much of April and May was time spent decompressing. A bit too much drinking,
from what I recall. I began receiving unemployment payments, and looking for
jobs, though only half-heartedly. I was already decided I would start my own
business. I also started my playthrough of <strong>Fallout 3</strong>.</p>
<p>At the end of May, I entered into a game jam, and made my first video game,
<a href="https://vagabondazulien.itch.io/lander">L4-N-DER Training Simulator</a>. One thing
I do remember from the beginning of the year was speaking with some friends
about trying to publish a video game on Itch. I made the game using
<a href="https://fennel-lang.org/">Fennel</a> and the <a href="https://www.love2d.org/">LÖVE 2D game
engine</a>. It was incredibly rewarding, and a great
learning experience. This game would be the first of 5 that I published on my
Itch page this year.</p>
<p>Much of the summer was spent procrastinating starting my own business, and
golfing. At the beginning of summer, in June, my grandmother passed away. She
was about 2 weeks from her birthday, and so we round up and say she lived to 98.
I spent some time helping to clean and clear up her house too. In the beginning
of July I traveled to New York City to see Rezz. I also started properly
exploring WordPress, and working to understand better the business I was still
going to start. Around August, I began playing <strong>Morrowind</strong> for the first time.</p>
<p>In the fall is when I “got serious” about my business. I signed up for the New
York State Self-Employment Assistance Program (SEAP), and through them signed up
with SCORE to speak with a mentor and begin some small business training. I made
my first WordPress site, for a relative (and for free). I also entered into 3
more game jams during this period, publishing
<a href="https://vagabondazulien.itch.io/ticsweeper">TICSweeper</a> (a Minesweeper clone
mde with the TIC-80); <a href="https://vagabondazulien.itch.io/runr">RUNR</a> (another
TIC-80 game); and <a href="https://vagabondazulien.itch.io/escape-the-crash">Escape The
Crash</a>. <em>Escape</em> was based on
some work of mine over the summer to better understand and implement ray-casting
in the TIC-80, which I then translated for use in Fennel and LÖVE. At the end of
fall, my remaining grandmother severely injured herself, placing her in town
through the end of the year. For the second year in a row, much of the holidays
would be spent visiting a rehabilitation center (the same one as my first
grandmothers). Since the pandemic, I dont think Ive had a “normal” holiday
season.</p>
<p>At the end of the year, I formally started my business, <a href="https://www.niblock.tech">Niblock Technology
Solutions</a>, and began working on websites for two
additional clients. Exploring this new world has been exciting, and there are a
lot of new challenges. I love working with others to solve problems, and Im
looking forward to it. Im also beginning work on a second business idea for a
game shop. I want to build a community space for people to play games, enjoy
company, and relax. Rounding the year out was my first playthrough of <strong>Deus
Ex</strong>.</p>
<h2 id="now-january-2025">Now: January, 2025</h2>
<p>Now. Plenty of plans and ambitions.</p>
<p>Easiest: I started a playthrough of <strong>Oblivion</strong>. Similar to <strong>Fallout 3</strong> and
<strong>Morrowind</strong>, my goal is to complete the main story and all DLCs. This time
around, I explored a new modding setup, using <a href="https://lutris.net/">Lutris</a> to
install and manage the game (from GOG), and all the modding tools. For all three
of these games I want to write up a brief retrospective about my experiences and
any of the setup required for playing them on Linux. I already have two articles
for Oblivion (<a href="/2021/11/20/oblivion-linux.html">Part 1</a>, <a href="/2021/12/09/oblivion-linux-2.html">Part
2</a>) detailing using Steam and Proton. I think
the Lutris approach is a bit nicer.</p>
<p><em>Escape The Crash</em> was fun to make, but its not done yet. I want to add in a
floor, sound effects, a skybox, and objectives. And an actual ending condition.</p>
<p>Game-making in general I want to continue. Ive started looking into the
<a href="https://dragonruby.org/">DragonRuby game engine</a>. I also want to learn (more)
Godot. I have no shortage of ideas, only my regular struggles with motivation
and focus.</p>
<p>Ive fallen into a few bad habits, and my health is worse for them. Its absurdly
easy for me to put on weight, and equally as difficult to lose it again. At my
heaviest I was over 320 pounds, and Im now at a much better 240. I want to
bring that number down to 200, but I also want to remove as much significance
from that number as I can. It should be a metric, not a grade.</p>
<p>Ive also set for myself several music goals. I want to get better at
sight-reading, and so I have a goal to read a new piece of music each week. I
also want to explore music production, and try making my own 45-60 minute mix.</p>
<p>There are the business goals. I need to have an income that supports my
lifestyle, which means more clients and (hopefully) more businesses!</p>
<p>Finally, I want to write more. I think about writing, but rarely follow-through.
As all my other ambitions develop, sharing them with the world will help me
formally catalog my successes. Plus, if I have something useful and helpful to
share, then I want to!</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2025-01-03
<br />
[
<a href="/topics/life">life</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -0,0 +1,470 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Oblivion on Linux: Lutris Edition</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/2025/01/09/oblivion-lutris.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1 id="oblivion-on-linux-lutris-edition">Oblivion on Linux: Lutris Edition</h1>
<p>I love Oblivion. Ive written before about setting up Oblivion on Linux using
the Steam version, Proton and a handful of aliases: <a href="/2021/11/20/oblivion-linux.html">Part
1</a> covers most of the tooling setup, and <a href="/2021/12/09/oblivion-linux-2.html">Part
2</a> covers some mods I liked. This setup
works, though it is a bit of a hassle to manage. It requires running the tools
individually through aliases from a terminal, which can be intimidating and
unfriendly. It also requires the Steam version of Oblivion.</p>
<p>When I recently decided to return to Cyrodiil and close some gates, I wanted to
review my setup, and also my mod list. I discovered that Wrye Bash now does have
a native Linux application (as does LOOT!). However, I opted to stick with using
Wine and Windows versions of these applications due to a complication of modding
Oblivion in general: the case-sensitive nature of the filesystem. On Linux, the
filesystem is case-sensitive; on Windows, the filesystem is <strong>not</strong>
case-sensitive. For modding, this means if you extract an archive with a
<code class="language-plaintext highlighter-rouge">Data/meshes</code> folder, but your current setup has a <code class="language-plaintext highlighter-rouge">Data/Meshes</code> directory, on
Linux youll end up with two directories: <code class="language-plaintext highlighter-rouge">Data/Meshes</code> <em>and</em> <code class="language-plaintext highlighter-rouge">Data/meshes</code>.
There are solutions to this problem on Linux, namely using an EXT-4 filesystem.
I dont feel like reformatting my disks, and so Ill let Wine handle it. It may
mean a slight performance hit, but its Oblivion - there are <strong>always</strong>
performance hits. If there arent performance hits, then you havent modded the
game enough yet.</p>
<h2 id="setup-game">Setup: Game</h2>
<p>Ill be using <a href="https://lutris.net">Lutris</a> to handle installing and launching
the game. No more terminal aliases! Im also using the <a href="https://www.gog.com/en/game/elder_scrolls_iv_oblivion_game_of_the_year_edition_deluxe_the">GOG version of
Oblivion</a>.
Lutris allows you to link your GOG account, and easily install games using Wine
(or native versions, if available!). In Lutris, I install the game to my
preferred destination, using the default GOG Wine install script. After
installation, I launch the game once to generate some initial configuration
files, and verify things work as expected. Before the next steps, there is a
significant change: the Wine version. In order to use the latest version of Wrye
Bash through Lutris, I had to change the Wine version from my Lutris default,
<em>wine-ge-8-26</em>, to my latest system version, 9.22. There seems to be a Windows
API which Wrye Bash relies upon which isnt handled well in Wine versions
previous to 9.</p>
<p>Lutris can also install from downloaded GOG installers, without having to link
accounts. Make sure to download all the parts (for Oblivion, there are 3: a
small EXE, and two BIN files). When installing, make sure all the downloaded
files are in the same directory. In Lutris, click the <code class="language-plaintext highlighter-rouge">+</code> button to add a new
game, and select “Install a Windows game from an executable.” Name the game as
you wish, and add identifier
<code class="language-plaintext highlighter-rouge">the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe</code> for the GOG
version. Itll pull down nice looking images. On the next screen, click the
<code class="language-plaintext highlighter-rouge">Install</code> button next to “Setup file”, choose your desired directory, and then
select the EXE downloaded from the three files above. Lutris will create the
Wine prefix, and load the GOG Installer. Make note of the directory you chose
above for installation (default will be in the Lutris game library directory,
<code class="language-plaintext highlighter-rouge">Lutris Hamburger Menu</code> -&gt; <code class="language-plaintext highlighter-rouge">Preferences</code> -&gt; <code class="language-plaintext highlighter-rouge">Storage</code> -&gt; <em>Game Library</em>), and
substitute it accordingly below.</p>
<p>Assuming everything is setup and running, the last step here is to note where
Lutris installed the game. The path to the directory will differ, but the
directory structure should be similar to the below. The Lutris “Directory”
(Right-Click -&gt; Configure) value will bring you to the Wine directory (with
<code class="language-plaintext highlighter-rouge">drive_c</code>), and from there will be the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory (or possibly
renamed; this can be changed during the GOG install process), and then the
<code class="language-plaintext highlighter-rouge">Oblivion</code> directory.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>Lutris
|-&gt; gog
|-&gt; the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe
|-&gt; drive_c
|-&gt; GOG Games
|-&gt; Oblivion
|- Data
|- Oblivion.exe
|- ...
</code></pre></div></div>
<h3 id="xobse">xOBSE</h3>
<ul>
<li><a href="https://github.com/llde/xOBSE">Project Link</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/37952">Nexus Links</a></li>
</ul>
<p>The Oblivion Script Extender is required for many mods, and should be considered
essential for anything beyond a strict vanilla playthrough. Download the latest
version, and extract it to the <code class="language-plaintext highlighter-rouge">Oblivion</code> directory. When you launch Wrye Bash
(covered next), in the lower-left corner, on the icon bar, should be a green
checkbox. Hovering over it will notify you that OBSE is enabled. Clicking that
box will toggle OBSE. Generally, make sure it is enabled (checked).</p>
<p>At this point, before any other tools, when you double-click/Play Oblivion, it
will launch the purely vanilla Oblivion that was installed above. To use OBSE,
right-click Oblivion in Lutris, choose <em>Configure</em>, and on the “Game Options”
tab, change the <em>Executable</em> by clicking the button with three dots (labeled
“Select a file”) to <code class="language-plaintext highlighter-rouge">obse_loader.exe</code>. Save the changes, and re-launch.</p>
<h2 id="pre-setup-tools">Pre-Setup: Tools</h2>
<p>Before setting up the modding tools, it is required to run Oblivion once. This
will generate the INI file.</p>
<p>I also recommend adding the Wrye Bash <code class="language-plaintext highlighter-rouge">bash.ini</code> file detailed below before
running Wrye Bash for the first time. By declaring where the executable for
Oblivion is, Wrye Bash wont try to automatically find it, which can cause some
troubles or confusion.</p>
<h2 id="setup-tools">Setup: Tools</h2>
<p>Ill be using the following tools. When possible, download the stand-alone
version of the tool. To make things easy, I use the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory for
all the tools.</p>
<div class="language-plaintext highlighter-rouge"><div class="highlight"><pre class="highlight"><code>drive_c
|-&gt; GOG Games
|- BethINI
|- LOOT
|- Mods
|- Mopy
|- Oblivion
|- TES4Edit
</code></pre></div></div>
<h3 id="wrye-bash">Wrye Bash</h3>
<ul>
<li><a href="https://github.com/wrye-bash/wrye-bash">Project Link</a></li>
<li><a href="https://wrye-bash.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/22368">Nexus Link</a></li>
</ul>
<p>Mod manager, and <strong>everything else</strong> launcher in this setup. One of the most
exciting results of this setup is handling almost all modding management through
the Wrye Bash UI. From the Project Link, download the stand-alone executable
from the releases. I extract it to the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory, which will create
a <code class="language-plaintext highlighter-rouge">Mopy</code> directory. Within that will be the executable, <code class="language-plaintext highlighter-rouge">Wrye Bash.exe</code>. Next,
in the <code class="language-plaintext highlighter-rouge">Mopy</code> directory, copy the <code class="language-plaintext highlighter-rouge">bash_default.ini</code> file to <code class="language-plaintext highlighter-rouge">bash.ini</code>. Make
the following changes (or replace <code class="language-plaintext highlighter-rouge">bash.ini</code> with this information):</p>
<div class="language-ini highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nn">[General]</span>
<span class="c">; -- Path to mod directory.
; These are relative to the Oblivion directory.
</span><span class="py">sOblivionMods</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span>
<span class="py">sBashModData</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span><span class="se">\B</span><span class="s">ash Mod Data</span>
<span class="py">sInstallersData</span><span class="p">=</span><span class="s">..</span><span class="se">\M</span><span class="s">ods</span><span class="se">\B</span><span class="s">ash Installers</span><span class="se">\B</span><span class="s">ash</span>
<span class="c">; -- Path to the Oblivion directory.
; "C:" here is drive_c on our filesystem.
</span><span class="py">sOblivionPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\G</span><span class="s">OG Games</span><span class="se">\O</span><span class="s">blivion</span>
<span class="c">; -- User directory stuff.
; "C:" here is drive_c on our filesystem.
; Make sure to replace YOUR-USERNAME with your username
</span><span class="py">sUserPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span>
<span class="py">sPersonalPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span><span class="se">\D</span><span class="s">ocuments</span>
<span class="py">sLocalAppDataPath</span><span class="p">=</span><span class="s">C:</span><span class="se">\u</span><span class="s">sers</span><span class="se">\Y</span><span class="s">OUR-USERNAME</span><span class="se">\A</span><span class="s">ppData</span><span class="se">\L</span><span class="s">ocal</span>
<span class="nn">[Tool Options]</span>
<span class="c">; -- TES4Edit
; Path is relative to the Oblivion directory.
</span><span class="py">sTes4EditPath</span><span class="p">=</span><span class="s">..</span><span class="se">\T</span><span class="s">ES4Edit</span><span class="se">\T</span><span class="s">ES4Edit.exe</span>
<span class="c">; -- TES4LODGen
; Path is relative to the Oblivion directory.
</span><span class="py">sTes4LodGenPath</span><span class="p">=</span><span class="s">..</span><span class="se">\T</span><span class="s">ES4LodGen</span><span class="se">\T</span><span class="s">es4LODGen.exe</span>
<span class="c">; -- LOOT
; Path is relative to the Oblivion directory.
</span><span class="py">sLOOT</span><span class="p">=</span><span class="s">..</span><span class="se">\L</span><span class="s">OOT</span><span class="se">\L</span><span class="s">OOT.exe</span>
</code></pre></div></div>
<p>In this configuration, the relative paths are relative to the <code class="language-plaintext highlighter-rouge">Oblivion</code>
directory (where the game executable is). For all remaining tool setup, modify
the paths in this configuration to match the paths for the tool executable (or,
rename the tool directories, which is what I prefer).</p>
<p>This is where the magic happens: within Lutris, right-click Oblivion and choose
<em>Configure</em>. On the “Game Options” tab, change the <em>Executable</em> by clicking the
button with three dots (labeled “Select a file”), and choose the <code class="language-plaintext highlighter-rouge">Wrye Bash.exe</code>
executable in the <code class="language-plaintext highlighter-rouge">Mopy</code> directory. Save the configuration, and
double-click/Play Oblivion. This time, Wrye Bash will start up (<strong>Remember:</strong>
This will not work on versions of Wine older than 9!).</p>
<p>At this point, when you want to play Oblivion, you will open Lutris, and launch
“Oblivion.” This will launch Wrye Bash. You can then click the Oblivion icon in
the lower-left icon bar to launch the game. As additional tools are configured,
they will appear in the lower-left icon bar (everything except BethINI). To use
the tool, youll run it from Wrye Bash.</p>
<h3 id="loot">LOOT</h3>
<ul>
<li><a href="https://github.com/loot/loot">Project Link</a></li>
<li><a href="https://loot.github.io/">Homepage</a></li>
</ul>
<p>LOOT handles mod load order. Another application with a native Linux version. I
had previous run into some bugs, but everything looks to work as expected now.
Despite that, I still download and use the stand-alone Windows version (the
archive from the releases, not the EXE). I extract it to my <code class="language-plaintext highlighter-rouge">GOG Games</code>
directory, and rename the directory (or edit the <code class="language-plaintext highlighter-rouge">bash.ini</code> file) so the
executable is where my Wrye Bash configuration expects it.</p>
<p>If setup properly, when you run Wrye Bash, in the lower-left corner will be a
bar full of icons, one of which will be a little treasure chest. Clicking it
will launch LOOT. From there, sort the order, and then close LOOT. Wrye Bash
will refresh, and you can continue on. LOOT will also notify you of any “dirty”
mods, which can be cleaned using TES4Edit (see below).</p>
<h3 id="tes4edit">TES4Edit</h3>
<ul>
<li><a href="https://github.com/TES5Edit/TES5Edit">Project Link</a></li>
<li><a href="https://tes5edit.github.io/">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/11536">Nexus Link</a></li>
</ul>
<p>Im still not a mod creator, so my uses of TES4Edit are limited to “quick
cleaning.” From the project page or Nexus, download the latest version, and
extract the archive to the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory. Rename the directory or edit
the <code class="language-plaintext highlighter-rouge">bash.ini</code> file so Wrye Bash can find it; restart Wrye Bash to verify. Wrye
Bash doesnt include a dedicated short-cut for the “Quick Auto Clean” option,
instead you have to right-click on the TES4Edit short-cut (or the TES4LodGen
short-cut), and choose “Quick Auto Clean”. Choose the mod to clean from the
list, click OK, and let the program do its work.</p>
<h3 id="tes4lodgen">TES4LODGen</h3>
<ul>
<li><a href="https://github.com/TES5Edit/xLODGen">Project Link</a></li>
<li><a href="https://tes5edit.github.io/docs/16-xLODGen.html">Homepage</a></li>
<li><a href="https://www.nexusmods.com/oblivion/mods/15781?tab=description">Nexus Link</a></li>
</ul>
<p>This will generate LOD files ahead of time, allowing for more distant objects to
be shown as you adventure around Cyrodiil. Download the archive, and extract it
to where Wrye Bash expects it, either changing the directory name or updating
the <code class="language-plaintext highlighter-rouge">bash.ini</code> file accordingly. After mod installation is complete, click the
icon from the icon bar to generate the LOD files.</p>
<h3 id="bethini">BethINI</h3>
<ul>
<li><a href="https://www.nexusmods.com/oblivion/mods/46440">Nexus Link</a></li>
</ul>
<p><code class="language-plaintext highlighter-rouge">BethINI</code> helps manage the “oblivion.ini” file, providing sane options and a
wizard for configuration. This is the only tool that is not run from Wrye Bash.
However, its still pretty easy to work with. Download the stand-alone archive,
extract it to the <code class="language-plaintext highlighter-rouge">GOG Games</code> directory.</p>
<p>To run the tool, in Lutris single-click on Oblivion. A bar should appear with
some additional details about Oblivion, including some buttons: one will say
“Play”, and one will look like a wine glass; each will have a small button with
an up-facing arrow. Click the arrow button next to the wine glass button, and
select “Run EXE inside Wine prefix.” Navigate into <code class="language-plaintext highlighter-rouge">drive_c</code>, then <code class="language-plaintext highlighter-rouge">GOG Games</code>,
and into the directory you just set up for BethINI, and select <code class="language-plaintext highlighter-rouge">BethINI.exe</code>.</p>
<p>Wrye Bash does allow for custom application short-cuts, but it requires creating
a Windows shortcut <code class="language-plaintext highlighter-rouge">.lnk</code> file, and I cannot figure out an easier way to do
that than to just run it from Lutris.</p>
<h2 id="post-setup-tools">Post-Setup: Tools</h2>
<p>Verify each tool runs as expected. Conveniently, all the Bethesda DLCs are
“dirty,” so LOOT will notify you, and then you can clean them. Run BethINI,
generate LOD files, and run the game from Wrye Bash. Praise Todd.</p>
<h2 id="mods">Mods</h2>
<p>Wrye Bash on Windows can install mods from an archive, but with this setup that
functionality is unreliable. Instead, I extract the mod archives manually before
installing them with Wrye Bash. For each mod that I want to use, Ill create a
directory in the <code class="language-plaintext highlighter-rouge">Mods -&gt; Bash Installers</code> directory, and extract the mod
archive into that directory. Then, within Wrye Bash, on the “Installers” tab, I
can install mods as expected.</p>
<p>For actually using Wrye Bash, I recommend <a href="https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab">laulajatars
guide</a>.
Obviously, you can skip the installation steps for both Wrye Bash and OBSE.
There is also the <a href="https://wrye-bash.github.io/docs/Wrye%20Bash%20General%20Readme.html">Wrye Bash
Manual</a>.</p>
<h2 id="lutris-setup-problems">Lutris Setup: Problems</h2>
<p>The significant problem with this setup is no way to alt-tab away from the game.
To make things even more inconvenient, playing in a windowed mode also doesnt
work, and shows only a black screen with audio. I havent done an exhaustive
trial of options and mods yet to try and fix this, because it isnt a major
problem to me.</p>
<p>The second inconvenience is as I mentioned above, with Wrye Bash not installing
mods directly from archives. Again, not a major problem to me.</p>
<p>I suspect that both of the problems can be resolved with some Wine tweaks.</p>
<h2 id="lutris-setup-benefits">Lutris Setup: Benefits</h2>
<p>What this setup gets right is ease of use, and ease of replication. All tools
(except BethINI, for now) and the game are run from Wrye Bash. No juggling
multiple application entries, aliases, or special setups. Plus, all tools, mods,
and the game itself are all within the Lutris directory, making multiple setups
a breeze: just copy the directory. In Lutris, you can then duplicate the entry
(Right-Click -&gt; Duplicate), and edit the executable (Right-Click -&gt; Configure -&gt;
“Game options” tab -&gt; <em>Executable</em>) to point to the new directory.</p>
<h2 id="lutris-setup-next-steps">Lutris Setup: Next-Steps</h2>
<p>The most useful next step would be automating this process, by building a Lutris
install script. Also, resolving the alt-tab and windowed problems above.</p>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
2025-01-09
<br />
[
<a href="/topics/gaming">gaming</a>
]
</div>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

View file

@ -1,14 +1,68 @@
<footer>
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Page Not Found</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/404.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<h1 id="page-not-found">Page Not Found</h1>
<p>The content you requested could not be found. Click <a href="https://www.theinternetvagabond.com">here</a> to
return to the homepage.</p>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
{% for topic in site.topics %}
<div><a href="/topics/{{ topic.title }}">{{ topic.title }}</a></div>
{% endfor %}
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="{{ site.url }}/now">Life In Progress</a></div>
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
@ -16,7 +70,7 @@
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="{{ site.url }}/feed.xml"
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
@ -87,3 +141,7 @@
</section>
</section>
</footer>
</div>
</body>
</html>

10
404.md
View file

@ -1,10 +0,0 @@
---
permalink: /404.html
layout: corrupt_index
tabtitle: Page Not Found
---
# Page Not Found
The content you requested could not be found. Click [here]({{ site.url }}) to
return to the homepage.

32
Gemfile
View file

@ -1,32 +0,0 @@
source "https://rubygems.org"
# Hello! This is where you manage which Jekyll version is used to run.
# When you want to use a different version, change it below, save the
# file and run `bundle install`. Run Jekyll with `bundle exec`, like so:
#
# bundle exec jekyll serve
#
# This will help ensure the proper Jekyll version is running.
# Happy Jekylling!
gem "jekyll", "~> 4.3.3"
# This is the default theme for new Jekyll sites. You may change this to anything you like.
gem "minima", "~> 2.5"
# If you want to use GitHub Pages, remove the "gem "jekyll"" above and
# uncomment the line below. To upgrade, run `bundle update github-pages`.
# gem "github-pages", group: :jekyll_plugins
# If you have any plugins, put them here!
group :jekyll_plugins do
gem "jekyll-feed", "~> 0.12"
end
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
# and associated library.
platforms :mingw, :x64_mingw, :mswin, :jruby do
gem "tzinfo", "~> 1.2"
gem "tzinfo-data"
end
# Performance-booster for watching directories on Windows
gem "wdm", "~> 0.1.1", :platforms => [:mingw, :x64_mingw, :mswin]
gem "webrick", "~> 1.8"

View file

@ -1,84 +0,0 @@
GEM
remote: https://rubygems.org/
specs:
addressable (2.8.6)
public_suffix (>= 2.0.2, < 6.0)
colorator (1.1.0)
concurrent-ruby (1.2.3)
em-websocket (0.5.3)
eventmachine (>= 0.12.9)
http_parser.rb (~> 0)
eventmachine (1.2.7)
ffi (1.16.3)
forwardable-extended (2.6.0)
google-protobuf (3.25.2)
http_parser.rb (0.8.0)
i18n (1.14.1)
concurrent-ruby (~> 1.0)
jekyll (4.3.3)
addressable (~> 2.4)
colorator (~> 1.0)
em-websocket (~> 0.5)
i18n (~> 1.0)
jekyll-sass-converter (>= 2.0, < 4.0)
jekyll-watch (~> 2.0)
kramdown (~> 2.3, >= 2.3.1)
kramdown-parser-gfm (~> 1.0)
liquid (~> 4.0)
mercenary (>= 0.3.6, < 0.5)
pathutil (~> 0.9)
rouge (>= 3.0, < 5.0)
safe_yaml (~> 1.0)
terminal-table (>= 1.8, < 4.0)
webrick (~> 1.7)
jekyll-feed (0.17.0)
jekyll (>= 3.7, < 5.0)
jekyll-sass-converter (3.0.0)
sass-embedded (~> 1.54)
jekyll-seo-tag (2.8.0)
jekyll (>= 3.8, < 5.0)
jekyll-watch (2.2.1)
listen (~> 3.0)
kramdown (2.4.0)
rexml
kramdown-parser-gfm (1.1.0)
kramdown (~> 2.0)
liquid (4.0.4)
listen (3.8.0)
rb-fsevent (~> 0.10, >= 0.10.3)
rb-inotify (~> 0.9, >= 0.9.10)
mercenary (0.4.0)
minima (2.5.1)
jekyll (>= 3.5, < 5.0)
jekyll-feed (~> 0.9)
jekyll-seo-tag (~> 2.1)
pathutil (0.16.2)
forwardable-extended (~> 2.6)
public_suffix (5.0.4)
rb-fsevent (0.11.2)
rb-inotify (0.10.1)
ffi (~> 1.0)
rexml (3.2.6)
rouge (4.2.0)
safe_yaml (1.0.5)
sass-embedded (1.70.0-x86_64-linux-musl)
google-protobuf (~> 3.25)
terminal-table (3.0.2)
unicode-display_width (>= 1.1.1, < 3)
unicode-display_width (2.5.0)
webrick (1.8.1)
PLATFORMS
x86_64-linux-musl
DEPENDENCIES
jekyll (~> 4.3.3)
jekyll-feed (~> 0.12)
minima (~> 2.5)
tzinfo (~> 1.2)
tzinfo-data
wdm (~> 0.1.1)
webrick (~> 1.8)
BUNDLED WITH
2.5.5

View file

@ -1 +0,0 @@
url: http://localhost:4000

View file

@ -1,26 +0,0 @@
url: https://www.theinternetvagabond.com
title: "The Internet Vagabond"
author: "Bill Niblock"
plugins:
- jekyll-feed
collections:
topics:
output: true
defaults:
-
scope:
path: ''
type: "posts"
values:
layout: "corrupt_post"
author: "Bill Niblock"
-
scope:
path: ''
type: "topics"
values:
layout: "corrupt_index"
permalink: "/topics/:name"

View file

@ -1,92 +0,0 @@
We Own the Sky
Idris is a gas giant, about twice the size of Jupiter from the Sol system,
sporting 12 moons, 8 of which are inhabited. The giant itself is home to several
significant and successful corporate air colonies; masses of metal platforms and
tubes seemingly floating on the seas of gas. One of these colonies in particular
was the cause for my visit to Idris, and was owned by Twin Suns Trading and
Fabricators. Twin Suns was primarily an interstellar trading company, before it
cornered the moon and colony specific trading around Idris, and had made a good
fortune doing so. Recently, they've reinvested much of that fortune into
fabrication, providing the smaller corp colonies with accessible parts,
prototypes, and cheaper transportation through bundled deals. Long story short,
Twin Suns has made many enemies, and many profits around Idris. I was about to
add to the list of the former.
This job was called in specifically for the third Suns colony, gravity-locked to
the lower-left quadrant of the giant. It was their newest establishment, built
primarily with the highest spec'd parts they could fab, and outsourcing a few
parts to ensure the best tech. Suns was promoting it as their next-generation
R&D lab, focused on low-energy propellants for their trading ships. My client
isn't convinced. According to them, an unusually high number of shipments were
being received, unscheduled and unmarked, at the lab. Reports from inside
sources say the shipments contain some kind of living thing, making almost human
noises. One source swears he heard someone crying for help. That was enough to
pique my interest, but the client was also offering a good sum to investigate
these shipments, and find not only their contents, but the source. Considering
Termus, Idris' 4th moon, was reknown for their fab parts for my ship model, a
Tesserell CR22 Templar, I accepted the job and made for the system.
After dropping off Warden, my ship, for parts, I made my way to Vermus, Idris'
third moon. Covered in bars and clubs, Vermus had my best chance of finding some
information about the Suns' new colony. I tried a few places before finding
Gemini, a not-so-clever allusion to Twin Suns, and packed with Suns employees,
old and new. After a bit of watching, and a bit of questions, and too many
drinks, I was able to get some information out of two recently retired Suns
workers. They had finished their careers on the new colony, and were let go with
generous pensions, so long as they kept what they saw to themselves. Once they
said that, they realized they were breaking that promise, but not before I got a
few other details. The colony is for R&D, they said, but not only for
propellant. One said they saw some animals being shipped onto the colony, and
the other swore he heard human crying coming from one of the wings. After they
finished talking, I made for the door, feeling my welcome was very much over. I
had gotten a few blocks away by the time the three goons from the bar made their
move. Hired muscle from the Suns is much like hired muscle from anywhere else:
big, intimidating, maybe an implant here or there. The trick with muscle, of any
variety, is to avoid letting them use it.
"Something I can help you fine gentlemen with?", I said, trying to dress up my
voice as a bit less sober than I was.
"We saw you talking with our boys. What you want, off-worlder? Why you snoopin'
around our bar?", the smallest of the three said. The other two, equally as
meaty, postured intimidatingly. Or tried to, at least.
"Hey, man, I'm just drinking and seeing sights! They felt like talking, so I
listened! Nothing more to it. Now, I've got a date with this hottie I met at
Pisces, and I don't wanna miss out on that!", I replied, slurring and stumbling
a bit backward. Part bluff, part feint, I used the opportunity to activate my
stun-gun, and start charging it. To take out any of them would take a full
charge, about 15 seconds worth. Luckily, my ruse seems to have made a point.
"We don't want to see you around our parts no more, got it?", he said, "Or me
and the boys'll have to make sure you don't come around our parts no more. Got
it?"
I stumbled a bit more and dropped to ground, pretending to slip. My right hand
finding the grip of my stun-gun, still hidden. The two meat sacks laughed.
Three, feeling his job was complete, turned and led the trio back towards
Gemini. I stood up, and made towards the shuttle.
===
Back to Termus
- reclaim ship, fly to Formus, second moon
- meeting with client for first time in person
- client is attractive woman, focus on eyes
- second run-in with Twin Suns merc force, first fight
- escape from Formus, chase through city and atmosphere, into space
Idris Colony, Twin Suns 3
- break into colony, find unmarked shipment, full of people
- small fight with Twins Suns security force
- third run-in with Twin Suns merc force, client gets captured
- attempted escape from colony, shot down into planet
Captured client gets interrogated, tortured, thrown in with rest of shipment
Client escapes colony structure, gets stuck on external loading dock
Client is forced from the dock, but it caught by Warden and Soldier
Soldier and Warden rise to dock, and lock-down the colony

View file

@ -1,161 +0,0 @@
---
tabtitle: "Fallout 3 on Linux"
title: "Fallout 3 on Linux: Setup, Summary, and Suggestions"
topics: [gaming]
pub: ""
short_desc: A relatively comprehensive review of my recent playthrough of Fallout 3.
---
# Fallout 3 on Linux: Setup, Summary, and Suggestions
- Objective: Play Fallout 3 with a "Vanilla+" setup of mods. Play through all
the DLC, play through the main story.
To-Do:
- Installation
- Game files (Steam, GOG, other?)
- Mod Organizer 2
- Modding
- Mods I used, and why
- How-to Install and/or Configure
- Game Review
- Main Story
- DLC (in order played)
- The Pitt
- Operation Anchorage
- Point Lookout
- Mothership Zeta
- Broken Steel
# Notes
## Installation
### Base Game
### Mods
#### Mod Organizer 2
#### Mod List
#### Mods of Note
## Review
### Main Story
Overall, I think the main story of Fallout 3 is strong until the very last beat.
The beginning tutorial, which is the first 10 to 40 minutes of play, takes place
entirely within the starting Vault. It does a good job of the standard tutorial
phase: teach the player how to interact with the game; walk the player through
character creation; setup a few characters to care about. Then, the beginning
ends, and there's the second phase of play: open world. Arguably, this is the
remaining phase of all game-play. The player is free to explore, pursuing quests
or ambitions as they whim. There are game mechanics to aid with decisions,
generally quest markers and points-of-interest. The entire play time of a player
could be spent on everything _except_ the main story, and it would still be a
rewarding and enjoyable experience. However, my objective was to play the story
of Fallout 3, and so I keep that as my main guiding star. This is not to say I
didn't do any side-quests. I wandered far and wide; I actually discovered every
location on the map! I enjoyed exploring the abandoned and ruined metro lines,
finding small settlements or outposts, and coming across other wanderers and
survivors who had setup their own little slices of the wasteland.
I want to specifically talk about the setting. The Capitol Wasteland, a
fictionalized, augmented, scaled-down region around modern-day Washington DC,
northern Virginia, and Maryland. The "sights" are there: all the monuments and
museums (well, some _aren't_ there, like the White House!). There are two
"layers" to the map. The first is the surface. There's the big, open-world
Wasteland, which spans almost the entire map, excluding some smaller,
independent cells. Then, there's the underground collection of metro tunnels.
All of these connect, mostly, and it is fascinating that, once underground, it's
almost possible to stay underground, at least when around the Mall and within
DC proper.
I want to touch on one of the strengths of Fallout 3, and the open-world 3D
environment: environmental storytelling.
### DLC: The Pitt
The Pitt was the first of the DLCs that I played. It was advised as a good
early-game DLC, if only because it gives some great guns. I hadn't made the
connection between "Pitt" and "Pittsburgh" until I saw the name of the DLC
spelled out (as opposed to hearing it simply as "the pit"). I love the hook into
the DLC: a man, looking like Snake Plissken from "Escape from New York", sends
out an SOS signal that your Pipboy can pick up. Traveling to the
northern-reaches of the map, there's a hand-powered rail car that you use to
travel to "The Pitt." There, according to Wernher, the people are oppressed and
sick, and their tyrannical leaders hold the cure for their disease but refuse to
hand it over. Wernher escaped from the slave pits, seeking help in their
revolution. Granted, it's not all that straight-forward. There are a few hours
worth of story, during which you learn a bit more about the setting, the
disease, and the characters. You fight through the slave pits to earn your
freedom and a meeting with the tyrant, a former Brotherhood of Steel member
named Lord Ashur. The cure is actually a child that was born with immunity to
the disease. Conveniently, it's Ashur's kid. His wife, (conveniently) a
scientist, is working on bio-engineering a cure from the kid. Wernher wants to
take the kid, harvest it, and distribute the cure himself. Thus the main moral
conflict of the DLC: do you side with Ashur, saving the kid, but continuing the
status-quo, and having only Ashur's word that he'll do the right thing when the
cure is ready? Or do you side with Wernher, kidnapping and probably dooming the
child, to let him play his power-trip and essentially take over The Pitt for
himself? I sided with Ashur, killed Wernher, saved the kid, and got some sweet
guns.
Overall, I enjoyed The Pitt. The setting is phenomenal, the story is engaging
enough. The characters are good. It has that 80s action-film vibe. The moral
choice at the end is a good twist, though by no means unforeseen. I do like that
the game has no karma tied to the final decision; neither one is obviously good.
I tend to enjoy that in moral decisions, as rarely are any decisions obviously
"right" or "wrong."
### DLC: Operation Anchorage
Apparently this one is polarizing. (Oh snap, no pun intended). I really liked
it. It hooked me in, it didn't overstay it's welcome, and it gave me some cool
loot.
The gist: your Pipboy lets you operate a virtual reality training simulation of
the invasion of Anchorage, Alaska by the Chinese forces. You start off on a
cliff, having been one of a few surviving special forces members, to infiltrate
and destroy the artillery shelling the United States forces. Right away, it set
a really fun tone with me. I loved the little infiltration angle. After you save
the day, you return to base camp, where you are given several more missions to
destroy key resources, before repelling the Chinese forces and retaking
Anchorage proper.
The stealth mission at the beginning really swings this content in a favorable
direction, as does the cool rewards. The Gauss Rifle is just fun to use, and the
player gets the Power Armor Training trait and access to a suit of Power Armor.
One of the mods I had included several additional sets of armor in the reward
vault, and I enjoyed them as well.
### DLC: Point Lookout
This one grew on me. When it started, due to the nature of the DLC being more
open-world and less driven, I felt thrown into another region that I had to make
my own fun in. However, I was able to relatively quickly find some engaging
storylines, intriguing storytelling, and the main quest was fun.
Arriving in the Land of the Punga, you have two objectives: one, you were asked
to find a girl by her mother; two, you are advised to investigate why a manor on
a hill is smoking. The swamp wasteland is inhabited by inbred swamp-people,
mirelurks, and the expected cretins. There's plenty of history scattered both
told and unsaid throughout abandoned tents, terminals, hotel rooms, and ruins.
This location does a lot to invoke an eldritch horror vibe, and it does so quite
well at several points. There's a specific side-quest dealing with a tome, The
Krivbeknih, which is obviously a reference to tomes like The Necronomicon. The
characters throughout the location are well-written and fun to interact with.
The main quest covers a lot of ground, sends you on a psychedelic dream-vision,
and gets you lobotomized! Plus _an entire building explodes_, and that's pretty
rad. Oh, and the secret Chinese spy submarine!
By the end of this DLC, I was happily impressed, and it took the new top spot on
my list. There's some cool loot, plenty of neat lore, and more Punga than you
can shake a shotgun at. And you can make moonshine.
### DLC: Mothership Zeta
Another DLC generally looked at unfavorably.
### DLC: Broken Steel

View file

@ -1,118 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 12"
title: "Seneca's Letter to Lucilius, Letter 12: On Old Age"
topics: [philosophy]
pub: ""
short_desc: ""
---
# Letter 12: On Old Age
## Original Text
Wherever I turn, I see evidences of my advancing years. I visited lately my
country-place, and protested against the money which was spent on the
tumble-down building. My bailiff maintained that the flaws were not due to
his own carelessness; "he was doing everything possible, but the house was
old." And this was the house which grew under my own hands! What has the
future in store for me, if stones of my own age are already crumbling? I
was angry, and I embraced the first opportunity to vent my spleen in the
bailiff's presence. "It is clear," I cried, "that these plane-trees are
neglected; they have no leaves. Their branches are so gnarled and shrivelled;
the boles are so rough and unkempt! This would not happen, if someone
loosened the earth at their feet, and watered them." The bailiff swore by my
protecting deity that "he was doing everything possible, and never relaxed
his efforts, but those trees were old." Between you and me, I had planted
those trees myself, I had seen them in their first leaf. Then I turned to
the door and asked: "Who is that broken-down dotard? You have done well to
place him at the entrance; for he is outward bound. Where did you get him?
What pleasure did it give you to take up for burial some other man's
dead?" But the slave said: "Don't you know me, sir? I am Felicio; you used
to bring me little images. My father was Philositus the steward, and I am
your pet slave." "The man is clean crazy," I remarked. "Has my pet slave
become a little boy again? But it is quite possible; his teeth are just
dropping out."
I owe it to my country-place that my old age became apparent whithersoever
I turned. Let us cherish and love old age; for it is full of pleasure if
one knows how to use it. Fruits are most welcome when almost over; youth
is most charming at its close; the last drink delights the toper, the
glass which souses him and puts the finishing touch on his drunkenness.
Each pleasure reserves to the end the greatest delights which it contains.
Life is most delightful when it is on the downward slope, but has not yet
reached the abrupt decline. And I myself believe that the period which
stands, so to speak, on the edge of the roof, possesses pleasures of its
own. Or else the very fact of our not wanting pleasures has taken the
place of the pleasures themselves. How comforting it is to have tired out
one's appetites, and to have done with them! "But," you say, "it is a
nuisance to be looking death in the face!" Death, however, should be
looked in the face by young and old alike. We are not summoned according
to our rating on the censor's list. Moreover, no one is so old that it
would be improper for him to hope for another day of existence. And one
day, mind you, is a stage on life's journey.
Our span of life is divided into parts; it consists of large circles
enclosing smaller. One circle embraces and bounds the rest; it reaches
from birth to the last day of existence. The next circle limits the period
of our young manhood. The third confines all of childhood in its
circumference. Again, there is, in a class by itself, the year; it
contains within itself all the divisions of time by the multiplication of
which we get the total of life. The month is bounded by a narrower ring.
The smallest circle of all is the day; but even a day has its beginning
and its ending, its sunrise and its sunset. Hence Heraclitus, whose
obscure style gave him his surname, remarked: "One day is equal to
every day." Different persons have interpreted the saying in different
ways. Some hold that days are equal in number of hours, and this is true;
for if by "day" we mean twenty-four hours' time, all days must be equal,
inasmuch as the night acquires what the day loses. But others maintain
that one day is equal to all days through resemblance, because the very
longest space of time possesses no element which cannot be found in a
single day, namely, light and darkness, and even to eternity day makes
these alternations more numerous, not different when it is shorter and
different again when it is longer. Hence, every day ought to be
regulated as if it closed the series, as if it rounded out and completed
our existence.
Pacuvius, who by long occupancy made Syria his own, used to hold a
regular burial sacrifice in his own honour, with wine and the usual
funeral feasting, and then would have himself carried from the dining-room
to his chamber, while eunuchs applauded and sang in Greek to a musical
accompaniment: "He has lived his life, he has lived his life!" Thus
Pacuvius had himself carried out to burial every day. Let us, however, do
from a good motive what he used to do from a debased motive; let us go to
our sleep with joy and gladness; let us say:
I have lived; the course which Fortune set for me
Is finished.
And if God is pleased to add another day, we should welcome it with glad
hearts. That man is happiest, and is secure in his own possession of
himself, who can await the morrow without apprehension. When a man has
said: "I have lived!", every morning he arises he receives a bonus.
But now I ought to close my letter. "What?" you say; "shall it come to
me without any little offering? "Be not afraid; it brings something,
nay, more than something, a great deal. For what is more noble than
the following saying of which I make this letter the bearer: "It
is wrong to live under constraint; but no man is constrained to live
under constraint." Of course not. On all sides lie many short and
simple paths to freedom; and let us thank God that no man can be kept
in life. We may spurn the very constraints that hold us.
"Epicurus," you reply, "uttered these words; what are you doing with
another's property?" Any truth, I maintain, is my own property. And I
shall continue to heap quotations from Epicurus upon you, so that all
persons who swear by the words of another, and put a value upon the
speaker and not upon the thing spoken, may understand that the best
ideas are common property. Farewell.
## Response
### Source
[Moral Letters to Lucilius, Letter 12 on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_12)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})
- Update pub to publication date
- Set short_desc

View file

@ -1,149 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 7"
title: "Seneca's Letter to Lucilius, Letter 7: On Crowds"
topics: [philosophy]
pub: "2018-03-10"
short_desc: "Humans are like tofu: we very easily take on the flavors in
which we are cooked. Choose your flavoring carefully."
---
# Letter 7: On Crowds
## Original Text
Do you ask me what you should regard as especially to be avoided? I say, crowds;
for as yet you cannot trust yourself to them with safety. I shall admit my own
weakness, at any rate; for I never bring back home the same character that I
took abroad with me. Something of that which I have forced to be calm within me
is disturbed; some of the foes that I have routed return again. Just as the sick
man, who has been weak for a long time, is in such a condition that he cannot be
taken out of the house without suffering a relapse, so we ourselves are affected
when our souls are recovering from a lingering disease. To consort with the
crowd is harmful; there is no person who does not make some vice attractive to
us, or stamp it upon us, or taint us unconsciously therewith. Certainly, the
greater the mob with which we mingle, the greater the danger.
But nothing is so damaging to good character as the habit of lounging at the
games; for then it is that vice steals subtly upon one through the avenue of
pleasure. What do you think I mean? I mean that I come home more greedy, more
ambitious, more voluptuous, and even more cruel and inhuman, because I have been
among human beings. By chance I attended a mid-day exhibition, expecting some
fun, wit, and relaxation, an exhibition at which men's eyes have respite from
the slaughter of their fellow-men. But it was quite the reverse. The previous
combats were the essence of compassion; but now all the trifling is put aside
and it is pure murder. The men have no defensive armour. They are exposed to
blows at all points, and no one ever strikes in vain. Many persons prefer this
programme to the usual pairs and to the bouts "by request." Of course they do;
there is no helmet or shield to deflect the weapon. What is the need of
defensive armour, or of skill? All these mean delaying death. In the morning
they throw men to the lions and the bears; at noon, they throw them to the
spectators. The spectators demand that the slayer shall face the man who is to
slay him in his turn; and they always reserve the latest conqueror for another
butchering. The outcome of every fight is death, and the means are fire and
sword. This sort of thing goes on while the arena is empty. You may retort:
"But he was a highway robber; he killed a man!" And what of it? Granted that, as
a murderer, he deserved this punishment, what crime have you committed, poor
fellow, that you should deserve to sit and see this show? In the morning they
cried "Kill him! Lash him! Burn him! Why does he meet the sword in so cowardly a
way? Why does he strike so feebly? Why doesn't he die game? Whip him to meet his
wounds! Let them receive blow for blow, with chests bare and exposed to the
stroke!" And when the games stop for the intermission, they announce: "A little
throatcutting in the meantime, so that there may still be something going on!"
Come now; do you not understand even this truth, that a bad example reacts on
the agent? Thank the immortal gods that you are teaching cruelty to a person who
cannot learn to be cruel. The young character, which cannot hold fast to
righteousness, must be rescued from the mob; it is too easy to side with the
majority. Even Socrates, Cato, and Laelius might have been shaken in their moral
strength by a crowd that was unlike them; so true it is that none of us, no
matter how much he cultivates his abilities, can withstand the shock of faults
that approach, as it were, with so great a retinue. Much harm is done by a
single case of indulgence or greed; the familiar friend, if he be luxurious,
weakens and softens us imperceptibly; the neighbour, if he be rich, rouses our
covetousness; the companion, if he be slanderous, rubs off some of his rust upon
us, even though we be spotless and sincere. What then do you think the effect
will be on character, when the world at large assaults it! You must either
imitate or loathe the world.
But both courses are to be avoided; you should not copy the bad simply because
they are many, nor should you hate the many because they are unlike you.
Withdraw into yourself, as far as you can. Associate with those who will make a
better man of you. Welcome those whom you yourself can improve. The process is
mutual; for men learn while they teach. There is no reason why pride in
advertising your abilities should lure you into publicity, so that you should
desire to recite or harangue before the general public. Of course I should be
willing for you to do so if you had a stock-in-trade that suited such a mob; as
it is, there is not a man of them who can understand you. One or two
individuals will perhaps come in your way, but even these will have to be
moulded and trained by you so that they will understand you. You may say: "For
what purpose did I learn all these things?" But you need not fear that you have
wasted your efforts; it was for yourself that you learned them.
In order, however, that I may not to-day have learned exclusively for myself, I
shall share with you three excellent sayings, of the same general purport,
which have come to my attention. This letter will give you one of them as
payment of my debt; the other two you may accept as a contribution in advance.
Democritus says: "One man means as much to me as a multitude, and a multitude
only as much as one man." The following also was nobly spoken by someone or
other, for it is doubtful who the author was; they asked him what was the
object of all this study applied to an art that would reach but very few. He
replied: "I am content with few, content with one, content with none at all."
The third saying and a noteworthy one, too is by Epicurus, written to one
of the partners of his studies: "I write this not for the many, but for you;
each of us is enough of an audience for the other." Lay these words to heart,
Lucilius, that you may scorn the pleasure which comes from the applause of the
majority. Many men praise you; but have you any reason for being pleased with
yourself, if you are a person whom the many can understand? Your good qualities
should face inwards. Farewell.
## Response
In the first paragraph, Seneca makes a very interesting observation: when you
leave for the day, you return a different character than you set out. He seems
to imply this is due to "consorting with the crowd", but I think this is a
reality of life: we are constantly changed by our environment. Seneca, I think,
would have us realize that consorting with the crowd explicitly is harmful, and
to be avoided if at all possible. Again, I don't think this means avoid groups,
but rather avoid provocative or aggressive groups. To Seneca, this would be
groups such as spectators at "the games" (the Coliseum). To us, this could be
either meatspace or digital groups, and the later especially I find very
interesting. Often we don't consider the impact of our Twitter followers, or our
Facebook feed, upon our character. How often, though, do we feel compelled to
agree simply due to the sheer number of others who already do? "It is too easy
to side with the majority." This effect applies equally to all of us, from the
most impressionable youth to the most stalwart Stoic.
The discussion of needless violence "at the games" is very interesting. Dan
Carlin did a podcast recently discussing the history of violence, and he
mentioned this exact letter due to Seneca's account. "In the morning they throw
men to the lions and the bears; at noon, they throw them to the spectators."
Humanity's interest in violence, at times apparently insatiable, is nothing new
to modern day violent media. In fact, by comparison, today's violence is tame:
we witness the emulation of violence; in Rome, they witnessed the reality of
slaughter. Seneca's advice: avoid it. Building upon what he discussed earlier,
you only harm yourself by watching such events. Now, replace violence with a
vice of your choice, and the lesson still applies. Humans are like tofu: we very
easily take on the flavors in which we are cooked. Choose your flavoring
carefully.
Seneca concludes, "you should not copy the bad simply because they are many, nor
should you hate the many because they are unlike you." Here, we see the strategy
emerge: improve yourself, surround yourself by those who will help you do so,
and seek out those whom you can help improve. He discusses also the folly of
pride, and of publicity, with respect to these pursuits. In the end, he reminds
us: we improve for our own benefits. He really emphasizes this, and captures so
well the significance of improving yourself for your own benefit, at the very
end of the letter: "Many men praise you; but have you any reason for being
pleased with yourself, if you are a person whom the many can understand?" To me,
this is the _coup de grace_. If you withhold your improvement, simply for the
appeasement of the crowd, or the desire for praise, then you only improve to the
least of their members.
### Source
[Moral Letters to Lucilius, Letter 7 on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_7)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})
- Set short_desc

View file

@ -1,28 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter num"
title: "Seneca's Letter to Lucilius, Letter num: Title"
topics: [philosophy]
pub: ""
short_desc: ""
---
# Letter num: Title
## Original Text
## Response
### Source
[Moral Letters to Lucilius, Letter num on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_num)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})
- Change num to the number
- Change Title to the letter title
- Update pub to publication date
- Copy letter into Original Text
- Remove any references: %s/\[\d\+]//g
- Remove all in-text numbers: %s/\d\+\.//g
- Set short_desc

View file

@ -1,41 +0,0 @@
### My Mod List
My most recent mod list had a few objectives. First, I love [Better
Cities](https://www.nexusmods.com/oblivion/mods/16513) and [Maskar's Oblivion
Overhaul (MOO)](https://www.nexusmods.com/oblivion/mods/42780), and so I'll use
them. Second, I'm not generally concerned with graphics improvements/overhauls.
Lastly, despite the first point, I wanted to play with a "Vanilla Plus"
emphasis.
As before, I recommend reading through the [Oblivion Comprehensive Modding Guide
by Dispensation](https://www.nexusmods.com/oblivion/mods/49898). It covers how
to use all the above installed tools, and walks through mod recommendations for
every aspect of the game. The Unofficial Official Patches are essential and
always recommended. The various bug and engine fixes may or may not help out;
try them out and use the ones which do!
My "vanilla plus" mod list weighs in rather light. _Better Cities_ and _MOO_ are
the big ones. The remaining mods with significant changes are [Ultimate
Leveling](https://www.nexusmods.com/oblivion/mods/49134), to fix some of
Oblivions leveling problems; [Combat
Additions](https://www.nexusmods.com/oblivion/mods/49939), to improve the combat
aspects of the game; and [Supreme
Magicka](https://www.nexusmods.com/oblivion/mods/12466), for some added magic.
I use [Better Dungeons](https://www.nexusmods.com/oblivion/mods/40392), [Better
Forts](https://www.nexusmods.com/oblivion/mods/51897), the various ["Add Some
Flavor"](https://next.nexusmods.com/profile/gweow/mods) mods from gweow, [Lights
of Cyrodiil](https://www.nexusmods.com/oblivion/mods/46131), and [Legion
Forester Outposts Revistited](https://www.nexusmods.com/oblivion/mods/51512) to
spice up the world spaces a bit. A few of the _"Add Some Flavor"_ mods conflict
in small ways with _Better Cities_.
I add [Thieves Arsenal](https://www.nexusmods.com/oblivion/mods/9655), and
[Bounty Quests Fixed and
Polished](https://www.nexusmods.com/oblivion/mods/48330) to add some additional
quests and flavor.
To avoid fast travelling, I use [Cyrodiil Travel
Services](https://www.afkmods.com/index.php?/files/file/263-cyrodiil-travel-services/)
to get around easier; and [Traveler's
Tent](https://www.nexusmods.com/oblivion/mods/49654) for a mobile base of sorts.

View file

@ -1,27 +0,0 @@
---
tabtitle: "Oblivion on Linux Part 3, A Full Install"
title: "Oblivion on Linux, with Mods! Part 3 - Full Install"
topics: [gaming]
pub: "2021-12-20"
short_desc: "The Elder Scrolls IV: Oblivion is one of my favorite games of
all time. The vanilla game holds up, but mods take the game to an entirely
new level. Getting it working on Linux requires a bit of configuration, bit
is surprisingly accessible! This is the final part of my journey."
---
# Install Walk-Thru
- Install from source. Run for first time.
- Symlink `obse_loader.exe` to `OblivionLauncher.exe`, make back-up of original
`OblivionLauncher.exe`
- "Install" all relevant tools
- Source `Aliases` file
- LOOT masterlist not working. Change to reference local
- Disable LOOT update on start
- TES4Edit click the box to not show stuff on startup, ignore the error
- Make updates in BethINI
- Install Unofficial patches. Run to verify things are working.
- Begin installing mods!
## Universal Silent Voice
Had to install manually. Move relevant files to `Data/OBSE/Plugins`.

View file

@ -1,13 +0,0 @@
{% for post in site.posts %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
<div class="" id="details">
<div class="" id="date">{{ post.pub }}</div>
<div class="" id="tags">
{% for topic in post.topics %}
<a href="/topics/{{topic}}.html">{{topic}}</a>
{% endfor %}
</div>
</div>
<div id="desc">{{ post.short_desc }}</div>
{% endfor %}

View file

@ -1,15 +0,0 @@
<h6>{{ page.tabtitle }}</h6>
{% for post in site.posts %}
{% if post.topics contains page.title %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
<div class="" id="details">
<div class="" id="date">{{ post.pub }}</div>
<div class="" id="tags">
{% for topic in post.topics %}
<a href="/topics/{{topic}}">{{topic}}</a>
{% endfor %}
</div>
</div>
<div id="desc">{{ post.short_desc }}</div>
{% endif %}
{% endfor %}

View file

@ -1,44 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: {{ page.tabtitle }}</title>
{% feed_meta %}
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="{{ site.author }}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="{{ site.url}}{{ page.url }}" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="{{ site.url }}/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="{{ site.url}}/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
{{ content }}
</main>
{% include cor_menu.html %}
</div>
</body>
</html>

View file

@ -1,61 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: {{ page.tabtitle }}</title>
{% feed_meta %}
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="{{ page.author}}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="{{ site.url}}{{ page.url }}" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="{{ site.url }}/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="{{ site.url }}/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Life In Progress, as of {{ page.pub }}</h1>
<div class="author_info">
{{ page.author }}
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
Last Updated: {{ page.pub }}
<br />
This is a <a href="https://nownownow.com/about" id="now">Now Page</a>
inspired by <a href="https://sive.rs/" id="now">Derek Sivers</a>.
</div>
{{ content }}
</article>
</main>
{% include cor_menu.html %}
</div>
</body>
</html>

View file

@ -1,63 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: {{ page.tabtitle }}</title>
{% feed_meta %}
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="{{ page.author}}" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="{{ site.url}}{{ page.url }}" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="{{ site.url }}/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="{{ site.url }}/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="{{ site.url }}/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
{{ content }}
<div class="author_info">
{{ page.author }}
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
{{ page.pub }}
<br />
[
{% for topic in page.topics %}
<a href="/topics/{{topic}}">{{topic}}</a>
{% endfor %}
]
</div>
</article>
</main>
{% include cor_menu.html %}
</div>
</body>
</html>

View file

@ -1,608 +0,0 @@
---
tabtitle: Ireland Log
title: A Log of My Travels in Ireland
topics: [life]
pub: "2015-01-01"
short_desc: "Once upon a time, I traveled to Ireland. It was quite the
experience. Me, my 3 friends Suf, Chris and Cary, Scion, shenanigans,
Guiness, whiskey, and Thunderstruck."
---
# Day 1: 07/27/10
```
Melon... *scatter*
```
Today is travel day! Heading out right now towards JFK, then a 5 hour lay-over
there, then finally taking off towards the Emerald Isle! I'm both excited and
anxious, but surprisingly calm. I think it's to the point where I'm ready to get
things moving.
This flight will be rather uneventful: short 55 minute hop to JFK. I'm looking
forward to the longer flight. The time will give me opportunity to read, relax
and think... something I haven't done enough of in the past week.
# Day 2: 07/28/10
```
Left is safe!
```
Today we finally arrived in Ireland, first in Dublin and then Shannon. The trip
over was a bit of a challenge: a lack of sleep combined with an atmosphere
trying to promote one, all wrapped in the situation of no comfortable way to
actually get sleep helped to contribute to me not sleeping more than 30 minutes
tops. On the plus side, I did get to watch Dorian Grey and Percy Jackson on the
way over. Also, they served a very delicious beef stew for dinner; I was
pleasantly surprised.
Upon arrival, we immediately set out to retrieve our luggage, which arrived
mostly unmolested. Then, as we proceeded out of the terminal, we finally found
our 4th member, Suf, waiting eagerly for our arrival; he had arrived a day
earlier, and had many a story to share about his adventures in Limerick (our
eventual destination for the day). We got our car, forgot our GPS, recovered our
GPS, and began driving toward Limerick from Shannon Airport. We quickly
discovered that, given our American driving-habits, we thought every car driving
on the "wrong side of the road" was going to kill us. I think twice we all
panicked for fear of our lives. But, once we adjusted (or at least, once Suf
did... Cary is still a bit iffy) the drive was relatively quick and painless. We
arrived not more than 30 minutes later in Limerick, and made for the City Center
to explore on foot the many shops and eateries that the city had to offer, as
well as pay a visit to "The Bitter End" Pub, where Suf had visited on the
previous night. We explored for a bit, had lunch at The Bitter End, visited a
shop so Cary could purchase a couple shilelagh (spelling), wander to a tourist
booth for information and, with said acquired directions, made for our first B&B
of the trip: Coonagh Lodge. We relaxed and napped a bit at the Lodge, enough to
recouperate for a voyage back to Limerick, and made for some dinner and
adventure. We explored around, eventually stopping in at a place called
"Wokking" for some authentic Irish Chinese food, which turned out to be very
tasty and filling. We then explored for a pub, stopping at "Charlie St.
George's" pub for a quick pint and some people-watching. Then, we explored a bit
more, and wound up back at The Bitter End to enjoy an evening cup of tea and
some relaxing time. After this, we made back to the B&B, where I discovered that
my power brick likes to make a weird noise as it charges my laptop. I account it
to the different voltage, and pray that it doesn't explode and kill us all.
Of most important note, Suf decided to enlighten us with some of his arab cab
driving slang, most notable of which is "Why for you fuck my road?" An important
question, to be sure, and one to be answered in the days to come. A very steady
lean into this adventure, which I prefer to the alternative "kick-in-the-door"
style. Hopefully I can figure out some way to get my computer to connect to WPA2
connections so I can have internet more readily. At least for tonight, I
probably won't get back on (unfortunate news for my KoL desires. Too many
adventures will be wasted after I waste the NS... Oh well...)
# Day 3: 07/29/10
```
"Ya know, you keep that shirt on much longer, you gonna get jungle rot" - Biff McBodyspray
```
Today was our first big travel day. We left Limerick around 11:00 am and made
for Galway. Along the way we stopped in at the Cliffs of Moher, and then
continued on to our destination in Kinvara.
The Cliffs of Moher are quite the site to see. Set along the Atlantic Ocean is a
couple-mile stretch of sheer cliffs, topped with walkways and occasional watch
towers, or at least ruins of them. We walked the Cliffs for about an hour, just
exploring the different angles and particulars of the cliffs themselves: the
numerous outcroppings, the way the waves would collide with the rock, the caves
and small inlets that the water had born away. All these details helped to
complete one heck of a view! I also enjoyed the visitor center, which was built
into the hillsides near the cliffs.
After the cliffs, we make our way to Kinvara. We stop briefly at the Burren, a
barren area of rocks and not much else. Once we arrive, we check into our B&B
and decide to hold off on Galway until tomorrow night. This leaves us with
plenty of time to explore Kinvara proper. We relax for a bit and make to town
for some dinner and adventures. We decided to stop in at an Italian place called
'The Full Tide Inn', and while waiting for our food, had quite the heated
philosophical discussion. It really put into perspective for me just how
unprepared I am to defend my own view/the Stoic view of topics. After dinner, we
walked out to Dunguaire Castle, which was unfortunately closed, but we still
were able to explore the surrounding grounds. We learned a bit of background
from a fellow tourist, and then made our way back into town to buy a few snacks
before heading back to our B&B. That night, despite our best laid plans, we
weren't able to get to Scion. However, luckily for me, the internet access at
the B&B was unprotected and therefore I could hop onto KoL and finish up my
ascension! I bought the trophie available to me (the one regarding food
recipies) and clammered through the astral gash to return once more to my life
of adventuring. I ascended as a Sauceror, holding onto Pastamancy so I can
really start to rack up the bonus adventures from my cooking. A few adventures
gone, I manage to get to level 2 the first day, and am very excited to really
get this sauce boiling.
# Day 4: 07/30/10
```
Be-buh-buh-day, be-buh-buh-day, E-DAY-OH, E-DAY-OH, THAT'S OK!
```
Holy crap, today seemed like an entire month's worth of exploration and
adventure. After a delicious traditional Irish breakfast, we made for Galway.
In Galway we parked and set out for our busiest and most fun day yet. I can tell
you now that my feet are none to happy about the amount of walking we achieved,
but if nothing else this is a good reminder to properly prepare next time: make
sure my shoes are comfortable enough to walk around in almost constantly. So, we
park and make towards the city center. Galway is situated along the coast of
Galway Bay (go figure...) and has a river running through the center of town. We
head down the busy pedestrian walkway and hit up a few shops. Chris, Suf and
Cary all check out a couple tattoo parlours, and me being less interested make
for some good people watching and relax a bit. We continue our walk through the
busy crowds, and eventually make our way to the river. Exploring it for a bit,
Cary and I decide to stop off at a river-side restaurant called 'Mustard', where
I get one of the most delicious pulled-pork sandwiches I've ever enjoyed.
Afterwards, we met back up with Chris and Suf, and walked out towards the bay a
bit. As we voyaged further away from the city, we met with a couple of fellow
travelers, and discovered a great bar to stop at in town, known as 'E Brun' or
'The Bridge.' At the bar we met Bill, a local of Galway, who told us of many
great sites and happenings around town. An important detail of our stay in
Galway is that the Galway Races were going on. Evidently, they're a big deal.
So, after our stop in the pub and a delicious Guiness, we make to explore and
find 'The Crane,' where Shela's son will be playing live music later in the
evening. We find it, and gather from another local (and rather attractive) girl
the location of a couple of good niteclube. After finding the Crane we decide to
hunt our a place to eat, and eventually wander back to 'Kelly's', which helps to
bring back nostalgic memories of Geneseo and our own Kelly's. We enjoy a
deliciously filling meal there, compliments of Chris, and find out that later in
the evening we can enjoy Crane for some authentic (and rather good) Irish jazz
(which sounds not much different from any other type of jazz...). Thus far,
although I've been able to explain our day in only a few short paragraphs, we've
experienced to us what has felt like a lifetime worth of exploration. But, the
fun is only just about to start.
10:20pm, and we just left The Crane Bar to head back to the B&B for some
kick-ass Scion action. Along the way, we overhear a few clubs, but nothing
really catches our ear until we get to Kelly's. We can hear the beats from
outside, we can feel our feet aching but wanting to join in, so we head upstairs
and find (!!!)... a bunch of people standing around as a DJ mixes. What a let
down! Well, Suf wouldn't have any of this, and neither would the rest of us, so
after settling into our comfortable corner, Suf finally finds a song that he'll
groove to. And groove he does. Following quickly in suite, we join him on the
floor and find ourselves almost alone dancing. The 4 American tourists are the
only ones dancing in the Irish Niteclub. Almost poetic, mostly pathetic. Well,
this quickly changes, as more people flock to the dance floor after seeing our
amazing example. And by no means am I exaggerating! We literally started the
dance party at a niteclub. We groove it and move it for a good couple of hours
before we take off for new adventures. After a bit of exploring, and a lot of
drunk people, we decide to split up: Chris and Suf head back to Kelly's for some
more dancing, Cary wanders the street talking to people, and I, the lamest of
the group, head back to the car to call it a night. Before long, we all
reconvene, load up the GPS and make our way back to the B&B. This night has been
legendary, and no degree of detailed description can truly capture just how epic
the night was.
Simply put: Galway was unforgetable.
# Day 5: 07/31/10
```
"Where are we heading again? Ballerina?" "BALLINA!"
```
After the unbelievable adventure of Galway, we head out for our next stop in
Northwest Ireland: Ballina.
We set off after saying goodbye to our thus-far favorite B&B and host Shiela,
and head north. As we're driving, we spot a few turn offs and decide to stop at
one of them to explore a bit of the countryside. We find our way onto a
mountain, scale the smaller hills leading up to it, and eventually make our way
back to the car to continue walking. As we're driving, we happen across one of
the more epic scenes of our voyage: the carved out "seat" of a mountain, which
we refer to afterwards as 'The God Seat.' Surely, the scene of epic Scion games
to come.
As we continue along our voyage, we stop off at Kylemore Abbey, the most
stunning scene I've seen in my life thus far. Imagine a white and grey castle,
then make it less war-oriented and more beautiful, then set it on a gorgeous
lake, at the base of a very impressive mountain. That's Kylemore Abbey. We park
and explore a bit, and I get several good pictures. Further, I manage to spot a
statue of something half way up the mountain, made of white stone. Whoever made
this statue certainly had a lot of determination!
We leave the Abbey and finish our journey to our B&B for the evening. We relax,
settle in, and finally get to playing some Scion. Cary volunteered to run
first, so we play through the first half of his one shot: saving a 'shie' from
an Irish scion and his giant lackies. My character, a defensive tank named
Derrick Nasher, does quite well. We finish up the session, spend our exp (making
us even more boss), and crash for a relatively early night.
This B&B also has an encrypted internet, so at first I'm out of luck. However,
on a whim I try out the Chromium build I brought along (thanks Hexxeh!!), and
manage to easily set up a connection through that! I can't upload any files or
pictures very well, but I can still play some KoL and post a few updates to my
social sites. Also, Google Voice has proven to be a godsend! Being able to text
from a website has been my primary means of keeping in contact with the family
back at home.
# Day 6: 08/01/10
```
"...just chillax..."
"Woah... I never expected to hear 'chillax' outside of the states!"
- A conversation between Kim and Chris
```
Day 2 of our stay in Ballina. We eat an early breakfast and make for Killary
Adventure for some archery!
We arrive in Killary around noon, and enjoy an hour of arching with our
instructor Kim and another instructor named Dugal. I managed to shoot 2
bullseyes! It's amazing that if you actually hold the weapon properly and keep
proper form, you can actually aim with it. Never would have thought otherwise...
(/sarcasm). We joked, tried out some trick shooting, played a HORSE-style game,
and all-in-all came out of the adventure feeling really great. Plus, we all got
some wicked "battle wounds" from the bow on our forearms.
After the archery, we decide to head to Westport, on advice from Kim, for some
shopping and to get lunch. We immediately (perhaps fatefully) stumble upon a
place called 'The Asgard' and decide that there's no better place to eat in town
than here. I enjoy some Bangers and Mash - Asgard Style - and feel the wonderful
feeling of fulness once more. This trip has been a wonderful venture in
delicious foods. The traditional Irish breakfast (Egg, real bacon, sausages,
black and white pudding, half a tomatoe, toast, tea and juice) is so filling
that most of the time we feel no need to eat before dinner. Today, though, was a
glaring exception; that, and we had a different breakfast of pancakes and
poached eggs. After the Bangers and Mash, we split up: I head off to explore the
riverway and the port, while the others go shopping. I manage to snap quite a
few nice pictures, and figure out some more features on the camera, before we
meet back up and head back to Ballina, and then onwards to Enniscrone, the
birthplace of Cary's ancestors, the Grimes.
We arrive in Enniscrone around 4:00 in the afternoon, to a beautiful sunny day
and warm weather. Enniscrone in a beach town, so we split up once again, with me
heading out towards the beach and the others once more hitting up the shops. I
walk along the Atlantic Ocean, soaking in the waves and the rays, and eventually
make my way back to the car to relax for a bit. We head back to the B&B, rest
for a bit, and decide that heading back to Enniscrone for some delicious,
authentic Irish-Chinese food would be best. And best it was: we discovered the
awesomness and addictivness that is puffed-rice prawn crisps. Dinner was good,
too.
We head back to the B&B and finish up Cary's session of Scion. Chris set his
crab-tank relic for self-destruct and took care of all the giants for us, while
I managed to manipulate our crazy Irish scion friend Brian that he forgot how to
fight, which led to his untimely demise (or at least him falling
unconscious...). We saved the 'shie', secured the relic protected inside it, and
got Brian's birthrights for ourselves. A success, and a good start to our Scion
adventures yet to come. Cary hands the GM torch over to Chris, and we begin his
session tonight: we get tasked by Brigid (one of the Tuatha) to help out one of
her daughters. We manage to find her just in time for the night to expire, and
so we call it there. In KoL, I've managed to get to level 4, half-way towards 5,
before I call it a night. I haven't yet played all my available turns, but I'm
making decent progress. With a bit more practice I can probably get getting to
level 6 a 2-day process, which will help to speed through the slower part of the
game.
# Day 7: 08/02/10
```
Worst. Bank. Holiday. Ever.
```
After a restful evening, and another delicious breakfast of pancakes and poached
eggs, we enjoy a quick chat with John, our host, before heading off on our
"driving day from hell." Our course will take us through the middle of Ireland,
stopping off at Athlone to see the oldest bar in Ireland (and perhaps the world)
and eventually into Tipperary for the evening
Our first stop of the day is in Athlone, a city smack-dab in the middle of
Ireland. The drive to Athlone was a bit long, but still strikingly beautiful. It
seems like Ireland, despite it's rather small size, is still host to some of the
most grandiouse and beautiful scenes I've ever seen. We arrive in Athlone around
noon, and wander around a bit. Suf, Cary and I all stop in at 'The Snug' for a
quick pint, before we take off across the bridge in the middle of town to hit up
some shopping. We stop off in Athlone Castle along the way for some great
pictures, and run into Chris, who had wandered off to find some shops, after we
cross the bridge. Chris and I decide to backtrack to the Castle, then wander
around before we head back to Sean's. Sean's is the oldest bar in Ireland,
dating back towards 900AD, and quite possible the oldest bar in the world.
Obviously, I enjoy a pint of Guiness before we head back to the car and continue
along our day's journey.
We decide to stop off at Clanmocnoise Abbey, a ruined abbey just south of
Athlone, before heading out to Tipperary. The sites there are truely amazing,
and the ruined Abbey is quite cool as well. The conservation attempts have, thus
far, done a good job of maintaining what was salvageable, but the Abbey itself
is beyond repair. After some cool pictures, we continue on our way to Tipperary.
We finally arrive at our destination for the evening. Tipperary is a small town,
with a good amount of shops and a very comfortable atmosphere. Unfortunately,
and unknown to us, due to the Bank Holiday most of the food shops are closed. We
settle for a fast-food place called "American Stars" and apologize to our
digestive tracks before heading back to our B&B for some Scion action.
Scion has us defending Nikki from a couple of Fenrir, which we succeed in doing,
and then finding out our target was, in fact, a doppleganger. We discover this a
bit too late, though, and end our session assaulting 'The God Seat' and a Norse
Scion, who claims that "the ginger bitch has got to go." Well, Derrick'll be
damned if he let's a potential future employer die that easily. The stage is set
as both Derrick and the Norse Scion enter their Collosus Armor, Cary's Scion
enters his Warpspasm, and Suf's Scion prepares to make pincushins out of the
Frost Giants. After Scion comes KoL, which sees my progression to level 5 and
acquisition of Advanced Sausecrafting. I adventure for a bit more, before
fatigue wins and I succumb to sleep.
# Day 8: 08/03/10
```
"There any bars... excuse me... pubs around here?"
"Welcome to Ireland, lad!"
- A conversation between me and a bouncer
```
Today we headed back to the Rock of Cashel to get a great tour around the castle
grounds. I took lots of pictures, bought a few things for myself and a great
sweater for my mom, fall down a few steps while wandering the castle grounds
(resulting in a beautiful leg-bruise to match my archery-provided battle wound
on my forearm), and we wrap up Tipperary and head to Cork.
We arrive in Cork and are immediately thrust into the realization that Cork is
quite the large, industrial city. After a bit of confusion finding our way to
our B&B for the night, we decide to take some naps to recover some energy and
mana, and head out to find dinner and some nighttime entertainment. On the
generocity of our very funny and cheery innkeep, we head to a place called
Zak's, and are pleasantly surprised in the meal; I had a delicious Irish-beef
burger, some awesome garlic bread, and a Murphy's to wash it all down (Murphy's
is brewed in Cork; Guiness is not very welcomed here). We finish dinner, and
head out to find some clubs for the night.
We start our evening off wandering the neighborhood around Zak's. We find a
place, rather populated and playing somewhat good music, but quickly discover
it's overpopulated with Binfo for the night. We pass this pub, and ask the
bouncer for any suggestions, and get pointed towards a place called "Sober
Lane." Ignoring the odd name, we head off in the appropriate direction and run
into a metal pub along the way, so I insist we stop in and enjoy a drink. We get
a pint, enjoy the music, and move on. 'Sober Lane' turns out to be a much
younger-oriented pub, which doesn't dissappoint us, but it really pulls through
when Chris discovers the dart board in the back corner. We quickly take it over,
playing darts until the pub closes (oddly early, for our expectations), and
Chris and I head out to relax outside. Cary and Suf, being the charmers that
they are, end up chatting it with two girls local to the area, who invite all of
us back to a place called 'Cruscien Lar' (which we all continually misunderstand
as crusifixion). We follow them through the streets of Cork, and eventually wind
up at the closed pub. They hit the secret side enterence, and convince the owner
and co. to let us in.
Cruscien Lar (which I'm sure I'm spelling wrong), ended up being the undeniable
high point of Cork. Once we got a bit more comfortable and began chatting with
everyone, we really ended up enjoying ourselves! And then, we met Alan. Alan is
a veritable world travelling musician. He has been pretty much everywhere,
including state side, with his band 'The Jordans' and he had many tales to share
with us. He mentioned that the prices for alcohol (and women (...and drugs))
were best in Slovakia, that you'll never see anything more beautiful than the
Southeastern Asian countries, and that Russia really isn't that bad a place.
Really a lot of what we talked about fell into those topics, and it was a
conversation which I enjoyed thoroughly. Alan taught me that being a world
traveller doesn't take gobs of money and resources. All it takes is a desire to
explore, and a willingness to step outside your comfortable little box.
Throughout the night we talked with Alan, and his friends Marie and Ger (the
girls which Cary and Suf connected with), about not only their travels, but also
their taste in music (which was gloriously metal-oriented), their careers, their
adventures and their aspirations. As the night wound down, we all said our
farewells, and left through the side door. Our night was almost at an end! As we
wandered back to the B&B, we stumbled across a rather rowdy bunch, and Suf,
being the social butterfly that he is, decided to hop on board. We eventually
were introduced to Nollagh and her friends, who were travelling in our direction
to a supposed party. Considering we're still young, as was the night, we tagged
along and were eager to arrive at another Irish party. Sadly, the party was a
bit of a bust, and seeing as we were so close to home, we decided to just call
it a night. An awesome night, almost so much to as to rival our crazy adventures
in Galway.
# Day 9: 08/04/10
```
My father's name is Merry Merry Mack!
```
After a rather enjoyable rest, we departed from Cork on our way to our final
"big city" stop: Killarney. Killarney has a very homey feel about it. There are
plenty of tourist shops, plenty of sites and sounds to experience, and the night
life is absolutely amazing, but more on that in a bit.
We arrived at our B&B to find that the owner had stepped out for a bit, so we
decided to just park and wander into town. We quickly found some great shops,
restaurants, pubs, and other such attractions. Chris and I wandered around a few
places, and I ended up finding a few good gifts for the family: a corkscrew and
wine stopper for dad, both made of pewter; and a hat for Eric, which I think
will suit him quite nicely. After a bit more wandering, we headed back to the
B&B to relax and recover before we hit the town.
I think the most memorable part of Killarney for me was all the festivities
going on at night in the city. Almost every pub had live music, there were
people out walking and having a great time. There were lights, and food, and
music, and drinks... it just felt like a fun place to be! We started our night
wandering around a bit, and found ourselves at an outside banquet of sorts, with
life music. Suf and I, exemplifying our boistrious nature, led the singing of
the chorus (see the quote), and made our mark early in the Killarney
perspective. After our job was done there, we found our way to a pub called
'Scruffy's', near an amazing hotel. The band playing there had some great
traditional music as well, which we joined in on. Had a pint, made some friends,
moved on down the road to our final destination for the evening: McSorley's.
McSorley's is appropriately named because my feet at the end of the night were
very McSore. To say the least, McSorely's is about 50% enough to keep me in
Ireland. The drinks were great, the atmosphere was amazing, and, the best part
of all, the music was fantastic. This particular evening we were treated to a
performance by a ground called "Zoot Allures", a cover band. They played an
AMAZING set, with so many great songs, and such great energy, that it made me
really wish American clubs would pull their heads out of their asses and
actually play good music. Anyways, amazing music was played, several videos
were filmed, more-than-several beverages were consumed, and at the end of the
night, the lead singer from the group gave me a great, big bear hug. Naturally,
I returned the favor.
Well, Zoot Allures wasn't the end of the night for us, as McSorely's has a
secret back room dance club, so we obviously had to make use of that. We danced
for a good while, then Chris, Cary and I decided to take off and get back to the
B&B to sleep. We left a window open for Suf. Once again, to say the least,
Killarney is absolutely amazing!
# Day 10: 08/05/10
```
The room fell silent, as the man lowered his microphone to the crowd. A single
bewildered bystander asked, "Yeah?" The man only nodded, a knowning nod. The
bystander tipped his head back, and breathed deep the pub air, and finally, as
the tension grew to an unberable level, cried out: "THUNDERSTRUCK!!!"
```
I thought the first night was amazing. Holy crap this town just keeps getting
better and better!
So, day 2. After some great, great sleep (which, of the 4 of us, I'm the only
one to wake up in time for breakfast), I clean myself up and head to town.
Yesterday I had seen an "internet cafe," and figured it would be similar to what
we call internet cafes in America (I was wrong), so I made my way there to get
my KoL fix, and check up on the tubes. Well, the internet cafe was a
pay-per-use computer room, so I threw my cash at the front desk and got a couple
hours of hardcore internet access. KoL Update: beat the boss bat, the Goblin
King, and the first part of my Nemesis quest. Not bad, I guess, but I think it's
safe to say that juggling an acension with travelling abroad is a bit difficult,
unless you know what you're doing. I don't, for the most part.
After lunch at a (surprise!) Chinese food place, we decided to take the
afternoon off and head back to the B&B to play some more Scion, before
McSorley's opened up again. We did some great stuff, saved the freckled Scion,
then I made the decision to let her die (which ended up coinciding with some
major character development, so that's nice), and then Cary's character died
defending her. So, all in all, we failed our mission, but succeeded at Scion.
Huh.
Anyways, McSorley's opened up shortly after the game, so we hit up dinner (more
Chinese), and I spent some time wandering around getting pictures of the pubs we
had visited. It's funny: my dad complimented me on all the pictures of the
beautiful scenary and what not, but he asked a very important questions: where
are all the pubs?? So I tried to rectify that our last night in Killarney,
snapping a picture of a few placed before winding my way back to McSorley's for
the evening. Round 2... FIGHT!
The cover band at McSorley's tonight was not as good as the other band, which is
the equivalent as saying that the 200000 Candle-Power flashlight isn't as bright
as the 300000 Candle-power one: they're both way brighter (or, awesomer in this
case) than the required flashlight (or, typical American cover band, in this
case). Tonight's show was by Revenge, who paid tribute to some of the older
songs, including quite a bit of ACDC. We rocked out hard core, really supporting
the band out front by dancing and singing along. Then the moment happened, the
moment that Chris has claimed is the most epic moment of the trip. The quote
says it all, but in short: the band was playing Thunderstruck by ACDC, and the
lead singer lowered the mic to me to scream "THUNDERSTRUCK!!" into, and it was
amazing timing. I do have to say, sometimes my timing is spectacular. Anyways,
that memory will stick with me forever, and I think with Chris, Suf and Cary as
well, so I consider this night an unbelievable success.
Once more, we invaded the back room, only this time we stayed until close. We
danced our way into another dance party, because evidently we're all Lords of
the Dance, and met some new friends: May, a French girl there with friends. We
danced with them, we danced with total strangers, and we danced until we
couldn't dance any more! I literally understood what it meant to be out of mana
that night. I had barely the energy to return home, before I just passed out on
my bed.
Killarney is the city I would most enjoy in Ireland. Of all the places we've
gone, it's the city which feels the most alive. It has the loudest pulse, the
brightest flash, the sweetest music; it's the type of environment I want to live
in. While I don't think Ireland is quite the island for me, if I did decide to
live here, Killarney would be my final destination.
# Day 11: 08/06/10
```
Wow, this place is nice. I don't think we belong here.
```
Today we all are taking a bit of a down day. After the past 2 nights, I'm
exhausted, and ready to just sit around a do nothing for a bit. Well,
conveniently Cary is getting his tattoo today, so I got my wish. We check out of
our B&B, pack up the car, park in town and go exploring a bit more. After I
stop at the Tourist Information, I learn of a free Wi-Fi pub nearby, and relax
there for a couple of hours, enjoying some tea and playing some KoL. I don't
really achieve anything of any worth in game, and Suf, Cary and Chris show up
just in time for us to work on our Scion characters a bit and head to dinner. We
go to the Chinese food place we hit up last night for lunch, and then Cary must
depart for his tattoo. Chris, Suf and I all decide to wander back into the pub
for a bit, where I finish up my KoL for the day, enjoy some more Scion, check
the email, and generally just chillax.
We leave Killarney around 5:30 and arrive at our second-to-last destination,
Ballyseede Castle Hotel. Since we have nothing to do until later, we settle in,
relax for a bit and get to playing some more Scion. That's right: WE ROLEPLAYED
IN A CASTLE.
After the session, we split up: Cary, Suf and Chris all head back to Killarney
(a whopping 15 minute drive) to hit up McSorley's again, and I lame out and take
the night off. Whilst waiting for sleep to drift in, I enjoy some good ol'
American past-time and watch a bit o' telly: 'Analyze That' was on. I watched
'Analyze That' in a castle. Today is just full of achievements!
# Day 12: 08/07/10
```
"Ma'am? A quick question. We named the dogs: this one is named Roger the Mighty,
and this one is named George the Stout. How close were we?"
```
After a wonderful night's rest in the castle, we pack up our things, enjoy a
delicious breakfast, explore the castle grounds a bit more, and head off to our
final B&B, just outside of Shannon.
As we approached our destination, we decided to stop by Limerick for
lunch/dinner and just explore our initial landing grounds one last time. We
wander to 'The Bitter End', take some pictures, and find our way to a Chinese
food place (big surprise) and an outdoor pub. Since we couldn't decide on which
one to go to, I suggested we go to both. This decision was met with much
happiness. After we finished our Chinese food (quite delicious), we headed next
door, and was met with delicious desserts and beautiful women. Our waitress let
slip it was her birthday, so in true, boistrious American style, we sang her
'Happy Birthday!' (Hope it was a good one, Sam!). Apparently she got in trouble
for that... Oops...
Anyways, we hit up our B&B to drop stuff off, and repack our bags for tomorrow's
trip, and finish up our Scion campaign. We hopped out to 'Durty Nelly's' for a
quick dinner (and sadly, our waitress Una already had her birthday a month ago)
of traditional Fish and Chips, then back to the B&B to finish up our night
rolling the dice. With the campaign finished, we hit the hay in preparation for
tomorrow's voyage. Hopefully none of my loot get's wrecked!
# Day 13: 08/08/10
```
"Do I really have to be the asshole to say that we travelled back in time in
that hot tub?" - Hot Tub Time Machine
```
And just as quickly as it began, our whirlwind tour comes to an end. We left the
B&B early this morning to get to the airport, returned the car without a fuss,
checked in our baggage, shuffled through customs and passport checks, and
eventually found our way to the gate. The airport in Shannon has free Wi-Fi,
which is epic, so I whiddle away at my turn-count in KoL, achieving little but
still enjoying the game. Shoot off a text to mom letting her know things are on
time, and eventually board my first of three flights for the day.
The flight is rather uneventful. We're seated next to a kid flying back from a
wedding, so it was fun to chat with him for a bit. Then, onto the free movies:
Iron Man 2 (pretty boss), Hot Tub Time Machine (really, quite the unknown
comedy. Hilarious!) and Repo Men (meh, not really my bowl of soup...) round out
the trip. We land soundly in JFK, disembark, and find our next flight delayed,
so Chris, Suf and I, after bidding farewell to Cary at the Terminal, head to
'NYC Sports Grill', right outside our arrival gate from the beginning of the
voyage, and enjoy some good ol' fashion American burgers before our flight to
Boston.
The flight to Boston is painless, despite the Logan Airport's best attempt at
being the worst air port ever (I just really don't like it). We land safe and
sound back home, and I eagerly make my way to baggage claim to make sure
everything is safe there. I get my bags (w00t), find everything in one piece and
accounted for (w00t x2), and bid Chris and Lindsay farewell as my parents drive
up in the van.
Thus, our voyage ends. A successful first trip overseas, and a more-or-less
successful first attempt at travel blogging too. Methinks I'll have to try this
again sometime. Farewell, and as they say on the Emerald Isle: CHEERS!

View file

@ -1,82 +0,0 @@
---
tabtitle: Bye Bye Windows
title: Farewell to Windows Tour 2015
topics: gaming
pub: "2015-04-28"
short_desc: "It has come time to bid Windows farewell. Once upon a time Windows was
the only digital world I knew. It began when I was young, during the
venerable 3.1 era. I remember booting up our family computer into DOS, and
before starting Windows I could start Doom 2 or Keen's Dream, or any
number of other games. That was my first interaction with a command line.
My, my, how times have changed."
---
<h1>Farewell to Windows Tour 2015</h1>
<p>It has come time to bid Windows farewell. Once upon a time Windows was
the only digital world I knew. It began when I was young, during the
venerable 3.1 era. I remember booting up our family computer into DOS, and
before starting Windows I could start Doom 2 or Keen's Dream, or any
number of other games. That was my first interaction with a command line.
My, my, how times have changed.</p>
<p>From Doom 2 and Keen I went on to Baldur's Gate and Battlezone. I
dabbled here and there in NES/Sega/SNES/Genesis stuff, but PC gaming
always held my attention. The only exception to this was my Gameboy with
Pokemon, because that game is literal crack to a 12 year old. Baldur's
Gate held my attention like only a classic RPG can, and I remember
pouring over the manual and this guidebook I had to learn as much as I
could about the world the game created. Around this time I was also
getting into Dungeons and Dragons (Satan's game!), so there was a
definite mixture of digital and tabletop gaming. Battlezone, on the
other hand, was introduced to me by my good friend Rob, and became a
classic among my group of friends. Then, of course, Smash Bros became
a thing and that was our game of choice. That and Soul Calibur; ah
memories.</p>
<p>It wasn't until relatively recently that I ever even tried gaming on
Linux. My senior year of high school I was introduced to Linux by my
friend Ben. That spawned the interest, but it was always secondary to
my true love of computers, gaming. Throughout college I had an Asus
netbook, which was always my Linux machine, but I still had my Windows
desktop, which was my gaming machine. Windows was essential for gaming:
Steam; Final Fantasy 11 (yes, I know.); triple-A titles. These
were "Windows Exclusives," unless I wanted to venture into console
territory. Thus it remained, throughout college and my early-mid 20's.
Then something magical happened: Steam came to Linux. That was the
deathblow to Windows in my book, at least for my needs. I had long ago
dropped my interest in many games, leaving a small but well-loved list of
games that I do still care about. The majority of these are now supported
on Linux, but there are a few which remain Windows only. That is what this
"tour" is for; the last few games I want to play on Windows, before I go
Linux only.</p>
<h3>Featuring</h3>
<p>The list isn't huge, but there are some definite strong players:</p>
<ul>
<li>Dark Souls and Dark Souls 2</li>
<li>Dishonored</li>
<li>Duke Nuken Forever</li>
<li>Far Cry 3: Blood Dragon</li>
<li>Spec Ops: The Line</li>
</ul>
<p>Mostly "newer" games, mostly graphics-intensive games. I know these
run fine on Windows, and they may work in Wine but I don't feel like
either figuring out if they do, or trying to make them play nice.</p>
<h3>Special Guest Appearances By</h3>
<p>There are a few games that I will fiddle with to get working in Wine
though, and these are games I don't quite want to let go, but still are
Windows only: Skyrim and Guild Wars 2. I love Guild Wars 2, I think it's
the best MMO on the market, with the most supportive and friendly
community and one of the best developers. Skyrim is, well, Skyrim; I like
hitting things. Chivalry would be a close third on this list, but Chivalry
is on Linux now, so I can scream my lungs out and stab people whenever I
want. Regardless, I imagine I'll be playing plenty of each of these while
finishing up the main list.</p>
<h3>Tickets on Sale Now!</h3>
<p>Well, not exactly. But this would be a fantastic way to get into
streaming, and maybe I'll transition from Windows to Linux with that as
well. Streaming has always been something I've wanted to do, but never had
the time nor effort to pursue. So, either tradition will hold strong, or a
new challenger will appear. Until then.</p>

View file

@ -1,105 +0,0 @@
---
tabtitle: Philosophy of Bill
title: The Philosophy of Bill, Abbreviated
topics: philosophy
pub: "2015-05-04"
short_desc: "I consider myself a very philosophical person. That doesn't
mean I'm any good at philosophy, I just tend to think a lot about ethics,
morality, and happiness. Recently I've been thinking more about my
worldview, what I value as important, and how I achieve happiness in my
daily life. I wanted to jot down what I feel is a brief examination of my
basic tenants; the basic Philosophy of Bill."
---
# Perception And Thought
I consider myself a very philosophical person. That doesn't mean I'm any
good at philosophy, I just tend to think a lot about ethics, morality, and
happiness. Recently I've been thinking more about my worldview, what I
value as important, and how I achieve happiness in my daily life. I wanted
to jot down what I feel is a brief examination of my basic tenants; the
basic Philosophy of Bill.
I derive a lot of my philosophy from my Christian up-bringing and
Stoicism. I'm not a very religious person, though. I never really was. My
belief of what God is falls strongly under the agnostic category: I'm not
sure what God is, or if I believe in a God, but I do believe in a higher
power of some sort. I feel it's logical to always assume there is something
more powerful than yourself, but I also feel it's impossible to prove this.
I like to define faith as simply irrational belief. I have faith in many
things, both permanent and temporary. I like faith, actually, quite a bit.
I admire those who have strong faith, so long as they maintain reason and
are not fanatical. I also try to maintain a very open approach to religion.
I believe everyone has the right to worship however they choose, so long as
it does not involve anything overly immoral, such as killing. I have a hard
time tolerating people who are overly zealous about their faith, or about
denouncing someone else's faith. Nothing is more disgusting than attacking
someone for their beliefs. They are called beliefs for a reason; they are
not fact, they are opinion. It's ineffective to attack opinions, because
they are ephemeral to begin with. Like trying to hit a ghost with a
lamp-post: it just won't do what you think it will.
I love debate and discussion, but there is a clear difference between
debate for truth and argument for winning. I try to keep in the first camp,
but I'm not super-human and I have an ego so I often visit the later.
However, I always learn when I make mistakes, and I cherish when I fail,
because it only serves to better myself. I think that's the most
fundamental under-lying theme of my philosophy: always better myself;
always learn something. That ego thing, though, that's a tough monster to
handle. I've found myself adopting views similar to Zen Buddism (I think)
often when trying to quell my ego:
- All will return to nothingness.
- Ergo, what I do will be inconsequential.
- Ergo, I am inconsequential.
I think most people hear this and grow disheartened or depressed, but I
view it as very uplifting. There's a certain freedom in knowning that, no
matter how much I fail, in the end it won't matter much. It's sobering to
remember that no matter how much I've achieved or won, in the end it won't
matter much. It's important to remember that I am nothing but an improbable
spec of matter floating on a rock in an unimaginably vast and empty space.
Too many people get caught up on that "in the end" part, though, and they
begin to question why they should act at all. Well, there's a bit of time
between now and "the end" and you need to fill the void with something. For
me, that's learning, and understanding, and appreciating.
In my studies, I've discovered and adopted Stoicism as a philosophy. I
won't explain too much what Stoicism is about, since there are many sources
online which do that. I apply Stoicism mostly in the mental aspects of the
philosophy, and less in the faith/religious aspects. From Stoicism, I have
reinforced my beliefs in the importance of understanding our environment. I
remind myself every day of things I cannot control, and that I can only
control my perception of things. I try to act according to logic and
wisdom, and not according to feelings, which can hamper reason. For
example, I try not to let anger control my actions if I get trolled by my
friend Nick. I understand that anger, love, stress, and all other feelings
are very much out of my control, but allowing them to control me is well
within my control. In other words, I very much get angry, or grow lustful,
or prideful, but I try not to let those feelings dictate my actions. I
believe it was Seneca the Younger who said, "Men are not angered by things,
but by their perceptions of them." One of many mantra I keep in
reserve.
The most important thing in my life, though, is not control but
happiness. I can seek to control my perceptions and emotions all I want,
but if it does not lead to happiness, it is a fruitless endeavor. I find
happiness most when I learn; when I understand a system. I'm an engineer at
heart, so I view the world as a system of systems (of systems, of
systems...) each of which is bare to understanding. I free myself from ego
and oppression so that I can learn without fear of failure or the
disapproval of my peers. I like to always remind myself that the only
person who truly cares about me, is me. That's not to say others don't care
about me, but they care about themselves first, and me afterwards. That's
how things are; it's not wrong or depressing or hurtful it's just the way
the system works. I care for many people, but I'm always number one on the
list.
While all this is well and good, philosophy is an ever changing system;
a CICD environment. I am constantly integrating new ideas and concepts into
my understanding of the world, and sometimes purging old or unnecessary
ones. I have my fair-share of quandries, perhaps more so than others;
perhaps it's an unfair-share. That's what makes it worth it, though, to me.
I seek to learn, and in doing so, find happiness and confusion. It's a
recursive system: the confusion leads to learning, which leads to happiness
and confusion. And I love recursion.

View file

@ -1,151 +0,0 @@
---
tabtitle: "An Examination of TLS, Part 1"
title: "An Examination of TLS, Part 1"
topics: technology
pub: "2015-05-06"
short_desc: "TLS, more often referred to as SSL, is a means by which a
secure connection is established over a computer network. In this
introductionary post, I layout the steps to establishing a secure
connection."
---
<h1>TLS: An Examination Into the Security of the Internet, Part 1</h1>
<p>TLS, more often referred to as SSL, is the means by which a secure
connection is established over a computer network. Most often these
connections are established over the Internet, between a client (ex., web
browser) and a server (ex., a web site). In the specific case of web sites,
HTTP is layered on TLS/SSL to ensure a secure and private connection; HTTPS
is not a separate protocol, rather a combination or protocols. Establishing
a secure connection thus requires a few steps:</p>
<h2>Step 1: Establish an TCP connection</h2>
<p>TCP is a transport-layer protocol that establishes a connection which is
reliable and fault-tolerant. As opposed to UDP, TCP will seek to verify
that information is transferred successfully and as intended. This is
important for the next step. The connection is established as follows:</p>
<ol>
<li>A client will contact a server and announce it wishes to
establish a connection. (Called a SYN, short for synchronize). This
SYN is a number, stored as part of the TCP header; we'll call it
A.</li>
<li>The server will respond to the client announcing it has
received the client's wish, and also state that it wishes to establish
a connection. (Called a SYN-ACK, short for synchronize-acknowledge).
Ths SYN-ACK is actually two values: One is the ACK value, A+1. The
second is the server's SYN value, which we'll call B.</li>
<li>The client then acknowledged the server's wish, thus
establishing a connection (Called simply an ACK). Because it was
expecting an ACK value in step 2, and expecting that value to be A+1,
it can verify that this connection is the same as the one it started.
Additionally and similarly, the ACK which gets returned to the server
as B+1.</li>
<li>At this point, the connection is established. Both client and
server have assured themselves of a proper connection thanks to the
three-way handshake described above. From this point forward, the
server has bound a specific port to listen for any further
communications with the client. </li>
</ol>
<h2>Step 2: Establish an SSL/TLS Connection</h2>
<p>TLS, Transport Layer Security, is appropriately on the same layer as
TCP, the transport layer. TLS relies on public key authentication to
establish a secure connection between the aforementioned client and server.
The connection is established as follows:</p>
<ol>
<li>A client will announce to the server it wishes to establish a
TLS/SSL connection. It will include information such as it's TLS/SSL
version, the ciphersuites it wishes to use, and which compression
methods it wishes to use.</li>
<li>The server then uses the highest possible TLS/SSL version, chooses
one of the ciphersuites available to the client, chooses one of the
compression methods available to the client, and sends it's
certificate. A certificate is basically a container for a server's
public key, but with many additional details, and often signed by a
certificate authority, to further verify the certificate contains the
proper key. More on certificates in part 2.</li>
<li>The client then uses the server's public key to encrypt a secret.
This secret is then sent back to the server.</li>
<li>The server decrypts the secret with it's private key. This secret
is now shared by only the client and the server, and from this point
on is used for symmetric encryption.</li>
</ol>
<p>From this point forward, the connection is encrypted and secure from
external threats. Of course, this all depends on a trusted certificate and
proper encryption algorithms.</p>
<h2>Step 3: Establish an HTTP connection</h2>
<p>HTTP is an application-layer protocol, and is responsible for translating
the information from the transport layer into information used by an
application. Your web browser, for example, will utilize HTTP to translate
a bunch of hexidecimal information into alpha-numeric information, which is
then formatted and presented to you as a web page. Security is previously
established thanks to TLS/SSL, and reliability is previously established
thanks to TCP.</p>
<p>Part 2 focuses more on the specifics of TLS: certificates, cipher
suites, and public key authentication.</p>
<h1>Sources</h1>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Public-key_cryptography">
Wikipedia: Public-key Cryptography</a></li>
<li><a
href="https://security.stackexchange.com/questions/6290/how-is-it-possible-that-people-observing-an-https-connection-being-established-w">Stack
Exchange: How is it possible that people observing an HTTPS
connection being established wouldn't know how to decrypt
it?</a></li>
<li><a
href="https://security.stackexchange.com/questions/20803/how-does-ssl-tls-work">
Stack Exchange: How Does SSL/TLS work?</a></li>
</ul>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes (because why remove them?)
Asymmetric Key Authentication:
- Relies on two keys: Public key, Private key
- Both keys are related, but impossible (computationally infeasable) to
identify the private key based on the public key [1][2]
- The public key can be distributed publicly
- Used to encrypt message to the owner of the private paired key
- Used to verify signatures from the private key
- The private key is kept secret
- Used to decrypt message from the public paired key
- Used to as a digital signature
Basics of an Asymmetric Key handshake:
1. Client reaches out to server, requesting a secure connection
2. Server acknowledges request, sends back it's public key
- This is commonly known as a certificate. Often signed by a
third-party to ensure it is what it's supposed to be.
3. Client uses this public key to encrypt a secret, and sends the package
back to the server.
4. The server then uses it's private key to decrypt the public-key
encrypted secret, and uses that secret hence forth to encrypt all traffic.
5. A private connection is now established.
Basics of Certificates
1. A certificate is a vessel for a server to provide authentication
information.
2. Typically a certificate will contain the following information:
- A UUID of the certificate itself
- The subject of the certificate
- The signature, and signature algorithm used
- The issuer of the certificate, as well as dates when it is valid
- The purpose of the key
- The thumbprint, and algorithm, used to hash the key
- The public key itself
3. Certificate Authorities act as a third part to verify the integrity of
public keys.
-->
<!-- ================================= -->
<!-- ================================= -->

View file

@ -1,61 +0,0 @@
---
tabtitle: A Good Friend's Father
title: A Good Friend's Father
topics: [philosophy, life]
pub: "2015-07-09"
short_desc: "A good friend's father died. What can I learn from this?"
---
<h1>A Good Friend's Father</h1>
<p> A good friend's father died. He was quite a strong figure in my
childhood. He was compassionate, endearing, strong, and happy. He is
succeeded by two of my best childhood friends, and his second wife. I will
always remember him as smiling, or laughing, or even sometimes frustrated
with his children.</p>
<p> When I learned of his passing, I immediately thought of my position in
life. My father is roughly the same age, and my mother slightly younger.
Was this death too early? Is there such a thing? If I stick to my
philosophical beliefs, then death is fated, regardless of where or when;
never early, never late. When I told a friend of the passing, his remarks
were expectedly typical: "That's fucked up. He died so early. He died so
young." The trick with beliefs is they are always tested. I found myself
caught up in grief and worry. Surprised at the passing, worried with the
thought of my parents dying. I even grew anxious of the funeral and calling
hours. Suddenly this anxiety was like a weed, finding it's way into the
cracks in my beliefs and understanding, unsettling and disrupting my peace
of mind. Instead of mourning the loss, I tangled myself into an emotional
knot, and selfishly so.</p>
<p> I sat, a few days after the news, watching the rain. I considered how
the rain falls where it is due, regardless of what it falls on. The
rain cares not, it simply is. I considered the millions of drops falling on
the millions of people all around the globe. Their situations in life as
unique as each drop; in structure similar, yet in action ever slightly
divergent. In life, I cannot decide where or when I exist, I can only
decide how to perceive my existance. Epictetus wrote, "man is disturbed not
by things, but by the views he takes of them." My perceptions were skewed,
my understanding flawed, and thus I was disturbed.</p>
<p> One of my favorite analogies is Bruce Lee's metaphor about water. It is
a reminder to be fluid and formless, adaptable and potent; "If nothing
within you stays rigid, outward things will disclose themselves." There's
no way for me to know what will be asked of me, as my life moves forward.
I must be shapeless, so when obstacles appear I flow around or through
them, without hesitation. I cannot affect when or how these obstacles
appear, only how I perceive them. I had forgotten this. </p>
<p> A good friend's father died, and he reminded me how to live.</p>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes
Rest in peace, Chaz. You were a good man, a good father, and a friend.
-->
<!-- ================================= -->
<!-- ================================= -->
<!-- cursor: 11 -->

View file

@ -1,136 +0,0 @@
---
tabtitle: "An Examination of TLS, Part 2"
title: "An Examination of TLS, Part 2"
topics: technology
pub: "2015-11-10"
short_desc: "TLS, more often referred to as SSL, is the means by which a secure
connection is established over a computer network. Part 1 examines how to
establish a secure connection using TLS. This article examines further the
techniques and technology that makes TLS secure. Specifically, a brief
examination of certificates, cipher suites, and public-key
authentication."
---
<h1>TLS: An examination into the Security of the Internet, Part 2</h1>
<p>TLS, more often referred to as SSL, is the means by which a secure
connection is established over a computer network. Part 1 examines how to
establish a secure connection using TLS. This article examines further the
techniques and technology that makes TLS secure. Specifically, a brief
examination of certificates, cipher suites, and public-key
authentication.</p>
<h2>Certificates</h2>
<p>A certificate is a vessel for a domain to provide authentication
information. More specifically, and perhaps most importantly, a certificate
is the package which transfers a key. TLS relies entirely upon Public-Key
Authentication to setup a secure connection. The challenge with Public-Key
Authentication is often sharing keys in a verifiable and secure manner.
This is to say that, despite public keys being public, you still need to
verify the owner of the key. This is where certificates, and Certificate
Authorities come in. Each certificate is tailored to a specific domain. It
includes not only the public key for a user to connect to the server with,
but also meta-data about the certificate: a UUID, and information about the
Certificate Authority; a signature authorizing the certificate, as well as
the encryption used for the signature; a thumbprint of the key, and details
of the algorithm used to hash the key; and a purpose for the certificate.
Certificates may contain additional details, but the aforementioned list is
required.</p>
<p>A Certificate Authority (CA) is a trusted third-party repository of
signed keys. The purpose of a CA is very specific: verification. A CA will
generate and issue a key-pair to a domain. The domain can then share the
public key using a certificate. How specifically a CA verifies the domains
and keys is out of scope of this discussion, but Wikipedia provides many
details on the techniques used.</p>
<h2>Cipher Suites</h2>
<p>A cipher is the algorithm used to encrypt information. Ciphers are
incredibly complex mathematical formulae, and are well beyond my
understanding. However, it is important to note that the strength of a key
is only as strong as the cipher suite used to generate it. Likewise, the
strength of a certificate is only as strong as the cipher used to sign
it. Keep this in mind when you generate and work with keys.</p>
<h2>Public-Key Authentication</h2>
<p>The most important part of TLS is public-key authentication. I would
argue that public-key authentication is one of the most important facets of
the technical world. Because of this, I want to recap in more general terms
how public-key authentication works:</p>
<ol>
<li>Two parties want to establish a secure connection.</li>
<li>Each party generates two keys: one to share publicly, one to keep
secret.</li>
<li>Each party then shares their public keys.</li>
</ol>
<p>Now, whenever one of the two parties wants to securely communicate with
the other, they "sign" (encrypt) the communication with their private key.
The second party can then use the public key of the first party to verify
the identify of the sender, and decrypt the message.
<h2>Conclusion</h2>
<p>Security is a very deep and involved topic, but one I feel every
Sys-Admin should know a bit about. While these posts are only meant to serve
as a high-level overview of TLS, there are many more-detailed sources
available. I would suggest a visit to your local Wikipedia as a good first
step. Thanks for reading.</p>
<h1>Sources</h1>
<ul>
<li><a href="https://en.wikipedia.org/wiki/Public-key_cryptography">
Wikipedia: Public-key Cryptography</a></li>
<li><a
href="https://security.stackexchange.com/questions/6290/how-is-it-possible-that-people-observing-an-https-connection-being-established-w">Stack
Exchange: How is it possible that people observing an HTTPS
connection being established wouldn't know how to decrypt
it?</a></li>
<li><a
href="https://security.stackexchange.com/questions/20803/how-does-ssl-tls-work">
Stack Exchange: How Does SSL/TLS work?</a></li>
</ul>
<!-- ================================= -->
<!-- ================================= -->
<!-- Notes (because why remove them?)
Asymmetric Key Authentication:
- Relies on two keys: Public key, Private key
- Both keys are related, but impossible (computationally infeasible) to
identify the private key based on the public key [1][2]
- The public key can be distributed publicly
- Used to encrypt message to the owner of the private paired key
- Used to verify signatures from the private key
- The private key is kept secret
- Used to decrypt message from the public paired key
- Used to as a digital signature
Basics of an Asymmetric Key handshake:
1. Client reaches out to server, requesting a secure connection
2. Server acknowledges request, sends back it's public key
- This is commonly known as a certificate. Often signed by a
third-party to ensure it is what it's supposed to be.
3. Client uses this public key to encrypt a secret, and sends the package
back to the server.
4. The server then uses it's private key to decrypt the public-key
encrypted secret, and uses that secret hence forth to encrypt all traffic.
5. A private connection is now established.
Basics of Certificates
1. A certificate is a vessel for a server to provide authentication
information.
2. Typically a certificate will contain the following information:
- A UUID of the certificate itself
- The subject of the certificate
- The signature, and signature algorithm used
- The issuer of the certificate, as well as dates when it is valid
- The purpose of the key
- The thumbprint, and algorithm, used to hash the key
- The public key itself
3. Certificate Authorities act as a third part to verify the integrity of
public keys.
-->
<!-- ================================= -->
<!-- ================================= -->

View file

@ -1,126 +0,0 @@
---
tabtitle: "Azulien Blackblade"
title: "Character Backstory: Azulien Blackblade"
topics: [gaming, writing]
pub: "2018-01-12"
short_desc: "Here's the character backstory for one of my older characters
from a game long since forgotten: Azulien Blackblade. Enjoy!"
---
Here's the character backstory for one of my older characters from a game long
since forgotten: Azulien Blackblade. This character was a fighter-sorcerer,
built for a custom 3.5 game run by my friend Bill. He was loads of fun to play,
though I may have spoken up when I should have stayed silent. He died as a pile
of pieces, after taunting a demi-god and, expectedly, being eviserated. Enjoy!
## Character Backstory: Azulien Blackblade
I was a prestigious man. Once I wore the robes of a wizard. I studied at the
greatest libraries, spoke with the most intelligent scholars, and kept company
with the Archmages. But one day that all changed. The day I will never forget in
all my life: the day the Urdeshi attacked.
We were travelling through the northern regions of the desert, making our way to
ruins located among the dunes. As we stopped to drink and rest, our party was
beset upon by raiders, shielding their faces with wrapped fabrics, and attacking
us relentlessly with blades and spears. Of the 15 in our band, only 3 lived
through the attack. We were the unlucky ones. My robes were bloodied and torn,
my spellbook was burned before my eyes, my components along with it, and my
knowledge of the arcane became a secret lest I beg for death. Many times I had
considered revealing my talents, and welcoming the purge that would follow. The
particular group of Urdesh we found were skeptical of magic: they broke all our
potions, our wands, anything that didn't smell normal. My familiar, my dear
raven, was roasted and force fed to me. I didn't eat for days afterwards.
They tought me how to fight. How to use the weapons they used. They tought me
how to skirmish with only a scimitar to defend myself with. How to cast aside
blows, how to use a handful of sand to distract my opponent from my incoming
blow. They taught me pain. They taught me to not fear an incoming attack. Not to
fear death. From that, only rage grew. My hatred for the Urdesh slowly filled my
now-empty mind. Where once was scholarly knowledge and magical aptitude there
stood only revenge. A lust that was never fulfilled. A hunger that was never
sated.
For 5 years of my life I was haunted and tormented by the Urdesh. I was made a
puppet in their games; a gladiator in their arenas. My skills with the scimitar
and spear grew to legend. Armed with my rage and my revenge, I would let no
other gladiator steal from me the potential to see my captors destroyed. I would
never bow, never break, never surrender. My blade grew black from all the blood
and sand and grime. With each fight, I became more. I was no longer a slave, now
I was a name: Blackblade; the Raven Swordsman; Death. Names appropriate to my
appearance and my promise. The old me was dead, and the new me was never alive.
My insatiable revenge crept into the corners of my mind, revealing the
locked-away arcane knowledge. The fury of hundreds of gladitorial battles,
thousands of cracks of the whips, and millions of possibilities of better lives
all converged on the power I had stored away. No longer was I afraid of them. No
longer did their skepticism seem like a threat. Now it was their weakness. Now,
vengeance was mine.
With the cover of darkness, I scoured my memories for every shred of arcane
knowledge I could muster. I found my cantrips, my little tricks I had used to
harass the pretty girls at the college. Flares and dancing lights wouldn't do
what I needed, but they could help. I needed more power. I crept deeper. There I
felt it. The coldness of death, but the screaming of life, entwined. I could
feel the grasp of skeletons and ghasts, but they did not scare me; it was almost
like familiy. I could see the faces of people I had never known. They seemed
familiar, almost connected to me. I could feel their anger, their undying need
for vengeance. Like me, they were captives of fear and torment. Their rage was
almost unbearable, but I would not turn away. I would not submit to an illogical
existance as a mindless machine of death. I would overcome the rage, channel the
rage, harness the anger, focus the vengeance. I would take their blessings of
undeath and turn them upon my enemies as a curse. I knew now that the power I
had was not from study. It was always within me, welled up like a great lake,
full of untapped resources. I felt the presence of their blood grow, their power
now released. They were now me. I was their vessel. The scimitar I used, Raven I
called it, was now a weapon of death.
Their time had come. They had no reason to fear the unknown, until now.
The first to go was the guard. As he came, right on schedule, to deliver my
food, I offered him a choice. I had grown to like Mukeesh. He was stupid, and
because of that he was compasionate. He was too afraid. He was too loyal. He
died. From him, I lifted the keys with magic, commanding them into the lock,
releasing me. As I left, I could feel his blood calling to me. With his
head-wrap and Raven I made my way to the barracks. It was night time. There were
little defenses around those who defend. They died one by one. I would cup their
mouth, and slit their throat just enough for them to wake before they bled out.
Their last moments were all the same: horror, struggling, moaning, pleading,
acceptance, sorrow. They wept occassionally. There were a few who were
unsurprised, and stared into my eyes until their's went dark. They were the
brave. They had faced death. But none can win against death. The blood running
from my captors veins was unbearable. I tasted it, the nector of life. It was
ambrosia, life itself, sustaining me. Their lives were my feast.
I made my way through the camp, finally settling on the gladiator pits. Some of
my bretheren ran, some clung to some twisted form of loyaly and fought. The all
died. I drank in their life, their essence, and their sacrifice healed me.
Through the death of my enemies I grew strong, through the blood of the fallen
did I reclaim my dominance. Not only were the powers of death mine to harness,
but the fruits of its labor were sweet and nourishing.
The last to fall was my teacher. He was the only one I awoke before I killed
him. I waited for him to pray, to be ready for his gods. He tried to fight me,
but the master had become weak. His attacks were predictable. His tactics were
rotten. His flesh was soft, and my blade was sharp. He died a warrior, as he had
lived. His blood was the most satisfying of them all. I have no remorse for him.
It is pathetic to pity anyone; death comes for all.
I gathered up all the resources I needed, took all the coin I could find, and
left. To this day I still hear tales of the Swordsman of Death who slaughtered
an entire Urdesh gladiator camp. "They are right to fear him." I always reply.
"Death is patient but swift. It may come on the wings of an angel or the sword
of a stranger. But death always comes." I escaped that night and found a human
settlement. My scars and tattoos I covered as best I could, but they always
found me out. A run-away slave, an escaped prisoner; a fugitive. The humans
would at least treat my as their own. I found temporary refuge, but left
quickly. In the following days there were many hunters that I encountered. One
of them gave me the scar that marks me today. His name was Al-Kadaf, and his
blade was called Plight. It cut me from above my left eye to my right cheek. He
told me that wound would stay forever. My blade ending his life was my only
response.
Still I am hunted. Still the Urdesh search for the Raven Swordsman. But I go by
a different name now. I am Azulien Blackblade, Scourge of the Urdesh. Send your
hunters. Send your armies. I walk with death. I hunger for your life. And
tonight, I will feast.

View file

@ -1,44 +0,0 @@
---
tabtitle: "Moral Letters :: Index"
title: "Seneca's Moral Letters to Lucilius"
topics: [philosophy]
pub: "2018-01-15"
short_desc: "My friend Rob and I have recently been disucssing Seneca's
Moral Letters to Lucilius. As a companion to those discussions, I'm
documenting my responses to each letter."
---
<p>My friend Rob and I have recently been disucssing Seneca's
Moral Letters to Lucilius. As a companion to those discussions, I'm
documenting my responses to each letter. This page will serve as an index for
all of my responses.</p>
<h2>Seneca's Moral Letters to Lucilius</h2>
<ul>
<li><a href="{{ site.baseurl }}
{% post_url 2018-01-15-letter-to-lucilius-1 %}">
Letter 1: On Time</a></li>
<li><a href="{{ site.baseurl }}
{% post_url 2018-01-15-letter-to-lucilius-2 %}">
Letter 2: On discursiveness in reading</a></li>
<li><a href="{{ site.baseurl }}
{% post_url 2018-01-28-letter-to-lucilius-3 %}">
Letter 3: On True and False Friendship</a></li>
<li><a href="{{ site.baseurl }}
{% post_url 2018-01-28-letter-to-lucilius-4 %}">
Letter 4: On the Terrors of Death</a></li>
<li><a href="{{ site.baseurl}}
{% post_url 2018-02-11-letter-to-lucilius-5 %}">
Letter 5: On the Philosopher's Mean</a></li>
<li><a href="{{ site.baseurl}}
{% post_url 2018-02-11-letter-to-lucilius-6 %}">
Letter 6: On Sharing Knowledge</a></li>
<li><a href="{{ site.baseurl}}
{% post_url 2018-01-28-letter-to-lucilius-11 %}">
Letter 11: On the Blush of Modesty</a></li>
</ul>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius">
Collection of Seneca's Moral Letters to Lucilius on Wikisource
</a></p>

View file

@ -1,104 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 1"
title: "Seneca's Letter to Lucilius, Letter 1: On Time"
topics: [philosophy]
pub: "2018-01-15"
short_desc: "Seneca's Moral Letters to Lucilius are regarded as one of the
most prominent Stoic writings available. My friend Rob and I like to
discuss them during a weekly meeting, and I'd like to record my response
and thoughts as well. Here's letter 1, On Time"
---
<h1>Letter 1: On Time</h1>
<h2>Original Text</h2>
<p> Greetings from Seneca to his friend Lucilius.</p>
<p>1. Continue to act thus, my dear Lucilius set yourself free for your own
sake; gather and save your time, which till lately has been forced from you,
or filched away, or has merely slipped from your hands. Make yourself
believe the truth of my words, that certain moments are torn from us, that
some are gently removed, and that others glide beyond our reach. The most
disgraceful kind of loss, however, is that due to carelessness. Furthermore,
if you will pay close heed to the problem, you will find that the largest
portion of our life passes while we are doing ill, a goodly share while we
are doing nothing, and the whole while we are doing that which is not to the
purpose. 2. What man can you show me who places any value on his time, who
reckons the worth of each day, who understands that he is dying daily? For
we are mistaken when we look forward to death; the major portion of death
has already passed. Whatever years be behind us are in death's hands.</p>
<p>Therefore, Lucilius, do as you write me that you are doing: hold every hour
in your grasp. Lay hold of to-day's task, and you will not need to depend so
much upon to-morrow's. While we are postponing, life speeds by. 3. Nothing,
Lucilius, is ours, except time. We were entrusted by nature with the
ownership of this single thing, so fleeting and slippery that anyone who
will can oust us from possession. What fools these mortals be! They allow
the cheapest and most useless things, which can easily be replaced, to be
charged in the reckoning, after they have acquired them; but they never
regard themselves as in debt when they have received some of that precious
commodity, time! And yet time is the one loan which even a grateful
recipient cannot repay.</p>
<p>4. You may desire to know how I, who preach to you so freely, am practising.
I confess frankly: my expense account balances, as you would expect from one
who is free-handed but careful. I cannot boast that I waste nothing, but I
can at least tell you what I am wasting, and the cause and manner of the
loss; I can give you the reasons why I am a poor man. My situation, however,
is the same as that of many who are reduced to slender means through no
fault of their own: every one forgives them, but no one comes to their
rescue.</p>
<p>5. What is the state of things, then? It is this: I do not regard a man as
poor, if the little which remains is enough for him. I advise you, however,
to keep what is really yours; and you cannot begin too early. For, as our
ancestors believed, it is too late to spare when you reach the dregs of the
cask. Of that which remains at the bottom, the amount is slight, and the
quality is vile. Farewell.</p>
<h2>Response</h2>
<p>Time management. I'm pretty bad at time management. It's interesting
re-reading this letter after having read ahead a few. This one reads much
less personal than his later letters. Perhaps an indication of a developing
relationship.</p>
<p>Much of the letter emphasizes the importance of being present, and aware. One
of the most impactful parts of this letter epitomizes this: "Whatever years
be behind us are in death's hands." The acceptance of death as a necessary
and constant part of life is a Stoic theme, but this sentence reminds us of
this reality without remorse. Replace 'years' with 'time', and the letter's
theme is laid bare: time is an expense account you can only hope to balance,
and never credit. Seneca himself makes this comparison, noting that he only
balances his by being aware of his expenditures. To him, it seems being
aware of the waste is enough to balance the waste itself, which I find
interesting.</p>
<p>Seneca's account of how we spend our time strikes me as a tad cynical:
"...the largest portion of our life passes while we are doing ill, a goodly
share while we are doing nothing, and the whole while we are doing that
which is not to the purpose." Essentially, we spend most of our life not
doing what we intend to do, either because we fail to act, or we "[do] ill".
If I interpret "doing ill" to mean not pursuing Stoic virtue, I can
extrapolate "the purpose" to mean living a virtuous life. I think the
statement seeks more specific examples than the entirety of life's pursuit,
though, and in those cases "doing ill" could mean doing that which does not
benefit the specific pursuit. This could be playing video games instead of
cleaning my house, for example. In this case, it seems apt to define "doing
ill" as procrastination, and "the purpose" being whatever our goal is at
that particular moment. Though an interesting third option is more of a
relativity approach: we feel that life passes us by fastest while "doing
ill" or doing nothing, and in general life seems to pass by faster when we
are not focusing on our task than when we are. The ol' "Time flies while
you're having fun" chestnut. Not to say "doing ill" is having fun, though.
Rather, "doing ill" is like partying until 4am, and wondering how it got so
late.</p>
<p> Live in the moment, be aware of how you spend your time, and always act to
spend it wisely. Just be aware: no matter how carefully you budget, your
account will always be indebted to death.</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_1">
Moral Letters to Lucilius, Letter 1 on Wikisource
</a></p>

View file

@ -1,82 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 2"
title: "Seneca's Letter to Lucilius, Letter 2: On Discursiveness in Reading"
topics: [philosophy]
pub: "2018-01-15"
short_desc: "Seneca's second letter to Lucilius, On Discursiveness in
Reading, covers the importance of focus. There's also a quote by Epicurus,
which is apparently a feature of many of his letters to Lucilius."
---
<h1>Letter 2: On Discursiveness in Reading</h1>
<h2>Original Text</h2>
<p>1. Judging by what you write me, and by what I hear, I am forming a good
opinion regarding your future. You do not run hither and thither and distract
yourself by changing your abode; for such restlessness is the sign of a
disordered spirit. The primary indication, to my thinking, of a well-ordered
mind is a man's ability to remain in one place and linger in his own company.
2. Be careful, however, lest this reading of many authors and books of every
sort may tend to make you discursive and unsteady. You must linger among a
limited number of master thinkers, and digest their works, if you would derive
ideas which shall win firm hold in your mind. Everywhere means nowhere. When a
person spends all his time in foreign travel, he ends by having many
acquaintances, but no friends. And the same thing must hold true of men who
seek intimate acquaintance with no single author, but visit them all in a hasty
and hurried manner. 3. Food does no good and is not assimilated into the body
if it leaves the stomach as soon as it is eaten; nothing hinders a cure so much
as frequent change of medicine; no wound will heal when one salve is tried
after another; a plant which is often moved can never grow strong. There is
nothing so efficacious that it can be helpful while it is being shifted about.
And in reading of many books is distraction.</p>
<p>Accordingly, since you cannot read all the books which you may possess, it is
enough to possess only as many books as you can read. 4. "But," you reply, "I
wish to dip first into one book and then into another." I tell you that it is
the sign of an overnice appetite to toy with many dishes; for when they are
manifold and varied, they cloy but do not nourish. So you should always read
standard authors; and when you crave a change, fall back upon those whom you
read before. Each day acquire something that will fortify you against poverty,
against death, indeed against other misfortunes as well; and after you have run
over many thoughts, select one to be thoroughly digested that day. 5. This is
my own custom; from the many things which I have read, I claim some one part
for myself.</p>
<p>The thought for today is one which I discovered in Epicurus; for I am wont
to cross over even into the enemy's camp, not as a deserter, but as a scout.
6. He says: "Contented poverty is an honourable estate." Indeed, if it be
contented, it is not poverty at all. It is not the man who has too little, but
the man who craves more, that is poor. What does it matter how much a man has
laid up in his safe, or in his warehouse, how large are his flocks and how fat
his dividends, if he covets his neighbour's property, and reckons, not his past
gains, but his hopes of gains to come? Do you ask what is the proper limit to
wealth? It is, first, to have what is necessary, and, second, to have what is
enough. Farewell.</p>
<h2>Response</h2>
<p>I'm not sure who named the letters, but I think they should always read "On
Whatever I Intend to Write About, oh and this generally unrelated quote
probably from Epicurus." Which isn't to complain, I just find it amusing.
And, to be fair, this letter and quote combination do fit together.</p>
<p>The gist of this letter is the importance of focus. Seneca posits having too
broad a focus with regard to authors or topics will make Lucilius
"discursive and unsteady." A jack-of-all-trades is a master of none. His
comparisons with travel, food, medicine, and agriculture are all apt, though
a tad misleading, as each topic necessitates a differing degree of focus,
not to mention each may pursue different ends; the pursuit of reading or
travel may be ephemeral, whereas the pursuit of medicine or treatment may be
more lasting. Considering the theme of the letter, though, I don't want to
argue these particulars, since I like the metaphors.</p>
<p>The secondary theme of the letter deals with possessions. Both Seneca, and
the surprisingly on-topic quote from Epicurus encourage only owning enough
to cover what is needed, not necessarily what is desired. "It is, first, to
have what is necessary, and, second, to have what is enough." As an aspiring
minimalist, I couldn't agree more.</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_2">
Moral Letters to Lucilius, Letter 2 on Wikisource
</a></p>

View file

@ -1,228 +0,0 @@
---
tabtitle: "Character Write-up: Halvar"
title: "Character Write-up: Halvar, Rune Bearer"
topics: [gaming, writing]
pub: "2018-01-27"
short_desc: "The backstory for my first character in a new 5th Edition
Dungeons and Dragons campaign. Meet Halvar, a brash young warrior looking
for glory!"
---
# Character Backstory: Halvar, Rune Bearer
The boy stirred. A movement in his room brought his senses to him. It moved like
a shadow, hunting across his wall, and he feared he was the prey. Slipping
quietly from his blankets, he reached under his bed, and swiftly brought forth
the shield his father had given him. None too soon, as green flame erupted from
the shadow, streaking across the room. The boy raised his shield, as the flames
crashed upon him. In the same moment it was over, the boy standing among the
scorched wood, his shield glowing brightly from the runes inscribed on its face.
The shadow stepped forward, no longer a monster but a human figure, and bowed
deeply.
“You have within you the secret of the runes,” it said in a voice impossible to
place. Shifting in tone and pitch, the boy was uncertain if he was watching a
woman or a man. He was starting to think it was another entirely.
“The gods are not dead, nor is magic. Your sword, your blood, is proof enough.
Your destiny calls you, Halvar. Take forth your sword, and learn its true name.
Reveal the secret of the runes. You, Halvar, you will--”
A loud belch erupted from the man next to him.
“Give it up, Halvar! Weve heard your tale a thousand times. Its a good story
but a better lullaby once we get into the mead!”
Laughter sprung up, and Halvar leaned back into his chair. The dark bedroom
faded from his mind, replaced with the warmth of the nearby fire. The inn was
empty, save them, and it felt vast compared to his memories. After a long drink
from his cup, he spoke.
“Alright Baldur, I see I may talk you children to sleep with my tales of
greatness and destiny. Come then, you tell us one!”
As others rallied the cry, the door to the inn was thrown open, and a figure
stumbled in. Dressed in the armor of a town guard, he glanced around the room in
a panic, before focusing on the hearth and the gathering of men there.
“The road! Wolves! The caravan is under attack!” He shouted.
Halvar rose without hesitation, as those around him looked to him.
“Baldur, watch closely. This is how legends are made!”
He ran from the inn, reaching to his hip and finding his sword. He hadnt
remembered putting his belt on earlier. He must have done so without thinking.
_Too eager for song and drink!_ He mused.
As he neared the edge of the village, several others joined with him, and
together they began down the road. Howling could be heard on the wind, and the
woods were lit with the dancing light of torches.
Halvar turned to the others. “I will go first, and draw their attention. Ivar,
try to target the ones in the back with that bow. Tad, you go for the wagon. Our
goal is to draw them from the caravan. Once theyre away, get the wagon moving!”
He turned, then, and ran, not waiting for his companions replies. He knew time
was short, and greatness lay only around the bend.
Running fast, sword in hand, he came upon the caravan. The horses were frenzied,
but still harnessed. A small blessing, he thought, then regretted, seeing the
first of the dead. To his left he could see two wolves in the brush, and he
guessed three more must be near his flank. He turned his back on the two,
taunting them, as he moved past the wagon. His simple farce worked, and the
wolves made to pounce. The first wolf fell to his blade, as the second danced to
his side. From behind, he heard movement, then a yelp. He dared a glance, and
saw two more wolves. One was laying on its side, an arrow from its neck. The
other began to circle.
A sudden crack of reins drew his attention away to see the cart lurch forward.
The distraction was enough, and one of the circling wolves lunged. It caught
Halvars empty arm, and pulled him off balance, to the ground. Slashing wildly,
Halvar quickly recovered. His arm was mangled, the blood dripping from his hand
as the spittle dripped from the wolves mouths. The second wolf then lept, but
was caught mid flight by an arrow, and fell to the ground lifeless. Now
outnumbered, the remaining wolf retreated to the darkness of the woods.
Ivar was upon him then, supporting him as they quickly made after the caravan.
His arm burned, his chest pounded, and his head swam with anticipation of
Baldurs face, when he shared of his glory.
“Good shooting, Ivar! Thats two for you and two for me! Wait until Baldur--”
In a white blur, Ivar was torn from his side. Stumbling slightly, he turned to
see a great white wolf, the size of a small horse, with Ivars neck in its
teeth. With a snarl, it ripped the life from him, and as blood dripped from its
mouth, it spoke in the common tongue.
“You will die this night, rune bearer. You cannot be allowed to live.”
Halvar took up his stance. His left arm useless, he put it between him and his
enemy. The wolf then bellowed an unearthly howl, which echoed in the woods and
was joined by more voices.
_Unfortunate_, he thought, _This would make for a great tale. And not a single
skald around to watch!_
The two circled. The great wolf snarled a laugh of sorts.
“Do you know of me, manling? I am a daughter of Fenrir. I am to join my father
in Ragnarok. I will feast upon your gods carcasses, and drink of their blood!
You are not a god. What hope have you against one as great as me? Bare your
neck, and I will end your life quickly.”
Halvar smiled. “Do you know of me, pup? I am Halvar, son of Haakon, son of
Eirik, son of Odinson. I carry the secrets of the runes, and will herald the
return of the gods! You dare impede my destiny?! You will serve only to further
my legend!”
With renewed vigor, Halvar attacked. Sword was met with fang, as blow after blow
was traded. The great wolf, no stranger to the weapons of man, danced around the
blade. As each grew bloodied, they parted, panting and weary.
“You fight well, for a runt.” Halvar managed between breaths. “Tell me your
name, great wolf. No warrior should live in legend unknown!”
The wolf bared its teeth, perhaps mimicking a smile. “I am called Ísstonn, ice
fang. A vetrgarmr. Daughter of Vetrkona, Daughter of Hati Hróðvitnisson.”
A crushing of snow behind him signalled more wolves. Halvar knew his time was
over.
_Never a skald around…_ He began, then was interrupted by a yelp and a thud. He
glanced over his shoulder to see one of the two wolves laying still, an ax in
its side. From the woods, a figure emerged.
“Youre not a skald, but youll do!” Halvar shouted, a grin now upon his face.
His father stepped forth, drawing the handax from the wolf, and moved to join
him.
“Father and son shall fall by my fangs!” Ísstonn barked, and the fight resumed.
Once more, sword met fang, and blows were traded. Halvar and Haakon fought the
winter wolf, as other wolves howled in the dark woods. The bravery and skill of
the two was too much for the great wolf, and before long she lay bloodied and
defeated on the snow.
“You fight with conviction, Haakonson,” she spit, as blood ran from her mouth.
“Beware my fathers fang, manling. He will devour your gods.” The light faded
from the great beast, as the last fog of its breath disappeared into the cold night
air.
The two men made haste to the village. The night now silent.
“Halvar, what happened tonight, no one in the village may know of it.” Haakon
said, as he bandaged Halvars arm.
“Surely you joke! What happened tonight is a story to rival the legends of old!
Ow!” Haakon squeezed Halvars arm tightly. Tears welled in his eyes, as he
stared with an intensity Halvar had not seen for many years.
“Halvar. You indeed have a great destiny before you. This village is in danger
if you remain. You must leave here, and find your legend beyond these fields.”
Haakon then stood, and dared clear his eyes with his sleeve. After a brief
pause, he went and retrieved a small chest. He heaved the heavy container onto
the floor besides Halvar, and beckoned him open it.
Within, Halvar found a suit of chain mail, polished and oiled. Beneath it, a
leather tunic, and nestled next to it all, a helmet.
“This was your grandfathers, and his before him.” Haakon said. “If the stories
are to be believed, this mail saw many battles, some during the great war.”
Haakon then placed two hand axes next to the chest. “These are yours now. Muninn
and Huginn, named for the All Fathers favorite ravens. May they serve you well,
as they do him”
Finally, he laid Halvars sword upon his lap. “And this, you know of. What you
may not know is the legend of this sword. Here, a drink and our final toast.”
Haakon handed a cup to Halvar, and they drank.
“Ages past, when myths were made, and magic was commonplace, the keepers of the
runes used their powers to gift man with powerful weapons and armor and other
trinkets. This sword is one such weapon. I know not its true name. My father
told me it was called Eljunvegr, Enduring Hope, as I have told you, but there
is another name, lost to time. These runes, they are more than just decoration,
as you well know. Legend says, in the time of the great war, this sword was used
by a great berserker of Odin. Odins ritual to save humanity would destroy any
and all around him, and Odin commanded his men flee and live. This berserker
refused the command of the god, and fought alone to protect the All Father,
ensuring his victory. He fought with this sword, as you now will.”
Haakon then helped Halvar don his armor, and brought to him a pack. They then
went outside, to meet the dawn. Haakon led to Halvar a horse, and then returned
to the house. Before entering, he turned.
“You do honor to your family, Halvar. Never forget that.” With that, Haakon
moved inside, and closed the door.
As Halvar neared the edge of the village, there stood two men. He recognized one
as Baldur, and after a moment recognized the second as Tad.
“Leaving so soon? Surely youve tales of your daring rescue last night?” Baldur
said, stifling a yawn. “Where are you off to so early? It looks like you ride to
war!” He chuckled.
“You saved this village last night. That caravan had food and medicine.” Tad
chimed in.
“We saved the village, Tad. You, me and Ivar. We did.” Halvar replied, his voice
lacking in its usual bravado.
“Well, seems your adventures were a bit humbling. I admit, I fear what an actual
adventure will make you!” Baldur laughed. His expression then grew sober. “Every
great warrior needs a shield, Halvar. I know how much this means to you. I
restored it as best I could."
From his side, Baldur lifted a round shield. It was expertly crafted, and
perfectly balanced. Upon its face, a rune was burned into the wood, and gelded
in silver.
“Take this too, its from my family.” Tad held forth a horn, carved of bone with
a steel mouthpiece. “Consider them a reminder: your legend started here. Now go,
your father will have our beards if were seen with you.”
With a nod, Halvar rode from the village. He knew not to where he went, but he
knew his destiny would not let him stray far.

View file

@ -1,109 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 11"
title: "Seneca's Letter to Lucilius, Letter 11: On the Blush of Modesty"
topics: [philosophy]
pub: "2018-01-28"
short_desc: "Letter 11 deals with accepting our faults, staring an
unexpected quote from Epicurus."
---
# Letter 11: On the Blush of Modesty
## Original Text
[1] Your friend and I have had a conversation. He is a man of ability; his very
first words showed what spirit and understanding he possesses, and what progress
he has already made. He gave me a foretaste, and he will not fail to answer
thereto. For he spoke not from forethought, but was suddenly caught off his
guard. When he tried to collect himself, he could scarcely banish that hue of
modesty, which is a good sign in a young man; the blush that spread over his
face seemed so to rise from the depths. And I feel sure that his habit of
blushing will stay with him after he has strengthened his character, stripped
off all his faults, and become wise. For by no wisdom can natural weaknesses of
the body be removed. That which is implanted and inborn can be toned down by
training, but not overcome. [2] The steadiest speaker, when before the public,
often breaks into a perspiration, as if he had wearied or over-heated himself;
some tremble in the knees when they rise to speak; I know of some whose teeth
chatter, whose tongues falter, whose lips quiver. Training and experience can
never shake off this habit; nature exerts her own power and through such a
weakness makes her presence known even to the strongest. [3] I know that the
blush, too, is a habit of this sort, spreading suddenly over the faces of the
most dignified men. It is, indeed more prevalent in youth, because of the warmer
blood and the sensitive countenance; nevertheless, both seasoned men and aged
men are affected by it. Some are most dangerous when they redden, as if they
were letting all their sense of shame escape. [4] Sulla, when the blood mantled
his cheeks, was in his fiercest mood. Pompey had the most sensitive cast of
countenance; he always blushed in the presence of a gathering, and especially at
a public assembly. Fabianus also, I remember, reddened when he appeared as a
witness before the senate; and his embarrassment became him to a remarkable
degree. [5] Such a habit is not due to mental weakness, but to the novelty of a
situation; an inexperienced person is not necessarily confused, but is usually
affected, because he slips into this habit by natural tendency of the body. Just
as certain men are full-blooded, so others are of a quick and mobile blood, that
rushes to the face at once.
[6] As I remarked, Wisdom can never remove this habit; for if she could rub out
all our faults, she would be mistress of the universe. Whatever is assigned to
us by the terms of our birth and the blend in our constitutions, will stick with
us, no matter how hard or how long the soul may have tried to master itself. And
we cannot forbid these feelings any more than we can summon them. [7] Actors in
the theatre, who imitate the emotions, who portray fear and nervousness, who
depict sorrow, imitate bashfulness by hanging their heads, lowering their
voices, and keeping their eyes fixed and rooted upon the ground. They cannot,
however, muster a blush; for the blush cannot be prevented or acquired. Wisdom
will not assure us of a remedy, or give us help against it; it comes or goes
unbidden, and is a law unto itself.
[8] But my letter calls for its closing sentence. Hear and take to heart this
useful and wholesome motto: "Cherish some man of high character, and keep him
ever before your eyes, living as if he were watching you, and ordering all your
actions as if he beheld them." [9] Such, my dear Lucilius, is the counsel of
Epicurus; he has quite properly given us a guardian and an attendant. We can get
rid of most sins, if we have a witness who stands near us when we are likely to
go wrong. The soul should have someone whom it can respect, one by whose
authority it may make even its inner shrine more hallowed. Happy is the man who
can make others better, not merely when he is in their company, but even when he
is in their thoughts! And happy also is he who can so revere a man as to calm
and regulate himself by calling him to mind! One who can so revere another, will
soon be himself worthy of reverence. [10] Choose therefore a Cato; or, if Cato
seems too severe a model, choose some Laelius, a gentler spirit. Choose a master
whose life, conversation, and soul-expressing face have satisfied you; picture
him always to yourself as your protector or your pattern. For we must indeed
have someone according to whom we may regulate our characters; you can never
straighten that which is crooked unless you use a ruler. Farewell.
## Response
This letter stikes me as another casual writing of Seneca's. Some of his letters
seem very serious, and some are much more conversational. In this letter, Seneca
remninds us that the faults which nature gave us are beyond the power of wisdom
to fix. This, he assures us, is not something we should feel ashamed of or take
as a weakness, since it lies outside our control. His examples generally focus
on blushing, hence the title and theme, but it's easy for us to extend it to
many facets of our physical self; height comes to mind most immediately.
As with many sources of Stoicism, when I read the reassurances of authors long
since gone, I can't help but feel a sense of comfort. The problems of today, the
personal struggles we all endure, the anxieties we fight to overcome; they're
not new. Others before us have encountered them, and others after us will. I
think the Stoics would be quick to remind us, it is our place to endure and then
help others endure. At least, that's what I am quick to remind myself of.
The quote, another from Epicurus (Seneca's secret man-crush, no doubt), speaks
of finding a good role-model. Reflecting on his quote made me realize I don't
have many role-models in life, at least not many living. Perhaps that matters
little, but I think having a living example you can work from makes matters
easier. Seneca rightly shows how it goes beyond simply living by your
role-model's standards, but also using them as an ever-present companion, in
order to help with decisions and actions. Very reminiscent of "What would Jesus
do?" Personally, I like this idea, and I must look for a role-model I can
follow. A few names jump out: Tim Ferris, and Elon Musk. Ferris for his
unrelenting pursuit to better himself, and Musk for his unrelenting pursuit to
better the world around him.
# Sources
* [Moral Letters to Lucilius, Letter 11 on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_11)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})

View file

@ -1,108 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 3"
title: "Seneca's Letter to Lucilius, Letter 3: On True and False
Friendship"
topics: [philosophy]
pub: "2018-01-20"
short_desc: "Letter 3 deals with friends, and I don't mean the number shown
on Facebook. True Friendship, to Seneca, is a place of honor!"
---
<h1>Letter 3: On True and False Friendship</h1>
<h2>Original Text</h2>
<p>1. You have sent a letter to me through the hand of a "friend" of yours, as
you call him. And in your very next sentence you warn me not to discuss with
him all the matters that concern you, saying that even you yourself are not
accustomed to do this; in other words, you have in the same letter affirmed
and denied that he is your friend. 2. Now if you used this word of ours in
the popular sense, and called him "friend" in the same way in which we speak
of all candidates for election as "honourable gentlemen," and as we greet
all men whom we meet casually, if their names slip us for the moment, with
the salutation "my dear sir," so be it. But if you consider any man a
friend whom you do not trust as you trust yourself, you are mightily
mistaken and you do not sufficiently understand what true friendship means.
Indeed, I would have you discuss everything with a friend; but first of all
discuss the man himself. When friendship is settled, you must trust; before
friendship is formed, you must pass judgment. Those persons indeed put last
first and confound their duties, who, violating the rules of Theophrastus,
judge a man after they have made him their friend, instead of making him
their friend after they have judged him. Ponder for a long time whether you
shall admit a given person to your friendship; but when you have decided to
admit him, welcome him with all your heart and soul. Speak as boldly with
him as with yourself. 3. As to yourself, although you should live in such a
way that you trust your own self with nothing which you could not entrust
even to your enemy, yet, since certain matters occur which convention keeps
secret, you should share with a friend at least all your worries and
reflections. Regard him as loyal, and you will make him loyal. Some, for
example, fearing to be deceived, have taught men to deceive; by their
suspicions they have given their friend the right to do wrong. Why need I
keep back any words in the presence of my friend? Why should I not regard
myself as alone when in his company?</p>
<p>4. There is a class of men who communicate, to anyone whom they meet, matters
which should be revealed to friends alone, and unload upon the chance
listener whatever irks them. Others, again, fear to confide in their closest
intimates; and if it were possible, they would not trust even themselves,
burying their secrets deep in their hearts. But we should do neither. It is
equally faulty to trust everyone and to trust no one. Yet the former fault
is, I should say, the more ingenuous, the latter the more safe. 5. In like
manner you should rebuke these two kinds of men, both those who always
lack repose, and those who are always in repose. For love of bustle is not
industry, it is only the restlessness of a hunted mind. And true repose
does not consist in condemning all motion as merely vexation; that kind of
repose is slackness and inertia. 6. Therefore, you should note the
following saying, taken from my reading in Pomponius: "Some men shrink into
dark corners, to such a degree that they see darkly by day." No, men should
combine these tendencies, and he who reposes should act and he who acts
should take repose. Discuss the problem with Nature; she will tell you that
she has created both day and night. Farewell.</p>
<h2>Response</h2>
<p>In this letter I take away two themes: one of friendship, and one of
discussions. Of friendship, I think Seneca's definition sets a high bar,
though rightfully so. A friend (perhaps a "true friend", considering
Facebook et al) is one you can confide in without restriction, except for
the most tightly held of secrets. I can personally count the number of
people I could call this type of friend on one hand. To Seneca, as with me,
friend is an honorable position.</p>
<p>In today's social-media-fueled world, I find that the term "friend" resonates
much closer to Seneca's sick burn: "friend" in the same way in which we
speak of all candidates for election as "honorable gentlemen." Perhaps,
though, there's a bit of syntactic significance here. To the Stoics, the
importance of community and brotherhood is found throughout. Marcus Aurelius
has a famous quote about it, as masterfully illustrated by the great Gavin
at Zen Pencils: [<a href="https://zenpencils.com/comic/aurelius/"> Link
</a>]. I think it safe to say we should be friendly and helpful to all we meet,
whereas to welcome one as a friend is a significant event, and one which
requires careful consideration.</p>
<p>The second theme, discussion, is only touched on but I think is significant
enough to warrant attention. Seneca mentions the importance of moderation in
trust and discussion with others. Do not share freely and constantly, and
also do not withdraw within yourself too far. I think here we see a
blueprint for discussion with others. To borrow from Marcus, we are all
brothers, and in that sense we should be comfortable discussing common
matters. However, it is only with friends that we should be comfortable
discussing more personal matters, and even then we must be considerate. Once
again, our social-media-centric world finds many of us sharing freely into a
void we do not recognize as a crowd. Many would do well to remember: social
media is not empty! There are those who greedily capture every word you give
freely, like a stray animal to a buffet. Judge well what you decide to
share, for likely it is not with "true friends" that the message solely
goes.</p>
<p>Reflecting on this letter made me carefully evaluate my friendships. I rarely
have difficulty with people, though admittedly I take time to "warm up" to
them. In terms of discussions, I don't find much to be beyond common topics.
In that sense, I think I am a bit too loose-lipped, though perhaps not as
much as I think. However, I do know that it is a small group with which I
confide the most personal challenges or achievements I have made. And, as
Seneca does suggest, I do not allow entry into this group lightly!</p>
<h3>Source</h3>
<p><a href="https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_3">
Moral Letters to Lucilius, Letter 3 on Wikisource
</a></p>

View file

@ -1,119 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 5"
title: "Seneca's Letter to Lucilius, Letter 5: On the Philosopher's Mean"
topics: [philosophy]
pub: "2018-02-11"
short_desc: "In this letter, Seneca explores the concept of All Things in
Moderation, but with a Stoic twist!"
---
# Letter 5: On the Philosopher's Mean
## Original Text
I commend you and rejoice in the fact that you are persistent in your studies,
and that, putting all else aside, you make it each day your endeavour to become
a better man. I do not merely exhort you to keep at it; I actually beg you to do
so. I warn you, however, not to act after the fashion of those who desire to be
conspicuous rather than to improve, by doing things which will rouse comment as
regards your dress or general way of living. Repellent attire, unkempt hair,
slovenly beard, open scorn of silver dishes, a couch on the bare earth, and any
other perverted forms of self-display, are to be avoided. The mere name of
philosophy, however quietly pursued, is an object of sufficient scorn; and what
would happen if we should begin to separate ourselves from the customs of our
fellow-men? Inwardly, we ought to be different in all respects, but our exterior
should conform to society. Do not wear too fine, nor yet too frowzy, a toga.
One needs no silver plate, encrusted and embossed in solid gold; but we should
not believe the lack of silver and gold to be proof of the simple life. Let us
try to maintain a higher standard of life than that of the multitude, but not a
contrary standard; otherwise, we shall frighten away and repel the very persons
whom we are trying to improve. We also bring it about that they are unwilling to
imitate us in anything, because they are afraid lest they might be compelled to
imitate us in everything.
The first thing which philosophy undertakes to give is fellow-feeling with all
men; in other words, sympathy and sociability. We part company with our promise
if we are unlike other men. We must see to it that the means by which we wish to
draw admiration be not absurd and odious. Our motto, as you know, is "Live
according to Nature"; but it is quite contrary to nature to torture the body, to
hate unlaboured elegance, to be dirty on purpose, to eat food that is not only
plain, but disgusting and forbidding. Just as it is a sign of luxury to seek
out dainties, so it is madness to avoid that which is customary and can be
purchased at no great price. Philosophy calls for plain living, but not for
penance; and we may perfectly well be plain and neat at the same time. This is
the mean of which I approve; our life should observe a happy medium between the
ways of a sage and the ways of the world at large; all men should admire it, but
they should understand it also.
"Well then, shall we act like other men? Shall there be no distinction between
ourselves and the world?" Yes, a very great one; let men find that we are unlike
the common herd, if they look closely. If they visit us at home, they should
admire us, rather than our household appointments. He is a great man who uses
earthenware dishes as if they were silver; but he is equally great who uses
silver as if it were earthenware. It is the sign of an unstable mind not to be
able to endure riches.
But I wish to share with you to-day's profit also. I find in the writings of
our Hecato that the limiting of desires helps also to cure fears: "Cease to
hope," he says, "and you will cease to fear." "But how," you will reply, "can
things so different go side by side?" In this way, my dear Lucilius: though they
do seem at variance, yet they are really united. Just as the same chain fastens
the prisoner and the soldier who guards him, so hope and fear, dissimilar as
they are, keep step together; fear follows hope. I am not surprised that they
proceed in this way; each alike belongs to a mind that is in suspense, a mind
that is fretted by looking forward to the future. But the chief cause of both
these ills is that we do not adapt ourselves to the present, but send our
thoughts a long way ahead. And so foresight, the noblest blessing of the human
race, becomes perverted. Beasts avoid the dangers which they see, and when they
have escaped them are free from care; but we men torment ourselves over that
which is to come as well as over that which is past. Many of our blessings bring
bane to us; for memory recalls the tortures of fear, while foresight anticipates
them. The present alone can make no man wretched. Farewell.
## Response
Mean as in average. Not, like... being a jerk. In this letter, Seneca encourages
us to live a life which does not ostracize us from society. Instead, we should
look beyond the facade, and understand the intentions behind our and others'
actions. Living within and conforming to society is not a problem, so long as we
do not neglect our virtue: "Inwardly, we ought to be different in all respects,
but our exterior should conform to society."
I take from this letter two important lessons: live your life for you, not for
others; and don't be afraid to be normal. Though, maybe "live your life for you
and pursue virtue" is better. Seek modesty (and moderation) in all things. Be a
philosopher in thought, word, and deed, but be an everyday person too, and
perhaps primarily. Nobody likes being lectured to, but people do enjoy talking
to each other. A big aspect of Stoicism is sharing what we learn with others;
improving ourselves to improve others. The only way to do that is by being, for
lack of a better word, normal. As Seneca puts it, "We part company with our
promise if we are unlike other men."
Seneca's included quote at the end comes from Hecato, and re-enforces the
significance of moderation. "Cease to hope, and you will cease to fear." Seneca
expands on this to stress the importance of staying present: "...memory recalls
the tortures of fear, while foresight anticipates them." The way Seneca
approaches and expands the quote, though, is simply poetic, and something I will
certainly remember moving forward: "Just as the same chain fastens the prisoner
and the soldier who guards him, so hope and fear, dissimilar as they are, keep
step together; fear follows hope."
A few more things worth noting:
"Repellent attire, unkempt hair, slovenly beard, open scorn of silver dishes, a
couch on the bare earth, and any other perverted forms of self-display, are to
be avoided." This seems like a direct response (and another patented Seneca Sick
Burn) to the Cynics.
"It is the sign of an unstable mind not to be able to endure riches." I read
this a few different ways. First, endure the riches of others, and do not let
them effect your sense of self-worth. Second, endure the riches of yourself, and
do not let it inflate your self-worth. Finally, endure all riches, and recognize
them as an indifference, preferred but never at the expense of virtue.
# Source
* [Moral Letters to Lucilius, Letter 5 on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_5)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})

View file

@ -1,97 +0,0 @@
---
tabtitle: "Seneca's Letter to Lucilius, Letter 6"
title: "Seneca's Letter to Lucilius, Letter 6: On Sharing Knowledge"
topics: [philosophy]
pub: "2018-02-11"
short_desc: "Knowledge withheld is only partial. Sharing knowledge, and
experiencing it, fosters improvement!"
---
# Letter 6: On Sharing Knowledge
## Original Text
I feel, my dear Lucilius, that I am being not only reformed, but transformed. I
do not yet, however, assure myself, or indulge the hope, that there are no
elements left in me which need to be changed. Of course there are many that
should be made more compact, or made thinner, or be brought into greater
prominence. And indeed this very fact is proof that my spirit is altered into
something better, that it can see its own faults, of which it was previously
ignorant. In certain cases sick men are congratulated because they themselves
have perceived that they are sick.
I therefore wish to impart to you this sudden change in myself; I should then
begin to place a surer trust in our friendship, the true friendship which hope
and fear and self-interest cannot sever, the friendship in which and for the
sake of which men meet death.
I can show you many who have lacked, not a friend, but a friendship; this,
however, cannot possibly happen when souls are drawn together by identical
inclinations into an alliance of honourable desires. And why can it not happen?
Because in such cases men know that they have all things in common, especially
their troubles.
You cannot conceive what distinct progress I notice that each day brings to me.
And when you say: "Give me also a share in these gifts which you have found so
helpful," I reply that I am anxious to heap all these privileges upon you, and
that I am glad to learn in order that I may teach. Nothing will ever please me,
no matter how excellent or beneficial, if I must retain the knowledge of it to
myself. And if wisdom were given me under the express condition that it must be
kept hidden and not uttered, I should refuse it. No good thing is pleasant to
possess, without friends to share it.
I shall therefore send to you the actual books; and in order that you may not
waste time in searching here and there for profitable topics, I shall mark
certain passages, so that you can turn at once to those which I approve and
admire. Of course, however, the living voice and the intimacy of a common life
will help you more than the written word. You must go to the scene of action,
first, because men put more faith in their eyes than in their ears, and second,
because the way is long if one follows precepts, but short and helpful, if one
follows patterns.
Cleanthes could not have been the express image of Zeno, if he had merely heard
his lectures; he shared in his life, saw into his hidden purposes, and watched
him to see whether he lived according to his own rules. Plato, Aristotle, and
the whole throng of sages who were destined to go each his different way,
derived more benefit from the character than from the words of Socrates. It was
not the class-room of Epicurus, but living together under the same roof, that
made great men of Metrodorus, Hermarchus, and Polyaenus. Therefore I summon you,
not merely that you may derive benefit, but that you may confer benefit; for we
can assist each other greatly.
Meanwhile, I owe you my little daily contribution; you shall be told what
pleased me to-day in the writings of Hecato; it is these words: "What progress,
you ask, have I made? I have begun to be a friend to myself." That was indeed a
great benefit; such a person can never be alone. You may be sure that such a man
is a friend to all mankind. Farewell.
## Response
This letter is very casual, more of an update than anything, I feel. Seneca
draws reference to the significance of friendship once more, as was covered in
letter three. Expanding upon it, he emphasizes the importance of sharing
knowledge: "And if wisdom were given me under the express condition that it must
be kept hidden and not uttered, I should refuse it. No good thing is pleasant to
possess, without friends to share it." Beyond just sharing, though, is the
importance of experiencing. His mentions of Cleanthes to Zeno, and Plato or
Aristotle to Socrates, help illustrate this notion.
What strikes me of significance in this letter is the quote Seneca includes from
Hecato: "What progress, you ask, have I made? I have begun to be a friend to
myself." It reminds me of a quote from an article I read written in the 1920s:
"I am persuaded that no one ever achieves anything worth-while in this world
unless he has so great a respect for his work that he compels all other men to
respect it." In my eyes, the first is a requirement for the second; before you
can respect yourself and your work, you must be a friend with yourself. Instead
of fighting against every negative feeling or doubt, you must find strength and
power. Only then will you live with such assurance that you will harbor respect
wherever you walk.
# Sources
* [Moral Letters to Lucilius, Letter 6 on Wikisource](
https://en.wikisource.org/wiki/Moral_letters_to_Lucilius/Letter_6)
* [Why I Quit Being So Accomidating](
https://mikecanex.wordpress.com/2012/12/26/1922-why-i-quit-being-so-accommodating/)
###### [Letter Index]({{ site.baseurl }}{% post_url 2018-01-15-Letters-To-Lucilius %})

View file

@ -1,99 +0,0 @@
---
tabtitle: 'An Update'
title: 'It has been a while.'
topics: [writing, life]
pub: '2020-06-03'
short_desc: "It has been a while. Here's an update, of sorts."
---
# An Update
There is nothing I've experienced as humbling as powerlessness. The immediate
realization that, despite all the capabilities which may be before you, you can
do nothing to affect a situation. It is a powerful reminder that we are, all,
parts of a whole. That could mean "cogs in a machine" or other such cynical
metaphors, or it could mean part of a team, working together towards a goal. I
often fall for the former, and rally to the later. Right now, I see examples of
the later all around me: protesters on streets, in parks, joining together to
oppose a borderline dictator who chooses military action over reform. Yet, I
don't understand how I can fit in. I understand how, literally, I can join in
the protests. I'm not worried about my health or my status in doing so, yet I
still hesitate. Because I feel powerless. Because I look at protests, and I see
peaceful citizens opposed by military bullies. I see the desperate grasps for
control furthering oppression and injustice. I see "their" power, and I feel
"their" power, and I sit here, thoughts gasping for breath in a sea of rage and
regret. I know adding my voice would not be in vain. I understand that another
body in the crowd is not just a number, but a show of support. And yet I still
hesitate. Perhaps out of fear; perhaps I was wrong to boldly claim I was
unconcerned with my health or status. I like to think I can set aside those and
other "indifferents" during times when virtuous action is required; I like to
think I would be one to race towards danger, if it was the right thing to do.
Yet, as the saying goes, often our actions speak louder than words.
But perhaps this is a misperception. There are many ways to show support, many
avenues to fight oppression. If fear dictate I stay in my house, "safe" from the
troubles in the world, then what can I do from here? Much like a voice in the
crowd, throwing a blog post out to the world may seem ineffective, but to expect
change on this scale be made only by my voice, is selfish and fantasy. This blog
post represents my voice online. It is my space, where I can share my ideas and
theories, my creations and my fears. In our digital world, this is my personal
park from which I can protest, and so I shall. And just like protest in
meatspace, it need not end at this. I can still contact my representative, my
congressperson, and anyone I feel can and should know my opinion. And so I
shall. And I encourage anyone who stumbles across this post, in good times and
bad alike, to know that you have options. That powerlessness, while humbling, is
not a force of oppression, but a call to examine your perceptions.
## Resources
[Find your
Representative](https://www.house.gov/representatives/find-your-representative)
[Find your Senators](https://www.senate.gov/senators/contact)
# And now for something completely different...
Rails! I've been learning Ruby on Rails (again... again) as a means to build
some of the applications I've been thinking of. The most immediate, and the
motivation for the recent return, is to build a character sheet system for
roleplaying games, specifically Pathfinder and D&D 5e. For a long time, I have
considered how cool it would be to have a dynamic character sheet that can
calculate all my rolls for me, help me level up, and provide me contextual
information. I want to explore tying it to a chat bot, available first on Matrix
but later on Discord and perhaps others, to allow for in-line reference and
rolling with character awareness, for both players and DMs. I've been working my
way through Michael Hart's [Ruby on Rails
Tutorial](https://www.learnenough.com/ruby-on-rails-6th-edition). I'm literally
on the last chapter of building the example application, and look forward to
using it as the foundation to build my application. I also played around with
[Matrix](https://matrix.org/) and a [Ruby
API](https://github.com/ananace/ruby-matrix-sdk) for building a bot. Glaub, my
WIP bot, was able to connect to the Heroku-deployed application and query it for
information via REST calls. I look forward to exploring this more as well.
I also stumbled across [#100DaysToOffload](https://100daystooffload.com). I
think it's a cool idea, and I'm going to try and pursue it. I have plenty I
think about and do every day, and some of it may be helpful.
Finally, I've been very interested in a number of things since being confined
during quarantine: self-hosting, decentralized platforms, exercise, cooking,
gaming, streaming. Some of these are continued hobbies, some of these are
relatively new, and some are completely new to me. I see many synergies between
them, and as part of my writing goals, I want to explore them. I already
highlighted one: Matrix, a decentralized platform, and building a
character-sheet bot. In fact, it also incorporates self-hosting, since I
followed [this fun
tutorial](https://matrix.org/blog/2020/04/06/running-your-own-secure-communication-service-with-matrix-and-jitsi)
and setup and configured my own Matrix homeserver and Jitsi Meet instance.
Because part of the #100DaysToOffload is to share these posts on socials, I'm
also resuming my look into [Mastodon](https://joinmastodon.org/) and considering
self-hosting a homeserver of that as well. I'm also considering finding a
[Peertube](https://joinpeertube.org/) community to upload videos to. I think
Peertube is a cool idea, and as someone pointed out, there's not a lot of gaming
content on it. I could help promote the platform as an alternative for finding
fun gaming videos. Well, at least, for finding gaming videos.
That's all for now. Stay safe, stay vigilant, pursue virtue in all that you do.
If you're not sure what to do, consider writing a blog! I'm writing this post as
part of [#100DaysToOffload](https://100daystooffload), an initiative to inspire
writing habits. Perhaps you could do the same.

View file

@ -1,234 +0,0 @@
---
tabtitle: 'Setting Up a BTRFS RAID-1'
title: 'Using BTRFS to setup a simple RAID, with subvolumes, snapshots and
backups'
topics: [technology]
pub: '2020-06-14'
short_desc: 'BTRFS is a file system, and includes built-in functionality
for RAID. I decided to use it for the storage disks in my desktop. Here is
how I set it up, using subvolumes, with snapshots and backups.'
---
# BTRFS: Smooth as Butter
I have a habit of calling BTRFS "butter-F-S." Conveniently in text I don't feel
a need to say that, because it's easier to type out BTRFS than "butter-F-S", as
opposed to being easier to say the latter than the former. Regardless, BTRFS is
a file system, which can be thought of as the organization system used by a hard
drive to store files. File systems provide the functionality necessary for
handling data; without one, data would exist on a disk with no means of (simple,
reliable) access, management, or use. Every operating system provides the
necessary configurations for using at least one file system, and often times can
be expanded to understand more file systems, as is the case with Linux. If
you're used to Windows, you'll be primarily familiar with two file systems:
NTFS, and FAT. If you're familiar with Linux, you'll have probably dealt with
those, as well as EXT. If you're adventerous, you have have tried additional
file systems such as ZFS, or BTRFS.
When I returned to Linux full-time on my desktop, I decided I wanted to setup a
storage system. I initially shopped around for a NAS: network-attached storage.
This would be a separate device, basically a motherboard with hard-drives. It
would include software for storing data reliably, as well as applications for
serving that data, such a Plex. There are many top-rated off-the-shelf options
available, but many are costly, propietary, and lock you in to that solution. I
decided to go with something a bit more readily available, and turn two existing
3 terrabyte drives into a storage system that would live as part of my desktop.
The remainder of this post will deal with how I setup BTRFS on my Linux desktop,
using sub-volumes, creating automated snapshots, and setting up a back-up
schedule.
## Setting up BTRFS
Linux has "first-class" support for BTRFS, which was a deciding force between it
and ZFS. (Though, recently, ZFS has made some strides as well.) The only
requirements necessary for using BTRFS is to install the `btrfs-progs` program,
which is required for basic operations. With requirements done, the next step is
to setup the filesystem on your disk of choice. This will delete all information
on your disk, so only do this when you're certain any existing data has been
backed-up, or you don't mind losing it.
```
mkfs.btrfs /dev/partition
```
I decided to go with a partitionless setup, which is a slightly modified version
of the above command. The above command also allows for adding a disk label, as
well as a few other options; `man mkfs.btrfs` will give you all the details. I
decided to call my BTRFS storage system my "Bag of Holding."
```
mkfs.btrfs -L BagOfHolding /dev/sdg
```
Creating a partitionless setup removes the MBR or GPT partitioning schemes, and
relies on subvolumes to simulate partitions. Because I'm only using these disks
for storage, and I won't be booting from them, this seemed like the way to go.
My setup will take two drives, and combine them together into a RAID-1. In order
to allow for me to get the data from the drives into my new RAID, I did one disk
at a time, and moved data between them, I then balanced the RAID.
## Configuring a BTRFS RAID
At this point, I have two separate drives. One of my drives has all my data on
it, the other drive is a raw, partitionless filesystem. At this point, we can
leverage BTRFS to combine both our disks into a single "device", and then
balance it. All these commands will leverage the `btrfs` command, which needs to
be run as root.
First, mount one of the drives. In my case, I mounted the drive with data
```
mount -t btrfs /dev/sdg /mnt/BagOfHolding
```
Next, I added my second device to the mounted file system
```
btrfs device add /dev/sdh /mnt/BagOfHolding
```
At this point, we have a filesystem with two devices, but the data and metadata
hasn't been balanced yet. To simply balance the data, and replicate a RAID-0
setup, you would run the `btrfs balance` command, specifying the
mounted filesystem. In my case, I wanted to replicate a RAID-1 setup, having the
two disks mirrored instead of striped. The command is modified to include a
"balance filter":
```
btrfs balance -dconvert=raid1 -mconvert=raid1 /mnt/BagOfHolding
```
This command will take time, since it has to re-balance the data across the
devices. A convenient time for a short aside:
### Buzzwords of Butter
- Copy-on-Write (COW): Basically, only make copies to data when there are
written changes to it. I don't fully understand Copy-on-Write, and is
possibly a good candidate for a future post.
- Subvolumes: Like a partition, but not a block device. The BTRFS Wiki defines
it as "an independently mountable POSIX filetree." I think of subvolumes as
"software partitions" which I'm sure is both wrong and infuriating to people
who know more about it than I do.
- Snapshots: A snapshot is a subvolume that shares its data with another
subvolume, using copy-on-write. This means if there are no changes to the
underlying data, a snapshot is basically just a reference to the exactly
same data as the initial subvolume. As changes get made, the snapshot
references a copy of "old" data, as opposed to the new data. Thus, a
snapshot represents data at a specific point in time.
## Setting up Subvolumes
At this point, I have a single device made of two disks. The device, when
queried using `btrfs filesystem show` shows the total available and used space,
and the individual disks composing it. Creating subvolumes is optional; by
default, a BTRFS filesystem has one subvolume (with id 5) as the "root." If you
mount the device, you'll mount that, and see the entire device. I wanted a bit
more organization, and options for snapshots, so I created a number of
subvolumes for different files: Books, Code, Documents, Games, Misc, Music,
Pictures, Videos. I mount each separately, and then sym-link directories in my
home directory to a corresponding subvolume.
Creating a subvolume is very straight forward, using the `brtfs subvolume
create` command. I made many, as mentioned before, and I'll walk through how I
setup the Books subvolume. I followed the same steps for all other subvolumes.
First, I created it:
```
btrfs subvolume create /mnt/BagOfHolding/Books
```
Then, I configured it to automatically mount. This involved adding a line to my
fstab file:
```
...
UUID=658cc4e0-93e1-43b5-b068-d889b44ae98d /mnt/BagOfHolding/Books btrfs subvol=/Books,defaults,nofail,x-systemd.device-timeout=5
...
```
Looks very similar to other entries, except that the option `subvol=/Books` is
necessary! This whole line tells the file system to mount the BTRFS subvolume
located at Books _relative to the "root" subvolume_, to the mount point
"/mnt/BagOfHolding/Books". The other important thing to remember is that
subvolumes are not block devices. For the BTRFS device, there is only one block
device, and that's the RAID we setup earlier. If you run `btrfs filesystem show`
you'll see the device has a single UUID, despite having the two individual
disks. In fact, if you were to mount either of the disk devices, you would mount
the raid; in my case, if I were to use `/dev/sdg` or `/dev/sdh` instead of the
UUID, it would do the same thing. UUIDs are more reliable, though, so I tend
towards them. My fstab has a line like the above for each subvolume. Once that's
done, unmount the RAID, and then either run `mount -a` or restart to get each
individual subvolume mounted. The final step I did was to symbolic link
directories from my home directory to the corresponding subvolumes. Following
with Books, I did `ln -s /mnt/BagOfHolding/Books Books` from my home directory.
Now, if I `cd ~/Books` I get to the subvolume on my RAID.
## Scheduling Snapshots
With the RAID established, and subvolumes created, mounted and linked, I now can
schedule automatic snapshots. An easy way to do so is with a program called
Snapper. Installing that provides the application, as well as schedules both via
cron and Systemd. Because I'm running Arch, we'll rely on the Systemd timer.
Before that, we need to create a Snapper configuration.
```
sudo snapper -c books create-config /mnt/BagOfHolding/Books
```
This will create the configuration file in "/etc/snapper/configs/". The
configuration includes limits on how many snapshots to keep of different types
("hourly", "weekly", etc..). The defaults seemed sane enough for me. Without a
cron scheduler, though, nothing else happens. (If you have a cron scheduler,
then it will have started automatically and will run accordingly). The final
step is to enable and start the "snapper-timeline" timer. If desired, modify the
timer frequency (I believe the default is hourly, which is good enough).
One last thing to do for Systemd is to also enable and start the
"snapper-cleanup" timer, which will cull snapshots down to the configured amount
from the configuraiton file.
An interesting thing about snapshots is that, unless something has changed, they
won't take up space. Creating 10 snapshots will not replicate data 10 times.
What each snapshot will capture are any changes that have been made to the data.
## Creating Backups from Snapshots
The final phase of my BTRFS journey is to establish backups. One thing that must
be emphasized: **SNAPSHOTS ARE NOT BACKUPS**. They can be used to make backups,
though. The way I'm doing that currently is with a program called snap-sync.
snap-sync will iterate through each Snapper config, and send a snapshot from
each to a remote BTRFS-formatted source. In my case, the remote source is an
external hard drive. I formatted it similar to my RAID drives, without a
partition. Once done, I ran `snap-sync` as root, which provides guidance for
choosing a disk, and walks through each Snapper config. I ran it once, to get
each directory established on the external drive. The manual (`man snap-sync`)
includes example Systemd timers, which I used to create a timer and service in
"/usr/lib/systemd/system". Then, I enabled and started the timer. The example
runs once a week, though I think I may update that to once a day.
## Conclusion
With that, I feel I have a good solution to my storage needs. I can keep all my
data on a RAID drive with backups, accessible easily from the primary machine I
use. I further synchronize music and pictures to and from my phone using
Syncthing, which will be an upcoming topic of discussion. Some next steps:
- setup and configure Calibre for my books
- better configure Demlo for my music
- look into accessing my RAID from my Raspberry Pi, perhaps via NFS, and
leveraging wake-on-lan, to allow for streaming media remotely whenever,
without having to leave my desktop on
I'm writing this post as part of [#100DaysToOffload](
https://100daystooffload.com), an initiative to inspire writing habits. Perhaps
you could do the same.
# Sources
* [btrfs on the Arch Wiki](https://wiki.archlinux.org/index.php/Btrfs)
* [Snapper on the Arch Wiki](https://wiki.archlinux.org/index.php/Snapper)
* [snap-sync](https://github.com/wesbarnett/snap-sync)
* [The BTRFS Wiki](https://btrfs.wiki.kernel.org/index.php/Main_Page)

View file

@ -1,135 +0,0 @@
---
tabtitle: "Character Story: Gabriella's Fall"
title: "Character Story: Gabriella's Fall"
topics: [gaming, writing]
pub: "2020-06-18"
short_desc: "A story I wrote about the consequences of the actions of
Gabriella, a paladin in D&D5e"
---
# Character Story: Gabriella's Fall
_Gabriella de la Rodriguez Alejandra Santa Lucia, you are hereby relieved of
duty and dishonorably discharged from the Barakhan Army._
The morning was cold. Its always cold. Something Gabriella knew but rarely
experienced. She had not slept well since the hearing, and had taken to
wandering the city.
_You are charged with gross negligence, gross incompetence, and failure to
repair. The results of your actions have cost the lives of 8 Barakhan soldiers
under your command._
With a start she awoke to fresh dew. She had apparently dozed off. How swiftly
her discipline had faltered. Yet another indication of her failure.
_Gareth Brand. Ryal Cross. Willem Frost. Davis Mason._
She stopped paying for rooms, since she spent so little time in them. The
streets werent that bad at night, despite what some may think. In the gardens
or along the parkways, there were always trees to rest beneath. The city, the
one she had dreamt about as a child; the one she has sworn to defend; the one
she now walked as a ghost. The city somehow still welcomed her, still provided
for her. Who was she to deserve it?
_Francis Potter. Cordon Stone. Richard Stone. Samuel White._
She did not.
_All possessions of the army are now to be reclaimed. You will doff your armor,
remove your shield, and place them on the floor beside you. All possessions
which belong to you have been gathered, and are now presented to you._
A sack, with several sets of clothing. A few books. Her Uncles sword. These
items were handed to her by a court clerk. She took them, and in stunned
silence, stared at the floor in front of her.
_This dismissal is now complete. As of this moment, you are forbidden interaction
with any members of House Barakhan, until you return to Mnemar and make amends
for your actions._
She couldnt move. She could barely breathe. The Field Marshall closed the book,
and placed it on the table before him. The Imperial Magister, with the slightest
smirk on his face, was the first to leave. After what seemed like ages, one of
Field Marshall Barakhan Randalls captains escorted Gabriella to the exit.
This was the fourth time she walked into the temple. This time she was
determined to at least try. She spotted a secluded space, and knelt at a pew.
After a few moments, she rose. This is pointless, she thought, and began to walk
out. She paused, then slowly returned to the pew. Again she knelt, and as she
had done so many times since Rattimas, whispered quietly the names of her men.
_Gareth, Ryal, Willem, Davis, Francis._ She stopped, took a deep breath, and
continued. _Cordon, Richard, Samuel._ Silence. She stared at her hands, clasped
before her.
“Ive never done this before. Ive seen my men pray to gods. Ive seen the
citizens and refugees with their shrines and books. Ive never been convinced it
was worth my time. I guess, now that I have nothing left, it doesnt seem such a
waste.”
She smiled, and laughed quietly. “This is pointless.”
She rose, and as she did, a voice from behind her spoke.
“Where I walk, so must you.”
Gabriella turned, and before her saw a woman dressed in stately attire. Her
white gown was precisely fitted, and simply decorated with pearls and rubies.
Her hair was fashioned up into a wide fin around a golden comb. In her hands she
held a scepter, of golden shaft and topped with a red orb, which itself was
surrounded by a golden crown.
“Beg your pardon, maam. I am not so desperate as to find employ as a servant.”
Gabriella replied.
“You have always been my servant, Gabriella. Ever since you first dreamt of my
city.” The woman sat, and gestured for Gabriella to do the same. As she did, the
woman continued.
“My city is under threat, and you have come very far to protect it. The army
provided you with training, which will serve you well. While your discharge from
the army is unfortunate, it is but a slight bump in the road.”
The woman waited, then. Gabriella returned her gaze, confused. This woman was
not present at her dismissal, and news of it had not spread outside the
barracks. If this woman was Barakhan, she was forbidden to speak with Gabriella.
“I am not worthy of protecting this city. My failures are paramount, and my
actions found wanting. I have failed my family, my army, my homeland, and
myself.” Gabriella replied.
“The events which led to your dismissal are unfortunate, but the judgement is
fair.”
Gabriella winced. If the woman noticed, she paid no heed.
“You will make amends yet. Now is no time for this pathetic exercise in
self-pity. For nearly two weeks you have lived as a vagrant and it has not done
you well. Cities have inns for a reason. Get a room at The Red River Way. Tork,
the keeper, is a good man and will charge you a fair price. You need a bath, and
to properly dress yourself. I cannot give you the armor you are familiar with,
but this cloak will keep you warm.”
The woman rose then, and looked down upon Gabriella.
“You must walk my city. Every road and alley way. Upon its stones and bricks you
will discover your strength. You have asked for help, and this is how you shall
earn it. You once swore to protect this city, and by proxy have sworn fealty to
me. In return, once you have proven your fealty, I will extend my blessing to
you.”
Gabriella stood, as the woman thrust the cloak into her arms.
“I will find you once more, here, when you are done.”
“Who are you to command me? I have no commander. I have no lord. I dont want
your charity and I dont want your chores!” Gabriella responded, a fury rising
in her voice.
“I am the patron of Silent Fall. I am Erathis. You asked for my help. I have
given it.”
# 100 Days
I'm writing this post as part of
[#100DaysToOffload](https://100daystooffload.com), an initiative to inspire
writing habits. Perhaps you could do the same.

View file

@ -1,345 +0,0 @@
---
tabtitle: "Pathfinder One-Shot: The Crater of Igrevor"
title: "Pathfinder One-Shot: The Crater of Igrevor"
topics: [gaming]
pub: "2020-07-10"
short_desc: "The first of several one-shot adventures I ran for Pathfinder"
---
# Preamble to the Pathfinder
For many years now, I've been playing in several Pathfinder games. I very much
enjoy the system, if only because I love options in roleplaying games. During
the COVID-19 pandemic and lockdown, in addition to my weekly game, a second
group started a weekly game. This one, unlike the campaign I've been playing in
for the last 6 years (we're level 9), sees the characters level up after
each adventure, and is meant more as a quick and fun string of one-shots. After
a few weeks of Lizzie starting and running the "campaign," I volunteered to run.
This post covers my one-shot `The crater of Igrevor`.
## Background
Before hopping in, a little background. The party at this point had gone on
several adventures and made a name for themselves in a relatively small town.
They decided to settle down, and because the details of this town weren't known
at the time, all the players collaborated to establish the Town of Ulriksted. I
took some liberties with the what we established, and decided that a powerful
wizard has also moved to the town, seeing it as an opportunity for trade, but
also a good place for a fancy tower. Wizards love their towers. Thus, Igrevor
was born.
```
Igrevor Thel'lessell
Lawful Neutral Elf
Cleric of Abadar: 3 // Wizard (Conjurer: Teleportation): 3 // Mystic Theurge: 10
```
As a follower of Abadar, Igrevor is very interested in trade and travel, both on
the material and other planes. His arcane studies also focus on extraplanar
travel and research. And because I've always been interested in the `Mystic
Theurge` class, I decided this was a perfect opportunity to make use of it. As a
trader, I focused his build on several magical crafting feats: wonderous items,
magical arms and armor, and constructs.
Igrevor's tower sits to the north of town, along the river which flows through
Ulriksted. He offers his arcane services to the town, as well as crafting and
selling his magical wares to adventurers when they travel through. Unfortunately
for him, a powerful [Night
Hag](https://www.d20pfsrd.com/bestiary/monster-listings/monstrous-humanoids/hag/hag-night)
has taken an interest in him, and has been haunting his dreams for a while now.
Being a powerful wizard, he's been able to defend himself and his tower
accordingly, but the Hag has decided to get some assistance. You see, Igrevor
has established a powerful teleportation and planar travel system within his
tower, albeit a well protected one. The Hag, studying this herself, conspired to
exploit this with the help of a several extraplanar allies: Several
[Xill](https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/xill)
raiding parties, to which she provided
[Nightmare](https://www.d20pfsrd.com/bestiary/monster-listings/outsiders/nightmare/)
mounts; and two [Umbral
Dragon](https://www.d20pfsrd.com/bestiary/monster-listings/dragons/dragon/-primal-umbral/umbral-dragon-juvenile)
brothers.
# The Crater of Igrevor
>_While enjoying a pint and a quiet night at Tuckleberrys tavern, The Leaf and
>Lyre, the party is rudely interrupted by the sound of a massive explosion,
>north of town. As they race outside, they see a swirling vortex of colors
>stretching high into the sky, roughly where Igrevors tower is. Screams shortly
>follow, and as the party pulls their attention closer, they see looming shapes
>approaching the town._
**Encounter: Xill Raiding Party**
>_Four-armed, flame-red insect-like humanoid creatures, riding upon steeds of
>smoke and fire_
The first encounter is relatively easy for the party, considering at this point
they're level 9. There are 4 Xill, each riding a Nightmare. Each has a special
elemental key, tied to each of the four elemental planes: earth, air, water, and
fire. The last Xill looted also has a note, written in Infernal: "These keys
will keep the portals open, and the tower inaccessible. Once you have your new
hosts, return to the Ethereal plane. DO NOT LOSE THEM!" Whoops.
>_As you move further, the party can clearly see the vortex of colors that now
>envelop Igrevors tower. A chaotic flow of earth, wind, water and fire create an
>impenetrable globe around what remains of the upper half of the tower, which
>hangs unsupported in the sky. Beneath it, a crater is all that remains of the
>bottom of the tower. As the party draws closer, you can make out 4 shimmering
>portals, at each of the cardinal directions. From each, a distinct color and
>element can be seen: north, a verdant green and stony landscape identifies a
>portal to the plane of earth; south, a clear portal surrounded by gusts of
>strong winds indicate the portal to the plane of air; to the west, a fiery
>hellscape indicates the portal to the plane of fire; and to the east, a flood of
>water flowing from the portal to the plane of water. Where the 4 regions meet,
>the elements clash and swirl about, surging upward, creating the sphere around
>the tower. As the party takes in the scene, they suddenly receive a Sending from
>Igrevor: **In dire need of assistance. Tower under attack. Must close portals.
>Please hurry! WILL REWARD! Use teleportation circle in foyer; top of tower**_
At this point, I also introduce a small mechanic related to the portals: Each
elemental portal gives the PCs a boon:
- Plane of Earth: DR 1/- for each elemental planar portal open
- Plane of Fire: Aura, 5ft: 1 fire damage for each elemental planar portal open
- Plane of Water: Fast Healing 1 for each elemental planar portal open
- Plane of Air: Bonus 1ft. Movement speed for each elemental planar portal open
Each of these boons is removed as soon an the associated portal is closed.
**Puzzle: The Elemental Portals**
To reach the tower, the party much figure out a way to close the portals.
Initially, each portal claims a quarter of the ground around the portal. Closing
a portal causes the adjacent portals to claim the ground, increasing their power
and decreasing the power of the opposite portal. If coordinated, it should be
possible for the party to close all portals simultaneously.
>Earth Portal
>
>- Trying to close the earth portal causes vines to sprout. If fire is still
> open, the fire aura burns away the vines before they can entangle.
>- Closing the earth portal causes the fire and water portals to increase in
> power, and the air portal to decrease in power (modified DC)
>- Entangle, DC 15: Thorny vines restrict movement and deal damage. Each round,
> any creature trying to move through the area must make a reflex save or become
> entangled, reducing movement speed to 10 feet and dealing 1d6 acid damage.
> - If the Fire or Water portal has been closed, the DC increases by 2, to a
> maximum of 19 if both portals are closed.
> - If the Air portal has been closed, the DC decreases by 2
> - If a creature enters the area with the fire aura, the entangle checks
> automatically succeed: The aura from the plane of wire withers the vines as
> they try to wrap around you.
>Fire Portal
>- Trying to close the fire portal causes intense heat waves. If water is still
> open, the aura cools the temperature
>- Closing the fire portal causes earth and air to increase in power, and the
> water portal to decrease in power (modified DC)
>- Heat Waves, DC 15: Intense heat radiating from the portal causes damage and
> fatigue. Each round, any creature trying to move through the area must make a
> fortitude save or become fatigued and take 1d6 fire damage.
> - If the Earth or Wind portal has been closed, the DC increases by 2, to a
> maximum of 19 if both portals are closed
> - If the water portal has been closed, the DC decreases by 2
> - If a creature enters the area with the water aura, the fatigue checks
> automatically succeed: The aura for the plane of water cools the area,
> keeping the heat at bay.
>Water Portal
>- Trying to close the water portal causes buffeting waves and sheets of rain to
> disorient and hamper the player. If the air portal is still open, the aura
> keeps visions clear.
>- Closing the water portal causes the earth and air portals to increase in
> power, and the fire portal to decrease in power (modified DC)
>- Stormy Weather, DC 15: Torrential rain and slick ground causes difficult
> terrain and disorientation. Each round, any creature trying to move through
> the area must make a reflex save or fall prone, and a will save or become
> disoriented, moving in a random direction (Roll 1d4: 1, move in intended
> direction; 2, move to the left; 3, move to the right; 4, move backwards)
> - If the Earth or Wind portal has been closed, the DC increases by 2, to a
> maximum of 19 if both portals are closed
> - If the earth portal has been closed, the DC decreases by 2
> - If a creature enters the area with the air aura, there is no risk of
> disorientation. If a creature enters the area with the earth aura, there is
> no risk of falling.
>Air Portal
>- Trying to close the air portal causes strong winds and electrical shocks. If
> the earth portal is still open, it helps to resist the winds.
>- Closing the air portal causes the fire and water portals to increase in power,
> and the earth portal to decrease in power (modified DC)
>- Tornado, DC 15: Strong winds buffet and shock. Each round, any creature trying
> to move through the area must make a fortitude save or be blown 10 ft away
> from the portal, and take 1d6 electricity damage.
> - If the water or fire portal has been closed, the DC increases by 2, to a
> maximum of 19 if both portals are closed
> - If the earth portal has been closed, the DC decreases by 2
> - If a creature enters the area with the earth aura, the push checks
> automatically succeed: The earth aura grounds you, giving you resistance to
> the forceful winds
>_As the last portal closes, the last remnants of the elemental sphere around the
>tower dissipate. The tower floats silently above the group, with ruins frozen in
>the air hanging beneath it. The closest pieces, which could be used to climb
>into the tower proper, are 20 feet in the air._
With the four elemental portals closed, the tower is now accessible. The party
must somehow ascend 20 feet into the air to get to the lowest ruins, and then a
Climb (DC 10) check to get to the rest of the tower, 10 feet further up. This,
like a few other obstacles, was a way to force the party to use resources. The
sorcerer of the group knows fly, and so this was a way to get him to use a
spell. The way I tend to run many of my games is to try and force my players to
think about their resources, and manage them accordingly. To be fair, I try to
give alternatives. For example, the party could use rope to climb up. I think in
this case, they used either `Mage Hand` or a familiar to loop rope around some
rubble, then the fighter climbed up and attached a better rope, and they were
able to ascend without expending many resources at all.
>_Once inside, there is a corkscrew stairwell along the walls of the tower,
>ascending roughly another 20 feet. At the top, light and shadows play on the
>wall near where the stairs enter a new floor._
If the party is perceptive or stealthy enough, they can notice several figures
waiting on the next floor, as well as get the drop on them!
**Encounter: Xill and Night Hag**
>_A tall, gaunt figure with long limbs stands with two more Xill. Her skin
>stretches tightly across her bones, and a grin stretches across her nightmarish
>visage. Claws and fangs betray her intent._
Here, again, I tried to force a change of tactics. The room the party fights in
is only 20 by 20. The usual `Fireball` approach would be dangerous. The party
was clever and perceptive, though, and the sorcerer was able to approach the
room invisibly, and place a `Fireball` in a way so as to kill the Xill. The Hag
is immune to fire, conveniently, and so the party had to deal with her some
other way. Also, she can cast `Invisibility` at will, which helper her get the
drop on the party. The sorcerer `Fireball`'s the room, ducking down the
stairwell to avoid the blast. While no one can see her, she goes invisible. The
party doesn't see any threats, enters the room, and she pounces. Hag's are great
opponents. They have a great kit for DMs to play with; great defenses, including
damage reduction, a solid set of immunities, and spell resistance 24! The lore
of hags, as extraplanar scavengers and traders, is also fascinating. I'd like to
use one in a future campaign, especially an evil campaign, and have this be a
companion NPC or something.
With this encounter completed, the party stands in the aforementioned foyer, and
on the ground they see an arcane circle: the teleportation circle.
>_The corpse of the night hag fades into shadow, as it disappears from the
>material plane. With the room now secured, you see arcane symbols inscribed in
>the center of the room. This must be the teleportation circle Igrevor mentioned
>in his sending. As you step into the circle, you find yourself transported to a
>large, cylindrical room. An inner wall breaks at four equidistant places,
>revealing an outer wall, and a shimmering pool of light in a small alcove._
>_Exploring the space, the inner room has the teleportation circle, and many
>arcane symbols drawn into the stone and the walls._ A Knowledge(Arcana) or
>Spellcraft, DC 15, reveals the symbols to be protections related to
>teleportation, plane shifting, and the like. _Checking the outer ring, you find
>the four aforementioned pools, as well as a wall of force blocking a hallway._
>_Oh a whim, you glance up, and see two spheres circling the room. One is pure
>white, and the other black. They maintain a perfect distance from each other._ A
>Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
>and negative energy, respectively. _You now notice, as the spheres pass by the
>alcoves, the pools briefly shift towards the color of the sphere, and the wall
>of force slightly..._
Or, at least, that was the original intention. As so often happens, I wasn't
quite satisfied with this part of the original adventure, and modified this it
slightly. Originally, the party was going to fight a "Planar Scion." Initially,
the party would find two humanoid energy beings, one made of positive energy and
one made of negative energy. The beings would be indestructible, and the party
would have to merge them to create a single being, which was now vulnerable.
But, I couldn't figure out a good way to convey this information, while making
the combat engaging, in the time I had, so I scrapped it for a puzzle instead.
**Puzzle: Spheres and Pools**
>_As you navigate the room, you find the hallway leading from this room, and an
>opaque barrier blocking the way forward._
>_Oh a whim, you glance up, and see four spheres circling the room. Two are pure
>white, and the others black. They maintain a perfect distance from each other._ A
>Knowledge(Planes), DC 15, identifies the spheres as being made of pure positive
>and negative energy, respectively. _You now notice, as the spheres pass by the
>alcoves, the pools briefly shift towards the color of the sphere, and the
>barrier slightly dissipates_
The only way through this barrier is to stop the rotating spheres. As alluded to
in the descriptive text, the pools and the spheres are related. As the spheres
pass over the pools, they shift the pools from clear towards the color of the
sphere, and I added that the spheres appear to slow down very slightly. The
party had to use positive and negative energy sources to shift the pools to the
appropriate attunement, which stopped the spheres, and opened the barrier.
**Final Encounter: Umbral Dragon**
>_As the spheres stop, above the pools, they descend into the pools, and
> dissolve the barrier blocking the way out of the room. Moving through the
> hallway, you come to a large meeting hall. An oak table, which could almost
> seat the entire town of Ulriksted, sits in the middle of the hall, with chairs
> and tables strewn about. Making your way into hall, you see Igrevor to your
> right, as he finishes casting a spell and striking down one of two juvenile
> dragons standing opposite him. He turns to you, and speaks, "The Lords of
> Ulriksted! And just in time! I am sorry, friends, I cannot assist you further;
> one of these beasts took most of my arsenal to defeat. I beg your assistance!"
> As he finishes, you see a sphere arise around him, and him kneel to catch his
> breath._
The boss battle! The juvenile Umbral Dragon! I toned down the beast a bit, but I
definitely shouldn't have. It was a good fight, and the barbarian did not hold
back. As the party defeated them, Igrevor thanked them, and their reward was any
single magical item that he can make. In addition, because I'm prone to giving
my PCs overpowered items, I allowed each of them to have an item made from the
scales of the dragon, which gives them the immunities of the dragon. This turned
out to be a _very_ powerful option: immune to cold, death effects, negative
energy, paralysis, sleep.
# Aftermath
I had a lot of fun with this one. The party made their way with through with
consistent progress, and the boss battle was challenging but not overwhelming. I
think, if run again, I wouldn't tone down the boss. I ended up running a
follow-up adventure, which is currently untitled, but which became a two parter,
and the driving motivation for my upcoming third adventure. I look forward to
sharing those as well! Feel free to make use of this adventure in your own
games!
# MapTools
But wait, there's more! This adventure was my first foray into MapTools, a free
and open-source virtual table top system. It allows you to create detailed
maps, add tokens, set sight lines, and much more. You can host a server locally
that your players can connect to, and they can move things around themselves.
Or, if you're a bit lazier like me, you can share your screen on your voice call
of choice, and just move the tokens for players instead. I had a lot of fun
crafting Igrevor's Tower in MapTools, and then sharing that with my players
during the session. It really made the game more enjoyable, and more immersive
than just a standard voice-and-video call.
The community for the MapTool suite has built a lot of tokens, tile sets, and
additional assets to really explore and build _exactly_ what you want. I
certainly made good use of CSP's Dungeon Geomorphs (available for free directly
within MapTools, and made by [Kristian
Richards](https://www.crookedstaff.co.uk/)), [Devin
Night's](https://immortalnights.com/tokensite/) tokens (some of which are
available for free, but are well worth the price) and Torstan's Markers and
Objects (also available directly within MapTools). I'm not sure if the campaign
will load without those enabled, but for anyone interested, you can find a link
to the campaign maps for this adventure [here (click to download)](
{{ site.url }}/src/campaigns/crater_of_igrevor.cmpgn).
# 100 Days
I'm writing this post as part of
[#100DaysToOffload](https://100daystooffload.com), an initiative to inspire
writing habits. Perhaps you could do the same.
# Sources
* [MapTools](https://www.rptools.net/toolbox/maptool/)

View file

@ -1,101 +0,0 @@
---
tabtitle: "Brief Exploration of Syncthing"
title: "Brief Exploration of Syncthing"
topics: [technology]
pub: "2020-07-19"
short_desc: "Syncthing is an incredible tool. In this post, I want to
explore setting it up, and then some uses I've found for it."
---
# A Brief Exploration of Syncthing
Syncthing is an incredible tool. Many days past I stumbled upon it as an
alternative to Dropbox. It's different from Dropbox, or similar services,
though, in a number of ways. For one, Syncthing is a peer-to-peer
synchronization program, whereas Dropbox is a centralized file storage and
synchronization service. When you setup and use Syncthing, the files only ever
live on whichever peers you setup. This is different from Dropbox, or similar
services, where files live on their servers. There's more to it, and for all the
details, the [Syncthing](https://syncthing.net/) website provides plentiful
information.
In this post, I want to discuss how to setup Syncthing, and some use-cases for
it. In future posts, I want to explore setting up custom relay servers, and
perhaps some more use-cases as well.
## Setup
Install the appropriate package for your operating system. Syncthing is
available on just about every OS out there. Syncthing already has [thorough
installation
documentation](https://docs.syncthing.net/intro/getting-started.html), so I
won't re-write what's already available. I will discuss how I setup my Syncthing
instead.
On my desktop, running Arch Linux, I installed the necessary package:
```
$ sudo pacman -S syncthing
```
When I was running Gnome, I also installed `syncthing-gtk` to provide a tray
icon. After my switch to KDE Plasma, the Syncthing application displays a tray
icon by default, and so I removed the now unnecessary package. When I had a
Windows partition, I also installed `SyncTrazor` for a tray icon.
The second device of choice is my Android phone, where I installed the Syncthing
app (helpfully available on F-Droid too!).
With packages installed on both devices, I then followed the guide. All things
considered, it was a very easy process.
## Use-Case: Music
One of the most immediate uses I had for Syncthing was music. I finally decided
to drop all streaming services, and start buying my music. As a result, I
suddenly had a growing music library available on my desktop. This was the
primary reason I decided to try Syncthing: to get music files from my desktop
onto my phone. After setup, syncing was a breeze. The new problem became space:
I have quite a bit of music now, and I don't necessarily want all of it on my
phone. Conveniently, Syncthing allows for creating a `.stignore` file, which
tells Syncthing which files to exclude from synchronizing. The
[documentation](https://docs.syncthing.net/users/ignoring.html) provides a great
breakdown of available options. One challenge is that the `.stignore` file is
**not** synchronized. To get around this, I setup my ignore file to include a
second file, which _does_ get synchronized. That file lists every directory and
subdirectory in my music folder, and then ends with `**/*`. For any directory or
subdirectory (generally artist and album, respectively) that I want to sync, I
place a `!` before it. The eventual plan is to automatically update the file
whenever new music is added to the directory. When I get around to that, I'll
almost certainly post about it.
## Use-Case: Notes / To-Do
Not long after music, I started looking around for a good to-do / note-taking
app for my phone. I wanted an application that was simple, without bells and
whistles. I tried a few before settling on
[Markor](https://gsantner.net/project/markor.html). This app is wonderful.
Everything I want, with almost nothing I don't. It's open-source, actively
developed, available on F-Droid; it works on local files, and _that's it_. I
started using it to track my gym workouts, make grocery lists, or track
suggestions for media. As long as I was on wi-fi, those files were waiting for
me on my desktop. Very convenient, simple, and effective.
## Use-Case: Pictures
Another straight-forward use case: synchronizing pictures. As I continue to
"de-Google" my life, I needed a replacement for Google Photos. I have a Flickr,
but I'm not certain that I'll hang onto it. For now, I just need a simple way to
synchronize pictures between my phone and my desktop, and Syncthing provides
that.
# 100 Days
I'm writing this post as part of
[#100DaysToOffload](https://100daystooffload.com), an initiative to inspire
writing habits. Perhaps you could do the same.
# Sources
* [Syncthing](https://syncthing.net/)
* [SyncTrayzor](https://github.com/canton7/SyncTrayzor)
* [Markor](https://gsantner.net/project/markor.html)

View file

@ -1,278 +0,0 @@
---
tabtitle: "Pathfinder: Let's Make a Druid"
title: "Pathfinder Characters: Let's Make a Druid"
topics: [gaming]
pub: "2020-09-05"
short_desc: "One of my favorite activities is creating characters. I love
theory crafting, pouring through source material, and setting limits. While
I've made many, many characters, one class I haven't touched is druid."
---
# Let's Make a Druid
Pathfinder has been the tabletop game of choice for my longest-running group.
One of my favorite activities is creating characters. I love theory crafting,
pouring through source material, and setting limits. While I've made many,
_many_ characters, once class I haven't touched is druid. The first character I
ever made, back in a D&D Second Edition, was a druid. I don't remember much from
that character, except that I had a double-scimitar (think Darth Maul
lightsabre, but scimitars). Since that, I haven't done much with druids, which I
think is a shame, because it's a fascinating class that ticks many of the boxes
I look for in a character. I love characters with options, that require a bit of
mastery to play. Many characters I like the most are multi-classed, mixing
spellcasting with melee combat. Some classes, though, provide all this
out-of-the-box. From the core book, both cleric and druid satisfy my demands. I
hold, still, that cleric is the most powerful class. I had this belief in D&D
Third Edition, and I carry it forward into Pathfinder and D&D Fifth Edition.
That's a topic for another post, though.
## Concept
All of my characters come from a concept. Sometimes the concept is really
straight forward: I want a "realistic" fighter. I want a "proper" Eldritch
Knight. Sometimes, the concept is more story based, as is the case with this
druid. I read a story about a moose in Alaska that ate some apples which had
fermented, and wandered into a town drunk. I thought, "that would make a fun
animal companion!", and thus the idea for a druid. The full backstory for the
character will be around here somewhere. For now, I'll spend the rest of this
post focusing on the build.
## Build
Drunk moose. Drunk... spirit moose! OK, now we're getting somewhere. As I
fleshed out the story, and spoke with a friend about druid, I liked the idea of
dipping one level in barbarian, then continuing with druid. That one level gets
me quite a bit: d12 hit dice (and max at first level!); +1 BAB; +10 movement
speed; and rage. The biggest downside is a delay in spellcasting, but I think
it's a fair trade-off. Considering the build is equally focused on spellcasting
and melee combat, the rage will provide an additional resource where spells and
standard attacks may not be sufficient. Obviously, druid will be our favored
class.
```
Barbarian 1, Druid X
```
## Skills
Druid's aren't reknown for being particularly skillful, but they get some great
class skills. Of note, we get Handle Animal, Heal, Knowledge(Nature),
Perception, and Survival. At 4+INT skill points, we can reliably grab most of
these. Throw a point of two into Fly, Climb, and Swim, and between having a
great strength, and wild shape, we can deal with whatever obstacles those skills
require.
```
Handle Animal
Heal
Knowledge (Nature)
Perception
Survival
```
## Race
Pathfinder has no shortage of races to choose from. For most of my builds, I try
to stick to the "basics" provided in the Core Rulebook, but I also allow myself
the Advanced Race Guide races. For this build, though, mostly due to the
backstory/concept, I went human. We'll opt for a bonus HP each level in druid,
for our favored class bonus.
## Feats
Human gets a bonus first level feat, then all characters get a first level feat.
I tend to make characters for whatever level our campaign is at, and for now
that's 8th level. That gives me five feats total. At fifth level, I'm taking
Natural Spell. Since I'm a melee bruiser, I'm interested in Power Attack, Vital
Strike, Toughness, and Powerful Shape, but I can't get the last one just yet.
Druids are fantastic summoners, and it's very tempting to pick up Augmented
Summons. For this build, though, it's a two feat investment for a strategy I
won't be using much. For first level, I went with Toughness and Power Attack. As
a first level barbarian, those two feats give me a lot of staying power. As a
druid, my BAB won't progress as strongly, but in wild shape it can give me a lot
of damage. Combined with vital strike, certain shapes will give me a single,
"two-handed" attack for a significant amount of damage at a good attack bonus.
Thematically, I've opted for the feat Spirit's Gift. It fits my drunken spirit
moose concept perfectly.
That leaves level 7. The aforementioned vital strike could be a great option.
There's also furious focus: for a single, two-handed power attack, remove the
power attack penalty. Since we'll be taking advantage of our animal companion,
there's also the option for teamwork feats. Animal companions get feats, too,
and there are a few in particular that would work very well: Shake It Off would
give us both +1 on all saves; Improved Spell Sharing would let me share buffs
better; and then there are the charges. These interested me. I need to step back
briefly to consider the animal companion, so we'll leave our feats in an
undecided state for now.
```
Bonus: Toughness
Lvl 1: Power Attack
Lvl 3: Spirit's Gift
Lvl 5: Natural Spell
Lvl 7: ???
```
## Animal Companion
By now it should be clear this is not really a min-max guide. There are plenty
of guides that exist already for that sort of build; I'll link a few I've
referenced below. In those guides, animal companion choses are pretty clear:
take a wolf/dire wolf if you want to be a trip artist; take a big cat for
superior damage; take one of any number of dinosaurs for superior options. No
where is a moose mentioned, because they're not "optimal." That's fine. I don't
want optimal, I want drunken spirit moose.
Moosen start off pretty bland. They don't get any special attacks, they're
medium size, an average AC, an average attack, and relatively low damage. At
level 7, they get significantly better: large size; better AC; better damage,
and powerful charge. For this build, I'll focus on charging. Both I and the
moose will charge hard into whatever enemy we want to focus first. With some of
the team work feats alluded to above, we can emphasize significant bonuses and
improvements to charging.
If I wanted to change this to a more optimal build, I'd probably go for an axe
beak. It could be the in-universe thematic equivalent of a moose. Qwark.
## Feats, Completed This Time
In addition to my feats, I get feats for my animal companion. At character level
8, I'm a 7th level druid, which means my animal companion gets 3 feats, with a
4th coming next level. The charge feats I'm considering would be 3 feats
minimum: 2 teamwork feats, and then Coordinated Charge. The requirements for
Coordinated Charge are 2 teamwork feats, and a BAB +10. My animal companion, of
any flavor, won't have that until level 17! That's a bit of a downer, but there
are some other interesting ones that lead up to it nicely. Distracting Charge
would give either my moose or me a +2 to hit against the target of a charge.
Intercept Charge could provide significant defensive benefits, though neither my
moose nor I are particularly defensive oriented. Shake It Off would give Moose
and Me +1 on all saves while we're adjacent. And Improved Spell Sharing helps
with buffing. The one thing about ISS though is the requirements are a bit...
odd. It _seems_ to be intended for use by a class that can share their teamwork
feats, but I think a discussion with a DM can resolve the issue.
```
Druid:
- Bonus: Toughness
- Lvl 1: Power Attack
- Lvl 3: Spirit's Gift
- Lvl 5: Natural Spell
- Lvl 7: Improved Spell Sharing
Moose:
- Lvl 1: Toughness
- Lvl 2: Weapon Focus (Gore)
- Lvl 5: Improved Spell Sharing
```
Looking forward slightly, next level we each get another feat.
```
Druid:
- Lvl 9: Powerful Shape
Moose:
- Lvl 8: Improved Natural Attack (Gore)
```
## Gear
Since we're wild-shaping, we don't need to worry _too_ much about armor and
weapon. We can get the benefits of a shield, so we'll want a decent one of
those. Ring of Protection (+1) is a standard, and I'll also opt for a Cloak of
Resistance (+2). We're a bit MAD (multi-attribute dependent), wanting high
strength and wisdom primarily, with good dexterity and constitution still. I'll
take a Headband of Inspired Wisdom (+2), and a Belt of Physical Prowess
(Strength and Constitution +2). In exchange for a weapon, I'll pick up an Amulet
of Mighty Fists (+1). Finally, because wild shape is so important, we'll pick up
Druid Vestments, which give us an extra wild shape use per day.
```
Headband of Inspired Wisdom, +2
Amulet of Mighty Fists, +1
Cloak of Resistance, +2
Druid Vestments
Belt of Physical Prowess (STR/CON), +2
Ring of Protection, +1
Heavy Wooden Shield, +1
Scimitar
```
I have a mundane item pack I generally pick up as well, which includes things
like a mirror, fishing hooks, and the like. Normally it's all in a Handy
Haversack, but since I'm shapshifting so often, for the druid that'll shift to a
Polymorphic Pouch.
Also, a Ring of Eloquence is a solid buy, to allow for discussion which
shapeshifted.
## Spells
Druids have a _lot_ of spell options. We're a melee fighter, so many of our
spells will focus on buffing, debuffing, and control. We can also include some
out-of-combat utility. There are too many options to list, and again, guides
already exist that go through every spell and analyze them. Here are the spells
that I'll consider regularly:
```
Level 1:
- Entangle [Control]
- Faerie Fire [Control][Debuff]
- Frostbite [Buff][Damage][Debuff]
- Goodberry [Utility]
- Longstrider [Buff]
- Magic Fang [Buff]
- Mudball [Damage][Debuff]
- Thorn Javelin [Damage][Debuff]
- Thunderstomp [Control][Debuff]
Level 2:
- Barkskin [Buff]
- Lockjaw [Buff][Control]
- Natural Rhythm [Buff][Damage]
- Resist Energy [Buff]
- Sickening Entanglement [Control][Debuff]
- Stone Call [Damage][Debuff]
- Vine Strike [Control][Damage][Debuff]
- Whip of Spiders [Damage][Debuff]
- Wilderness Soldiers [Control][Damage]
Level 3:
- Call Lightning [Damage]
- Earth Tremor [Damage][Control][Debuff]
- Fey Form I [Utility]
- Fungal Infestation [Debuff]
- Greater Magic Fang [Buff][Damage]
- Greater Thunderstomp [Control][Debuff]
- Spike Growth [Control][Damage][Debuff]
- Thorny Entanglement [Control][Damage]
- Vermin Shape I [Utility]
Level 4:
- Aspect of the Stag [Buff][Damage]
- Cape of Wasps [Buff][Damage][Debuff]
- Echolocation [Buff]
- Freedom of Movement [Buff]
- Grove of Respite [Utility]
- Slowing Mud [Control][Debuff]
- Spike Stones [Control][Damage][Debuff]
- Strong Jaw [Buff][Damage]
```
## Gameplay
I've never played this build! I'm sure it could use some modifications. The
emphasis on choosing a moose over other animal companions could be a serious
hinderance. I think the general play would go like this: buff self, sharing the
buffs with my animal companion; enter melee combat, preferably by charging at a
target with my animal companion; throw around control and debuff spells as
necessary.
This is very much a first draft, but I think it could be a fun one!
# Sources
* [Pathfinder SRD](https://www.d20pfsrd.com/)
* [Prometheus Guide to the Druid](https://docs.google.com/document/d/1PXamF43boZgYtCUlyJAMojfrPaAdYyjPOaGOo1vfqdM/edit#heading=h.nxj7sifd7tvs)
* [Treantmonk's Guide to Druids](https://docs.google.com/Doc?docid=0AcNyxDTKvAmqZGRtZzhzdjZfNDZnNHpzcmdodA&hl=en)

View file

@ -1,311 +0,0 @@
---
tabtitle: "Pathfinder: Building My Eldritch Knight"
title: "Pathfinder Characters: Eldritch Knight"
topics: [gaming]
pub: "2020-09-27"
short_desc: "The Eldritch Knight represents my favorite archetype of a
fantasy character: sword and sorcery. Here's how I build mine."
---
# Building My Eldritch Knight
Pathfinder has been the tabletop game of choice for my longest-running group.
One of my favorite activities is creating characters. I love theory crafting,
pouring through source material, and setting limits. My favorite archetype of
characters are those that take the combat focus of a warrior and supplement it
with magic. The druid, which I [already touched
on](/2020/09/06/pathfinder-druid.html), is a class that
has this built in. This blending of magic and metal is often called a
[Gish](https://en.wiktionary.org/wiki/gish).
## Concept
All of my characters come from a concept. This concept is heavily mechanics
focused, and heavily opinionated: I want a "proper" eldricth knight. To me, a
proper eldritch knight doesn't use any gimmicks or tricks to get into the
prestige class sooner, doesn't rely too heavily on especially unique or strange
equipment, and sticks to a limited set of rule books.
## Build
For this build, I'll be limiting myself the these rule books:
- Core Rulebook
- the Ultimate books (Combat, Magic, Intrigue, Wilderness, and Equipment)
- the Advanced books (Player's Guide, Race, and Class)
Eldritch Knight needs a martial class, and an arcane class. While there are
plenty of options, I wanted to start with the most basic options:
```
Fighter 1 / Wizard (Enchantment) 5 / Eldritch Knight X
```
Wizards have the option of taking a school, and it makes a lot of sense for
a melee combatant to focus on buffing itself. Thus, I went for a Transmutation
school, and specifically for the Enchantment school. For opposed schools, I
opted for Evocation and Necromancy. I lose out on some nice spells, certainly,
but considering our focus, we wouldn't be using many blasting spells. Not to
mention, our spell penetration will be relatively weak by comparison to more
spell-focused builds. Obviously, open to alternatives, but I would advise
against choosing Illusion, since it has some of the better non-transmutation
buffs in the game.
Wizards also have to choose an arcane bond, which is either a familiar or an
item. Familiars are incredibly useful, but for this build I really liked the
idea of having my arcane bond be my weapon. This can be **very dangerous!** If
your bonded item is taken from you, or destroyed, you will have a _very
difficult time_ casting spells.
## Traits
In our Pathfinder group, we don't _really_ use traits, but I use traits.
Specifically, I always use 1 trait when it is applicable, because I believe
without this trait, any Gish build that relies on multiple classes is severely
penalized: Magical Knack. This trait will allow me to up my caster level for
Wizard by up to +2, up to my maximum hit dice. This doesn't give me more spells
per day, but it does affect spell details such as duration, or saving throw DC,
that rely on caster level. Conveniently, for this build, we have exactly two
levels that do not give a bonus to wizard caster level: the 1 level of fighter
we take, and the first level of eldritch knight.
If two traits are allowed, solid choices are `Reactionary` for a bonus to
initiative; `Deft Dodger` for an improved reflex save; `Eyes and Ears of the
City` for a bonus on perception and to add it as a class skill; or `Armor
Expert` to reduce all armor check penalties by 1.
```
Magical Knack (Wizard)
```
## Race
Human. Elf as a very close second. The bonus for spell penetration, the bonus to
perception and spellcraft skills, and the ability score modifiers are all solid.
But, this build won't need to worry about puncturing spell resistance, and
because we're a melee combatant, we need all the constitution we can get. Human
provides a bonus +1 skill point per level, a bonus feat, and a floating +2
ability score increase, which we can use for our strength or intelligence.
## Skills
None of the three classes in this build provide a significant number of skills;
all three give 2 + INT per level. However, being a wizard, we _do_ have a nice
intelligence score, and as a human we get an additional +1. At a minimum, we'll
probably get 5 skill points per level. There are no skill requirements to get
into eldritch knight, so we can focus on the "important" skills:
```
Knowledge (Arcana)
Knowledge (Dungeoneering)
Knowledge (Nature)
Knowledge (Planes)
Knowledge (Religion)
Perception
Sense Motive
Spellcraft
Survival
```
I also like to drop a single point in `Climb`, `Swim`, `Ride`, and `Fly`, if I
can afford to. Getting the trained bonus, combined with our generally good
strength and dexterity, means we can accomplish the basics. As a wizard, we can
further supplement these with spells. Unfortunately, we do not get perception as
a class skill, and so using a trait for that would make sense.
## Feats
It is very easy to get lost in feats. Like most aspects of Pathfinder, there are
an excess of options. To narrow down my focus, I tried to consider what the
character's options were: warrior focused on melee combat; wizard focused on
buffing and crowd control. Being in melee means I'll be wearing armor, and that
brings the `Arcane Armor Training` feats into relevance. There's also the
`Arcane Strike` feat, which is perfect for arcane gish builds. Initiative is the
king of combat, and as a wizard I'll want to try going first as often as
possible. I also don't have the most hit points, due to those 5 levels of
wizard. `Improved Initiative` and `Toughness` make sense. Considering the
possibility of being in combat when buffing, `Combat Casting` makes sense. I'll
probably focus on a specific weapon, so `Weapon Focus` makes sense, and as a
fighter/eldritch knight, those levels will stack for feat requirements. That
means, `Weapon Specialization` is a possibility in the future.
While I'm sure there are some crazy feats in other books, all these feats come
from the Core Rulebook. That excites me for some reason. Thus far, the only
non-core rulebook thing we've done is traits, and for this build we can live
without those if absolutely necessary. Again, this limit isn't necessary, but it
was something I wanted to adhere to for this build.
The number of feats laid out above is very quickly growing. Conveniently, I'm
entering the game with 3: one for level 1, a bonus for human, and a bonus for
fighter. That's `Improved Initiative`, `Toughness`, and `Weapon Focus`. Any
two-handed weapon will do, though I'm partial to the good ol' greatsword. Using
a sword-and-board will severely restrict my casting abilities, because both
hands will be full.
```
Improved Initiative (Level 1)
Toughness (Human bonus feat level 1)
Weapon Focus (Greatsword) (Fighter level 1 bonus combat feat)
Scribe Scroll (Wizard level 1 bonus feat)
Combat Casting (Level 3)
Arcane Strike (Level 5)
Craft Wonderous Items (Wizard level 5 bonus feat; debatable)
Arcane Armor Training (Eldritch Knight bonus combat feat)
Power Attack (Level 7)
```
The wizard gets a bonus feat at level 5, which is limited to an arcane crafting
feat, a metamagic feat, Spell Mastery, or an arcane discovery. I opted for
`Craft Wonderous Items` because I like the options it opens up. There are some
good metamagic options I considered though: `Extend Spell` makes sense for
buffing; `Still Spell` makes sense since we're in armor; `Toppling Spell` can
give Magic Missile and other force damage spells some crowd-control. Since
evocation is one of my opposed schools, though, it wouldn't work for me.
Wizards at first level also get `Scribe Scroll` as a bonus feat. Scrolls are
great for situational spells.
## Gear
There's only one piece of gear that is unusual here, and it's the armor. Kikko
armor is from Ultimate Equipment, and specifically is a type of eastern setting
armor. It provides a +5 armor bonus, allows for a dexterity bonus of +4, incurs
a -3 armor check penalty, and has 20% arcane spell failure. However, it is
primarily made of metal, and thus can be made from mithral. A mithral suit of
kikko armor provides +5 armor bonus, allows for a dexterity bonus of 6, incurs
no armor check penalty, and has a 10% arcane spell failure. Those numbers are
fantastic. No armor check penalty is great for the odd `Climb` or `Swim` check,
and for when I can `Fly`. The 10% arcane spell failure chance is lowered to 0%
by `Arcane Armor Training`, allowing me to safely cast in armor when I so
choose. If limited to the core rule book, the next best bet will be either a
breastplate, or hide armor.
As for the weapon, I went with a greatsword. You could go with a falchion, and
"crit-fish," but I'd rather have the raw damage. Numbered enchantment bonuses
are good, but there is one specific enchantment I would highly suggest: called.
A called weapon can be teleported to the wielder's hand as a swift action.
Considering our greatsword is our arcane focus, we'll want that in our
possession at all times, and this greatly increases the chances of that. Keen
wouldn't be too bad; increasing the critical threat range to 17-20. Spell
storing obviously makes a lot of sense, too.
I'm a spell caster, so I picked up a few `Pearls of Power`, a few wands (`Cure
Light Wounds`, `Protection from Evil`, and `Expeditious Retreat`), and a bunch
of potions of `Lead Blades`. The reason for the potions and not scrolls or a
wand is to avoid `Use Magic Device` checks.
I have a collection of mundane items, including things like a bedroll, rope,
sewing needles, chalk, and a handful of alchemical items, that I like to carry
in a `Handy Haversack`.
Beyond all this, I went with the remainder of the "Big 6": a `Cloak of
Resistance`, a `Ring of Protection`, a `Headband of Intellect`, and a `Belt of
Strength`.
With any left over funds, investing in additional spells known, scrolls, copies
of your spellbook, and cheaper wonderous items is always nice.
## Spells
I'm a wizard (Harry), with the most versatile spell list in the game, and a book
(or books) that can get them all! Aside from the opposed school (but even then,
there are some worth getting, such as `False Life`), I went for every spell that
I even remotely thought I would use. On my sheet, that's 62 spells across levels
1 to 3. I won't mark them all here, but there are some which I wouldn't want to
be without.
```
Level 1
- Comprehend Languages (also a great scroll)
- Enlarge Person
- Magic Missile (despite being opposed, a solid fall-back)
- Mount
- Protection from Alignment (generally, evil and chaos make the most sense)
- Shield
- Vanish
Level 2
- False Life
- Glitterdust
- Invisibility
- Mirror Image
- Resist Energy
- Rope Trick
Level 3
- Ablative Barrier
- Fly
- Haste
- Phantom Steed
- Sleet Storm
- Versatile Weapon
```
At character level 9, we get access to 4th level wizard spells. Some spells on
my wishlist include great crowd-control like `Acid Pit` and `Black Tentacles`;
self-buffs like `Stoneskin` and `Greater Invisibility`; and utility like
`Dimension Door`, `Stone Shape`, and even `Wall of Fire` or `Wall of Ice`,
despite them being from an opposed school.
Also, as a wizard I got `Scribe Scroll` at first level. Many spells in my
spellbook are almost only there so I can make scrolls of them. Examples include
`Identify`, the various ability enhancements (`Cats Grace`, etc..), and so on.
## Gameplay
I've actually played this build 3 times. The first time, as the human shown
here. The second time, as this build but with the zombie lord template added.
And a third time, but with the skeleton champion template added. Needless to
say, those templates make this build _incredibly powerful_. However, I made some
poor play decisions, thinking I was a bit more resistant that I actually was,
and so all of these characters died rather unfortunate and avoidable deaths.
What I've learned through all three characters is to be patient! This build is
very capable, with many options. It can wade into combat and deal some
significant damage, even before buffs. Out of combat, it has the flexibility
that a well-filled spell book can provide, and a good coverage of knowledge
skills.
When engaging in combat, I always try to make sure I have the following
self-buffs up, or ready to be up:
- `Protection from Alignment`
- `Shield`
- `Resist Energy`
- `Mirror Image`
- `Ablative Barrier`
For damage, there's a ranger spell called `Lead Blades` which is so good it
should almost be considered essential. `Versatile Weapon` can help with damage
resistance which is overcome with special materials.
As for party buffs, few options beat `Haste`.
For crowd-control, I'll tend towards a `Glitterdust`, `Pyrotechnics`, or `Sleet
Storm`.
In combat, get buffed to a point you feel capable. This may take 2 or 3 rounds.
That's OK! You're the second line. Use your swift action for `Arcane Armor
Training`, buff yourself, move in. Do that again, maybe moving in for a flank.
Third round, swift action for `Arcane Strike`, and unload with a `Power Attack`
greatsword swing! If you've got `Lead Blades` up, that's 3d6 + 6 (`Power
Attack`) + 2 (`Arcane Strike`) + 1.5x strength bonus. Not bad! Unfortunately,
Eldritch Knights lag behind for base-attack bonus, so at level 8 (which is the
level for all my builds) it's only 1 attack a round. At level 9, you get two
attacks a round. You can also fall back on a composite longbow, which you can
also use `Arcane Strike` with for 1d8 + strength bonus + 2 (`Arcane Strike`),
which isn't as impressive as that big sword, but can still contribute. And, if
weapons won't due, you're a wizard! Keep your prepared spells flexible. `Scribe
Scroll` allows you to have certain spells available at all times. `Craft
Wonderous Items` can allow you to create plenty of gizmos and gadgets that give
you once-per-day options. Crafting is powerful; use it!
I've always had fun with this build. I have, no joke, lost sleep just figuring
out cool spells to add to the spell book, worthwhile scrolls, and just imagining
scenarios. Despite the apparent short-comings, the Eldritch Knight can
definitely hold it's own, though it does require a ramp-up time.
# Sources
* [Pathfinder SRD](https://www.d20pfsrd.com/)
* [The Muscle Wizard Guide](https://docs.google.com/document/d/10x042PGSyqX4JqHbYFf7vDsK1NCnhBT2ck8i1eG6kpc/edit)

View file

@ -1,82 +0,0 @@
---
tabtitle: "Character Write-up: Dabbledop Humblebumple"
title: "Character Write-up: Dabbledop Humblebumple"
topics: [gaming, writing]
pub: "2020-10-23"
short_desc: "The backstory of a Gnome cleric/wizard I played for a single
session!"
---
Gnomes are interesting. I can't help but play them as small frantic stressballs.
Like hobbits from _Lord of the Rings_, dialed up to 11, minus the extra
breakfasts, and plus ceaseless banter. Gnomes are fun. This write up was for a
character for the same campaign as [Halvar](/2018/01/27/halvar.html), when he had
to step away for a bit.
## Backstory
Nothing is more tiresome than midweek afternoon service. All the candles, and
the verses, and the never-ending procession. Odins great and all, but I dont
think he cares about this. Of course, I mention that one time to the head priest
and its latrine duty for the week! I guess now it doesnt matter. All these
acolyte duties were from many years ago. It was pure fate, the day my current
teacher Maellezharon wandered into our village. He needed certain gemstones,
which my family was renowned for, and which I was responsible for that day. I
just happened to bring exactly the number he needed with me to the church that
day. Thats a habit I have. The priests say Im “blessed by foresight.”
Anyway, Maellezharon wanders in, and finds me, and I tell him I know hes
looking for these gemstones, and hes a bit surprised, but mentions that he
hadnt had his serious anti-divination protections up, since he figured no one
would care. I told him I didnt know what that meant. The priest chimed in that
I was blessed by foresight. Maellezharon said that was shit. I was blown away.
The priest huffed and wandered off, and I just stared at this elf who seemed
completely unphased by an ability the priests couldnt stop fawning over me for.
So I push him a bit on it, and he says that divination is mighty common, and
that if I wanted to learn more he could teach me, and hed be willing to give me
a discount on his services if I gave him a discount on the gems!
And man temples are booooring! So yeah, I just packed up some stuff and told the
priests I had to go because “foresight told me I had to!” and caught up with
Maellezharon and off we went! I brought some extra gems, and a few extra
sandwiches (which he seemed off-put by, which I account to his dainty elf ways,
which meant more for me!).
For the most part, it was kind of boring - but not as boring as the temple!
Nothing is as boring as that. Trust me. Just routine travel along “safe and
well-known roads” (says Maellezharon) to “respectable and trustworthy
merchants” (says Maellezharon) for “law-abiding and fair trade deals.” (says
Maellezharon). I was a bit surprised to find myself still saying a prayer here
and there but old habits die hard. The more we travelled, the more Maellezharon
would teach me. First he helped me refine my portent abilities, and got me a
spellbook, and let me copy some of his spells into it. Then, in each town we
went to, we would combine our powers to get the best deals possible. I would
call upon my divine powers to aid him, and he would wheel-and-deal his way
through trade deals and contracts. He insisted, time and again, that we do
things “legally and fair” (his words) which was fine by me.
Then, the event happened. And magic suddenly left, and Maellezharon… did not
take that well. I should say, this was probably 5 or so years into his
mentorship. He had taught me many things, and I was developing into “quite the
capable wizard, if I do say so myself” (Maellezharon said that). We had
travelled all over the place, and eventually Maellezharon decided hed like to
“invest in real estate since its like free money” so he bought a tower and did
the whole typical wizard thing: magic plants, and a few animated objects as
guards, and what not. I helped with that too, which was really fun. Anyway when
the event happened, we were trading and suddenly I just felt this… emptiness.
Like, a part of my body was suddenly missing. I looked at Maellezharon and he
was pale as bone. He just stared at his hands, then looked at the merchant and
told him he had to go, and he just left. He didnt even get his things, he just
stumbled out of the shop. I grabbed anything that was ours, and walked outside
and saw him just standing there, waving his arms and trying to say the words,
and his eyes were a bit crazy-like, and he was sweating. After about 20 minutes,
he just sat down and stared. It took me almost 4 hours to finally get him up and
to an inn. The next day we went back to the tower, and it was really quite a sad
sight. The plants had all died (and not because I forgot to water them I always
watered them I am responsible), the guards were piles of rubble. I helped him
in, to his room, to his favorite chair, where he just slumped down and stared
into the empty, cold fireplace. For a few weeks I tended to him, making sure he
at least ate. And I kept up the place, cleaning as best I could. But after a
while, I started worrying about my family, and so I hired a local farm boy to
take care of Maellezharon while I was gone (feed him twice a day, make sure he
uses the loo, and dont let him hurt himself).

View file

@ -1,241 +0,0 @@
---
tabtitle: "Oblivion on Linux Part 1, Tools"
title: "Oblivion on Linux, with Mods! Part 1 - Tools"
topics: [gaming]
pub: "2021-11-28"
short_desc: "The Elder Scrolls IV: Oblivion is one of my favorite games of
all time. The vanilla game holds up, but mods take the game to an entirely
new level. Getting it working on Linux requires a bit of configuration, bit
is surprisingly accessible! This is part 1 of my journey."
---
Oblivion holds a special place in my heart. I remember spending a summer in the
town I went to college in, and playing Oblivion almost every day while listening
to Dream Theater's _Systematic Chaos_. Back then, I wasn't aware of modding, so
it was literally just vanilla Oblivion for hours upon hours. I also used
Windows, so the game would run fine. Now, things have changed. The easier issue
to deal with is playing Oblivion on Linux. Thanks to Valve, Oblivion runs
excellent with Proton out of the box. The more challenging issue is mods, and
that's what this write-up is all about!
# Vanilla Oblivion
Starting from the beginning, Oblivion is available on many platforms, but my
experiences here will assume the Steam installation. The primary difference will
be with respect to how the tools used to mod Oblivion are run. I've got the
Game of the Year edition, which is Steam ID `22330`.
# Modding Tools
Much of modding Oblivion is done with the help of additional tools. A mod
manager is used for installing and configuring the mods. There are several
options for Oblivion, and the one I've been suggested and use is called `Wrye
Bash`. Mod load order is also important, and the tool I'm using to help with
that is `LOOT`. Finally, `TES4Edit`, `TES4LODGen` and `BethINI` each helps with
performance and configuration.
I have the following directory structure setup for my mods:
```
OblivionMods
|- Archives
|- Backups
|- Tools
|- WryeBash
```
_Archives_ is where I store the actual archives of the mods I use. _Backups_ is
where I store any relevant backups for my Oblivion game, such as saves or
configuration files for the mods. _Tools_ is where I put the executables for all
the tools I mentioned above. _WryeBash_ is used to store the unarchived mods
(which it calls "projects") and mod data that `Wrye Bash` uses.
Because each of these tools is run using Proton, I also have a set of aliases
configured. Similar aliases could be setup for using Wine instead. For each
alias, modify the paths accordingly for your setup. I should also note that I'm
running Oblivion using [Glorious Eggroll's
Proton](https://github.com/GloriousEggroll/proton-ge-custom), version 6.16. I
haven't experimented with different Proton versions to find the most performant
version, but if I do in the future, I'll mention it.
## Wrye Bash
- [Project Link](https://github.com/wrye-bash/wrye-bash)
- [Homepage](https://wrye-bash.github.io/)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/22368)
`Wrye Bash` is involved. I don't know how to use it fully. There are a few
guides that helped me learn how to use it enough to get mods installed and
configured though. The first, and very relevant, is at [Shrine of
Kynareth](https://www.shrine-of-kynareth.de/wrye-bash-on-linux). I referenced
this guide, and the
[other](https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab)
[written](https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-2-load-order-bashed-patch-and-savegame-profiles)
[guides](https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-3-ini-edits-tools-and-tricks)
to learn how Wrye Bash works and what to setup. I also learned some tricks from
the [Oblivion Comprehensive Modding Guide by
Dispensation](https://www.nexusmods.com/oblivion/mods/49898).
### Setup
The easiest option is to use the stand-alone executable from the GitHub releases
page. Extract the archive, and then use Proton to run the executable in the
_Mopy_ directory. This is the alias I use; replace paths accordingly:
```
alias oblivion-wrye='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/Mopy/Wrye\ Bash.exe'
```
Additionally, I copy the _Mopy/bash_default.ini_ file to _Mopy/bash.ini_ and set
the `sOblivionMods` to "Z:\path\to\OblivionMods\WryeBash", `sBashModData` to
"Z:\path\to\OblivionMods\WryeBash\Bash Mod Data", `sInstallersData` to
"Z:\path\to\OblivionMods\WryeBash\Bash Installers", and `sOblivionPath` to
"Z:\path\to\steam\steamapps\common\Oblivion". In Wine, `Z:` references your
local file system. Theoretically, because Wine is awesome, you may be able to
use Linux file system paths in the configuration, but I went with this.
### Usage
The guides above provide a very thorough explanation of use. Of note: `Wrye
Bash` in Wine does not like drag-and-drop actions, so don't do them. I don't do
anything special with my usage of `Wrye Bash`: run the alias, install mods from
the Installers tab, enable or disable mods from the Mods tab. I generally don't
do anything else.
## LOOT
- [Project Link](https://github.com/loot/loot)
- [Homepage](https://loot.github.io/)
`LOOT` sets the proper load order for mods. There is a native Linux client, but
I ran into [this issue](https://github.com/loot/loot/issues/1615) and decided to
just use the Windows version. The GitHub releases page includes a 7z archive
with a stand-alone executable, and that's what I used.
### Setup
Download the stand-alone executable, and extract it to _OblivionMods/Tools_.
This is the alias I use; replace paths accordingly:
```
alias oblivion-loot='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/LOOT/LOOT.exe'
```
On first run, it should auto-detect the Oblivion installation and configure
everything accordingly. If it doesn't, there are instructions on the Homepage
for configuration.
### Usage
`LOOT` is pretty straight forward. It references a master list of mods to
determine the optimal load order for all installed mods. I ran into an issue
where `LOOT` couldn't properly download the master list, and so as a work-around
I manually downloaded the master list, and then configured `LOOT` to use that
local file instead of the remote Git repository. Those instructions are covered
[in the FAQ](https://loot.github.io/docs/help/LOOT-FAQs.html#git-errors). If
everything works, and the list of mods is there, then you can run a sort, and
apply the changes. `LOOT` will inform you of any "dirty" mods, which you can use
the next tool the clear up. I ended up keeping `LOOT` open, while stepping
through the cleaning procedure for each mod, until everything looked happy.
## TES4Edit
- [Project Link](https://github.com/TES5Edit/TES5Edit)
- [Homepage](https://tes5edit.github.io/)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/11536)
`TES4Edit` is the Oblivion version of `xEdit`, which is an incredible tool. All
I use it for is to clean dirty mods. `LOOT` provides a link to the [quick cleaning
guide](https://tes5edit.github.io/docs/7-mod-cleaning-and-error-checking.html#ThreeEasyStepstocleanMods),
which gives us exactly the steps required.
### Setup
Download the latest build from GitHub, and extract it to _OblivionMods/Tools_.
This is the alias I use, which runs the "Quick Auto Clean" function; replace
paths accordingly:
```
alias oblivion-tes4edit-quick='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4EditQuickAutoClean.exe'
```
TES4Edit is also useful for other, non-quick-clean functionality, so I have this
alias for that:
```
alias oblivion-tes4edit='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4Edit/TES4Edit.exe'
```
### Usage
Run the quick-clean alias, select the problematic file, and click "OK". Only one
file can be cleaned at a time.
## TES4LODGen
- [Project Link](https://github.com/TES5Edit/xLODGen)
- [Homepage](https://tes5edit.github.io/docs/16-xLODGen.html)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/15781?tab=description)
`TES4LODGen` will generate the relevant LOD files ahead of time. Apparently it
helps with performance in-game, but may result in slower initial load times when
starting the game.
### Setup
I downloaded the files from Nexus, and extracted the archive to
_OblivionMods/Tools/TES4LODGen_. Here's the alias; replace paths accordingly:
```
alias oblivion-tes4lodgen='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/TES4LODGen/TES4LODGen.exe'
```
### Usage
Run the alias. The program should auto-find everything, do some magic, and will
eventually report that it has finished. At that point, you can close the
application.
## BethINI
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/46440)
`BethINI` helps manage the "oblivion.ini" file, providing sane options and a
wizard for configuration. While not required, it does help with optimizations.
### Setup
I downloaded the files from Nexus, and extracted the archive to
_OblivionMods/Tools/Bethini_. If you use AutoHotKey apparently you can use that
to run it, but that doesn't make sense to me, so I went with the stand-alone
executable. Here's the alias; replace paths accordingly:
```
alias oblivion-bethini='STEAM_COMPAT_DATA_PATH=/path/to/steam/directory/steamapps/compatdata/22330/ \
STEAM_COMPAT_CLIENT_INSTALL_PATH=/path/to/steam/directory/ \
/path/to/proton/proton run /path/to/OblivionMods/Tools/BethINI/BethINI.exe'
```
### Usage
Just like the rest, run the alias and answer the questions. `BethINI` will make
backups of the modified INI files before over-writing them.
# Next Steps
Once all the tools are assembled, and usable, the next step is mods! In my next
post, I'll cover some of my favorite mods. The third part will then be a
complete walk-thru of my installation of my full mod list.

View file

@ -1,160 +0,0 @@
---
tabtitle: "Oblivion on Linux Part 2, Mods"
title: "Oblivion on Linux, with Mods! Part 2 - Mods"
topics: [gaming]
pub: "2021-12-09"
short_desc: "The Elder Scrolls IV: Oblivion still has one of the more
active modding communities. In this, part 2 of my journey to get Oblivion
modded and running on Linux, I'll cover some of my favorite mods."
---
Every player's mod list is different. Some will focus on visuals, making the
game as graphically impressive and pretty as possible. Others care primarily
about additional content. I tend towards the later, with a preference for
additional survival or realism mods. I recommend starting with the "Core Mods"
section in the [Oblivion Comprehensive Modding Guide by
Dispensation](https://www.nexusmods.com/oblivion/mods/49898) which will cover
some essential performance and enhancement mods.
Below are some specific mods I would like to highlight, and which I enjoy.
## Survival Related
### Basic Primary Needs & Personal Hygiene
- [Nexus Link - Basic Primary Needs](https://www.nexusmods.com/oblivion/mods/37088)
- [Nexus Link - Basic Personal Hygiene](https://www.nexusmods.com/oblivion/mods/42038_)
These two mods cover most of the survival aspects of my mod pack. "Basic Primary
Needs" adds hunger, thirst, and fatigue, while "Basic Personal Hygiene" adds
cleanliness. Managing these will feel tedious to some, but I really like having
to eat and drink, and visiting a bath house after a long time adventuring.
Each mod can make use of [additional HUD Status
Bars](https://www.nexusmods.com/oblivion/mods/34905), which makes tracking the
new needs much easier.
### Traveler's Tent
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/49654)
This mod adds a portable player home, and is supremely comfy. Because I avoid
fast-travel, I wanted some sort of camping mod. I originally used [Maskar's
Camping Mod](https://www.nexusmods.com/oblivion/mods/37197) before learning of
this mod. By comparison, the tent in Traveler's Tent feels almost like cheating,
but sometimes it's important to treat yourself.
## World Enhancement
These I would consider my graphical improvements. I'm generally not too
concerned with making the game look good, but I love making the game feel more
realistic. These mods make Cyrodiil feel more alive.
### Better Cities
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/16513/)
This is a massive collection of city overhaul and enhancement mods. I was
awe-struck when I walked around the Imperial City for the first time with this
mod enabled. Bravil felt like a dangerous, crowded harbor town. Leyawin looks
like an actual place people live. Though the improvements do come with FPS hits.
Doubly-so if enabling the Open Cities option, which moves cities into the
overworld space, instead of their own individual instances. It's a balancing
act: the immersion of walking directly into a city sometimes isn't worth
crashing to desktop when adventuring around cities.
### COBL
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/21104)
"Common Oblivion" enriches the world of Oblivion by adding lots of little
things, and helping different mods "talk" to each other. I like to think of it
as filling in a lot of the details that feel missing from vanilla Oblivion.
### Enhanced Economy
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/25078)
- [Lubrons Patch](https://www.nexusmods.com/oblivion/mods/47184)
This mod and the corresponding patch make the economy of the world more dynamic.
What I really like are the merchant quests that are added. Several merchants in
each town will ask you to find an item in one of the nearby dungeons. It adds
flavor to the game in just the right way.
Lubron's Patch for Enhanced Economy fixes some bugs and cleans up the code a
bit.
### Lights of Oblivion - Road Lanterns
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/46131)
A very simple mod that I feel really enhances my travel around Cyrodiil. I avoid
fast-traveling whenever possible, and walking lit roads at night feels comfy.
I'm partial to the Imperial model.
### Natural Environments
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/2536)
Arguably the only graphical enhancement mod, Natural Environments provides
options for modifying the weather, water, and vegetation around Cyrodiil. The
weather and vegetation enhancements especially stand out. Overall the mods
don't cause me much performance impact, if any.
### Cyrodiil Travel Services
- [AFK Mods Link](https://www.afkmods.com/index.php?/files/file/263-cyrodiil-travel-services/)
I really enjoyed that in Skyrim there was a dude with a wagon you could pay to
travel to the various cities. This mod adds similar functionality, and then
some. Useful when playing the game without fast-travel enabled.
## Overhauls
Arguably, these are the heavy hitters. These mods will alter the mechanics of
the game, often making things more challenging but also more rewarding.
### Maskar's Oblivion Overhaul
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/42780)
Maskar's Overhaul is a massive endeavor. It "[improves] many aspects of the
game, while maintaining the overall feel of the game and ensuring compatibility
with most other mods." I think it does so with great success! However, be
forewarned, that this overhaul makes the game more challenging.
There is too much to cover about Maskar's in this post, but I highly recommend
it. It comes with a PDF instruction manual, which is 61 pages long.
### Vanilla Combat Enhanced
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/45314)
As the name implies, this overhaul adjusts but does not change the vanilla
combat experience. Whereas other mods add new moves or fatigue systems, this mod
updates the vanilla combat experience to be more challenging and fair. It works
with Maskar's after a small modification, which will be covered in the next
part. This is one of the mods that I haven't played with for too long, and
there are definitely some additional or alternative combat mods I'm considering.
Namely, [Dynamic Oblivion Combat](https://www.nexusmods.com/oblivion/mods/49873)
and [Combat Additions](https://www.nexusmods.com/oblivion/mods/49939).
### Supreme Magicka
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/12466)
Rounding out the trio is a magic overhaul. Supreme Magicka approaches magic in
Oblivion in a similar way to Vanilla Combat Enhanced with combat: it seeks to
improve and expand, without replacing. To continue similarities, this mod is one
I haven't sank my teeth into as much. The characters I've been playing most
recently haven't achieved very powerful magical capabilities yet. An alternative
to this mod is [Av Latta
Magicka](https://www.nexusmods.com/oblivion/mods/49096).
## Next Steps
In the last part of this series, I want to walk through a complete install of
Oblivion from scratch.

View file

@ -1,149 +0,0 @@
---
tabtitle: "Syncthing on the Steam Deck"
title: "Setting up Syncthing on the Steam Deck (Updated!)"
topics: [gaming, technology]
pub: "2022-07-12"
short_desc: "Syncthing is an incredible tool that I use to keep pictures,
music, notes, and games synchronized across multiple platforms. The form
factor of the Steam Deck makes it a perfect emulation target, and Syncthing
can help keep games and saves in-sync with other machines."
---
# Syncthing on the Steam Deck (Updated!)
## Update
Turns out, when you update the SteamOS, it completely over-writes the operating
system. All of the setup I had originally written was great, if I never update,
which is unacceptable. Not all is lost; the quest simply gets harder. If I can't
rely on system-wide services, then I rely on user services.
### The Wrong Way: System-Wide Services
My first attempt was to setup Syncthing as a system-wide service managed by
`systemd`, installed via `pacman`. There are several problems with this. First,
it requires disabling the read-only file-system. Next, `pacman` is not setup nor
reliable, since every SteamOS update will over-write any changes I make to any
of the read-only file-system, including the directories that `pacman` relies on.
Related, the update will also erase the Syncthing package. This means I either
never update (inadvisable, and unacceptable), or I setup Syncthing not in the
read-only file-system.
### The Right Way: User Services
systemd allows for non-root-based services, called user services. The Arch Wiki
[systemd/User](https://wiki.archlinux.org/title/Systemd/User) article describes
this functionality much more than I will. Here are the relevant details:
- User services can be enabled to start when a user logs in
- Service files are stored in the user's home directory (specifically
`~/.config/systemd/user`)
- No root privileges are required. No modifying the read-only file-system
## Syncthing
Syncthing is incredible. I've [written about it
before](2020/07/19/syncthing-part-1.html), but the setup here is a bit more
involved. The Steam Deck runs Arch Linux (and have I told you yet today that I
do too?), so the Arch Wiki [article on
Syncthing](https://wiki.archlinux.org/title/Syncthing) gives some good insight.
When I initially started this process, I installed the SyncthingGTK application
from the Discover Store. This means it is a Flatpak application, and so doesn't
require elevated user privileges. I also tried the Syncthingy application, which
explicitly calls out Steam Deck users. However, both require running the Flatpak
in the background (like some users do for Discord or Spotify). I don't like
this, it feels off, and thus I sought a different approach.
## SSHD: Still Incredibly Useful
I got real tired real quick of using the on-screen keyboard. After
complaining, a friend recommended I enable `sshd` and just remote in to the
device. Doing so was a breeze, and I recommend to others who don't have a
physical keyboard they can plug into their device. Drop to desktop mode
(hold the power button for a few seconds, and select the option), and start a
terminal (default is Konsole). Before remotely accessing the device, or using
elevated privileges via `sudo`, I need to set a password for the default user,
_deck_. In the terminal, type `passwd` and set it (and then put it in your
password vault so you don't forget. You _do_ have a password vault, right?).
Start the service, `sudo systemctl start sshd`, and optionally enable it to have
`sshd` automatically started on each boot (`sudo systemctl enable sshd`). Get
the device IP with `ip addr list`, from my desktop run `ssh deck@ip-address`,
type in the password, and now I'm a grade-A Hackermans.
This setting is not reset on SteamOS updates, that I can tell. Once enabled,
this will always start at boot, and always be on until explicitly turned off. Be
mindful of that if you decide to wander away from your home network; maybe turn
it off in public if you don't need it.
## Setup
There are 2 things required: a systemd service file, and the `syncthing`
binary. Syncthing is written in Go, and a compiled binary can be downloaded that
has no dependencies or installation requirements. It can be downloaded from
the [Syncthing
Releases](https://github.com/syncthing/syncthing/releases/tag/v1.20.3) page for
many platforms and architectures. The Steam Deck is a Linux platform, using the
AMD64 architecture (or x86_64), so I grab that one. I'll note here, since I have
SSH access, I do all the editing and downloading on my desktop, and then
transfer the files using `scp` to the Deck. All of these steps can be done on
the Deck itself, without SSH access. Once the proper tarball has been
downloaded, extract it, and within will be the `syncthing` binary, ready to
rock. I copy/move the binary to `~/.local/bin/syncthing` on the Deck. The exact
location is less important than ensuring the binary is within my home directory
on the Deck.
The systemd serivce file can also be taken from the extracted tarball, but
requires modification. In the tarball, it is
`etc/linux-systemd/user/syncthing.service`. Copy this file to
`~/.config/systemd/user` on the Deck, and edit the "ExecStart" line in the
"[Service]" section from
```
...
[Service]
ExecStart=/usr/bin/syncthing serve --no-browser --no-restart --logflags=0
...
```
to
```
...
[Service]
ExecStart=/home/deck/.local/bin/syncthing serve --no-browser --no-restart --logflags=0
...
```
(or wherever you decided to put the local `syncthing` binary)
With everything in place, I can now enable and start the Syncthing user service:
```
systemctl --user enable syncthing.service
systemctl --user start syncthing.service
```
Since I don't have a physical keyboard plugged in, I modify my SSH command
slightly to forward the Syncthing web-UI from the Deck to my local machine:
```
ssh -L 31337:deck-ip-goes-here:8384 deck@deck-ip-goes-here
```
Now, on my local machine I can open one tab to `localhost:8384`, to show
Syncthing on my local machine, and another tab to `localhost:31337` to show
Syncthing on my Deck. From here, I add my local machine as a device on my Deck,
and begin sharing folders.
## Closing Thoughts
I've been using this setup for about a week now. I've synced almost 20GB of
files, including configurations and saves for Retroarch. It works after
restarts, OS and client upgrades, and waking the device from sleep. It sits
quietly in the background, without having to start up applications. The biggest
problem is that it doesn't automatically update to the newest version of
Syncthing. It's also a bit involved to setup. To that end, I've written a tool
to help with setup: [Steam Deck Syncthing
Setup](https://codeberg.org/VagabondAzulien/steam-deck-syncthing). I'm still
finishing it up, but I intend to make use of it to keep my version of Syncthing
up-to-date. If you use it, let me know!

View file

@ -1,140 +0,0 @@
---
tabtitle: "Funkwhale On Linode with Object Storage"
title: "Funkwhale on Linode with Object Storage"
topics: [technology]
pub: "2022-09-27"
short_desc: "Funkwhale is a cool project, building a federated music platform. I
wanted to explore Funkwhale's ability to store music and associated files in
object storage, and since I already use Linode for my VPS, leveraging their
object storage offering makes a lot of sense."
---
# Funkwhale on Linode with Object Storage
## Funkwhale Setup
[Funkwhale](https://funkwhale.audio/) is a decentralized music service,
connecting to the [fediverse](https://en.wikipedia.org/wiki/Fediverse) using the
ActivityPub protocol. It is a web-based application, allowing users to upload,
listen, and share music and podcasts. I think it's a cool project, and I can
self-host it, so I did. For a while, Funkwhale offered an all-in-one Docker
container, but they shifted focus to a multi-container approach. I had delayed
my transition from all-in-one to multi-container, but finally this past weekend
I found myself with time and motivation to get it done. The installation of
Funkwhale using Docker is very straight forward. The community has developed a
series of templates that can be fetched, modified, and used to get started very
quickly and easily. Those instructions are
[here](https://docs.funkwhale.audio/installation/docker.html#multi-container-installation).
The only significant modification I made was using `/opt/funkwhale` as my
default data and media root. I keep all my Docker configuration in directories
in my home directory as well. Much of these changes can be established in the
`.env` file discussed in the installation instructions, but I also scrubbed the
template files created and used during installation to make sure the directories
were as I wanted them. I also proxy Funkwhale and many other services behind
nginx, and there were a few [additional
steps](https://docs.funkwhale.audio/installation/index.html#nginx) I had to
take. With all that complete, I had transitioned successfully. I already had SSL
certificates, but if that's also a requirement, they can easily be provisioned
using [Certbot](https://certbot.eff.org/).
## Object Storage Setup
In my old setup, I leveraged Funkwhale's ability to [in-place import
music](https://docs.funkwhale.audio/admin/importing-music.html). I transferred
about 70GB worth of music to my VPS (using Syncthing <3), filling the disk
almost entirely (_98%_). It was a temporary solution for a road trip, and I
knew I couldn't keep it that way for long. Funkwhale has the ability to leverage
S3-compatible object storage, and Linode, the provider I already use for my VPS,
offers object storage. Any of the other major cloud providers will also do the
trick; I just went with what was easiest. On the Linode side, there's not much
to it. I created a new bucket, labeled it accordingly, created an access key,
and that was it. The Funkwhale side proved to be a bit challenging, but not, it
turns out, due to configuration. Well, _technically_ it was.
The relevant configuration options on the Funkwhale side, in the `.env` file:
```
## External storages configuration
# Funkwhale can store uploaded files on Amazon S3 and S3-compatible storages (such as Minio)
# Uncomment and fill the variables below
AWS_ACCESS_KEY_ID=
AWS_SECRET_ACCESS_KEY=
AWS_STORAGE_BUCKET_NAME=
# An optional bucket subdirectory were you want to store the files. This is especially useful
# if you plan to use share the bucket with other services
# AWS_LOCATION=
# If you use a S3-compatible storage such as minio, set the following variable
# the full URL to the storage server. Example:
# AWS_S3_ENDPOINT_URL=https://minio.mydomain.com
AWS_S3_ENDPOINT_URL=
# If you want to serve media directly from your S3 bucket rather than through a proxy,
# set this to false
# PROXY_MEDIA=false
# If you are using Amazon S3 to serve media directly, you will need to specify your region
# name in order to access files. Example:
# AWS_S3_REGION_NAME=eu-west-2
# AWS_S3_REGION_NAME=
# If you are using Amazon S3, use this setting to configure how long generated URLs should stay
# valid. The default value is 3600 (60 minutes). The maximum accepted value is 604800 (7 days)
# AWS_QUERYSTRING_EXPIRE=
# If you are using an S3-compatible object storage provider, and need to provide a default
# ACL for object uploads that is different from the default applied by boto3, you may
# override it here. Example:
# AWS_DEFAULT_ACL=public-read
# Available options can be found here: https://docs.aws.amazon.com/AmazonS3/latest/userguide/acl-overview.html#canned-acl
AWS_DEFAULT_ACL=
```
I've included the comments. The entire file is commented, and generally easy
enough to figure out. On the Linode side, when I generated the access key, it
provided me an _Access Key_ and a _Secret Key_. I had already created a bucket,
and so I had the _Bucket Name_. The challenge for me was what the _Endpoint URL_
was, and if I needed to set a _Region Name_ and _ACL_. Linode's documentation on
their object storage offering is a bit anemic, and so I made use of their setup
instructions for [using s3cmd with Linode object
storage](https://www.linode.com/docs/products/storage/object-storage/guides/s3cmd/).
From this guide, I was able to both setup `s3cmd`, and also determine what the
_Endpoint URL_ would be. I also set the _Region Name_ and _ACL_ to match what
the UI was showing, but I'm still not certain their necessary. Here's the trick,
and the cause of a few hours-worth of confusion: restarting the Docker
containers wasn't re-reading the `.env` file; I had to completely stop and
re-create them. It wasn't until I ran `docker inspect funkwhale-docker_api_1`
and noticed the environment variables weren't set that I figured this out. Could
be this is common knowledge for Docker-gurus; now I know. With the
configuration in place, and the containers recreated, I was able to upload files
through Funkwhale, and watch them be stored in my Linode bucket. My final
configuration options were as follows:
```
AWS_ACCESS_KEY_ID=<stuff>
AWS_SECRET_ACCESS_KEY=<secret stuff>
AWS_STORAGE_BUCKET_NAME=funkwhale-music-bucket-name
AWS_S3_ENDPOINT_URL=https://us-southeast-1.linodeobjects.com
AWS_S3_REGION_NAME=us-southeast-1
AWS_DEFAULT_ACL=public-read
```
## Next Steps
The downside of Funkwhale's S3-compatible object storage integration lies in how
files are uploaded. One cannot simply ~~walk into~~ upload files to the bucket;
music must be uploaded through Funkwhale's API (via web or other means), and
then Funkwhale stores it accordingly (like for local uploads). I have a lot of
music, and I can't be asked to manually upload it all. That's, like, 2 hours of
half-hearted work. No, instead, the obvious solution is to build a script that
can automatically upload any new music from my local music directory to
Funkwhale automatically. What I'm considering now is how I want to do that. I
could leverage systemd to watch my local music directory, and run the upload
script whenever new music is uploaded. Could even expand it to remove music
whenever I delete it locally, though that seems a bit odd. I could instead setup
a cron or systemd-timer to run at a set interval, and check for any new files
since the last run, and upload them. Regardless of the trigger, the upload
functionality should ideally avoid duplicates, run in a non-blocking fashion,
maybe batch upload files, and be low impact on my desktop. So that's next.

View file

@ -1,180 +0,0 @@
---
tabtitle: "Automatic Backups with RClone"
title: "Automatic Backups with RClone, systemd, and Backblaze"
topics: [technology]
pub: "2023-05-07"
short_desc: "RClone is a command-line utility for interacting with an
incredible number of cloud services. Backblaze is a reliable and
inexpensive cloud storage provider. With systemd timer units, I setup a
simple and reliable backup solution."
---
# Automatic Backups with RClone, systemd, and Backblaze
## Quick Note
Backups are not complicated. They may seem like it, but in reality the
complications arise from restoration. If you're not doing anything fancy with
your data now, then don't do anything fancy with your backups. Follow the 3-2-1
methodology: 3 copies of (important) data, in 2 different locations, 1 of which
is off-site. Many others have written about this in better detail than I ever
can; Jeff Geerling has a great article and several videos about it [on his
site](https://www.jeffgeerling.com/blog/2021/my-backup-plan). The time (and
often money) investment now can reduce worry, stress, and loss should the data
you care about ever become unusable.
(There are no affiliate links in this post, nor was I paid to recommend any
product or service.)
# My Needs
Backups are as important as the data you have. If all you've got is a directory
full of meme GIFs that you don't mind losing, then backups may be a waste of
time and money. I have recently taken to buying as much of my music as possible
(especially through Bandcamp, and especially on Bandcamp Fridays!). While much
of the music I buy does exist on a remote server at a company somewhere, the
cost of having to re-download and re-organize all of it well outweighs the cost
of proper backups. Not to mention the music which I can't get anywhere else
anymore. Nor to further mention the other data which I have. All of this is to
say: backups are worth it to me.
Recently I wanted to setup NFS on my home network. I was concerned about messing
something up, and erasing the directory I had intended to share, so I wanted to
backup the data. For a while I've been intending to setup backups (as everyone
probably does), but it was never a priority. This project helped to prioritze
it. I had read about [RClone](https://rclone.org/), a command-line utility for
interacting with an incredible number of cloud services. I messed around a bit
with it, found it to my liking, and started shopping around for a cloud storage
solution. Enter [Backblaze](https://www.backblaze.com/). The folks that publish
all those hard-drive stats? Turns out they also run a business where they
provide cloud storage. It's inexpensive, reliable, and straight-forward. The
last step was to automate it with systemd timer units.
## Backblaze Setup
* [Backblaze Site](https://www.backblaze.com/)
* [Backblaze Docs](https://www.backblaze.com/help.html)
First step is to setup Backblaze. Create an account, verify email address, all
that jazz. I'd recommend enabling multi-factor authentication on the
**Account** -> **My Settings** page, under **Security**. Next, click on the
**Account** -> **Application Keys** page, and generate a new key. Fill in the
blanks (I gave my key full access to all buckets), copy the important bits, and
store them somewhere safe (like your password vault).
## RClone Setup
* [RClone Site](https://rclone.org/)
* [RClone Backblaze B2 Page](https://rclone.org/b2/)
Download and install RClone. Next run `rclone config` and walk through the
prompts. I'm using Backblaze, so I select "Backblaze B2" as my storage backend.
Then I add the application key ID and application key secret (key) at the
relevant prompts. For all of this configuration, I named the remote "backblaze",
though a shorter name can make commands easier. Regardless, verify the
configuration is setup properly by running `rclone lsd backblaze:`, which will
list buckets. Unless a bucket was already configured, nothing will show up, and
also there won't be any errors.
## Backup Configuration
Now, figure out how you want to backup your data. I have a [BTRFS RAID setup
with multiple sub-volumes](/2020/06/14/setting-up-btrfs.html), each for a
different data type: one for Books, one for Music, and so on. Since creating a
bucket doesn't cost anything, I decided to split my backups similarly. I created
the buckets I wanted, and did a "manual" RClone sync of the data.
`rclone sync --fast-list --transfers 20 /path/to/Books
backblaze:bucket-for-Books-backups`
The "--fast-list" and "--transfers" options are specified on the [RClone
Backblaze B2 page](https://rclone.org/b2/), along with some others that may be
of interest.
At this point, my data was "backed-up", and I could muck about with it more
confidently. Also, at this point, configuring back-ups is done. Run those RClone
sync commands once a week, and all is set. I don't want to remember to do
things, though.
## Automating the Process
The first thing to do is create a user-agnostic location for the configuration
file and some additional files. I chose `/etc/rclone`, and copied the RClone
configuration file generated previously to this directory as `backblaze.conf`.
Next, I created a filter file. RClone has extensive [filtering
options](https://rclone.org/filtering/). For my current needs, a single file
will suffice.
### default.filter
```
# Exclude BTRFS snapshot directories
- .snapshots/**
# Exclude Syncthing configuration directories
- .stfolder/**
```
systemd timer units ( [[Arch
Wiki](https://wiki.archlinux.org/title/Systemd/Timers)]
[[Manual](https://man.archlinux.org/man/systemd.timer.5)] ) are triggers that
activate on a schedule. That schedule can be dynamic (relative to a
previous/other trigger), or static (at 6:15 every day). A timer unit triggers a
service unit, which does the work. For my backups, I decided to run a sync every
hour, at sometime between the 15 and 45 minute mark of that hour. To simplify
having multiple timer units that all do the same thing, I setup a template unit
(see the **Note** here: [Arch
Wiki](https://wiki.archlinux.org/title/Systemd#Using_units)).
### rclone-backup@.timer
```
[Unit]
Description=RClone Backup Timer Template
[Timer]
# Run every hour, sometime between the 15 minute and 45 minute mark
OnCalendar=*-*-* *:15:00
AccuracySec=30min
RandomizedDelaySec=5min
# The %i is whatever value is after the "@" for the configured unit. For
# example, rclone-backup@Books.timer will run the rclone-backup@Books.service
Unit=rclone-backup@%i.service
[Install]
WantedBy=timers.target
```
Then I can `enable` and `start` a timer for each directory to backup. To
minimize configuration, I also setup the service file to be a template. This
requires a bit of inflexible coordination: the directory name must match to a
part of the bucket name.
### rclone-backup@.service
```
[Unit]
Description=RClone Backup of %I
[Service]
Type=simple
ExecStart=/usr/bin/rclone sync -v --config "/etc/rclone/backblaze.conf" --fast-list --transfers 20 --filter-from "/etc/rclone/default.filter" /path/to/%i/ backblaze:bucket-for-%i-backups
```
The `--config` option allows us to specify the configuration in the `/etc`
directory. I include `-v` to have some additional output in the journal.
Again, `--fast-list` and `--transfers` are used to speed up the process and keep
costs lower. Then I `--filter-from` the "default.filter" file.
Place each of these files (`rclone-backup@.timer` and `rclone-backup@.service`)
into `/etc/systemd/system`. For each directory, enable and start the timer
unit; `systemctl enable rclone-backup@Example.timer` and `systemctl start
rclone-backup@Example.timer` will backup `/path/to/Example/` to the
`bucket-for-Example-backups` bucket.
# Next Steps
I would like to get some sort of metrics and dashboards setup to track backup
status and statistics. It could be very useful to be notified if a backup ever
fails.
Eventually, I'll upload this to a repository somewhere for ease of access and
backup. When I do, I'll update this post.

View file

@ -1,82 +0,0 @@
---
tabtitle: "Life in Progress: August, 2024"
title: "Life in Progress: August, 2024"
topics: [life]
pub: 2024-08-19
short_desc: "Life In Progress update for August"
---
# Life In Progress, as of {{ page.pub }}
- Learning [Stan Rogers'
_Bluenose_](https://www.youtube.com/watch?v=LZVpvJsqTMM) on mandolin and voice
- Building a few games in the [TIC-80 fantasy console](https://tic80.com)
- Deploying my own ["Pages" server](https://codeberg.org/Codeberg/pages-server/)
- Building a Forgejo Action for deploying game builds to Itch.io using
[butler](https://itch.io/docs/butler/)
- Building a custom WordPress Docker container that uses SQLite
- Starting my own business
## Music
Adam and I continue our semi-weekly jam sessions! We've settled on [Stan Rogers'
_Bluenose_](https://www.youtube.com/watch?v=LZVpvJsqTMM) for our first piece. I
normally pick up lyrics pretty quick, but this song eludes me. We worked on the
chord progression last week, and I've been actually practicing!
## Game Dev
Still having a blast with [TIC-80](https://tic80.com/). I made a small farming
experiment game, to learn [Fennel](https://fennel-lang.org) some more and also
nail-down some basic design principles. Some of the ideas in that experiment,
namely generating the map with a loop and `mset` instead of using the built-in
map designer, gave me some insight for solving my darkness troubles in
Nightgolf. I'm still wrapping my head around it, but I think this will be a
solution.
The farming experiment game lives on
[Itch.io](https://vagabondazulien.itch.io/farm-experiment-1) and the [TIC-80
Webzone](https://tic80.com/play?cart=3965).
## Tech Dev
[Forgejo](https://forgejo.org/) continues to be rewarding, and I'm looking
forward to expanding my deployment of it by deploying my own ["Pages"
server](https://codeberg.org/Codeberg/pages-server/). This will allow me to
deploy my static sites on my own infrastructure. I'm also working on an "Action"
for leveraging [butler](https://itch.io/docs/butler/) to publish games I publish
the source code for from my Forge to Itch.io.
In preparation for both my own use, and my business use, I need to learn more
about Nextcloud. I'm also working on building a custom WordPress Docker
container that relies on SQLite instead of MySQL.
Hovering about all this is backups and monitoring, both of which I sprinkle into
my learning voyage. I'm looking forward to writing up some documentation about
my implementation.
## Entrepreneurship
I'm happy to report I was accepted into New York's Self-Employment Assistance
Program, [SEAP](https://dol.ny.gov/SEAP). I will be starting a business offering
managed online services, such as website design and deployment, personal cloud,
and email. I would like to offer these services to local small businesses and
not-for-profits. I think of it as "Silicon Valley experience" at reasonable,
local prices. I'm excited to dive into the parts I'm not very familiar with,
namely the business side of things. I have extensive technical experience and
mastery, but I lack any significant business experience.
## Gaming
I've started a new playthrough of [Darkest
Dungeon](https://en.wikipedia.org/wiki/Darkest_Dungeon). It's mildly
frustrating, but mostly fun. I have fun yelling at the game; it's like stress
relief. I've been generally successful, but the Crimson Court has been very
rough to me. It is a game about challenges and loss, though, so nothing
unexpected.
I've continued my play-through of
[Sundered](https://en.wikipedia.org/wiki/Sundered), though have put it down for
a bit. I'm playing it on my Steam Deck using [Lutris](https://lutris.net/), and
it works very well. Lutris continues to impress me, and I want to try writing an
installer for a game.

View file

@ -1,106 +0,0 @@
---
tabtitle: "Life in Progress: September, 2024"
title: "Life in Progress: September, 2024"
topics: [life, gaming]
pub: 2024-09-24
short_desc: "Life In Progress update for September"
---
# Life In Progress, as of {{ page.pub }}
- New hardware: laptop, phone, and NAS
- **TWO** game jams!
- Finishing up Morrowind
- SEAP/Self-Employment Progress
## New Hardware
### Framework Laptop
This new [Framework](https://frame.work) is great! I've only had it for a few
weeks, but it is wonderful. I've been slowly sync'ing and migrating workflows
from my various existing options to it. Being able to work for multiple hours
without worrying about battery life is nice.
Previously, the Chromebook I have was my go-to remote personal macine.
Considering its age, and the inherent limitations of a Chromebook, it served me
better than I ever could have hoped. However, I knew it's time was drawing
near, and the Dell I got as part of my work severance was not going to cut it.
Considering I'm starting a business doing technology, I needed a reliable,
"all-day" machine with Linux. The ARM-based Macs are incredibly tempting, but
I am not a fan of Mac. I've been eyeing Framework for a bit now, and their
newest 13-inch model with AMD components checked enough of the boxen for me to
dive in.
### Phone
For a while I've been eyeing Mint Mobile. In the US, they have a plan offering
unlimited text and talk, plus 5 GB of data, for $15 per month. I generally use
less than 1 GB of streaming data, so this seemed like a clearly better option
than the $30+ I was paying for Google Fi. When I decided to switch, they had an
incredible deal offering a Google Pixel 9 plus a year's service for a great
price, so I not only switched carrier, I also snagged a new phone! I had a
Samsung S21, which was more than sufficient for my needs, so switching isn't
quite as significant as with the laptop, but it's still a nice new experience.
The OS and environment on the Pixel is much nicer than Samsung phones, so
that's quite the plus!
### NAS
I bought a 2-bay Synology NAS from a friend a few months ago, and with the
myriad other changes, decided to set it up proper. I setup
[Navidrome](https://www.navidrome.org/) for audio, and [Jellyfin](
https://jellyfin.org/) for video. I had previously used Navidrome, then
switched to Jellyfin for both audio and video, but with the new phone comes a
return to form. I like [Ultrasonic](https://gitlab.com/ultrasonic/ultrasonic),
and Navidrome plays nicely with it.
The other big additions with the NAS is more backup scripts, and also pulling
down some YouTube series I like for local copies. More details in a full post.
## Game Making
Two game jams! One for the entire month of September, [Clone
Jam](https://itch.io/jam/clone-jam-game-a-month), and a
[Mini-Jam](https://itch.io/jam/mini-jam-167-cyber). For the Clone Jam, I was
working on building a ray-casting-based dungeon scavenger, similar to "Legend
of Grimrock", but with less combat. However, while I have made great progress
understanding how ray-casting works, and how to implement it, I won't have time
to finish such a game. That knowledge won't go to waste, though! There's a
game-jam at the end of October where I intend to make use of it. Instead, I'll
be touching-up and submitting a clone of Minesweeper I made:
[TICsweeper](https://vagabondazulien.itch.io/ticsweeper).
For the Mini-Jam, I decided to make a "runner" type game: you maneuver your
sprite to collect and/or avoid certain projectiles. I also made this game in
the [TIC-80](https://tic80.com). While I didn't pull any all-nighters, focusing
on a single project for 72-hours with as little down-time as possible is still
quite exhausting! My submission was called
[RUNR](https://vagabondazulien.itch.io/runr). It ranked 48th out of 66
submissions, which is honestly disappointing, but not enough to demotivate me
from continuing my game-making journey!
## Game Playing
I finally finished my play-through of Morrowind, and one of its two expansions,
Tribunal. (Note: before "DLC", new game content for existing games was
distributed like the game itself, on a piece of data-storing media, such as a
CD. These were called "expansion packs.") I have thoroughly enjoyed my time in
The Elder Scrolls III, and I definitely understand why many claim it as their
favorite. I will talk more about my experience in a full post, just like I did
for my recent Fallout 3 replay (I mean, just like I _will_. I _WILL!_)
## Business Time
Alas, while game making and playing are great uses of my time, they do not get
me the resources I need to pay my bills. I continue to work on starting my own
business. I've met with two mentors, one business and one technology, to help
get me started and provide guidance. In fact, this week marks what I would
consider the proper beginning of my business. With some dedication, I'll have
more exciting news to share about this next time!
## That's All For Now!
I think the original intention of a "Now" page is to be less verbose, but I
find the monthly cadence of a somewhat comprehensive update to be more
appealing! Until next month!

View file

@ -1,110 +0,0 @@
---
tabtitle: "Life in Progress: January, 2025"
title: "Life in Progress: January, 2025"
topics: [life]
pub: 2025-01-03
short_desc: "A retrospective of 2024, up to the beginning of 2025"
---
# Life in Progress: January, 2025
My [now page](/now) is growing too verbose. Instead, I'll leave that page as a
summary of what this/these page(s) will explore. I'll start with a retrospective
of 2024, up to now, the beginning of 2025. Maybe a bit of ambitions too.
## 2024 Retrospective
2024 was a significant year. The most notable change being that I was laid off
in April. The remaining 8 months were quite nice. Before April, the year doesn't
feel much different or significant. From what I remember, I was stressed,
unhappy, and overall dissatisfied with my situation. I was in the process of
saving money to leave, when I was laid off and paid a generous (enough)
severance. It's nice when the universe solves problems.
Much of April and May was time spent decompressing. A bit too much drinking,
from what I recall. I began receiving unemployment payments, and looking for
jobs, though only half-heartedly. I was already decided I would start my own
business. I also started my playthrough of **Fallout 3**.
At the end of May, I entered into a game jam, and made my first video game,
[L4-N-DER Training Simulator](https://vagabondazulien.itch.io/lander). One thing
I do remember from the beginning of the year was speaking with some friends
about trying to publish a video game on Itch. I made the game using
[Fennel](https://fennel-lang.org/) and the [LÖVE 2D game
engine](https://www.love2d.org/). It was incredibly rewarding, and a great
learning experience. This game would be the first of 5 that I published on my
Itch page this year.
Much of the summer was spent procrastinating starting my own business, and
golfing. At the beginning of summer, in June, my grandmother passed away. She
was about 2 weeks from her birthday, and so we round up and say she lived to 98.
I spent some time helping to clean and clear up her house too. In the beginning
of July I traveled to New York City to see Rezz. I also started properly
exploring WordPress, and working to understand better the business I was still
going to start. Around August, I began playing **Morrowind** for the first time.
In the fall is when I "got serious" about my business. I signed up for the New
York State Self-Employment Assistance Program (SEAP), and through them signed up
with SCORE to speak with a mentor and begin some small business training. I made
my first WordPress site, for a relative (and for free). I also entered into 3
more game jams during this period, publishing
[TICSweeper](https://vagabondazulien.itch.io/ticsweeper) (a Minesweeper clone
mde with the TIC-80); [RUNR](https://vagabondazulien.itch.io/runr) (another
TIC-80 game); and [Escape The
Crash](https://vagabondazulien.itch.io/escape-the-crash). _Escape_ was based on
some work of mine over the summer to better understand and implement ray-casting
in the TIC-80, which I then translated for use in Fennel and LÖVE. At the end of
fall, my remaining grandmother severely injured herself, placing her in town
through the end of the year. For the second year in a row, much of the holidays
would be spent visiting a rehabilitation center (the same one as my first
grandmother's). Since the pandemic, I don't think I've had a "normal" holiday
season.
At the end of the year, I formally started my business, [Niblock Technology
Solutions](https://www.niblock.tech), and began working on websites for two
additional clients. Exploring this new world has been exciting, and there are a
lot of new challenges. I love working with others to solve problems, and I'm
looking forward to it. I'm also beginning work on a second business idea for a
game shop. I want to build a community space for people to play games, enjoy
company, and relax. Rounding the year out was my first playthrough of **Deus
Ex**.
## Now: January, 2025
Now. Plenty of plans and ambitions.
Easiest: I started a playthrough of **Oblivion**. Similar to **Fallout 3** and
**Morrowind**, my goal is to complete the main story and all DLC's. This time
around, I explored a new modding setup, using [Lutris](https://lutris.net/) to
install and manage the game (from GOG), and all the modding tools. For all three
of these games I want to write up a brief retrospective about my experiences and
any of the setup required for playing them on Linux. I already have two articles
for Oblivion ([Part 1](/2021/11/20/oblivion-linux.html), [Part
2](/2021/12/09/oblivion-linux-2.html)) detailing using Steam and Proton. I think
the Lutris approach is a bit nicer.
_Escape The Crash_ was fun to make, but it's not done yet. I want to add in a
floor, sound effects, a skybox, and objectives. And an actual ending condition.
Game-making in general I want to continue. I've started looking into the
[DragonRuby game engine](https://dragonruby.org/). I also want to learn (more)
Godot. I have no shortage of ideas, only my regular struggles with motivation
and focus.
I've fallen into a few bad habits, and my health is worse for them. Its absurdly
easy for me to put on weight, and equally as difficult to lose it again. At my
heaviest I was over 320 pounds, and I'm now at a much better 240. I want to
bring that number down to 200, but I also want to remove as much significance
from that number as I can. It should be a metric, not a grade.
I've also set for myself several music goals. I want to get better at
sight-reading, and so I have a goal to read a new piece of music each week. I
also want to explore music production, and try making my own 45-60 minute mix.
There are the business goals. I need to have an income that supports my
lifestyle, which means more clients and (hopefully) more businesses!
Finally, I want to write more. I think about writing, but rarely follow-through.
As all my other ambitions develop, sharing them with the world will help me
formally catalog my successes. Plus, if I have something useful and helpful to
share, then I want to!

View file

@ -1,307 +0,0 @@
---
tabtitle: "Oblivion on Linux: Lutris Edition"
title: "Oblivion on Linux: Lutris Edition"
topics: [gaming]
pub: 2025-01-09
short_desc: "Modding Oblivion on Linux using Lutris and Wine, without Steam."
---
# Oblivion on Linux: Lutris Edition
I love Oblivion. I've written before about setting up Oblivion on Linux using
the Steam version, Proton and a handful of aliases: [Part
1](/2021/11/20/oblivion-linux.html) covers most of the tooling setup, and [Part
2](/2021/12/09/oblivion-linux-2.html) covers some mods I liked. This setup
works, though it is a bit of a hassle to manage. It requires running the tools
individually through aliases from a terminal, which can be intimidating and
unfriendly. It also requires the Steam version of Oblivion.
When I recently decided to return to Cyrodiil and close some gates, I wanted to
review my setup, and also my mod list. I discovered that Wrye Bash now does have
a native Linux application (as does LOOT!). However, I opted to stick with using
Wine and Windows versions of these applications due to a complication of modding
Oblivion in general: the case-sensitive nature of the filesystem. On Linux, the
filesystem is case-sensitive; on Windows, the filesystem is **not**
case-sensitive. For modding, this means if you extract an archive with a
`Data/meshes` folder, but your current setup has a `Data/Meshes` directory, on
Linux you'll end up with two directories: `Data/Meshes` _and_ `Data/meshes`.
There are solutions to this problem on Linux, namely using an EXT-4 filesystem.
I don't feel like reformatting my disks, and so I'll let Wine handle it. It may
mean a slight performance hit, but it's Oblivion - there are **always**
performance hits. If there aren't performance hits, then you haven't modded the
game enough yet.
## Setup: Game
I'll be using [Lutris](https://lutris.net) to handle installing and launching
the game. No more terminal aliases! I'm also using the [GOG version of
Oblivion](https://www.gog.com/en/game/elder_scrolls_iv_oblivion_game_of_the_year_edition_deluxe_the).
Lutris allows you to link your GOG account, and easily install games using Wine
(or native versions, if available!). In Lutris, I install the game to my
preferred destination, using the default GOG Wine install script. After
installation, I launch the game once to generate some initial configuration
files, and verify things work as expected. Before the next steps, there is a
significant change: the Wine version. In order to use the latest version of Wrye
Bash through Lutris, I had to change the Wine version from my Lutris default,
_wine-ge-8-26_, to my latest system version, 9.22. There seems to be a Windows
API which Wrye Bash relies upon which isn't handled well in Wine versions
previous to 9.
Lutris can also install from downloaded GOG installers, without having to link
accounts. Make sure to download all the parts (for Oblivion, there are 3: a
small EXE, and two BIN files). When installing, make sure all the downloaded
files are in the same directory. In Lutris, click the `+` button to add a new
game, and select "Install a Windows game from an executable." Name the game as
you wish, and add identifier
`the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe` for the GOG
version. It'll pull down nice looking images. On the next screen, click the
`Install` button next to "Setup file", choose your desired directory, and then
select the EXE downloaded from the three files above. Lutris will create the
Wine prefix, and load the GOG Installer. Make note of the directory you chose
above for installation (default will be in the Lutris game library directory,
`Lutris Hamburger Menu` -> `Preferences` -> `Storage` -> _Game Library_), and
substitute it accordingly below.
Assuming everything is setup and running, the last step here is to note where
Lutris installed the game. The path to the directory will differ, but the
directory structure should be similar to the below. The Lutris "Directory"
(Right-Click -> Configure) value will bring you to the Wine directory (with
`drive_c`), and from there will be the `GOG Games` directory (or possibly
renamed; this can be changed during the GOG install process), and then the
`Oblivion` directory.
```
Lutris
|-> gog
|-> the-elder-scrolls-iv-oblivion-game-of-the-year-edition-deluxe
|-> drive_c
|-> GOG Games
|-> Oblivion
|- Data
|- Oblivion.exe
|- ...
```
### xOBSE
- [Project Link](https://github.com/llde/xOBSE)
- [Nexus Links](https://www.nexusmods.com/oblivion/mods/37952)
The Oblivion Script Extender is required for many mods, and should be considered
essential for anything beyond a strict vanilla playthrough. Download the latest
version, and extract it to the `Oblivion` directory. When you launch Wrye Bash
(covered next), in the lower-left corner, on the icon bar, should be a green
checkbox. Hovering over it will notify you that OBSE is enabled. Clicking that
box will toggle OBSE. Generally, make sure it is enabled (checked).
At this point, before any other tools, when you double-click/Play Oblivion, it
will launch the purely vanilla Oblivion that was installed above. To use OBSE,
right-click Oblivion in Lutris, choose _Configure_, and on the "Game Options"
tab, change the _Executable_ by clicking the button with three dots (labeled
"Select a file") to `obse_loader.exe`. Save the changes, and re-launch.
## Pre-Setup: Tools
Before setting up the modding tools, it is required to run Oblivion once. This
will generate the INI file.
I also recommend adding the Wrye Bash `bash.ini` file detailed below before
running Wrye Bash for the first time. By declaring where the executable for
Oblivion is, Wrye Bash won't try to automatically find it, which can cause some
troubles or confusion.
## Setup: Tools
I'll be using the following tools. When possible, download the stand-alone
version of the tool. To make things easy, I use the `GOG Games` directory for
all the tools.
```
drive_c
|-> GOG Games
|- BethINI
|- LOOT
|- Mods
|- Mopy
|- Oblivion
|- TES4Edit
```
### Wrye Bash
- [Project Link](https://github.com/wrye-bash/wrye-bash)
- [Homepage](https://wrye-bash.github.io/)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/22368)
Mod manager, and **everything else** launcher in this setup. One of the most
exciting results of this setup is handling almost all modding management through
the Wrye Bash UI. From the Project Link, download the stand-alone executable
from the releases. I extract it to the `GOG Games` directory, which will create
a `Mopy` directory. Within that will be the executable, `Wrye Bash.exe`. Next,
in the `Mopy` directory, copy the `bash_default.ini` file to `bash.ini`. Make
the following changes (or replace `bash.ini` with this information):
```ini
[General]
; -- Path to mod directory.
; These are relative to the Oblivion directory.
sOblivionMods=..\Mods
sBashModData=..\Mods\Bash Mod Data
sInstallersData=..\Mods\Bash Installers\Bash
; -- Path to the Oblivion directory.
; "C:" here is drive_c on our filesystem.
sOblivionPath=C:\GOG Games\Oblivion
; -- User directory stuff.
; "C:" here is drive_c on our filesystem.
; Make sure to replace YOUR-USERNAME with your username
sUserPath=C:\users\YOUR-USERNAME
sPersonalPath=C:\users\YOUR-USERNAME\Documents
sLocalAppDataPath=C:\users\YOUR-USERNAME\AppData\Local
[Tool Options]
; -- TES4Edit
; Path is relative to the Oblivion directory.
sTes4EditPath=..\TES4Edit\TES4Edit.exe
; -- TES4LODGen
; Path is relative to the Oblivion directory.
sTes4LodGenPath=..\TES4LodGen\Tes4LODGen.exe
; -- LOOT
; Path is relative to the Oblivion directory.
sLOOT=..\LOOT\LOOT.exe
```
In this configuration, the relative paths are relative to the `Oblivion`
directory (where the game executable is). For all remaining tool setup, modify
the paths in this configuration to match the paths for the tool executable (or,
rename the tool directories, which is what I prefer).
This is where the magic happens: within Lutris, right-click Oblivion and choose
_Configure_. On the "Game Options" tab, change the _Executable_ by clicking the
button with three dots (labeled "Select a file"), and choose the `Wrye Bash.exe`
executable in the `Mopy` directory. Save the configuration, and
double-click/Play Oblivion. This time, Wrye Bash will start up (**Remember:**
This will not work on versions of Wine older than 9!).
At this point, when you want to play Oblivion, you will open Lutris, and launch
"Oblivion." This will launch Wrye Bash. You can then click the Oblivion icon in
the lower-left icon bar to launch the game. As additional tools are configured,
they will appear in the lower-left icon bar (everything except BethINI). To use
the tool, you'll run it from Wrye Bash.
### LOOT
- [Project Link](https://github.com/loot/loot)
- [Homepage](https://loot.github.io/)
LOOT handles mod load order. Another application with a native Linux version. I
had previous run into some bugs, but everything looks to work as expected now.
Despite that, I still download and use the stand-alone Windows version (the
archive from the releases, not the EXE). I extract it to my `GOG Games`
directory, and rename the directory (or edit the `bash.ini` file) so the
executable is where my Wrye Bash configuration expects it.
If setup properly, when you run Wrye Bash, in the lower-left corner will be a
bar full of icons, one of which will be a little treasure chest. Clicking it
will launch LOOT. From there, sort the order, and then close LOOT. Wrye Bash
will refresh, and you can continue on. LOOT will also notify you of any "dirty"
mods, which can be cleaned using TES4Edit (see below).
### TES4Edit
- [Project Link](https://github.com/TES5Edit/TES5Edit)
- [Homepage](https://tes5edit.github.io/)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/11536)
I'm still not a mod creator, so my uses of TES4Edit are limited to "quick
cleaning." From the project page or Nexus, download the latest version, and
extract the archive to the `GOG Games` directory. Rename the directory or edit
the `bash.ini` file so Wrye Bash can find it; restart Wrye Bash to verify. Wrye
Bash doesn't include a dedicated short-cut for the "Quick Auto Clean" option,
instead you have to right-click on the TES4Edit short-cut (or the TES4LodGen
short-cut), and choose "Quick Auto Clean". Choose the mod to clean from the
list, click OK, and let the program do its work.
### TES4LODGen
- [Project Link](https://github.com/TES5Edit/xLODGen)
- [Homepage](https://tes5edit.github.io/docs/16-xLODGen.html)
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/15781?tab=description)
This will generate LOD files ahead of time, allowing for more distant objects to
be shown as you adventure around Cyrodiil. Download the archive, and extract it
to where Wrye Bash expects it, either changing the directory name or updating
the `bash.ini` file accordingly. After mod installation is complete, click the
icon from the icon bar to generate the LOD files.
### BethINI
- [Nexus Link](https://www.nexusmods.com/oblivion/mods/46440)
`BethINI` helps manage the "oblivion.ini" file, providing sane options and a
wizard for configuration. This is the only tool that is not run from Wrye Bash.
However, it's still pretty easy to work with. Download the stand-alone archive,
extract it to the `GOG Games` directory.
To run the tool, in Lutris single-click on Oblivion. A bar should appear with
some additional details about Oblivion, including some buttons: one will say
"Play", and one will look like a wine glass; each will have a small button with
an up-facing arrow. Click the arrow button next to the wine glass button, and
select "Run EXE inside Wine prefix." Navigate into `drive_c`, then `GOG Games`,
and into the directory you just set up for BethINI, and select `BethINI.exe`.
Wrye Bash does allow for custom application short-cuts, but it requires creating
a Windows shortcut `.lnk` file, and I cannot figure out an easier way to do
that than to just run it from Lutris.
## Post-Setup: Tools
Verify each tool runs as expected. Conveniently, all the Bethesda DLCs are
"dirty," so LOOT will notify you, and then you can clean them. Run BethINI,
generate LOD files, and run the game from Wrye Bash. Praise Todd.
## Mods
Wrye Bash on Windows can install mods from an archive, but with this setup that
functionality is unreliable. Instead, I extract the mod archives manually before
installing them with Wrye Bash. For each mod that I want to use, I'll create a
directory in the `Mods -> Bash Installers` directory, and extract the mod
archive into that directory. Then, within Wrye Bash, on the "Installers" tab, I
can install mods as expected.
For actually using Wrye Bash, I recommend [laulajatar's
guide](https://www.shrine-of-kynareth.de/wrye-bash-for-beginners-part-1-installation-and-installers-tab).
Obviously, you can skip the installation steps for both Wrye Bash and OBSE.
There is also the [Wrye Bash
Manual](https://wrye-bash.github.io/docs/Wrye%20Bash%20General%20Readme.html).
## Lutris Setup: Problems
The significant problem with this setup is no way to alt-tab away from the game.
To make things even more inconvenient, playing in a windowed mode also doesn't
work, and shows only a black screen with audio. I haven't done an exhaustive
trial of options and mods yet to try and fix this, because it isn't a major
problem to me.
The second inconvenience is as I mentioned above, with Wrye Bash not installing
mods directly from archives. Again, not a major problem to me.
I suspect that both of the problems can be resolved with some Wine tweaks.
## Lutris Setup: Benefits
What this setup gets right is ease of use, and ease of replication. All tools
(except BethINI, for now) and the game are run from Wrye Bash. No juggling
multiple application entries, aliases, or special setups. Plus, all tools, mods,
and the game itself are all within the Lutris directory, making multiple setups
a breeze: just copy the directory. In Lutris, you can then duplicate the entry
(Right-Click -> Duplicate), and edit the executable (Right-Click -> Configure ->
"Game options" tab -> _Executable_) to point to the new directory.
## Lutris Setup: Next-Steps
The most useful next step would be automating this process, by building a Lutris
install script. Also, resolving the alt-tab and windowed problems above.

View file

@ -1,6 +0,0 @@
---
title: all
tabtitle: "All Posts"
---
{% include all_posts.html %}

View file

@ -1,6 +0,0 @@
---
title: gaming
tabtitle: "Gaming Posts"
---
{% include topics.html %}

View file

@ -1,6 +0,0 @@
---
title: life
tabtitle: "Life Posts"
---
{% include topics.html %}

View file

@ -1,6 +0,0 @@
---
title: philosophy
tabtitle: "Philosophy Posts"
---
{% include topics.html %}

View file

@ -1,6 +0,0 @@
---
title: technology
tabtitle: "Technology Posts"
---
{% include topics.html %}

View file

@ -1,6 +0,0 @@
---
title: writing
tabtitle: "Writing Posts"
---
{% include topics.html %}

1480
feed.xml Normal file

File diff suppressed because it is too large Load diff

View file

@ -1,18 +1,202 @@
---
layout: corrupt_index
tabtitle: Home
---
{% for post in site.posts limit:5 %}
<h1><a href="{{ post.url }}">{{ post.title }}</a></h1>
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Home</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<h1><a href="/2025/01/09/oblivion-lutris.html">Oblivion on Linux: Lutris Edition</a></h1>
<div id="details">
<div id="date">{{ post.pub }}</div>
<div id="date">2025-01-09</div>
<div id="tags">
{% for topic in post.topics %}
<a href="/topics/{{topic}}">{{topic}}</a>
{% endfor %}
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">{{ post.short_desc }}</div>
{% endfor %}
<div id="desc">Modding Oblivion on Linux using Lutris and Wine, without Steam.</div>
<h1><a href="/2025/01/03/life-update.html">Life in Progress: January, 2025</a></h1>
<div id="details">
<div id="date">2025-01-03</div>
<div id="tags">
<a href="/topics/life">life</a>
</div>
</div>
<div id="desc">A retrospective of 2024, up to the beginning of 2025</div>
<h1><a href="/2024/09/24/life-in-progress-september.html">Life in Progress: September, 2024</a></h1>
<div id="details">
<div id="date">2024-09-24</div>
<div id="tags">
<a href="/topics/life">life</a>
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">Life In Progress update for September</div>
<h1><a href="/2024/08/19/life-in-progress-august.html">Life in Progress: August, 2024</a></h1>
<div id="details">
<div id="date">2024-08-19</div>
<div id="tags">
<a href="/topics/life">life</a>
</div>
</div>
<div id="desc">Life In Progress update for August</div>
<h1><a href="/2023/05/07/rclone-backups.html">Automatic Backups with RClone, systemd, and Backblaze</a></h1>
<div id="details">
<div id="date">2023-05-07</div>
<div id="tags">
<a href="/topics/technology">technology</a>
</div>
</div>
<div id="desc">RClone is a command-line utility for interacting with an incredible number of cloud services. Backblaze is a reliable and inexpensive cloud storage provider. With systemd timer units, I setup a simple and reliable backup solution.</div>
<h6><a href="/topics/all">All Posts</a></h6>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

181
now.html Normal file
View file

@ -0,0 +1,181 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Now</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/now.html" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<article>
<h1>Life In Progress, as of 2025-01-03</h1>
<div class="author_info">
Bill Niblock
<a href="https://unlicense.org/"
aria-label="Code dedicated to the public domain under Unlicense">
<span class="fa fa-cc-pd" aria-hidden="true"
title="Code dedicated to the public domain under Unlicense"</span>
</a>
<a href="https://creativecommons.org/publicdomain/zero/1.0/"
aria-label="Published to the public domain under CC0">
<span class="fa fa-cc-zero" aria-hidden="true"
title="Content dedicated to the public domain under CC0"</span>
</a>
Last Updated: 2025-01-03
<br />
This is a <a href="https://nownownow.com/about" id="now">Now Page</a>
inspired by <a href="https://sive.rs/" id="now">Derek Sivers</a>.
</div>
<ul>
<li>
<p>The Holiday Spirit made me a bit too jolly! After many cookies and cocktails,
its time to get active, and fix some bad food habits. Again.</p>
</li>
<li>
<p>My business, <a href="https://www.niblock.tech">Niblock Technology Solutions</a>,
continues to move forward. I have a second client! Next, I want to work on
expanding my offerings, and improve my coverage.</p>
</li>
<li>
<p>Ive begun a playthrough of one of my favorite games, <strong>The Elder Scrolls IV:
Oblivion</strong>. Im very happy with the modding setup Ive got this time around,
and look forward to writing up the details!</p>
</li>
<li>
<p>I have a goal to improve my music sight-reading skill, and plan to do so by
reading a new piece of music each week. Ive started off with some Bach, and
will likely continue with him for a bit.</p>
</li>
</ul>
</article>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

21
now.md
View file

@ -1,21 +0,0 @@
---
layout: corrupt_now
tabtitle: Now
author: Bill Niblock
pub: 2025-01-03
---
- The Holiday Spirit made me a bit too jolly! After many cookies and cocktails,
it's time to get active, and fix some bad food habits. Again.
- My business, [Niblock Technology Solutions](https://www.niblock.tech),
continues to move forward. I have a second client! Next, I want to work on
expanding my offerings, and improve my coverage.
- I've begun a playthrough of one of my favorite games, **The Elder Scrolls IV:
Oblivion**. I'm very happy with the modding setup I've got this time around,
and look forward to writing up the details!
- I have a goal to improve my music sight-reading skill, and plan to do so by
reading a new piece of music each week. I've started off with some Bach, and
will likely continue with him for a bit.

562
topics/all.html Normal file
View file

@ -0,0 +1,562 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: All Posts</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/topics/all" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<h1><a href="/2025/01/09/oblivion-lutris.html">Oblivion on Linux: Lutris Edition</a></h1>
<div class="" id="details">
<div class="" id="date">2025-01-09</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">Modding Oblivion on Linux using Lutris and Wine, without Steam.</div>
<h1><a href="/2025/01/03/life-update.html">Life in Progress: January, 2025</a></h1>
<div class="" id="details">
<div class="" id="date">2025-01-03</div>
<div class="" id="tags">
<a href="/topics/life.html">life</a>
</div>
</div>
<div id="desc">A retrospective of 2024, up to the beginning of 2025</div>
<h1><a href="/2024/09/24/life-in-progress-september.html">Life in Progress: September, 2024</a></h1>
<div class="" id="details">
<div class="" id="date">2024-09-24</div>
<div class="" id="tags">
<a href="/topics/life.html">life</a>
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">Life In Progress update for September</div>
<h1><a href="/2024/08/19/life-in-progress-august.html">Life in Progress: August, 2024</a></h1>
<div class="" id="details">
<div class="" id="date">2024-08-19</div>
<div class="" id="tags">
<a href="/topics/life.html">life</a>
</div>
</div>
<div id="desc">Life In Progress update for August</div>
<h1><a href="/2023/05/07/rclone-backups.html">Automatic Backups with RClone, systemd, and Backblaze</a></h1>
<div class="" id="details">
<div class="" id="date">2023-05-07</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">RClone is a command-line utility for interacting with an incredible number of cloud services. Backblaze is a reliable and inexpensive cloud storage provider. With systemd timer units, I setup a simple and reliable backup solution.</div>
<h1><a href="/2022/09/27/linode_funkwhale.html">Funkwhale on Linode with Object Storage</a></h1>
<div class="" id="details">
<div class="" id="date">2022-09-27</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">Funkwhale is a cool project, building a federated music platform. I wanted to explore Funkwhale's ability to store music and associated files in object storage, and since I already use Linode for my VPS, leveraging their object storage offering makes a lot of sense.</div>
<h1><a href="/2022/07/04/steam_deck_syncthing.html">Setting up Syncthing on the Steam Deck (Updated!)</a></h1>
<div class="" id="details">
<div class="" id="date">2022-07-12</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">Syncthing is an incredible tool that I use to keep pictures, music, notes, and games synchronized across multiple platforms. The form factor of the Steam Deck makes it a perfect emulation target, and Syncthing can help keep games and saves in-sync with other machines.</div>
<h1><a href="/2021/12/09/oblivion-linux-2.html">Oblivion on Linux, with Mods! Part 2 - Mods</a></h1>
<div class="" id="details">
<div class="" id="date">2021-12-09</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">The Elder Scrolls IV: Oblivion still has one of the more active modding communities. In this, part 2 of my journey to get Oblivion modded and running on Linux, I'll cover some of my favorite mods.</div>
<h1><a href="/2021/11/20/oblivion-linux.html">Oblivion on Linux, with Mods! Part 1 - Tools</a></h1>
<div class="" id="details">
<div class="" id="date">2021-11-28</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">The Elder Scrolls IV: Oblivion is one of my favorite games of all time. The vanilla game holds up, but mods take the game to an entirely new level. Getting it working on Linux requires a bit of configuration, bit is surprisingly accessible! This is part 1 of my journey.</div>
<h1><a href="/2020/10/23/gnome-cleric-wizard.html">Character Write-up: Dabbledop Humblebumple</a></h1>
<div class="" id="details">
<div class="" id="date">2020-10-23</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/writing.html">writing</a>
</div>
</div>
<div id="desc">The backstory of a Gnome cleric/wizard I played for a single session!</div>
<h1><a href="/2020/09/27/pathfinder-eldritch-knight.html">Pathfinder Characters: Eldritch Knight</a></h1>
<div class="" id="details">
<div class="" id="date">2020-09-27</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">The Eldritch Knight represents my favorite archetype of a fantasy character: sword and sorcery. Here's how I build mine.</div>
<h1><a href="/2020/09/06/pathfinder-druid.html">Pathfinder Characters: Let's Make a Druid</a></h1>
<div class="" id="details">
<div class="" id="date">2020-09-05</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">One of my favorite activities is creating characters. I love theory crafting, pouring through source material, and setting limits. While I've made many, many characters, one class I haven't touched is druid.</div>
<h1><a href="/2020/07/19/syncthing-part-1.html">Brief Exploration of Syncthing</a></h1>
<div class="" id="details">
<div class="" id="date">2020-07-19</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">Syncthing is an incredible tool. In this post, I want to explore setting it up, and then some uses I've found for it.</div>
<h1><a href="/2020/07/10/crater-of-igrevor.html">Pathfinder One-Shot: The Crater of Igrevor</a></h1>
<div class="" id="details">
<div class="" id="date">2020-07-10</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">The first of several one-shot adventures I ran for Pathfinder</div>
<h1><a href="/2020/06/19/jhoric_background.html">Character Write-up: Jhoric Stonehammer</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-19</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/writing.html">writing</a>
</div>
</div>
<div id="desc">The backstory of my proud cleric of Moradin, Jhoric Stonehammer.</div>
<h1><a href="/2020/06/18/gabriella_s-fall.html">Character Story: Gabriella's Fall</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-18</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/writing.html">writing</a>
</div>
</div>
<div id="desc">A story I wrote about the consequences of the actions of Gabriella, a paladin in D&D5e</div>
<h1><a href="/2020/06/14/setting-up-btrfs.html">Using BTRFS to setup a simple RAID, with subvolumes, snapshots and backups</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-14</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">BTRFS is a file system, and includes built-in functionality for RAID. I decided to use it for the storage disks in my desktop. Here is how I set it up, using subvolumes, with snapshots and backups.</div>
<h1><a href="/2020/06/03/post.html">It has been a while.</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-03</div>
<div class="" id="tags">
<a href="/topics/writing.html">writing</a>
<a href="/topics/life.html">life</a>
</div>
</div>
<div id="desc">It has been a while. Here's an update, of sorts.</div>
<h1><a href="/2018/02/11/letter-to-lucilius-6.html">Seneca's Letter to Lucilius, Letter 6: On Sharing Knowledge</a></h1>
<div class="" id="details">
<div class="" id="date">2018-02-11</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Knowledge withheld is only partial. Sharing knowledge, and experiencing it, fosters improvement!</div>
<h1><a href="/2018/02/11/letter-to-lucilius-5.html">Seneca's Letter to Lucilius, Letter 5: On the Philosopher's Mean</a></h1>
<div class="" id="details">
<div class="" id="date">2018-02-11</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">In this letter, Seneca explores the concept of All Things in Moderation, but with a Stoic twist!</div>
<h1><a href="/2018/01/28/letter-to-lucilius-4.html">Seneca's Letter to Lucilius, Letter 4: On the Terrors of Death</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-20</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Letter 4 was the first letter I ever read. Seneca discusses death, life, and how to deal with both. I found it during a time of great anxiety and strife, yet even now I find it enlightening.</div>
<h1><a href="/2018/01/28/letter-to-lucilius-3.html">Seneca's Letter to Lucilius, Letter 3: On True and False Friendship</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-20</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Letter 3 deals with friends, and I don't mean the number shown on Facebook. True Friendship, to Seneca, is a place of honor!</div>
<h1><a href="/2018/01/28/letter-to-lucilius-11.html">Seneca's Letter to Lucilius, Letter 11: On the Blush of Modesty</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-28</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Letter 11 deals with accepting our faults, staring an unexpected quote from Epicurus.</div>
<h1><a href="/2018/01/27/halvar.html">Character Write-up: Halvar, Rune Bearer</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-27</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/writing.html">writing</a>
</div>
</div>
<div id="desc">The backstory for my first character in a new 5th Edition Dungeons and Dragons campaign. Meet Halvar, a brash young warrior looking for glory!</div>
<h1><a href="/2018/01/15/letter-to-lucilius-2.html">Seneca's Letter to Lucilius, Letter 2: On Discursiveness in Reading</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-15</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Seneca's second letter to Lucilius, On Discursiveness in Reading, covers the importance of focus. There's also a quote by Epicurus, which is apparently a feature of many of his letters to Lucilius.</div>
<h1><a href="/2018/01/15/letter-to-lucilius-1.html">Seneca's Letter to Lucilius, Letter 1: On Time</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-15</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Seneca's Moral Letters to Lucilius are regarded as one of the most prominent Stoic writings available. My friend Rob and I like to discuss them during a weekly meeting, and I'd like to record my response and thoughts as well. Here's letter 1, On Time</div>
<h1><a href="/2018/01/15/Letters-To-Lucilius.html">Seneca's Moral Letters to Lucilius</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-15</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">My friend Rob and I have recently been disucssing Seneca's Moral Letters to Lucilius. As a companion to those discussions, I'm documenting my responses to each letter.</div>
<h1><a href="/2018/01/11/Character-Azulien.html">Character Backstory: Azulien Blackblade</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-12</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
<a href="/topics/writing.html">writing</a>
</div>
</div>
<div id="desc">Here's the character backstory for one of my older characters from a game long since forgotten: Azulien Blackblade. Enjoy!</div>
<h1><a href="/2016/03/11/Random-Thoughts-1.html">Random Thoughts 1</a></h1>
<div class="" id="details">
<div class="" id="date">2016-03-11</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">I'm on vacation this week, which is pretty grand. Thus far I've accomplished one of the 4 rather meager goals I set for myself, played plenty of games, caught up on some reading and videos and feeds, and slept in far later than I should have.</div>
<h1><a href="/2016/01/30/Revelations-Stoic-Understanding.html">Developing Stoic Understanding</a></h1>
<div class="" id="details">
<div class="" id="date">2016-01-30</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">Sherman J. Clark wrote a fantastic article on the Stoicism Today blog in December which really spoke to me. It approached some of the questions and problems I've had with Stoicism in an elegant and enlightening way, which has led to my significantly greater understanding of Stoicism.</div>
<h1><a href="/2015/11/10/TLS-Part-2.html">An Examination of TLS, Part 2</a></h1>
<div class="" id="details">
<div class="" id="date">2015-11-10</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">TLS, more often referred to as SSL, is the means by which a secure connection is established over a computer network. Part 1 examines how to establish a secure connection using TLS. This article examines further the techniques and technology that makes TLS secure. Specifically, a brief examination of certificates, cipher suites, and public-key authentication.</div>
<h1><a href="/2015/07/09/A-Friends-Father.html">A Good Friend's Father</a></h1>
<div class="" id="details">
<div class="" id="date">2015-07-09</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
<a href="/topics/life.html">life</a>
</div>
</div>
<div id="desc">A good friend's father died. What can I learn from this?</div>
<h1><a href="/2015/05/06/TLS-Part-1.html">An Examination of TLS, Part 1</a></h1>
<div class="" id="details">
<div class="" id="date">2015-05-06</div>
<div class="" id="tags">
<a href="/topics/technology.html">technology</a>
</div>
</div>
<div id="desc">TLS, more often referred to as SSL, is a means by which a secure connection is established over a computer network. In this introductionary post, I layout the steps to establishing a secure connection.</div>
<h1><a href="/2015/05/04/Philosophy-of-Bill-1.html">The Philosophy of Bill, Abbreviated</a></h1>
<div class="" id="details">
<div class="" id="date">2015-05-04</div>
<div class="" id="tags">
<a href="/topics/philosophy.html">philosophy</a>
</div>
</div>
<div id="desc">I consider myself a very philosophical person. That doesn't mean I'm any good at philosophy, I just tend to think a lot about ethics, morality, and happiness. Recently I've been thinking more about my worldview, what I value as important, and how I achieve happiness in my daily life. I wanted to jot down what I feel is a brief examination of my basic tenants; the basic Philosophy of Bill.</div>
<h1><a href="/2015/04/28/Farewell-to-Windows-Tour.html">Farewell to Windows Tour 2015</a></h1>
<div class="" id="details">
<div class="" id="date">2015-04-28</div>
<div class="" id="tags">
<a href="/topics/gaming.html">gaming</a>
</div>
</div>
<div id="desc">It has come time to bid Windows farewell. Once upon a time Windows was the only digital world I knew. It began when I was young, during the venerable 3.1 era. I remember booting up our family computer into DOS, and before starting Windows I could start Doom 2 or Keen's Dream, or any number of other games. That was my first interaction with a command line. My, my, how times have changed.</div>
<h1><a href="/2015/01/01/Ireland-Log.html">A Log of My Travels in Ireland</a></h1>
<div class="" id="details">
<div class="" id="date">2015-01-01</div>
<div class="" id="tags">
<a href="/topics/life.html">life</a>
</div>
</div>
<div id="desc">Once upon a time, I traveled to Ireland. It was quite the experience. Me, my 3 friends Suf, Chris and Cary, Scion, shenanigans, Guiness, whiskey, and Thunderstruck.</div>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

399
topics/gaming.html Normal file
View file

@ -0,0 +1,399 @@
<!DOCTYPE html>
<html>
<head>
<title>The Internet Vagabond :: Gaming Posts</title>
<link type="application/atom+xml" rel="alternate" href="https://www.theinternetvagabond.com/feed.xml" title="The Internet Vagabond" />
<meta name="description"
content="Rants of a wandering techy, in search of truth, knowledge, and a decent ping." />
<meta name="author" content="Bill Niblock" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="canonical" href="https://www.theinternetvagabond.com/topics/gaming" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_layout.css" />
<link rel="stylesheet" type="text/css"
href="https://www.theinternetvagabond.com/src/styles/corrupt_typog.css" />
<link rel="icon" type="image/x-icon"
href="https://www.theinternetvagabond.com/src/images/favicon.ico" />
<link rel="stylesheet"
href="https://cdn.jsdelivr.net/npm/fork-awesome@1.2.0/css/fork-awesome.min.css"
integrity="sha256-XoaMnoYC5TH6/+ihMEnospgm0J1PM/nioxbOUdnM8HY="
crossorigin="anonymous">
<script data-goatcounter="https://theinternetvagabond.goatcounter.com/count"
async src="https://www.theinternetvagabond.com/src/scripts/goatcounter.js"></script>
</head>
<body>
<div class="cor_page">
<header>
<a href="/">
<div>
<span class="first">T</span>he
<span class="first">I</span>nternet
<span class="first">V</span>agabond
</div>
</a>
</header>
<main>
<h6>Gaming Posts</h6>
<h1><a href="/2025/01/09/oblivion-lutris.html">Oblivion on Linux: Lutris Edition</a></h1>
<div class="" id="details">
<div class="" id="date">2025-01-09</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">Modding Oblivion on Linux using Lutris and Wine, without Steam.</div>
<h1><a href="/2024/09/24/life-in-progress-september.html">Life in Progress: September, 2024</a></h1>
<div class="" id="details">
<div class="" id="date">2024-09-24</div>
<div class="" id="tags">
<a href="/topics/life">life</a>
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">Life In Progress update for September</div>
<h1><a href="/2022/07/04/steam_deck_syncthing.html">Setting up Syncthing on the Steam Deck (Updated!)</a></h1>
<div class="" id="details">
<div class="" id="date">2022-07-12</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/technology">technology</a>
</div>
</div>
<div id="desc">Syncthing is an incredible tool that I use to keep pictures, music, notes, and games synchronized across multiple platforms. The form factor of the Steam Deck makes it a perfect emulation target, and Syncthing can help keep games and saves in-sync with other machines.</div>
<h1><a href="/2021/12/09/oblivion-linux-2.html">Oblivion on Linux, with Mods! Part 2 - Mods</a></h1>
<div class="" id="details">
<div class="" id="date">2021-12-09</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">The Elder Scrolls IV: Oblivion still has one of the more active modding communities. In this, part 2 of my journey to get Oblivion modded and running on Linux, I'll cover some of my favorite mods.</div>
<h1><a href="/2021/11/20/oblivion-linux.html">Oblivion on Linux, with Mods! Part 1 - Tools</a></h1>
<div class="" id="details">
<div class="" id="date">2021-11-28</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">The Elder Scrolls IV: Oblivion is one of my favorite games of all time. The vanilla game holds up, but mods take the game to an entirely new level. Getting it working on Linux requires a bit of configuration, bit is surprisingly accessible! This is part 1 of my journey.</div>
<h1><a href="/2020/10/23/gnome-cleric-wizard.html">Character Write-up: Dabbledop Humblebumple</a></h1>
<div class="" id="details">
<div class="" id="date">2020-10-23</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
</div>
</div>
<div id="desc">The backstory of a Gnome cleric/wizard I played for a single session!</div>
<h1><a href="/2020/09/27/pathfinder-eldritch-knight.html">Pathfinder Characters: Eldritch Knight</a></h1>
<div class="" id="details">
<div class="" id="date">2020-09-27</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">The Eldritch Knight represents my favorite archetype of a fantasy character: sword and sorcery. Here's how I build mine.</div>
<h1><a href="/2020/09/06/pathfinder-druid.html">Pathfinder Characters: Let's Make a Druid</a></h1>
<div class="" id="details">
<div class="" id="date">2020-09-05</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">One of my favorite activities is creating characters. I love theory crafting, pouring through source material, and setting limits. While I've made many, many characters, one class I haven't touched is druid.</div>
<h1><a href="/2020/07/10/crater-of-igrevor.html">Pathfinder One-Shot: The Crater of Igrevor</a></h1>
<div class="" id="details">
<div class="" id="date">2020-07-10</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">The first of several one-shot adventures I ran for Pathfinder</div>
<h1><a href="/2020/06/19/jhoric_background.html">Character Write-up: Jhoric Stonehammer</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-19</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
</div>
</div>
<div id="desc">The backstory of my proud cleric of Moradin, Jhoric Stonehammer.</div>
<h1><a href="/2020/06/18/gabriella_s-fall.html">Character Story: Gabriella's Fall</a></h1>
<div class="" id="details">
<div class="" id="date">2020-06-18</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
</div>
</div>
<div id="desc">A story I wrote about the consequences of the actions of Gabriella, a paladin in D&D5e</div>
<h1><a href="/2018/01/27/halvar.html">Character Write-up: Halvar, Rune Bearer</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-27</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
</div>
</div>
<div id="desc">The backstory for my first character in a new 5th Edition Dungeons and Dragons campaign. Meet Halvar, a brash young warrior looking for glory!</div>
<h1><a href="/2018/01/11/Character-Azulien.html">Character Backstory: Azulien Blackblade</a></h1>
<div class="" id="details">
<div class="" id="date">2018-01-12</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
<a href="/topics/writing">writing</a>
</div>
</div>
<div id="desc">Here's the character backstory for one of my older characters from a game long since forgotten: Azulien Blackblade. Enjoy!</div>
<h1><a href="/2016/03/11/Random-Thoughts-1.html">Random Thoughts 1</a></h1>
<div class="" id="details">
<div class="" id="date">2016-03-11</div>
<div class="" id="tags">
<a href="/topics/technology">technology</a>
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">I'm on vacation this week, which is pretty grand. Thus far I've accomplished one of the 4 rather meager goals I set for myself, played plenty of games, caught up on some reading and videos and feeds, and slept in far later than I should have.</div>
<h1><a href="/2015/04/28/Farewell-to-Windows-Tour.html">Farewell to Windows Tour 2015</a></h1>
<div class="" id="details">
<div class="" id="date">2015-04-28</div>
<div class="" id="tags">
<a href="/topics/gaming">gaming</a>
</div>
</div>
<div id="desc">It has come time to bid Windows farewell. Once upon a time Windows was the only digital world I knew. It began when I was young, during the venerable 3.1 era. I remember booting up our family computer into DOS, and before starting Windows I could start Doom 2 or Keen's Dream, or any number of other games. That was my first interaction with a command line. My, my, how times have changed.</div>
</main>
<footer>
<nav>
<div><a href="/">home</a></div>
<div><a href="/topics/all">all</a></div>
<div><a href="/topics/gaming">gaming</a></div>
<div><a href="/topics/life">life</a></div>
<div><a href="/topics/philosophy">philosophy</a></div>
<div><a href="/topics/technology">technology</a></div>
<div><a href="/topics/writing">writing</a></div>
</nav>
<hr />
<div><a href="https://www.theinternetvagabond.com/now">Life In Progress</a></div>
<hr />
<section class="h-card">
<section class="footer_about" id="about">
<div>The Site</div>
<div>
<a href="https://www.theinternetvagabond.com/feed.xml"
aria-label="RSS feed for the site">
<span class="fa fa-rss" aria-hidden="true"
title="RSS Feed"</span>
</a> |
<a href="https://theinternetvagabond.goatcounter.com/"
aria-label="GoatCounter statistics for the site">
<span class="fa fa-bar-chart" aria-hidden="true"
title="GoatCounter Statistics"</span>
</a> |
<a href="https://codeberg.org/VagabondAzulien/the-internet-vagabond-dot-com"
aria-label="Source code repository for the site">
<span class="fa fa-code" aria-hidden="true"
title="Site Source Code"</span>
</a>
</div>
<a class="u-url u-uid" href="https://theinternetvagabond.com"></a>
<p>
This site is a small slice of internet real-estate that I use for
occasional writing. Nothing I say is visionary or profound. I
focus on technology, gaming, and philosophy. All opinions my
own.
</p>
<div>The Vagabond</div>
<div>
<a rel="me"
href="mailto:bill@theinternetvagabond.com"
aria-label="Email Bill at The Internet Vagabond dot com">
<span class="fa fa-envelope-o" aria-hidden="true"
title="Email bill at theinternetvagabond.com"</span>
</a> |
<a class="u-url" rel="me"
href="https://matrix.to/#/@vagabondazulien:matrix.org"
aria-label="Speak with me on Matrix">
<span class="fa fa-matrix-org" aria-hidden="true"
title="Speak with me on Matrix"</span>
</a> |
<a class="u-url" rel="me"
href="https://mastodon.social/@azulien"
aria-label="Find me on the Fediverse">
<span class="fa fa-mastodon" aria-hidden="true"
title="Find me on the Fediverse"</span>
</a> |
<a class="u-url" rel="me" href="https://www.twitch.tv/vagabondazulien/profile"
aria-label="Link to my Twitch channel">
<span class="fa fa-twitch " aria-hidden="true"
title="My Twitch channel"</span>
</a>
</div>
<p>
My name is <span class="p-name">Bill Niblock</span>. <span
class="p-note">I'm a computer scientist by education, a technologist
by trade, a gamer by hobby, and a philosopher by accident. I
live in <span class="p-locality">Buffalo</span>, <span class="p-region">
New York</span>, <span class="p-country-name">USA</span>.<br />
<br />
My PGP Key is <span class="u-key" id="key">CCE7 3682 331B 5614 9FAB
7383 7359 80B2 6381 C91E</span>.
</p>
</section>
<section style="display: none;">
<span class="p-category">Gaming</span>
<span class="p-category">Technology</span>
<span class="p-category">Philosophy</span>
<span class="p-category">Open Source Software</span>
<span class="p-category">Self-Hosting</span>
<span class="p-category">Coffee</span>
<span class="u-email">bill@theinternetvagabond.com</span>
</section>
</section>
</footer>
</div>
</body>
</html>

Some files were not shown because too many files have changed in this diff Show more