<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom"><title>Z Space Blog - Life</title><link href="https://zlg.space/blog/" rel="alternate"/><link href="https://zlg.space/blog/feeds/t/life.atom.xml" rel="self"/><id>https://zlg.space/blog/</id><updated>2024-02-02T00:00:00-08:00</updated><entry><title>Holiday 2023 Outage Post-Mortem</title><link href="https://zlg.space/blog/holiday-2023-outage-post-mortem.html" rel="alternate"/><published>2024-02-02T00:00:00-08:00</published><updated>2024-02-02T00:00:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2024-02-02:/blog/holiday-2023-outage-post-mortem.html</id><summary type="html">&lt;p&gt;In the days leading up to the end of 2023, &lt;code&gt;zlg.space&lt;/code&gt;'s primary hard drive
began having errors and locking up the entire server. It began with simple
unresponsiveness, and ended in a replacement drive, new OS, and a bumpy road
of &lt;code&gt;/opt&lt;/code&gt; self-compiled madness to bring the backup to the modern ages of PHP.
The server is now on bigger, faster storage and an OS that won't get in the way
if/when it breaks again, but it didn't come without an arduous test of patience.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;In the days leading up to the end of 2023, &lt;code&gt;zlg.space&lt;/code&gt;'s primary hard drive
began having errors and locking up the entire server. It began with simple
unresponsiveness, and ended in a replacement drive, new OS, and a bumpy road
of &lt;code&gt;/opt&lt;/code&gt; self-compiled madness to bring the backup to the modern ages of PHP.
The server is now on bigger, faster storage and an OS that won't get in the way
if/when it breaks again, but it didn't come without an arduous test of patience.&lt;/p&gt;


