CozyNet RSS feed https://www.cozynet.org/ The CozyNet blog feed https://www.cozynet.org/feed/images/avatar.bmp CozyNet RSS feed https://www.cozynet.org/ Having a hoot with the old Flight Simulator! https://www.cozynet.org/blogs/20260125_blog.html Sun, 25 Jan 2026 20:41:00 CST

As a kid I was fascinated with the Wright Brothers Flyer, the Titanic, the Hindenburg, Golden Gate Bridge, the Empire State Building, Boeing B-17 Flying Fortresses, and the Saturn V rocket and lunar lander. I even assembled model kits of some them just to play with out in the yard and would draw out my own childish inventions as if to fortify and improve them.

With that being said, around every December to January it's been a tradition of mine to load up Flight Simulator to replay the Wright brothers historic moment of flight at Kill Devil Hills which took place on December 17, 1903. The flight lasted for 12 seconds reaching 120 feet at a top speed of 6.8 miles per hour, so this is usually my goal to reach in Flight Simulator while on the hardest difficulty.

Suffice it to say, I've only ever managed to pull it off a few times over the years and will eventually knock the difficulty settings down a little until I make it. It ain't easy!

On my 13'th birthday I got the legendary "Microsoft Flight Simulator 2004 A Century of Flight" with a joystick, which was back in December of '05. It was a big wish list item of mine all year long after reading about it in a magazine because you could re-fly historic flights such as the Wright Brothers, which was absolutely up my ally! At that time we didn't have a computer capable of running the game so I would take it with me to my grandparents to play on their computer which was a brand new e-machine PC. Back home ours was some old Gateway junk from the mid 90's that would get thrown out sometime the following year, which was right around when I got heavily involved in gaming and the internet.

I still have the original joystick and copy of the game to this day, which came with four discs and a manual in color print. You can see me with it in the following pictures.

And here it is today in all its glory!

I've always been a bit of an archivist and could never part with my old games and stuff despite not needing them or really ever playing them, so I still have everything that wasn't lost by pesky siblings.

I use to be able to load this game up in WineHQ no problem, but I've noticed modern versions of Wine don't seem to play so nice with older games these days. After beating my brains over error logs, I gave up perusing that route and booted up my old Windows 8 install where it works without a hitch.

So here's me 21 years later playing Microsoft Flight Simulator 2004, A Century of Flight.

Thanks for reading my blog!

]]>
How to install deno JS runtime for yt-dlp https://www.cozynet.org/blogs/20260101_blog.html Thu, 01 Jan 2026 13:00:00 CST

Screenshot of JavaScript source code.

Are you seeing console errors for a missing JavaScript runtime when running yt-dlp?

WARNING: [youtube] No supported JavaScript runtime could be found. YouTube extraction without a JS runtime has been deprecated, and some formats may be missing.

In this brief guide, I'm going to show you how to resolve this by installing the Deno JS runtime for yt-dlp. Oh and also, this guide assumes you're on a Linux-based operating systems. If you're on macOS or Windows, this probably won't be of much help to you.

Support for Deno is enabled by default in yt-dlp, provided it's present on your user environment PATH. Depending on how you've installed yt-dlp, this can either be an easy thing or perhaps a bit difficult.

This guide will assume that you've installed yt-dlp in a conventional manner. The best place for yt-dlp to be installed in is ~/.local/bin with the Unix/Linux executable. However, I have known some people to utilize the Python package manager PIP for installation too.

If you've installed yt-dlp thru PIP, then make sure it's installed with the default dependency group since it includes the yt-dlp-ejs package. The yt-dlp project highlights this in their wiki by the way.

pip install -U "yt-dlp[default]"

For those of you using the Linux executable provided directly from the GitHub release page, you don't have to bother with it since the necessary JavaScript components are already included (except deno.)

If you've installed yt-dlp in a non-conventional manner such as a containerized environment, then this guide probably won't be much help for you and I'm not going to bother delving into troubleshooting that layer of complication.

