My personal tech blog. Covers a variety of topics, generally based off what I broke today. A heavy OpenBSD fan, but I wander around alot for maximum mayhem. This blog is currently maintained using smallblog.



Latest



A review of operating systems/software for your NAS

Posted on: Sunday, 23 Jan 2022

I've used almost all the major NAS operating systems/software for DIY NASes so I wanted to write up a few thoughts on each. At the time of this writing, ZFS is the only serious contender for NAS filesystems, so this review only covers operating systems with ZFS support. At this time, HAMMERFS is still only available on Dragonfly BSD which does not have support for jails and only recently gained VM support. This makes Dragonfly BSD not a suitable host for software such as Plex. At this time, BTRFS is still not stable, and is only available on Linux.

I have installed all these operating systems on the same hardware/ZFS pool, so ZFS has been easily passing the vendor lock-in test. I haven't had any data loss or incompatibility importing my NAS pool in to any of these installs. My comments are only relating to the administration and general use as a NAS.

At the time of this writing, I am using NixOS on my NAS and would highly recommend either NixOS or FreeNAS, unless you have substantial experience using another system.

Tags: linux bsd solaris nas review

Introducing naughty.st

Posted on: Friday, 21 May 2021

Naughty.st is a small little service to redirect one domain to another while preserving the rest of the URL. This is best used for redirecting links to services such as Twitter or Youtube to their free/open/less annoying counterparts such as Nitter or Cloudtube/Invidious. Even if you don't care about the privacy of these services, not having your page bogged down by over-use of Javascript or sitting through a minute of ads for a 15 second video or simply having a better connection to your locally hosted instance might be of interest.

Why not use X?

If you had this same exact problem and found a solution to it already, definitely stick with that. I ran in to a lot of partial solutions though so I ended up making this.

Rewriting URLs with a proxy

Rewrites was the first thing I tried; I found it ended up being a huge pain to intercept all SSL traffic, and then a rewrite caused all kinds of chaos when the expected/pinned certificates did not match the redirected site. If you have the tools to properly set this up on your network and all your devices, rewriting URLs at the proxy is by far the best way to go. But for me this was just adding more complications to my network and still not working in most cases.

Browser addons

If you only use one browser and it has an addon to redirect/rewrite URLs and links, that's great. I use multiple browsers on multiple devices, and most mobile browsers don't have good (or any) addon support. On top of that, the list of sites you are redirecting to slowly get out of sync between all the addons over time. Naughty.st provides you a single place to update that list, and if a service goes down it becomes simple to swap out the URLs. It is also easy to integrate naughty.st in to addons to remove the list synchronization problem. There is already an iOS share sheet shortcut and I plan to create addons for other browsers.

Is it safe to use naughty.st directly or should I self host?

There is no logging on naughty.st, but you also have no way to verify the code I am running on my server is what you see in the repository. I tried to make naughty.st as easy as possible to self-host and the iOS shortcut doesn't hard-code the service URL.

How does naughty.st work?

I definitely recommend looking at the code as it's pretty simple even if you're not familiar with golang. Naughty.st starts up on port :8476 and then sends any request it receives to the function named urlHandler(). urlHandler() does some sanity checking rather than just passing garbage or something unintended to the service (say by being triggered on a page we don't support). After that, it's just a simple switch/case and matching on the host names of the services. If a match is found, the host name in the URL structure is swapped out (all these services use compatible URL formats) and then naughty.st returns a standard HTTP redirect to let your browser do all the hard work. Naughty.st never has to look at the content of either of the pages to preform this action. If a match isn't found, a helpful message is returned.

Tags: naughty.st golang release

Smallblog.go v0.7

Posted on: Monday, 7 Sep 2020

Smallblog v0.7 has been released. It is now available on sourcehut. Smallblog may also be fetched via go get git.sr.ht/~abyxcos/smallblog.

This release is suitable for general use.

New features:

Errata:

Tags: smallblog golang release

Introducing smallcms

Posted on: Friday, 11 Sep 2015

Smallcms is a simple content management system (CMS) for allowing sections of your front page to become dynamically editable. Smallcms is a perl CGI app that you can drop into most sites.

Smallcms will iterate over any tag with a class that ends in -editable and present it as a text box, making it ideal for quick news tickers and small boxes that need to be updated frequently, but don't warrant adding a database to your site. The smallcms code is shorter than a page, and easy to understand. It currently does not offer any features except for <br> to \n conversions as appropriate. Smallcms does not care about it's name; it is suggested that the binary is named something more appropriate, such as edit_news.pl when installed.

Smallcms may be found [here]](https://git.mnetic.ch/archive/smallcms).

Tags: smallcms perl

Smallblog.pl v0.5

Posted on: Thursday, 10 Sep 2015

Smallblog v0.5 has been released. It is available on github here and gitlab here.

This release is suitable for general use.

New features:

Errata:

Tags: smallblog perl release

All posts