&lt;h1&gt;December 28th, 2023&lt;/h1&gt;
&lt;p&gt;The problem happens for the third time since before Christmas. By the end of the
year, I discovered via &lt;code&gt;smartctl&lt;/code&gt; that the drive had experienced many hundreds
of error events concerning the reallocation of damaged sectors. It would detect
bad sectors, but either would not or could not tag them as bad and reallocate
the data elsewhere. The hard drive was in a laptop-sized enclosure and had
not been thrown, dropped, stepped on, or otherwise physically disturbed since
October. At this point I determined it was some sort of unrecoverable hard drive
damage. Before using SMART, I had tried to use &lt;code&gt;fsck&lt;/code&gt; to repair filesystem
errors, in case the problem was at that level. It didn't seem to help.&lt;/p&gt;
&lt;h1&gt;January 1st, 2024&lt;/h1&gt;
&lt;p&gt;I decided to order a new storage device in the same form factor; the enclosure's 
controller could correctly read and interact with other drives that I inserted, 
so I know it wasn't the enclosure which errored. This new drive is an SSD, so 
even if I put it into the same environment, it will be less prone to vibrations.&lt;/p&gt;
&lt;h1&gt;January 9th, 2024&lt;/h1&gt;
&lt;p&gt;The drive arrives and I start considering my options for moving forward. The 
primary candidates were Gentoo, KISS, or PiLFS.&lt;/p&gt;
&lt;h1&gt;January 11th, 2024&lt;/h1&gt;
&lt;p&gt;I tried one last time to get the drive to work, so I could attempt to get data 
off of it. I had performed a backup of the website's data a month or two prior, 
so not much data, if any, was lost. I guess there are perks to being the only 
active user of your own site, haha.&lt;/p&gt;
&lt;p&gt;The server was formerly using Ubuntu Server, which uses systemd and cloud-init
to provision your server as if it were part of a fleet. This is entirely
overkill for a singular Raspberry Pi server, and includes many more layers of
complexity than I need. I spent more time trying to figure out the Ubuntu way
than I did just using tools I already know. "Modern" Linux with its container
app formats and cloud-init shit and XDG portals and incomplete Wayland specs are
just annoying. Like it or not, those technologies are not the way forward for Linux.&lt;/p&gt;
&lt;p&gt;After reconfiguring the Pi's firmware to boot directly from USB, I chose to go
back to Gentoo Linux for my server. I was leaning toward KISS Linux, but their
Pi ecosystem isn't quite ready for what I need. Gentoo gets out of the way,
has the tooling to pick and choose, and ebuilds are hackable for anyone who
knows shell scripting. I really wish distros could get the experience right for
developers, server owners, power-users, etc.&lt;/p&gt;
&lt;h1&gt;January 12th, 2024&lt;/h1&gt;
&lt;p&gt;Configuration and installation of Gentoo continued, and tweaks were put in place
to reduce the number of writes that will be made to the SSD, to extend its life
a little. Using a source-based distro is already going to be a mild problem when
it comes to writes, but it can be mitigated.&lt;/p&gt;
&lt;h1&gt;January 13th, 2024&lt;/h1&gt;
&lt;p&gt;I fought against a chicken-and-egg problem created by the proprietary nature of 
the Raspberry Pi's Wi-Fi and Bluetooth, so I had to fetch distfiles for a few 
packages to bootstrap wifi. I could have just finished prepping ssh instead, but 
I want this machine to be adaptable to networking conditions. Also, who doesn't 
like watching the first boot?&lt;/p&gt;
&lt;p&gt;The data from the backup was only from &lt;code&gt;/srv&lt;/code&gt;, the Nextcloud installation, and 
the Postgres database cluster. System configs were not backed up before the old 
drive failed, but a backup from 2021 should make most of the restoration a 
smooth process. Now that this is all on one device, making backups should be 
trivial in the future.&lt;/p&gt;
&lt;p&gt;Networking eventually was put into place, and after adding a few extras to get 
started, I now have a user accessible via SSH and the correct security needed 
for the admin account. We can begin the actual rebuilding!&lt;/p&gt;
&lt;h1&gt;January 14th, 2024&lt;/h1&gt;
&lt;p&gt;&lt;em&gt;The real Gentoo Linux starts here.&lt;/em&gt; It feels wonderful to have a system ready 
to be hacked on! The process begins to put together a firewall, webserver, 
smarter log rotation, and install the software I was running before!&lt;/p&gt;
&lt;p&gt;fail2ban and logrotate are the first goals, which went off without any major 
problems. Mostly just small configuration and boot-persistence kind of stuff. 
The next major goals are lighttpd and certbot, which will open up most of this 
server's available software. I sure miss my Nextcloud...&lt;/p&gt;
&lt;h1&gt;January 15th, 2024&lt;/h1&gt;
&lt;p&gt;I had to work and handle some errands and chores today, so not as much time to
do big things. I installed ddclient and got started on Gopher. Fun little story
there. I went to install my Gopher server of choice, &lt;code&gt;sgopherd&lt;/code&gt;, and learned
that its only available version in Portage was out of date. "Hmm, weird. I guess
I'll go ahead and update it," I thought. So I did what one does when you need to 
bump an ebuild, double-checked on current dev tools/standards, made sure things 
were good, and...&lt;/p&gt;
&lt;p&gt;I'm aware it's in &lt;em&gt;maintainer-needed&lt;/em&gt; status, but if I'm the only person who
cares about it in five years, I'm not bothering to interface with the community.
I don't mind maintaining my own ebuilds, having prior active experience with the
distribution. I have no plans to publish a repository/overlay, however. My prior 
experiences weren't a net-positive, so I will not be sharing my work. People 
don't think it be like it is, but it do.&lt;/p&gt;
&lt;h1&gt;January 18th, 2024&lt;/h1&gt;
&lt;p&gt;It didn't take overnight; instead it got hung up on &lt;code&gt;dev-lang/rust-bin&lt;/code&gt; due to 
insufficient space in &lt;code&gt;/var/tmp/portage&lt;/code&gt;. No worries, I updated the 
&lt;code&gt;package.env&lt;/code&gt; file to use the SSD instead of RAM, cleared &lt;code&gt;$TMPDIR&lt;/code&gt;, and moved 
on. It wasn't going to take all night anyway.&lt;/p&gt;
&lt;p&gt;Eventually, I orchestrated the dance of &lt;code&gt;lighttpd&lt;/code&gt;, &lt;code&gt;lexicon&lt;/code&gt;, my registrar's
DNS servers, and &lt;code&gt;certbot&lt;/code&gt; to get a new certificate through Let's Encrypt. Now
I can hook it up to cron again and wash my hands of it. I'm glad that having a
partial certificate chain, and enough time between issuances was enough to get
me back on track and not need any extra configuration or tweaking.&lt;/p&gt;
&lt;p&gt;Later in the evening, &lt;code&gt;php-fpm&lt;/code&gt; was brought up and, with it, the wiki is now 
online! Next in line are cgit/gitolite and mumble. Then we'll only have one 
service left to bring up...&lt;/p&gt;
&lt;h1&gt;January 23rd, 2024&lt;/h1&gt;
&lt;p&gt;I did some admin configuration behind the scenes to formalize system structure. 
It was smaller than I thought it was, which is a sign that I'm doing things 
correctly.&lt;/p&gt;
&lt;p&gt;Due to the way Gentoo packages webapps -- and my complete lack of need for 
virtual hosts and other crap their tooling does, like needing versioned 
directories -- I compiled cgit myself and just threw it in a folder somewhere.&lt;/p&gt;
&lt;p&gt;To be fair, Gentoo generally packages things in a decent manner, so when I have 
the time and patience I may revisit &lt;code&gt;webapp-config&lt;/code&gt;. For now, I just set the 
vhost provider to lighttpd so it stopped yelling at me about apache2.&lt;/p&gt;
&lt;h1&gt;January 25th, 2024&lt;/h1&gt;
&lt;p&gt;Cgit was installed and hooked up to Gitolite. I verified that I could push 
commits, and Cgit was displaying the 'About' page correct, after telling it to 
use my own &lt;code&gt;cm2html&lt;/code&gt; which calls &lt;code&gt;mistletoe&lt;/code&gt; instead of &lt;code&gt;markdown&lt;/code&gt;.&lt;/p&gt;
&lt;h1&gt;January 26th, 2024&lt;/h1&gt;
&lt;p&gt;It felt good to make some progress with relatively little effort, so I restored 
the Postgres cluster from a &lt;code&gt;.sql&lt;/code&gt; backup and verified the data was present and 
ready to be interacted with.&lt;/p&gt;
&lt;h1&gt;January 27th, 2024&lt;/h1&gt;
&lt;p&gt;The database restore made MantisBT work almost immediately, so that was 
encouraging!&lt;/p&gt;
&lt;p&gt;The final task, Nextcloud, took a number of days before I succeeded. Nextcloud
23 supports PHP 7.3, 7.4, and 8.0. The Gentoo install was on 8.1, and none of 
the 7.x series was available. So, I needed a way to run Nextcloud &lt;em&gt;juuuuust long
enough&lt;/em&gt; to get to a Nextcloud version that supports PHP 8.1. So, I tried with a
third party overlay to install PHP in an older SLOT, because Gentoo is cool and
can do that. Sadly, that did not work.&lt;/p&gt;
&lt;p&gt;I'm not shy on the command line, so the journey began to build OpenSSL, PHP, and
APCu outside of the Portage tree (generally not recommended). I installed things
to &lt;code&gt;/opt&lt;/code&gt;, customized a few things, and... partial success? &lt;code&gt;occ&lt;/code&gt; didn't quite
work yet but a &lt;code&gt;phpinfo();&lt;/code&gt; page worked mostly fine. We're getting there!&lt;/p&gt;
&lt;p&gt;Across the 28th through the 30th, I wrestled with dependencies and other things
that were needed, until eventually the &lt;code&gt;occ&lt;/code&gt; command worked and I was able to
upgrade to Nextcloud 24, which supports PHP 8.1!&lt;/p&gt;
&lt;h1&gt;January 31st, 2024&lt;/h1&gt;
&lt;p&gt;The circus continues as I tried to mitigate each new tiny problem that came up. 
The funniest took me some digging. Across the 6 or 7 rebuilds of PHP (each 
taking at least two hours), I learned that Nextcloud stores passwords with 
different crypto functions, and missing any of those functions makes login 
break! Why this isn't covered by its dependencies, I'll never know. BUT, be sure 
to enable &lt;code&gt;argon2&lt;/code&gt; in PHP if your Nextcloud logins don't work! I ended up 
locking myself out and having to disable bruteforce detection for my local IP 
for a bit before I found and fixed the password issue.&lt;/p&gt;
&lt;p&gt;In the end, &lt;strong&gt;all data was okay and the server is in better shape now than it 
was before the event&lt;/strong&gt;. But, because Nextcloud itself took nearly a week to get 
working, that is the first piece of software I'm targeting for removal should I 
have to do this dance again. There's no excuse for something like a webapp to be 
that difficult to put together and maintain as an admin.&lt;/p&gt;
&lt;h1&gt;Conclusion&lt;/h1&gt;
&lt;p&gt;Ultimately, I could not determine the root cause of the SMART errors. The drive 
had operated for around 30,000 hours across 3.5 years. I'm not sure
if that's a good run or not, for a dinky little laptop drive. Vibrations from
loud speakers &lt;em&gt;could&lt;/em&gt; create the physical damage needed to eventually render
the drive useless, but without greater access to tooling and a means to test, I
cannot form a confident conclusion.&lt;/p&gt;
&lt;p&gt;A few days after I discovered the problem, the drive failed to spin up. I don't
know what any next steps would be for data recovery, but I'm confident that if
anyone lost files, it was me, and only files or changes since December
1st, 2023. I'll hold onto it until I get the gumption to take a hammer to it. If 
anyone has ideas on further inspection before I destroy it, hit me up.&lt;/p&gt;
&lt;p&gt;We'll just go forward with what we have. I apologize for such a lengthy outage.
I would have fixed it sooner if real life hadn't been so adamant at getting in
the way of things that are important to me. Keeping Nextcloud upgraded will 
prevent me needing to manually compile things in the future. &lt;em&gt;The website is 
here, and that's all that matters.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I'm available for hire if anyone needs an administrator or someone who isn't 
afraid to get their hands dirty in the command line.&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="downtime"/><category term="Linux"/><category term="PHP"/></entry><entry><title>A Look Back on 2022</title><link href="https://zlg.space/blog/a-look-back-on-2022.html" rel="alternate"/><published>2022-12-17T23:45:00-08:00</published><updated>2023-11-10T16:21:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2022-12-17:/blog/a-look-back-on-2022.html</id><summary type="html">&lt;p&gt;I've spent the past few weeks reflecting on the sort of content that tends to 
get posted this time of year: retrospectives. Opportunities to review the events 
of the year, look at what went well, what didn't, what we'll do in the future to 
be better. Even though companies and other bullshit are joining in the spirit, 
it's still important to give yourself moments to look back and self-assess your 
life. A new year is a new opportunity to improve. You don't &lt;em&gt;need&lt;/em&gt; a new year to 
justify it, but it feels right for some people. I kicked a nicotine habit 
cold-turkey with a New Year's resolution, back in 2005. It can be done.&lt;/p&gt;
&lt;p&gt;So, what was 2022 like? Let's try to exclude the grim politics and general state 
of the world. Life is rough right now. Some countries are at war. Some are 
dealing with radical extremists. Some are starving or struggling to stabilize 
their currencies. Others are fighting for basic rights of expression with 
clothing, or to keep their culture alive in the face of re-education camps. 
Let's &lt;em&gt;try&lt;/em&gt; to find the good stuff.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;I've spent the past few weeks reflecting on the sort of content that tends to 
get posted this time of year: retrospectives. Opportunities to review the events 
of the year, look at what went well, what didn't, what we'll do in the future to 
be better. Even though companies and other bullshit are joining in the spirit, 
it's still important to give yourself moments to look back and self-assess your 
life. A new year is a new opportunity to improve. You don't &lt;em&gt;need&lt;/em&gt; a new year to 
justify it, but it feels right for some people. I kicked a nicotine habit 
cold-turkey with a New Year's resolution, back in 2005. It can be done.&lt;/p&gt;
&lt;p&gt;So, what was 2022 like? Let's try to exclude the grim politics and general state 
of the world. Life is rough right now. Some countries are at war. Some are 
dealing with radical extremists. Some are starving or struggling to stabilize 
their currencies. Others are fighting for basic rights of expression with 
clothing, or to keep their culture alive in the face of re-education camps. 
Let's &lt;em&gt;try&lt;/em&gt; to find the good stuff.&lt;/p&gt;