Installing deno

If you're on a modern version of Ubuntu with the SNAP package manager, you could install Deno from there which does work without any complication or special setup from my experience. But if you don't like the SNAP package management system nor use Ubuntu, then you'll need to download the Deno installer. You can do so from the Deno website: https://docs.deno.com/runtime/getting_started/installation/

I recommend downloading just the shell script installer, which is the first option for the Linux platform. There are other options for Nix, Cargo, and Docker, but you're looking for a hassle with those. Just use the shell script installer.

Once it's downloaded, make the installer executable:

chmod +x install.sh

Run it as your normal non-sudo non-root user:

./install.sh

It'll download some additional dependencies, then create a ".deno" directory in your user home. In my opinion, it's not the best place for dumping software, but it works and I do appreciate that it's all contained to that specific directory for easy removal.

Deno should become present in the user PATH after closing and re-opening the terminal. You might have to log out and back in too. You can test this with the following command:

$ which deno
/home/user/.deno/bin/deno

The path is included in your ~/.profile on the bottom:

. "/home/user/.deno/env"

On occasion you'll want to update the deno runtime which you can do from the terminal with the following command:

deno upgrade

I'll usually invoke this command around the same time I run yt-dlp -U when updating yt-dlp. Yt-dlp will automatically pickup deno and the warning messages for a JavaScript runtime should go away. If you still see the warning messages for a JavaScript runtime, then it means yt-dlp doesn't see deno, meaning deno is likely not on the user environment PATH.

It's unfortunate that a full blown JS runtime is even needed, but it's also understandable too seeing how overly-complicated the web is getting just to re-implement very simple things that were sol ved ages ago. It seems this rando internet prediction in the following image from 2020 came somewhat true after all...

Anyhow, this should be all you need to install the deno runtime for yt-dlp. I hope it helps.

Thanks for reading my blog!

]]>
General Update v25 https://www.cozynet.org/blogs/20251230_blog.html Tue, 30 Dec 2025 15:30:00 CST

Cozy kitchen

It's almost 2026 and I've been wanting to get another blog post out there before it's too late.

With it being the winter season here, I haven't been up to too terribly much when it comes to renovating and restoring the house. My kitchen window project is still incomplete after all these months since it has taken me so long to learn how to make window frames. Now that I've got a pretty good grasp on it, I'm unable to get any lumber because my truck is unfortunately down for the count. The break pads need to be replaced and its dangerous to drive as is.

This all happened right before Christmas, so every repair shop within a reasonably safe distance is closed until next year, leaving me without a truck until then. So therefore the main quest is on hiatus until I finish this side quest. If it were any warmer out, I'd might attempt to replace the break pads myself, but I'm one those sort of people who's joints freeze up and become miserably sore if exposed to the cold. The day time isn't so bad, but I really don't want to make the situation any worse either in case I mess it up, otherwise it could be stranded for the remainder of the season. January and March and sometimes February can be particularly cold here in Texas, so I'm thinking it would be best to just drive in somewhere local to have it repaired.


I suppose I should make a small update on the cats and dog. They've all been doing very well with no incidents. Poochie continues to run afoul with fleas because of wild filthy dogs coming up to his yard to visit. I usually bathe him once or twice a month in a flea killing shampoo, then later in the week apply a topical poison on his back and sprinkle his yard with sevin dust granules. It helps, but it's a chore for sure.

I haven't been able to walk him for a very long time due to the sand burs that took over the larger yard late in the summer. The burs are still there in the ground, which poke into his paws. I'm planning to buy a poison for those, which oddly I have to apply around this time of year, then again in spring. It's an expensive poison, but if it works, it would be worth it because those burs are awful. They're worse than stepping on legos!

As for the cats, I've moved their primary room upstairs for now. They were getting difficult to put up when I needed to leave the house, causing me to chase them around just to get them in their room; but it turns out, they just really like the upstairs bed room. I figured they can have it, and so far it's worked out great. They don't play keep away anymore and will go right up to their room when I need them too.