&lt;h1&gt;How was it for others?&lt;/h1&gt;
&lt;p&gt;Let's start with what happened in general, that stands out to me. That generally 
means new developments in GNU/Linux or the video gaming world.&lt;/p&gt;
&lt;h2&gt;Libre Software&lt;/h2&gt;
&lt;p&gt;Sadly, I can't think of much that happened this year in libre software that was
notable. Maybe I'll come back and edit this before the end of the year.&lt;/p&gt;
&lt;h2&gt;Video Games&lt;/h2&gt;
&lt;p&gt;&lt;em&gt;Elden Ring&lt;/em&gt; was released. I thought I'd be much more hyped about it. I ended up 
not getting it at all. I still have &lt;em&gt;Dark Souls&lt;/em&gt; 1 through 3, and Sekiro, to 
finish. I'm not thirsting for Soulslike content at all, lol.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Pokémon Legends: Arceus&lt;/em&gt; also came out this year, I believe? It almost had what 
it takes to get me to buy. &lt;em&gt;Scarlet&lt;/em&gt; and &lt;em&gt;Violet&lt;/em&gt; have technical issues and 
design flaws that prevent me from enjoying 9th gen as much as I'd like to, so I 
have avoided buying them as well.&lt;/p&gt;
&lt;p&gt;The only games I bought this year were either games that I already owned
(&lt;em&gt;Quake&lt;/em&gt; for Switch), replacements for the Switch that was stolen from me, or
&lt;em&gt;Narita Boy&lt;/em&gt;. I haven't played enough to give any solid opinions, but I love the
motif of the game so far.&lt;/p&gt;
&lt;h2&gt;Anime&lt;/h2&gt;
&lt;p&gt;In the latest season finale of &lt;em&gt;Pokémon&lt;/em&gt;, Ash Ketchum becomes the World
Coronation Monarch; the most accomplished and dominant trainer in the world!
With his dream achieved, The Pokémon Company is bringing Ash's story to a close
with 11 episodes set to air in Japan in mid January 2023. The new season has
already been teased, featuring two new protagonists. One of them has a hairpin
with a design resembling Ash's original hat design. There may be more to what's
going on.&lt;/p&gt;
&lt;p&gt;As someone who's not been watching the anime, I came back to it when I heard the
rumor that Ash might become world champion. To see the twerp I used to make fun
of for being a nublet in the 2nd season end up facing off against, and defeating
the most accomplished trainer &lt;em&gt;ever&lt;/em&gt; in Pokémon is quite impressive. Finally
giving Ash a proper send-off is almost like a milestone for the first generation
of Pokémon fans. All I could think at the end of the season was, "The kid
actually pulled it off!" I am filled with a sort of bittersweet happiness. For 
the first time in a while, I'm looking forward to anime content!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;The Dragon Prince&lt;/em&gt; got its next series, which I haven't started yet. &lt;em&gt;Cyberpunk 
2077: Edgerunners&lt;/em&gt; has been pretty intense and quite interesting, despite my 
total lack of knowledge of the series. I hope it's true to the source material.&lt;/p&gt;
&lt;p&gt;That about wraps up what hit my radar, outside of whatever real life events were 
happening.&lt;/p&gt;
&lt;h1&gt;My Life&lt;/h1&gt;
&lt;p&gt;Things were challenging for me. Near the end of 2021, I left a profitable job
that was sapping my energy and motivation. I ended up going into a part time
job for a while until getting back to full time work this year. This job isn't
really my cup of tea either, so I'm looking for more computer-oriented work.&lt;/p&gt;
&lt;p&gt;My partner was diagnosed as Celiac. The change has been very difficult for her 
due to her appreciation for baked goods, but also foods from different cultures. 
She has such a broad palate, and to see her health restrict her food choices 
has been challenging. She's been strong and diligent at checking ingredients, 
and I do what I can to help find or make safe food for her.&lt;/p&gt;
&lt;p&gt;A good friend of mine had to leave the state due to economic reasons. It sucked 
to see him leave, but we were lucky enough to be able to spend some quality time 
together before he had to go. I'll always remember our trip to Ocean Shores.&lt;/p&gt;
&lt;h2&gt;Projects&lt;/h2&gt;
&lt;p&gt;As always, it's been difficult to get enough free time to put something 
together that I can give a shit about. One such thing is an &lt;a href="https://www.lexaloffle.com/bbs/?tid=50210"&gt;anxiety meter in 
PICO-8&lt;/a&gt;! It took a decent amount of planning and experimentation, but 
it's a complete feature that looks and acts really well. With any luck, my work 
on core gameplay elements will come to a pause soon, and I can start churning 
out assets and get some level design going!&lt;/p&gt;
&lt;p&gt;If you're reading this, then the blog was relaunched, after being dormant for
&lt;em&gt;three years&lt;/em&gt;. Some content was still produced in the time the blog was absent,
but not anywhere it would get attention.&lt;/p&gt;
&lt;h2&gt;Gaming&lt;/h2&gt;
&lt;p&gt;The &lt;a href="https://zlg.space/blog/12-in-12-2022-edition.html"&gt;12-in-12 for this year&lt;/a&gt; doesn't look too hot, unless I can 
pull a game or two out of my ass in the next two weeks, haha. I did, however, 
knock out &lt;em&gt;Box Pusher&lt;/em&gt;, another long-standing entry in the backlog. It took 
nearly 6 months, so it took up a lot of time I could've spent on other games. 
For one reason or another, my year's been spent playing games I've already 
beaten. &lt;em&gt;Risk of Rain 2&lt;/em&gt; is almost 100%ed; the gameplay challenges are all 
finished and all that's left is farming monster logs.&lt;/p&gt;
&lt;h1&gt;The Future&lt;/h1&gt;
&lt;p&gt;The future holds many things, depending on what you're looking at. For me, it's 
primarily the new &lt;em&gt;Zelda&lt;/em&gt; game, &lt;em&gt;Tears of the Kingdom&lt;/em&gt; in May. The new Pokémon 
episodes are coming in January for subbed, and the Mario movie is coming next 
year. I'm still on the fence on whether I'll watch it. Hollywood just doesn't do 
anything my style any more.&lt;/p&gt;
&lt;p&gt;Work has begun on VGStash-Tk, and I am experimenting with date-oriented fields 
for games in one's collection, to cut down on needless note taking within 
vgstash. As the software's only user (that I know of), I am solely guiding 
development, haha. &lt;a href="https://pypi.org/project/vgstash"&gt;Check out VGStash on PyPI&lt;/a&gt; if you haven't 
already. It's cross-platform and should work on a potato.&lt;/p&gt;
&lt;p&gt;That wraps up the major thoughts for me on this year. Overall, it was kinda 
shitty. Would not want to relive, haha. Here's hoping to a better and brighter 
2023.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="PICO-8"/><category term="Video Games"/><category term="Health"/><category term="Anime"/><category term="VGStash"/></entry><entry><title>Trust and Respect</title><link href="https://zlg.space/blog/trust-and-respect.html" rel="alternate"/><published>2020-10-17T00:00:00-07:00</published><updated>2020-10-17T00:00:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-10-17:/blog/trust-and-respect.html</id><content type="html">&lt;p&gt;About two months ago, it was announced that Bryan Konietzko and Michael Dante
DiMartino, creators of &lt;em&gt;Avatar: The Last Airbender&lt;/em&gt;, were leaving production of
a live-action series that they were doing with Netflix. The particular drama
appeared to be artistic differences, etc, but Bryan's closing statement in his
announcement struck me pretty hard:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;I will put my time, energy, and talents towards the projects that give me
the most fulfilment, and where I am afforded trust and respect. Life is too
short to do otherwise.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;It's only two sentences, but it represents an attitude that I think more of us 
could stand to adopt. When I read it, I can think back to the moments in history 
where I &lt;em&gt;didn't&lt;/em&gt; follow this idea, and regretted it.&lt;/p&gt;
&lt;p&gt;It's something I'll keep in mind the next time I consider contributing to a 
project.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Relationships"/></entry><entry><title>The Beach</title><link href="https://zlg.space/blog/the-beach.html" rel="alternate"/><published>2020-09-02T00:00:00-07:00</published><updated>2020-09-02T00:00:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-09-02:/blog/the-beach.html</id><summary type="html">&lt;p&gt;The lady and I went to Long Beach, WA last weekend for three days. It calls
itself the longest beach in the world, but I never bothered to look it up, haha.
It was a fun trip. We had Thai food, took pictures and sunbathed on the beach,
and I went go-karting for the first time. Sadly, I got smacked with a headache
on day two, but we managed to make it go away in a few hours. I'm prone to 
migraines, so I have to treat every headache as if it could ruin my day... 
because sometimes it will.&lt;/p&gt;
&lt;p&gt;I felt like Bowser in Mario Kart, since I'm a tall, heavy-ish guy. The little 
engines in those things can take off pretty well, and the inertia from my weight 
made some of the turns feel a little dangerous, so I had to use the brakes a 
bit. Overall I had a ton of fun and would love to go to a larger track for adult 
karting.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;The lady and I went to Long Beach, WA last weekend for three days. It calls
itself the longest beach in the world, but I never bothered to look it up, haha.
It was a fun trip. We had Thai food, took pictures and sunbathed on the beach,
and I went go-karting for the first time. Sadly, I got smacked with a headache
on day two, but we managed to make it go away in a few hours. I'm prone to 
migraines, so I have to treat every headache as if it could ruin my day... 
because sometimes it will.&lt;/p&gt;
&lt;p&gt;I felt like Bowser in Mario Kart, since I'm a tall, heavy-ish guy. The little 
engines in those things can take off pretty well, and the inertia from my weight 
made some of the turns feel a little dangerous, so I had to use the brakes a 
bit. Overall I had a ton of fun and would love to go to a larger track for adult 
karting.&lt;/p&gt;


&lt;p&gt;There were enough things to do on the peninsula to warrant coming back at least
once or twice. Sadly, there were some attractions that were closed due to
COVID-19; one of which was a pretty big arcade. Shame we couldn't check'em out.&lt;/p&gt;
&lt;p&gt;Most of our spare time was spent hanging out on the beach or snuggling and
watching TV in the motel room. We went all three days and stayed longer on the
last day. It was almost painful leaving the beach, since I hadn't visited one
since November 2018. I miss swimming so, so, much. Washington beaches aren't
really swimming beaches. The water had to be at least 45-50°F. Super chilly
considering it was at least 84°F outside. No bueno.&lt;/p&gt;
&lt;p&gt;Still, the heat was comfortable overall and it was nice to get away from home 
life for a few days.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;I recently bought a second Raspberry Pi 4 -- this one with 8GB of RAM! -- for 
the Personal Creativity Assistant project. My old screen isn't suited for the 
Pi4 the way I need to use it, so I'm looking around for screen chassis that can 
house a Pi and a battery, for a complete mobile Pi4 solution. Vilros makes a 
neat 10.1" screen, but the reviews I saw were mixed. It will need more research. 
If you have any suggestions for cases, screens, or more, feel free to reach out 
to me.&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Vacation"/><category term="Health"/><category term="Raspberry Pi"/></entry><entry><title>Small Victories Count</title><link href="https://zlg.space/blog/small-victories-count.html" rel="alternate"/><published>2020-07-07T00:00:00-07:00</published><updated>2020-07-07T00:00:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-07-07:/blog/small-victories-count.html</id><summary type="html">&lt;p&gt;Today, I wrestled some mistletoe into the cgit installation on my server. Not 
the plant, silly, it's &lt;a href="https://github.com/miyuchina/mistletoe"&gt;mistletoe, a CommonMark-compliant parser&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Since the server runs Gentoo, I needed to write an ebuild for mistletoe to get 
it into the system-wide Python path, since Gentoo uses Portage for system-level 
Python and pip for user level... Thankfully my past experience as a contributor 
made this task easy, but any other distro would've let me install mistletoe at 
the system level from pip.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Today, I wrestled some mistletoe into the cgit installation on my server. Not 
the plant, silly, it's &lt;a href="https://github.com/miyuchina/mistletoe"&gt;mistletoe, a CommonMark-compliant parser&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;Since the server runs Gentoo, I needed to write an ebuild for mistletoe to get 
it into the system-wide Python path, since Gentoo uses Portage for system-level 
Python and pip for user level... Thankfully my past experience as a contributor 
made this task easy, but any other distro would've let me install mistletoe at 
the system level from pip.&lt;/p&gt;


&lt;p&gt;Granted, Portage tracking it means you get correct package handling in terms of 
files, and don't have to rely on pip or the upstream dev uninstalling correctly. 
But, it does make exploring new things in Python land on the server a pain in 
the ass. Digression aside...&lt;/p&gt;
&lt;p&gt;My cgit installation now parses Markdown via mistletoe. Visually you won't
notice (much of) a difference, but for me it provides a concrete Markdown style
to adhere to that I can count on to be reasonably available in all flavors of
Markdown. This means my &lt;code&gt;README&lt;/code&gt; should, in theory, be renderable (and rendered
more or less the same way) regardless of hosting platform.&lt;/p&gt;
&lt;p&gt;I did it the quick and dirty way: copied the existing md2html script from cgit 
upstream and tweaked it to suit mistletoe. Then I copied the about-formatting.sh 
script and replaced its call to md2html with my 'new' renderer, cm2html. Plug 
files into place, update cgitrc, and BANG!&lt;/p&gt;
&lt;p&gt;Thirty minutes, one load of stress off my mind after months. It's a small, but 
helpful victory that will help me move onto other issues.&lt;/p&gt;
&lt;p&gt;While doing this, I learned I probably should have a repository of files meant
specifically for managing or customizing my server. Then, when I hack config
files I can have a copy in git for later. Doing this would further reduce my
computing stress, so maybe I'll do it this weekend. There's not a whole lot
going on at my server, so it should be easy to put together.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="CommonMark"/><category term="Python"/></entry><entry><title>New Shoes</title><link href="https://zlg.space/blog/new-shoes.html" rel="alternate"/><published>2020-04-18T04:27:00-07:00</published><updated>2022-12-11T21:08:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-04-18:/blog/new-shoes.html</id><summary type="html">&lt;p&gt;I bought a new pair of shoes a little before the COVID-19 quarantine stuff 
began, but wanted to wait until I had better socks before I subjected them to 
the fuzzies of death. I ordered some socks recently as well. The day my work 
shoes started peeling their sole off from the front was the day my new work 
socks arrived. Irony, serendipity? It's just weird. The new shoes are nice but I 
don't like breaking in new shoes. I have to 'train' the material to bend the 
same way my feet do. A minor complaint in the end, but still. There's more foot 
room in the new shoes, and the insole is evenly distributed and cut correctly. 
Still an improvement.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;I bought a new pair of shoes a little before the COVID-19 quarantine stuff 
began, but wanted to wait until I had better socks before I subjected them to 
the fuzzies of death. I ordered some socks recently as well. The day my work 
shoes started peeling their sole off from the front was the day my new work 
socks arrived. Irony, serendipity? It's just weird. The new shoes are nice but I 
don't like breaking in new shoes. I have to 'train' the material to bend the 
same way my feet do. A minor complaint in the end, but still. There's more foot 
room in the new shoes, and the insole is evenly distributed and cut correctly. 
Still an improvement.&lt;/p&gt;


&lt;p&gt;People are more open to trying alternative software to keep in touch these days. 
I'm coping quite well with the social distancing (you might even say it's my 
lifestyle, haha) but some are having a lot of trouble. I spent some time playing 
a game with my nephew tonight, and we used my Mumble server to chat. During this 
trying time, the tiny infrastructure I'm building is slowly proving its worth.&lt;/p&gt;
&lt;p&gt;In the PICO-8 world, I've managed to put together an animation engine. It's
not in a re-usable state yet, but when it is I'll be putting it into my carts
collection, which isn't quite ready yet either. I'll need to build a set of 
animation primitives if I want complex cutscenes or precise timing. So far, I've 
implemented a way to move a sprite to given coordinates, and waiting for a 
number of frames to pass. I put together a fake 'jump' animation to get a feel 
for what a "real" animation would kinda look like, and it feels nice. Game 
animations feel like tiny scripts of behavior that run in parallel. In building 
the jump animation, I got to thinking about how an animation would evolve in the 
code. A good way to cut down on both complexity and resources would be to have 
fewer functions that need to be run in parallel. Some animations are easier to 
reason about if you separate them into tracks and then space them out with wait 
periods to observe behavior. Then once it's finished, you can stitch it all 
together in a single track, assuming other complex behavior isn't needed.&lt;/p&gt;
&lt;p&gt;There's not much to share aside from my slowly growing &lt;a href="https://files.zlg.space/s/RWkHE2qMEbD2AZC"&gt;collection of PICO-8 dev 
clips&lt;/a&gt;. I hope it's entertaining.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="PICO-8"/></entry><entry><title>Rediscovering Comfort</title><link href="https://zlg.space/blog/rediscovering-comfort.html" rel="alternate"/><published>2020-04-01T00:40:00-07:00</published><updated>2020-04-01T00:40:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-04-01:/blog/rediscovering-comfort.html</id><summary type="html">&lt;p&gt;Recent times have been interesting, to say the least. COVID-19 and the ensuing
consequences are having a profound effect on society. I'm lucky enough that my
job is considered essential, so I'm working through this. I'm not worried about
myself getting sick so much as spreading it to those more vulnerable than I
am. Ironically, my generally isolated lifestyle has proven to be an advantage.
Staying away from people is second nature to me. :P&lt;/p&gt;
&lt;p&gt;I bought myself a new desk. It's a Eureka Ergonomic Z1S gaming desk. The plastic
bits and LEDs are a bit too much for my taste, but it's finally a desk that's
high enough and deep enough that it can handle my long body. It has a metal
frame and HDF desktop, though honestly you could probably use your own desktop
if you wanted. The Z-shaped legs offer me even more leg room, off to the sides.
There's a hook for my headphones, a cup holder, and a separate, small rack
for stuff. It finally feels like MY workspace, and it's only 55lbs. &lt;a href="https://files.zlg.space/s/xX3z6YBgj6DGycb"&gt;Check it
out!&lt;/a&gt;&lt;/p&gt;
</summary><content type="html">&lt;p&gt;Recent times have been interesting, to say the least. COVID-19 and the ensuing
consequences are having a profound effect on society. I'm lucky enough that my
job is considered essential, so I'm working through this. I'm not worried about
myself getting sick so much as spreading it to those more vulnerable than I
am. Ironically, my generally isolated lifestyle has proven to be an advantage.
Staying away from people is second nature to me. :P&lt;/p&gt;
&lt;p&gt;I bought myself a new desk. It's a Eureka Ergonomic Z1S gaming desk. The plastic
bits and LEDs are a bit too much for my taste, but it's finally a desk that's
high enough and deep enough that it can handle my long body. It has a metal
frame and HDF desktop, though honestly you could probably use your own desktop
if you wanted. The Z-shaped legs offer me even more leg room, off to the sides.
There's a hook for my headphones, a cup holder, and a separate, small rack
for stuff. It finally feels like MY workspace, and it's only 55lbs. &lt;a href="https://files.zlg.space/s/xX3z6YBgj6DGycb"&gt;Check it
out!&lt;/a&gt;&lt;/p&gt;