I almost forgot to write about this, but I did some work to restore my vintage General Electric fridge from 1953. I bought it from a guy for $100 off Craigslist in working condition, but it had a terrible habit of accumulating too much ice around the thermistor and condensation which was leaking out onto the floor and building up inside the door.

Upon close inspection, I realized that the lousy replacement gasket that the previous owner installed was actually installed in completely the wrong spot. I had to research some of the mechanics in how the door and gasket are supposed to function, which I found very interesting! The gasket is supposed to fit into a channel, and overlap onto the interior backboard. This is important because the backboard and fitting gasket are designed in such a way that when the door closes onto the fridge, the cold air causes a suction effect that draws the door in tight, compressing the gasket onto the backboard which squeezes it down around the edges upon the channel. The latching mechanism is mechanical and also draws the door in too, so this is all a bit different to modern fridges that employee magnets.

The previous owner at some point tore out the original gasket since it was no doubt old and brittle, then atop the backboard glued down a foam gasket. This left the channel and gap around the backboard exposed to the external environment, which drew in a lot of warm air causing the compressor to run a lot and subsequently produced a lot of condensation. If the foam gasket were applied in such a way that covered the gap and channel, it wouldn't have been nearly as bad...

I've spread open the gap between the backboard and the gasket channel so that you can see what it looks like.

I went ahead and pulled the door off the hinges and spent a week chiseling out pieces of the remaining old gasket which had fused into the channel. I cleaned it all out as best I could and applied a new proper rubber gasket I bought off of Amazon. Unfortunately it was just a hair too thick, causing the door to not shut properly since there was too much material next to the hinge-point. This was really disappointing because that gasket was expensive, costing me $127. I went back onto Amazon and bought another one with a slimmer dimension and this time it worked out a lot better.

Of course the seal wasn't perfect like it would have been with the original gasket since it doesn't compress enough near the latch point of the door, despite my best efforts in adjusting the latch draw distance. Since the remaining gaps around the seal were super thin, I utilized some spare stick on foam tape that I used on my water lines beneath the house. It was just enough material to make a perfect seal, and it doesn't look that too shabby either!

The black foam strip wasn't needed for the bottom and hinge-point.

I also wanted to share my awesome gasket cut profile here. I found that making a perfect miter cut was impossible, so I devised my own profile that tucks into itself with a small over lap. I made the bottom door corners of the gasket in such a way that if any liquid or by chance a bead of condensation were to trickle down the gasket, it would follow over the lap instead of collect into the bottom.

The later image is the door flipped up-side-down since it was off the hinges and I was rotating it to work with.

The fridge now works fantastically, save for the interior light switch not always working. I have a simple solution for that dealing with a motion detector I salvaged from work, but I'll get to it later. As for now, no more condensation build up, and it no longer runs as much either. I recall replacing the original thermostat in it for a newer one because I suspected the condensation and ice build up was possibly affecting it, so I wonder if it would work without issue now? It does still work, but I had trouble with it sticking on which might no longer be the case now that the interior environment is cool and dry. The newer thermostat works, but it's not calibrated for this fridge unlike the original and has a tendency to let things get a little too cold despite having it dialed in on the lowest setting possible.

Anyhow, I love the classic look of this fridge in my kitchen. I hope sometime next year I'll be able to rearrange things to their proper place. The present kitchen workflow and layout are inefficient with everything but the kitchen sink being in the wrong spot.

The first image is the current workflow. The later image is the goal.

There's a space for a dish washer beneath the counter top beside the sink, but I threw out the washer since it was junk. I might buy a dish washer in the future to place there, but I never use em so I don't know. The original spot for the stove is just in a terrible location that would be better fit for a fridge. At present, the space isn't wide enough for my old fridge, so I'll probably have to expand it by knocking out the side cubby.

The great big space presently occupied by a massive non-functioning fridge that was left there by the previous owners is where I want my 50's era stove with a nice big classic 50's era Vent-A-Hood (when I can find one).