&lt;p&gt;I also ordered an &lt;a href="https://www.8bitdo.com/sn30-pro-plus/"&gt;8BitDo SN30Pro+ controller&lt;/a&gt;, in the GameBoy Classic motif.
It works on Windows, GNU/Linux, Nintendo Switch, Android, and has an adapter
(sold separately) to work on other systems like PS3. There's even a phone tray
accessory to turn your phone into a 'portable' gaming rig. I didn't get them,
but it's nice to know they're available.&lt;/p&gt;
&lt;p&gt;Playing games on my Switch and PC with the controller has been great. I have
concerns about the left analog stick, though. It appears to be slightly tilted
to the left when it's at neutral. I may seek a replacement since I'm worried it
might drift. I assume it's just a fluke since the right stick works fine. 
Otherwise, the controller has been great. The one catch is their custom software 
only appears to work on Windows. Oh well, that's where my PC gaming has gone 
anyhow.&lt;/p&gt;
&lt;p&gt;Despite the new things improving my computer and gaming experiences, I'm still
just sort of burnt out or jaded. I'm beginning to think my antidepressant isn't
really helping anymore. I wake up in an irritable state, with a short fuse over
minor hiccups in my morning. I have a hard time deciphering what someone's
intent is, or if intent was there at all when something happens. My mood is
unpredictable sometimes, and the chemically induced sleep that the medicine
gives me doesn't really leave me feeling rested the next morning and I don't
really dream any more.&lt;/p&gt;
&lt;p&gt;Next on the list is a full spectrum light. I'm doing what I can to try to create 
an environment where I can't help but do things that I normally really care 
about and want to see happen. Changing the outside doesn't change the inside, 
but it can help.&lt;/p&gt;
&lt;p&gt;Stay home if you can.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Health"/></entry><entry><title>Non-Zero Day</title><link href="https://zlg.space/blog/non-zero-day.html" rel="alternate"/><published>2020-01-20T17:24:00-08:00</published><updated>2020-02-13T00:00:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2020-01-20:/blog/non-zero-day.html</id><summary type="html">&lt;p&gt;A while back, I found a post talking about the concept of the &lt;a href="https://old.reddit.com/r/NonZeroDay/wiki/the_four_pillars"&gt;Non-Zero Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The idea is, to fight depression or demotivation or analysis paralysis, or 
whatever mental block is between you and what you want to do, you do ONE thing. 
Doesn't matter if it's just tidying a room, taking the trash out, &lt;em&gt;something&lt;/em&gt;. 
If you're trying to focus, make it one task -- any task -- regarding your goal 
that you can do. Find something you can start and finish in 10 minutes.&lt;/p&gt;
&lt;p&gt;Even if that's all you do, you still took a step toward something. It's still 
progress.&lt;/p&gt;
&lt;p&gt;I am trying to apply this concept to my hobbies. We'll see what happens.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;A while back, I found a post talking about the concept of the &lt;a href="https://old.reddit.com/r/NonZeroDay/wiki/the_four_pillars"&gt;Non-Zero Day&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The idea is, to fight depression or demotivation or analysis paralysis, or 
whatever mental block is between you and what you want to do, you do ONE thing. 
Doesn't matter if it's just tidying a room, taking the trash out, &lt;em&gt;something&lt;/em&gt;. 
If you're trying to focus, make it one task -- any task -- regarding your goal 
that you can do. Find something you can start and finish in 10 minutes.&lt;/p&gt;
&lt;p&gt;Even if that's all you do, you still took a step toward something. It's still 
progress.&lt;/p&gt;
&lt;p&gt;I am trying to apply this concept to my hobbies. We'll see what happens.&lt;/p&gt;


&lt;p&gt;Today, I got closer to moving away from pulseaudio again, back to apulse. Ever
since moving Windows to a 2TB hard drive, I feel less inclined to put up with
pulseaudio and friends on the GNU/Linux side for 'muh games'. There's a list of
15-20 packages I need to remove the USE-flag from and blockers to navigate, etc.
Unfortunately some of those are big, like Firefox, qemu, webkit, etc.&lt;/p&gt;
&lt;p&gt;Instead of looking at that as the Gordian knot of deptree it is, I'm looking at 
it in pieces. conky's PA support is easy to disable, so I chose that first. Now 
the package list is one line shorter. Even if I do nothing the rest of the 
evening, I'll still have gotten a little closer to my goal.&lt;/p&gt;
&lt;p&gt;The goal is beyond the switch to apulse. My goal is a Red Hat-free Linux
userland. Whether that journey happens on Gentoo, Slackware, Void, Bedrock, or
LFS, who knows. I'm open to suggestions. But I'm going to do this, one non-zero
day at a time.&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Non-Zero Day"/><category term="Health"/></entry><entry><title>Tidy</title><link href="https://zlg.space/blog/tidy.html" rel="alternate"/><published>2019-11-26T05:14:00-08:00</published><updated>2019-11-26T05:14:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2019-11-26:/blog/tidy.html</id><summary type="html">&lt;p&gt;My physical possessions are a little more tidy now. The shed has been prepped
for the winter, everything of mine that's important is indoors and has a place.
I bought a new hard drive a while ago to expand Windows to 2 TB. Sadly, Windows
doesn't like being cloned. It's been quite a battle but it more or less runs
correctly. If it goes to shit again, I'll wipe it before I reinstall. At any
rate, Windows is setup and ready to be used if anything happens to my other OSes
or I want to game. That's a major source of anxiety crossed off the list.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;My physical possessions are a little more tidy now. The shed has been prepped
for the winter, everything of mine that's important is indoors and has a place.
I bought a new hard drive a while ago to expand Windows to 2 TB. Sadly, Windows
doesn't like being cloned. It's been quite a battle but it more or less runs
correctly. If it goes to shit again, I'll wipe it before I reinstall. At any
rate, Windows is setup and ready to be used if anything happens to my other OSes
or I want to game. That's a major source of anxiety crossed off the list.&lt;/p&gt;


&lt;p&gt;I sold a bunch of games and systems. It was less than what I wanted, but I
considered the opportunity cost of selling 20+ games and 4 systems. I took out
the most valuable game for myself, since they were offering less than half of
what it was worth. My thirties are teaching me to pick and choose my battles.
This one game can fetch almost as much as what I got for the rest of it, so I
can at least get around half of what the whole collection was worth once I've
sold the valuable one. So, I have a fatter wallet and less clutter. That's nice.&lt;/p&gt;
&lt;p&gt;The decision making of various computer-oriented organizations continues
to depress me. From the .org domains being sold to for-profit interests to
the corporate incursion of Linux land to the hit pieces, astroturfing, and
misinformation campaigns of the media, etc. It just sucks. Humans create so many
problems for themselves.&lt;/p&gt;
&lt;p&gt;I'm researching ways to run GNU/Linux without Red Hat software in the userland.
dbus is a particularly difficult target to get rid of; I can't even launch CUPS
without dbus! I found a patch to remove the accessibility bridge from GTK+3;
once I verify it's working I hope to adapt it for the last release of GTK+2.
That'll get an entire toolkit off the teat. KISS Linux is an interesting project
along the same lines as what I've been doing, but I'm waiting to see how its
author makes decisions in software as it progresses. For now, my efforts will be
focused on reverting my Gentoo installation to something sane and reading LFS so
I can set up a new environment. I'm getting sick of the drama and churn in Linux
so I may pursue other OSes.&lt;/p&gt;
&lt;p&gt;I find myself becoming less interested in video games, mostly due to my emotions
while playing them or the value proposition changing when we consider day-one
game patching, piecemeal DLC, Early Access, Free-to-Play, digital exclusives,
etc. If games go to a format where I cannot ever have a physical copy, I
will probably stop playing (new) games. Emotionally, I don't like playing
against others in Smash Bros. Whether I win or lose, someone's walking away
disappointed, and I don't like that. I don't want to spread bad vibes with my
gameplay.&lt;/p&gt;
&lt;p&gt;I'm learning how to make better use of closures for game states in &lt;a href="https://lexaloffle.com/pico-8.php"&gt;PICO-8&lt;/a&gt;.
Animation and coroutine management are my next learning targets. Then, I want
to do text boxes with flowing text. PICO-8 is fun, but I've also installed
&lt;a href="https://love2d.org/"&gt;LÖVE2D&lt;/a&gt; so I can make games with fewer restrictions. Being the change I
want to see, and whatnot.&lt;/p&gt;
&lt;p&gt;Overall, the theme of the past few days has been reducing any and all stress in
my life so I can focus on things I care about. My anxiety remains, but I'm at
least directing it toward something.&lt;/p&gt;
&lt;p&gt;Now to remove a bunch of games from my vgstash...&lt;/p&gt;
&lt;p&gt;-z&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Health"/><category term="GNU/Linux"/><category term="Video Games"/></entry><entry><title>Turning Thirty</title><link href="https://zlg.space/blog/turning-thirty.html" rel="alternate"/><published>2015-10-27T00:00:00-07:00</published><updated>2015-10-27T00:00:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2015-10-27:/blog/turning-thirty.html</id><summary type="html">&lt;p&gt;People tend to say that you're not "really a grown-up" until you hit thirty. I
can say I managed to not die for thirty revolutions around our dear sun. Due to
the simplicity of our decimal number system and our human penchant for patterns,
each decade brings with it a sort of "milestone". At ten, it's more for the
parents, "Congrats on not killing your kid!" At twenty, it's, "Almost old enough
to drink! Welcome to adulthood!" Sitting here at thirty, it's become, "I hope
you have a good day. Keep up what you're doing."&lt;/p&gt;
</summary><content type="html">&lt;p&gt;People tend to say that you're not "really a grown-up" until you hit thirty. I
can say I managed to not die for thirty revolutions around our dear sun. Due to
the simplicity of our decimal number system and our human penchant for patterns,
each decade brings with it a sort of "milestone". At ten, it's more for the
parents, "Congrats on not killing your kid!" At twenty, it's, "Almost old enough
to drink! Welcome to adulthood!" Sitting here at thirty, it's become, "I hope
you have a good day. Keep up what you're doing."&lt;/p&gt;