Right now I have things a bit crammed into the kitchen and not yet in the right place, but once I can re-arrange it, I'll have a nice area for my small kitchen table to fit between the two back doors. Presently it's in front of a door I don't use.

Right now I'm held up until I get new propane lines and outlets installed where needed. The original propane outlets aren't in the right place and the old line is a permanent black cast iron pipe that broke off as the house shifted since the foundation was displaced from rotting apart (which I fixed back in 2023 and blogged about!) I think it would be best to just start anew, but I might still utilize the original line for some areas so long it doesn't leak.

Thanks for reading my blog!

]]>
Revisiting the Trinity Desktop Environment https://www.cozynet.org/blogs/20251219_blog.html Tue, 30 Dec 2025 15:30:00 CST

The Trinity Desktop Environment (TDE) is one of my favorite ones out there. I've written on it before, but would like to go over a few other things I've picked up along the way that make it especially nice to use since it can be a little rough around the edges.

I'm not using it as much these days since I've been working toward reducing the amount of time I spend tinkering on my computer, so I have it installed on an old desktop PC running Devuan I boot up every once in awhile.

You can use the below list to skip to parts you might find relevant in this post since it's gonna be a long one. Some of these I've written on before already, but figured it wouldn't hurt to bring back up.

Where and where not to use TDE

Like I said, TDE can be pretty rough around the edges. It comes from an era of computing that was done almost exclusively on Desktop Computer's, so laptops are really not an ideal choice of device here. It can be done, but the desktop focused paradigm the environment was made for just isn't geared for a mobile workflow where you might connect and disconnect external displays, docking stations, audio devices, etc. It needs a static setting where everything is setup once and for all.

If you're the sort that keeps changing the display orientation, resolution, and DPI scaling, then you should use the Plasma desktop or something else. You have to remember, this environment is old.

Why not use Plasma or something else?

Good question! I don't have a very satisfying answer, but it might mean something to someone out there...

Are you the kind of person that values a stable environment where you can expect things to remain relatively unchanged? Does it cause you distress or frustration to sign into your computer only to find that everything has been re-positioned, altered, or broken after an update? And worse yet, functionality you relied on was removed because the developers didn't have a "use case" for it within the testing of their own vacuum chambers.

Well my friend, TDE isn't going anywhere anytime soon - that is so long the project doesn't unexpectedly shutdown - so hop in cause we're going nowhere fast; It's the same old KDE3 we all knew and love from 20+ years ago, and not a lick of it has changed! Now isn't that simply wonderful?

I'm being a little facetious here, but I'm impressed that it's managed to hold up for as long as it has. In a time where major desktop environments are essentially bootstrapped web browser tech ramming updates down your throat every day and probably soon to be integrated chat bots, turning away from X11 support, re-writing their code base in a different language for grins, core apps being containerized and thus bloated, along with all the security theatrics chewing its way thru everything, it's kind of a breath of fresh-ish air honestly.

I've been using TDE on the Devuan distribution and nothing really ever gets in my way except for those rough edges, which I'll write about here soon. I never see reminders to "reboot your computer to install updates," or to connect my account to some online service, or any sort of network communication aside from the typical things like DNS and NTP. Shoot, TDE doesn't even come pre-installed with a notification system!

The rest of this post I'll share my finds and fixes to work out those rough edges, making TDE a practical desktop for those of you weary and tired of the modern age of computing.

How to fix display blanking DPMS timeouts

Have you ever noticed that the display will shut itself off after 15 minutes of inactivity? You'd think it was either coming from the power manager or the screensaver, but actually it's coming from X!

To fix this, all you need to do is put the following into an ".xinitrc" file in your home directory.

xset -dpms
xset s off

The next time you sign in, it'll run those commands which disables DPMS and screen blanking.

Get a better audio mixer

The default kmixer isn't very useful since it doesn't provide functionality to adjust individual application volume levels and switching audio devices. I recommend installing pavucontrol-qt for a better audio mixer, then add it as a launcher button to your panel for quick access.