&lt;p&gt;With that comes a bit of a pause, I suppose. It makes you wonder, "Did I make 
good decisions? How do I feel about where I am in life? Where do I want to go, 
now that I have some life experience?" That's a good thing, though. It shows 
that -- in my case anyway -- behind my generally fun-seeking personality and 
desire to dick around all the time that there's an adult underneath making sure 
things are going along AOK.&lt;/p&gt;
&lt;p&gt;That's the kicker about adulthood. Most of us spend a lot of our childhood 
wishing we were grown up so we can "do what we want," only to find out that the 
world doesn't quite work that way, and we had it pretty good with our parents 
taking care of everything. Even with that knowledge, and a dose of the world 
fucking with me, I still don't feel like I'm "grown up". It makes you wonder 
what that even means. Maybe it's not good to "be a grown-up", and instead it's 
used as a measuring stick for others to judge you. Others who have lost their 
spark and will do what they can to snuff out any sparks they see. But enough of 
that.&lt;/p&gt;
&lt;p&gt;Introspection is powerful, both in people and in software. It allows you to 
learn a lot about yourself or the program itself, just by asking some questions. 
I have to ask myself the obvious questions:&lt;/p&gt;
&lt;h1&gt;How've you handled yourself so far?&lt;/h1&gt;
&lt;p&gt;Honestly? I'm doing okay, at least from an outside perspective. I could be 
making more money, and my girlfriend and I could use a larger place to live, but 
really it's not all that bad. Our bills get paid and we still have a little 
extra to stow away or save up for things we need or want. Granted, I really 
don't like my job, but it's the best paying job I've had and it's helped make a 
few things happen.&lt;/p&gt;
&lt;h1&gt;Where do you want to go in life?&lt;/h1&gt;
&lt;p&gt;Professionally, I want -- no, &lt;em&gt;need&lt;/em&gt; -- to get into software or computer 
work of some sort. It's what I've spent the past 15 years learning in my spare 
time. I have (some) skills, and just need to find a firm willing to take me on 
and get me up to speed with their workflow. I'm sick of customer service or 
manual labor. I'm good with computers: web design, troubleshooting, okay at 
programming... I guess I need to learn that "salesmanship" part.&lt;/p&gt;
&lt;p&gt;Creatively, I'm dying. I don't really spend time doing creative things 
anymore. I need to kick that in the ass and jumpstart it. I used to make pixel 
art, draw, and dick around with music composition apps. I used to write up 
descriptions of worlds, make mockups, and so on. I think if I can sort out my 
professional life and other stressors, I'll return to doing fun, creative stuff. 
Yes, that means the phone-friendly CSS of this website will actually get 
finished!&lt;/p&gt;
&lt;p&gt;Educationally, I've considered going to school for a BS in Computer Science, 
if only to learn more theory. History is a subject I abhor, but for some reason 
I enjoy reading about the history of computer science and hope to someday learn 
more about the low-level stuff. Low level programming is interesting to me, as 
it seems closer to engineering than high level programming. It's a lot more 
satisfying for me to build a set of C functions to do something as opposed to 
throwing together libraries or using one-liners from higher level languages. I 
can &lt;em&gt;do&lt;/em&gt; that work, but low level stuff is more interesting.&lt;/p&gt;
&lt;p&gt;Everywhere else in my life is okay. I could stand to lose some weight, and I 
wish I had more time to play video games. That's about it.&lt;/p&gt;
&lt;h1&gt;Festivities&lt;/h1&gt;
&lt;p&gt;My birthday itself was a normal work day. The weekend prior, however, my 
girlfriend and her family took us out to eat and I received gifts from them. It 
was really nice of them because, given that I've only &lt;em&gt;really&lt;/em&gt; been in their 
lives for about a year, they got me things. It meant a lot to me and, 
admittedly, made me wonder if I deserved it. I received a nice messenger bag 
that I'd had my eye on for a while and &lt;em&gt;Yoshi's Woolly World&lt;/em&gt;, which you can 
expect a review on in approximately four years, if the Reviews section is any 
indicator. :P&lt;/p&gt;
&lt;p&gt;I also attended the &lt;em&gt;Legend of Zelda: Symphony of the Goddesses&lt;/em&gt; concert in 
Portland this past weekend. It was a blast, and the first concert I'd ever 
attended. I'm not sure I'll ever pay that much for an event again, but it was a 
positive experience and I don't regret anything.&lt;/p&gt;
&lt;p&gt;Overall, turning thirty's not been too bad. My hair's turning silver a bit 
faster than I'd prefer, but as far as I'm concerned I've earned it. Here's 
hoping the next post I write is something &lt;em&gt;besides&lt;/em&gt; the Life or Philosophy 
sections! I have a few ideas brewing, so stay tuned.&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Health"/></entry><entry><title>A New Direction</title><link href="https://zlg.space/blog/a-new-direction.html" rel="alternate"/><published>2014-07-10T12:51:11-07:00</published><updated>2023-11-10T17:54:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2014-07-10:/blog/a-new-direction.html</id><summary type="html">&lt;p&gt;My history of web development goes back a little over ten years. In that time,
I've really not built things as well as I'd have preferred. One thing that never
changed is that I continued learning and trying new things. But maybe I didn't
try &lt;em&gt;enough&lt;/em&gt; new things, and held onto older things simply because "Hey, I built
that." Sporkblog is a part of that, despite it being the only project I've
really stuck with. I've been questioning whether I should continue work on
Sporkblog or if I should move onto something that can teach me more.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;My history of web development goes back a little over ten years. In that time,
I've really not built things as well as I'd have preferred. One thing that never
changed is that I continued learning and trying new things. But maybe I didn't
try &lt;em&gt;enough&lt;/em&gt; new things, and held onto older things simply because "Hey, I built
that." Sporkblog is a part of that, despite it being the only project I've
really stuck with. I've been questioning whether I should continue work on
Sporkblog or if I should move onto something that can teach me more.&lt;/p&gt;


&lt;p&gt;Does a carpenter hold onto the first thing that he built? That's doubtful;
it's probably built with nails that are too large, there are dents where he
missed the nail with the hammer, it's wobbly, and it's uneven. It's a shoddy
example of craftsmanship. While the carpenter appreciates where he came from, he
also realizes that he built that object poorly and learned from it. A simple
picture would be good enough to remind him of his first project.&lt;/p&gt;
&lt;p&gt;When I think about that and how it applies to me, I wonder if it's time to scrap
Sporkblog, but hold onto some screenshots of it so I can look back and remember
the things I learned. Maybe write a post-mortem and really dive into the
details. I know I'd love to see that sort of stuff from other projects. At any
rate, I do think it's time for a change. There are a number of changes that I
have in mind:&lt;/p&gt;
&lt;h1&gt;Architecture&lt;/h1&gt;
&lt;p&gt;This blog's content is generated solely by me. I originally set out to make
a general tool with Sporkblog, to make it easy to use and collaborate. I can
only assume it works as advertised, as I've never collaborated with it. The
only itch I wanted to scratch was a straight-forward publishing tool that has
a lean layout. I ended up spending the majority of development time on the
administration tools; post managers, tag managers, site settings and storage,
user authentication, and so on. While these things were fun to learn at first,
implementing them can be a royal pain in the ass. They're the bread and butter
of a &lt;abbr title="Create, Read, Update, Delete (software architecture)"&gt;CRUD&lt;/abbr&gt; application, however, so that sorta comes with the territory. In my
use and management of a Sporkblog installation, I realized I don't really want
a &lt;abbr title="Create, Read, Update, Delete (software architecture)"&gt;CRUD&lt;/abbr&gt; website of my own. Editing posts and tags and whatnot can be convenient
over the Web, but personally I want something simpler: a static site generator.&lt;/p&gt;
&lt;p&gt;Why a static site generator? For starters, they're more secure. No user account 
to worry about, no cookies, no backend (beyond the web server). That also means 
a lot of backend software doesn't need to be written. The existing 
infrastructure (&lt;abbr title="File Transfer Protocol"&gt;FTP&lt;/abbr&gt;) is enough: connect, upload, profit! A site update can be 
automated, too, if you have something like &lt;code&gt;rsync&lt;/code&gt; available. I use an &lt;abbr title="File Transfer Protocol"&gt;FTP&lt;/abbr&gt; 
client every time I interact with my server. Switching to a static site 
generator allows me to update the blog's content at the same time I make layout 
changes or add media files, etc. It makes it more friendly to put into &lt;code&gt;git&lt;/code&gt;, 
too. Long story short, a static site generator is exactly what I've been looking 
for.&lt;/p&gt;
&lt;p&gt;One of the cons to this, however, is my appreciation for commenting facilities. 
I'm very picky with those, too. It needs to be easy, simple, allow anonymous 
commenting, and if possible some editing and deleting (for one's own comments, 
at least). Oh, and no registration or silly, warped CAPTCHAs. I'd prefer no 
Javascript, too, since it's just comments; refreshing the page to read more 
should be expected since HTTP is stateless. So I have two choices:&lt;/p&gt;
&lt;h2&gt;Option 1: Static Site Generator&lt;/h2&gt;
&lt;p&gt;Assuming I can find a decent generator, I won't have to write any real code:
just a template and some CSS. That's a huge plus, because I can't stand PHP.
That alone makes me want to jump at it. However, if I go in that direction, I
lose comment facilities, and I may be limited in what I can do with the blog. It
comes down to the generator. If I'm forced to, I may have to build one myself. I
have a feeling there are lots of options out there, though, and I shouldn't have
a problem.&lt;/p&gt;
&lt;p&gt;What's more important is the lack of commenting. I can setup a contact form, 
which could make use of the simple anti-CAPTCHA system I wrote, and people 
could use that to send an e-mail my way. It's only one page's worth of 
programming, and I'd learn a bit about e-mail headers. It could be fun, and 
still give people the means to contact me. There are also other avenues of 
discussion, like Reddit, Fark, Hacker News, etc. that people could use to 
discuss my posts. Of course, that's all assuming my content's worth talking much 
about. :P&lt;/p&gt;
&lt;h2&gt;Option 2: Generated content, dynamic commenting&lt;/h2&gt;
&lt;p&gt;This option is a little more accomodating for readers. I value commenting a lot, 
because there's little point in blogging if you aren't out there to start a 
conversation about something. I think that while comments typically have little 
value to them, they can be an avenue or catalyst to deeper discussion, which 
includes the author expanding on what they wrote about, corrections, or more. 
Getting that dialogue started is one of the hardest things, I think.&lt;/p&gt;
&lt;p&gt;On the technical side, the backend would be very simple. You'd have a 
single-point-of-entry page, as is typical for a web application. The commenting 
system could be lifted from Sporkblog and improved a little, and a middle ground 
is achieved. The only reasons I can think of to avoid this are (A) I'll have to 
write PHP, and (B) it wouldn't be a purely generated, static site anymore. I 
haven't decided whether it's worth adding the comment system in yet.&lt;/p&gt;
&lt;h1&gt;Purpose&lt;/h1&gt;
&lt;p&gt;One of the reasons I started web development is I wanted to make things and 
share them with other people. I like the feeling I get when someone likes 
something I've made. I enjoy making things in general, but when someone else 
likes what you've made, there's a feeling of pride and satisfaction. Validation, 
one might argue. "Cool, someone else likes this. Maybe I should make more 
things." I soon learned that my work pales in comparison to the work of 
thousands, if not millions of others... but does that mean that I shouldn't make 
things and shouldn't share them? I'm inclined to believe that if I did shut 
things down, I would be unhappy. So that's not really an option.&lt;/p&gt;
&lt;p&gt;I think what might be better is a &lt;em&gt;refocus&lt;/em&gt;. That requires me to take a good 
look at the content on Sporkbox and decide which is the most important or most 
fulfilling. To that end, I think Sporkbox should become a place about video game 
design, programming, philosophy, and reviews. Artwork by me will still appear, 
but likely not on the blog itself. This reflects the kind of content that I 
enjoy reading and writing, so it only makes sense for my website to reflect the 
same. I think following this will lead to a better website, both for me to write 
and for people to read.&lt;/p&gt;
&lt;h1&gt;Tone&lt;/h1&gt;
&lt;p&gt;This is closely related to purpose. The tone of content can completely change
the feel of it, thereby influencing what sort of audience you'll reach. It can
influence the way you think about something and the way you react to it. In
looking over the content on Sporkbox, I noticed that a not-insignificant amount
of my content has a sort of provocative tone to it. While I feel no remorse or
regret over what I expressed in those posts, I feel that they do a poor job of
providing much in the way of quality content and bring negativity to a place
that I originally intended to be positive. I want to be able to visit my website
and think to myself, "I'm creating a fun and enjoyable place," not "People will
totally see I'm right about X!" or "People need to know what's happening in Y
situation!" Those messages can be valid and even important, but they're not what
I want here anymore. Additionally, I want to avoid current events in my posts, 
since they're temporal in nature and generally serve little purpose beyond 
click bait.&lt;/p&gt;
&lt;h1&gt;Name&lt;/h1&gt;
&lt;p&gt;Lastly, I think a name change is in order for the future. I got the name 
"Sporkbox" from my computer's hostname, which comes from my cat, Sporky. The 
thing is, Sporky's going to be 13 this year. That's roughly the equivalent of 65 
years for humans. So, while she'll likely live quite a bit longer, that's still 
not long compared to how long I may operate this site. Should this site outlive 
her, I don't think I'd have the heart to work on it. I love my cat very much, 
and she's an incredible influence on my life, but I'm not sure my website should 
be named after her anymore. I have no immediate plans to retire &lt;code&gt;sporkbox.us&lt;/code&gt; or 
any Sporkbox-related things, since I don't have a replacement name yet. But keep 
in mind that a change is on the horizon.&lt;/p&gt;
&lt;h1&gt;Design&lt;/h1&gt;
&lt;p&gt;Simplicity is one of the core principles that I try to adhere to, whether it's 
in design, implementation, art, or life itself. It's a very powerful force that 
has done nothing but good things for me. Sporkbox's current design looks fairly 
good, but isn't all that simple. I want to aim for something more minimalist, 
functional, and responsive (so smartphone users can peruse it). This will rid 
the design of distractions and leave nothing but the content to speak for 
itself. I like the idea of that very much, and I'll work to make that a reality 
with the new design. That's likely months away, however, so there's nothing set 
in stone. Thankfully, with the lack of admin tools I need to build, it should be 
much easier and faster to produce a good-looking, responsive layout.&lt;/p&gt;
&lt;h1&gt;tldr&lt;/h1&gt;
&lt;p&gt;In short, this website has a lot in store for it in the coming year. I'm likely 
going to a static site generator, the topics and tone will be more refined and 
focused, and even the name is likely going to change. These things are happening 
in order to make my website a more pleasurable place to visit and to bring 
higher quality content to the forefront. The new design that's coming will bring 
that emphasis with it.&lt;/p&gt;
&lt;p&gt;If anyone still visits this blog, I appreciate your viewership and hope to gain 
a few more eyeballs on this site. These upcoming changes should be an 
improvement for me and you. Thanks for reading.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2022-12-11 UPDATE:&lt;/strong&gt; It's been a while since the transition happened, but the 
website was renamed to &lt;strong&gt;zlg.space&lt;/strong&gt;. The name of the blog itself is subject to 
further changes, even today.&lt;/p&gt;</content><category term="Life"/><category term="The Site"/><category term="Life"/></entry><entry><title>Car Repairs, Saving, and Upgrades, oh my!</title><link href="https://zlg.space/blog/car-repairs-saving-and-upgrades-oh-my.html" rel="alternate"/><published>2013-07-04T08:11:35-07:00</published><updated>2023-11-10T18:58:00-08:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2013-07-04:/blog/car-repairs-saving-and-upgrades-oh-my.html</id><summary type="html">&lt;p&gt;It's been a little while since I've posted. Much of my time has been spent on
reddit, since I finally caved and got an account over there. I've also been
working more on my &lt;a href="https://github.com/sporkbox/knr-exercises"&gt;K&amp;amp;R exercises&lt;/a&gt; and working my way through Metroid
Prime 3 to get all the goodies. Hypermode is pretty tough, even for me! I died
&lt;em&gt;five times&lt;/em&gt; on the Mogenar drone battle, when Veteran difficulty didn't give
me any real issues! It's certainly worth playing through if you enjoy a good
challenge like me.&lt;/p&gt;
</summary><content type="html">&lt;p&gt;It's been a little while since I've posted. Much of my time has been spent on
reddit, since I finally caved and got an account over there. I've also been
working more on my &lt;a href="https://github.com/sporkbox/knr-exercises"&gt;K&amp;amp;R exercises&lt;/a&gt; and working my way through Metroid
Prime 3 to get all the goodies. Hypermode is pretty tough, even for me! I died
&lt;em&gt;five times&lt;/em&gt; on the Mogenar drone battle, when Veteran difficulty didn't give
me any real issues! It's certainly worth playing through if you enjoy a good
challenge like me.&lt;/p&gt;