[Advanced]

If you're like me and switch between audio devices frequently, it's nice to have pavucontrol open to the "Output" tab first instead of the "Playback" tab. With the following script, you can achieve just that. You'll need to install xdotool for this to work:

#!/bin/bash
winpid=$(xdotool getwindowpid `xdotool search --name 'Volume Control'`)
if [[ -n "$winpid" ]]; then
  kill -9 "$winpid"
  pavucontrol-qt &
  sleep 1 && xdotool getactivewindow key alt+o
else
  pavucontrol-qt &
  sleep 1 && xdotool getactivewindow key alt+o
fi

DBUS compatible notification daemon for TDE

This might depend on the distribution TDE supports, but I've noticed that it tends to not include a notification daemon with the default installation. Fortunately this can be easily resolved by installing kdbusnotification-trinity and libnotify-bin.

You'll want to start this up on login by running notification-daemon-tde from either a startup script or an autostart .desktop file. If you want to use a .desktop file as the autostart method, then create it in "~/.trinity/Autostart/" and append the following to it:

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=noficiation-daemon-tde
Comment=notification daemon
Exec=notification-daemon-tde

Log out then log back in. You can test with the notify-send command in a console to verify it works.

I haven't yet been successful in modifying the style or geometry of the notification system, so if anyone knows how then by all means share with me!

Exposing network file-shares to the local file-system with GVFS

The Konqueror file manager has the built-in capability of mounting network file shares, namely SAMBA, but it mounts by a protocol exclusive to the file manager meaning that you can't open files from it without having to copy them to the local file system first since there isn't a direct path to said files to the file share. While Konqueror can see the files, your other applications won't.

I recommend using GVFS and Gigolo for handling remote file share mounts. You'll want to install the following:

$ apt install gigolo gvfs-daemons gvfs-backends gvfs-fuse gvfs-common

You’ll need to reboot after the install is complete.

Next up, you’ll need to configure Gigolo to connect to your network file share, which is pretty straight forward; I’m assuming that you should already know how to do this, so I’m not going to walk you thru that part, however there are a few settings I recommend.

Open Gigolo, click “edit” in the menu bar > preferences > Interface tab. Check “Start minimized in the Notification area,” this way it doesn’t start up with a window when logging in. Remove the checked option for “Show auto-connect error messages,” so that you’re not bombarded with connection error popups if your computer or file server should happen to fall off the network.

You’ll also want to make sure that Giglo starts up when logging in. You can do this by adding the following contents to a .desktop file in your "~/.trinity/Autostart/" directory.