&lt;h1&gt;Car Repairs&lt;/h1&gt;
&lt;p&gt;As mentioned in an older post, my car started stalling back in December. I 
narrowed down the cause to the throttle position sensor. It's an itty bitty 
sensor that's affixed to the bottom of the throttle body and is responsible for 
telling the engine how much fuel to use. At least, that's how my cartarded self 
interprets it! Anyway, it's in a &lt;em&gt;stupid&lt;/em&gt; place on my 1994 Buick LeSabre; too 
cramped to use a regular screwdriver to get it out, and there's a metal pipe 
&lt;em&gt;right underneath it&lt;/em&gt; so I can't fit a small screwdriver in there, either. I had 
bought a gasket for the throttle body since I figured I'd have to take it off to 
get to the sensor a little easier... &lt;strong&gt;NOPE&lt;/strong&gt;. There are a lot of bolts and nuts 
in some really strange places that made getting the throttle body off in a 
timely manner impractical with standard everyday tools. &lt;/p&gt;
&lt;p&gt;I decided "screw it" and used a pair of pliers to (slowly) extract the screws 
from the old sensor, and used them to put the screws back into the new one... 
but not before going to the hardware store and buying nicer screws that were 
&lt;em&gt;too large&lt;/em&gt;. Did I mention I was seeing my daughter that afternoon and was in a 
hurry? Yeah... what a &lt;em&gt;peachy day&lt;/em&gt; that was. Since the skin on my hands is 
somewhat soft and thin, I didn't get through the ordeal without a few light cuts 
and a bruised thumb knuckle from using various tools all day.&lt;/p&gt;
&lt;p&gt;I learned that day why mechanics tend to curse a lot. But hey -- at least I did 
it! My sister's husband and a friend helped me as well, but they let me do most 
of the work. It felt good to basically fix my car on my own. Oh yeah, the sensor 
ran me about $60. For something so small, there's no way it cost that much to 
manufacture and test. Oh well, it doesn't stall anymore. Now it needs tires and 
probably brakes!&lt;/p&gt;
&lt;h1&gt;Saving Moolah&lt;/h1&gt;
&lt;p&gt;Before &lt;em&gt;Etrian Odyssey 4: Legends of the Titan&lt;/em&gt; came out, I preordered it. 
Because I'm a sucker for preorder bonuses and Atlus is pretty badass. There's a 
catch to this: &lt;strong&gt;I don't own a 3DS!&lt;/strong&gt; So I've begun saving for the 3DS XL. I've 
culled my game collection to afford things in the past, but as a result my 
collection today is less than half what it was; I'm running out of games to 
sell! Work's been picking up, but it's still not enough to let me venture out 
and just pick up a 3DS XL. I need to find a better job... Oh yeah, I also bought 
the new Animal Crossing because it was on sale. &lt;em&gt;Stop me, I'm buying games I 
can't play yet!&lt;/em&gt; :/ Maybe I can sell a few more games or get a Web project 
commission or something. Anyways, I should have a 3DS XL by my birthday. If not, 
I'm going to be angry. Etrian Odyssey and Animal Crossing need me!&lt;/p&gt;
&lt;h1&gt;Upgrades, anyone?&lt;/h1&gt;
&lt;p&gt;Sporkblog 2.2 is in the last-minute testing phase. The new version should be 
live by the weekend and introduces a few logical and visual changes. 
Now I can cut off posts anywhere I want in list view. This will result in a 
little "Read more" link so it clutters up the interface less and allows you to 
focus on the article. This won't be used for all posts, but I think it's a 
usability enhancement that'll be appreciated.&lt;/p&gt;
&lt;p&gt;Another upcoming change is comment editing. There have been a few discussions on
here where my inability to edit comments produced a few confusing comments. When
2.2 goes live, I'll be auditing every comment for requests to correct
information or clear up any typos for people. Commenters still will not be
able to edit, as that requires setting a cookie for each comment they make (or
session variables), and I don't agree with that sort of design. It also can lead
to changing a comment after someone's responded to it. Kinda dishonest. That 
said, there's more that I want to add to better the experience. We'll see what 
the future holds!&lt;/p&gt;
&lt;p&gt;On a semi-related note, I've taken to updating my &lt;a href="http://gentoo.org"&gt;Gentoo 
GNU/Linux&lt;/a&gt; system on a monthly schedule. This allows me to 
isolate the cause of breakages and if I plan them for a weekend, I have time to 
work kinks out. Since this is my only computer at the moment, it's important for 
me to always have it working. I've been meaning to shop around for a laptop, but 
nothing out there speaks to me. I want modest specs so I can code, write, and 
browse, with a long battery life and strong keyboard design. I'll probably be 
using my &lt;a href="http://typematrix.com"&gt;Typematrix 2030&lt;/a&gt; most of the time, but still... 
I wish they made Dvorak laptop keyboards! If you have a laptop to recommend 
that's friendly to Linux or BSDs, please let me know in the comments! I'm hoping 
to spend less than $400 if possible. This is obviously a long-term wish since I 
can't even afford to fix my car now, but it's important to have goals!&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="The Site"/></entry><entry><title>Say hello to my new rig!</title><link href="https://zlg.space/blog/say-hello-to-my-new-rig.html" rel="alternate"/><published>2011-06-15T05:24:04-07:00</published><updated>2022-08-29T20:46:00-07:00</updated><author><name>zlg</name></author><id>tag:zlg.space,2011-06-15:/blog/say-hello-to-my-new-rig.html</id><summary type="html">&lt;p&gt;The build is finished! I built it on May 28th and have spent most of my computer
time configuring it ever since. Here's a rundown of what's under the hood:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASUS M4A88TD-M, AM3 880G, SATA 6.0 Gb/s, USB 3.0&lt;/li&gt;
&lt;li&gt;G.SKILL Sniper DDR3 1333 (2x4GB)&lt;/li&gt;
&lt;li&gt;2TB HITACHI Deskstar 5K3000 SATA 6.0 Gb/s, 3.5"&lt;/li&gt;
&lt;li&gt;AMD Phenom IIx6 1090T Black Edition 3.2 GHz, hexcore&lt;/li&gt;
&lt;/ul&gt;
</summary><content type="html">&lt;p&gt;The build is finished! I built it on May 28th and have spent most of my computer
time configuring it ever since. Here's a rundown of what's under the hood:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;ASUS M4A88TD-M, AM3 880G, SATA 6.0 Gb/s, USB 3.0&lt;/li&gt;
&lt;li&gt;G.SKILL Sniper DDR3 1333 (2x4GB)&lt;/li&gt;
&lt;li&gt;2TB HITACHI Deskstar 5K3000 SATA 6.0 Gb/s, 3.5"&lt;/li&gt;
&lt;li&gt;AMD Phenom IIx6 1090T Black Edition 3.2 GHz, hexcore&lt;/li&gt;
&lt;/ul&gt;


&lt;p&gt;The mobo has an onboard AMD Radeon HD 4250, so it will hold me over until I buy
a graphics card for it. I'm aiming for the $100-150 price range, which puts
me between a Radeon HD 6770 or a GeForce GTX 550 Ti. I don't do any heavy PC
gaming, so I have no need for insane graphic capability. Even the 6 cores are
more than enough.&lt;/p&gt;
&lt;p&gt;I want to try some new software with this build once my main apps get setup.
Thankfully I only have a few more apps to setup before I can start exploring.
I've already switched from &lt;a href="http://www.gnu.org/software/screen/" title="GNU's terminal multiplexer"&gt;GNU screen&lt;/a&gt; to &lt;a href="http://tmux.sourceforge.net" title="A simpler, newer multiplexer"&gt;tmux&lt;/a&gt;, however. The switch was very smooth. What
took me a day or two to configure in screen could be achieved with an hour
or two with tmux and its great manpage. I'll be sharing it via &lt;a href="https://git.zlg.space/rc"&gt;my cgit 
installation&lt;/a&gt; soon. I'll likely be getting rid of
screen, but will hang onto the configuration file so people who decide to use it
have a configuration that's nice or gives them ideas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;2022-08-29 UPDATE:&lt;/strong&gt; This rig is still going! It's mostly for some mid-tier
PC gaming from time to time, but there's an AMD RX580 6GB powering the graphics
now. Whatever I build next won't need a new card for a little while. :)&lt;/p&gt;</content><category term="Life"/><category term="Life"/><category term="Hardware"/><category term="The Site"/></entry></feed>