[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=Gigolo
Comment=GVFS file mounter
Exec=gigolo

Once you have your network mount setup and connected in Gigolo, open Konqueror and navigate to the "/run/user/1000/gvfs/" directory. You should see the mounted share from here. You can bookmark it in Konqueror for quick access.

And that’s all there is to it! The next time you log back in, Gigolo should auto-mount the network share if it’s present, and you can simply click on your bookmark in Konqueror to access it.

Keyring requesting password after login

If you see the following dreaded mandatory popup after logging in:

Authentication Required: An application wants access to the Default Keyring but it is locked

This is the GNOME keyring manager known as Seahorse which is used by most applications that require a keyring service to store credentials. Alternatively, there's the KDE wallet which is a keyring service too which is no better in this situation; there's also the TDE wallet which does come pre-installed, but no modern application is ever going to work with it since it doesn't support DBUS on the back-end to facilitate keyring management. By the way, you really should only have one instead of both.

If you're wondering where it came from or how it got installed to your system, then it was likely installed as a dependency for some other package you installed.

The popups are certainly annoying and prevent you from using the desktop, so I suggest just removing the password requirement from it altogether because it'll never integrate with the TDE display server when logging into your system. It's the only way to fix it.

You can open the keyring by searching for seahorse or kdewallet, depending on which one you have on your system, then go into the settings and change the default keyring password to a blank password. The next time you login, you shouldn't be badgered by it anymore.

Some of you might cry "security vulnerability!" like a noisy klaxon alarm, but if you take a step back for a minute and realized that if you got malware on your system, that silly old keyring isn't going to save you one bit. It's like trying to prevent nuclear armageddon in just your own backyard; in other words, it's not going to work. Hijacking the DBUS API interface isn't out of the realm of possibility either. This whole keyring and DBUS implementation business is a farce.

qt5-style-plugin packages missing in Debian Trixie 13

If you need the qt5 styles for plastique, cde, cleanlooks, etc in qt5ct, you'll have to download the deb package from an older version of Debian because they're no longer included in Debian 13. Dunno why.

If you have a Debian 12 system, you can download the packages with the following command (replace <name of style> with the name of the package style you want):

$ apt download qt5-style-plugin-<name of style>

Alternatively, you can just download the package from the archive here: https://packages.debian.org/bookworm/libs/qt5-style-plugins

Click the one you want in the "dep" list, for example qt5-style-plugin-plastique, then scroll down to the bottom of the page and select your CPU architecture. The page will switch over to the download page where you're provided a list of mirrors to select from. Click either mirror and the .deb package will download to your system.

Extract the contents of the deb package, which will contain the data.tar.xz archive. Again, extract the data.tar.xz archive and copy the library file from its following directory into the corresponding system directory:

$ cp qt5-style-plugin-plastique_5.0.0+git23.g335dbec-4+b7_amd64/usr/lib/x86_64-linux-gnu/qt5/plugins/styles/libqplastiquestyle.so /usr/lib/x86_64-linux-gnu/qt5/plugins/styles/

If it doesn't take immediate effect, then reboot the system and re-open qt5ct to verify it picks up the style plugin.

Thanks for reading my blog!

]]>
ProtonVPN spoofing network traffic https://www.cozynet.org/blogs/20251218_blog.html Thu, 18 Dec 2025 17:45:00 CST

I've been using the ProtonVPN for a little while now and noticed some funky business going on with my network traffic.

I was testing one of my servers firewall rules making sure iptables was indeed working because sometimes it'll lie to you. Using good ol' netcat here I would try out a port that I knew was open (443) and a port that I knew wasn't opened (22). Both connections reported established.

$ test_port www.cozynet.org 443
$ Connection to www.cozynet.org (209.222.4.133) 443 port [tcp/https] succeeded!
$ test_port www.cozynet.org 22
$ Connection to www.cozynet.org (209.222.4.133) 22 port [tcp/ssh] succeeded!

Hang on, wait what? Port 22 is supposed to be blocked!

At first I thought maybe something was wrong with iptables and that it was leaving everything wide open to the world, but after a little investigating the culprit wasn't there. Also nothing is listening on that port anyhow, so how is it establishing a handshake?

Perhaps it was with netcat which is what I'm using in my test_port script in the above example. So I tried nmap and a few other tools, but they were all reporting established connections too.

By this point I decided to try these tools on one of my old servers which hasn't been touched in ages, knowing that at least it would prove who's right and who's wrong. And again netcat and nmap were reporting established connections to ports I know are blocked!

Me at my desk trying to figure out what's going on.

Short of throwing my laptop out the window, I hop onto another computer and BOOM! - the connections fail as they should. My laptop apparently was lying to me, so I dig into what in the world was going on and narrowed it down to ProtonVPN.

ProtonVPN is spoofing SYN/ACK responses where it should be failing. I don't know why, but maybe it's a means to deter people from using their VPN for nefarious port scanning by yeilding false results? I couldn't find much on the web about it except for this guys blog which goes into more detail than I was willing to spend the time of day on.

I suppose that if you should run into the same situation as me, then just remember to turn off the VPN.

P.S. I'm thinking of writing more short posts like these aimed mostly at technology, DIY, and "How To" stuff.

Thanks for reading my blog!

]]>