The point of this repo is so that I don't need a website. Since my website would likely just be a plain HTML file with some links, a markdown file works just as well. I'm an avid Free Software user, supporter, and activist. I'm a huge fan of the BSD operating systems, espeically NetBSD and OpenBSD. I've fallen out of favor with Linux for a variety of reasons but I've used it for over 10 years for both professional and personal usage.
I spend a lot of time programming, as I do it professionally. I mostly work in JavaScript/TypeScript, ClojureScript, and Haskell. In my spare time, I prefer to use simpler tools such as plain POSIX shell, POSIX awk, and, if needed, C. I have found that the combination of shell + awk is capable of basically every scripting need. I use my own editor, ait(1) for all editing needs. I wrote ait because I wasn't using 95% of the features in GNU Emacs and I wanted a good editor that has all the Emacs features I used without the bloat.
Outside of computers, I have many other hobbies. I love spending time with my family, fixing/repairing things, entomology, target shooting, playing guitar, Turkish coffee, the art of wet shaving with a safety razor, various gaming (tabletop or video), reading (usually technical), storytelling, and, most importantly, abiding in God.
My workflow is rather simple on my personal computers. I use NetBSD as my OS of choice and try to install as little software as I can without having many programs that do the same thing. For example, I don't need 2 web browsers installed unless one is GUI and the other is tty.
I use xdm from NetBSD as my login manager. I use
dwm(1) as my window manager with modifications
in my dotfiles. I use uxterm(1) as
my terminal emulator. I really love suckless's st(1)
but I prefer to just use
the tools that come with NetBSD. I use mpv(1)
ledger(1) is my accounting software.
xlockmore-[lite] is my screensaver
program solely because of xlock -mode star -trek 1000
. Lastly, for text editing
I use ait(1). For email, I use
s-nail(1) which is probably one of the best
email clients I've ever used because it just works.
mupdf(1) for reading crap,
feh(1) for images. I've written many scripts that
use pick(1) too. I like to use simple programs
that don't have too many dependencies. This is obvious if you look at my .cwmrc
which users xload(1) and xclock(1). xclock is used has a battery percent monitor
as well using a hack I found online while researching cwm.
Software I install from pkgsrc is prefixed with the directory it's found in: editors/emacs. Anything without that prefix is installed manually from source.
As mentioned in the hardware section, I have an ancient Raspberry Pi that I run a local home server on. This server's sole purpose is to host a few git repos that the family uses and for backing up photos and phones. I've tried many solutions for these purposes and, honestly, most of them didn't work. I settled on keeping things as simple as possible and just use samba. I use SMBSync2 to sync my phone backups to the server and anything else can be transferred by any other device via normal samba methods. I then create backup tarballs and ship them off to an external server elsewhere. The setup isn't perfect but it's worked extremely well.
I used to have a minidlna server running as well but I found that it's almost worthless for viewing files. Although I have plans to update this server to a newer Raspberry Pi which may speed up this server and make it usable.
I have 4 reasons why I prefer to compile my programs from source.
I can better control how I want to run the program. This is really the crux of it all. If you install a program from a traditional binary-based package manager you get whatever the maintainer thinks is best to include. Usually it's compiled to support for as much as possible. While sometimes this is nice, say for mpv, it isn't want I want for most of my other programs such as emacs. This helps not only with dependency control and management but also being able to control how the software will run.
Many users of free operating systems take advantage of binary packages for software. Most all Linux distros and BSDs have a repository of pre-compiled programs that you can easily just download, install, and run. This is great for speed and ease-of-use but what if you don't like how a binary is built? What if it's built with many extra dependecies that you don't need? If you're like most others, you don't care. Just install everything - the package manager will take of care it for you anyways. What if it doesn't? I've had Debian's dpkg and apt completely lock up on me preventing me from installing updates somewhere between 3-5 times in my Linux life.
The reason why compilng is fundamental to free software is rhetorically answered in the above paragraph: What if you don't like how a binary is built? Well, if it's a binary: too bad so sad. If it's a makefile or recipe: just edit the recipe. Also, one of the key freedoms with Free Software is the ability to have the source [and do with it as you wish]. If you only use binaries, you might as well be using proprietary software! (slightly joking...)
For reasons unknown to man, the pkgsrc and NetBSD team have never included
support for signed binaries. This means when you install a program using the
pkg_add
or pkgin
utilities you're installing a program that hasn't been
verified that it's actually what it says it is. Not even a simple SHA256 is
done. This is kind of a big deal and therefore is, in my opinion, unsafe to
install programs this way. Thankfully, all pkgsrc files are signed and
checked before being installed.
While yes it's faster and easier to just install programs in binary form, it
kind of boring. pkgin install emacs
and you're done. I find compiling
things from source to be kind of like a hobby or doing work around the
house. When something finished and is installed properly, albeit thanks to
the magic of makefiles in pkgsrc, there is a sense of accomplishment. Plus,
if I'm building something large such as www/webkit-gtk I just let it run
over night and in the morning I get a little surprise...
My choice of NetBSD is not a reason of trying to be hip or cool, it was a logical decision taking into account many factors both interpersonal and technical. I don't need to explain why I don't use proprietary systems (unless for work), that's a given. What about the grand ol' GNU/Linux - or /Linux (you're supposed to say the slash) as I'm starting to call it thanks to distros that are trying to split away from GNU. I have 4 reasons why not Linux.
First, the Linux kernel is going nuts. I'm not going into detail but it's becoming more like the MS Windows kernel as time goes on. Second, toxic programs influenced by bad guys such as systemd. While, yes, you can go to another distro such as the amazing CRUX not wanting to use systemd really limits the distros you can use. Third, lack of care. Many distros out there only care about how many users they can get. They, therefore, try to make the distro as appealing to their crowd as possible. This, more or less, misses the point of free software. It's about the FREEDOM. Distros also should not include proprietary anything without informing the user at least or anything sketchy Take Ubuntu's Amazon spyware thing from the past - what a mistake. Fourth, stability. How many times have you done a system update and found X not working? Maybe the system won't even boot? This happened to me constantly when I was running Arch on my C201. I spent more time fixing it than actually using it! I've also had Debian systems break randomly too.
FreeBSD or DragonflyBSD? I'll pass on both. Neither have a strict free software
policy nor do they really mention freedom anywhere on their sites. Also, FreeBSD
people give me chills and it wouldn't work nicely with my NVIDIA card. OpenBSD
is probably the most well written operating systems of all time and they have an
extremely strict free software only policy. Oh yeah, now we're talking! Except
it wouldn't boot on my computer thanks to the NVIDIA card I had it in
originally... Well, NetBSD is kinda well written, has a strict free software
policy that isn't extremely anti-GPL, AND it works with my NVIDIA card! I'd like
to personally thank llvm-pipe
for being an amazing generic video
driver. Anyway, NetBSD checks all my boxes plus pkgsrc is amazing for compiling
things from source.
Well, I've come to realize a few things: Emacs is amazing but Emacs is overkill. I love Emacs bindings and how it edits but I don't use very many of the features anymore and having all the extra stuff just isn't worth it. I've been using ait as my only editor since around March 2023.
Qemacs, mg, jed, etc.? Qemacs is probably the only actual option even close to comparable to GNU Emacs. My only issue with it is that it isn't really an exact GNU Emacs clone and I find myself making many many mistakes. mg is really great but doesn't support UTF-8. Jed makes my brain hurt. Most of the others aren't really complete enough for me.
Lastly, I wanted to make an editor that combined the powers of Emacs, termbox2, and acme. Emacs has the best buffer and window management, best keybindings, and I know all the bindings. Termbox2 is super small and minimal. Acme uses the operating system to enhance the editor, which is brillent (yes, Emacs does this too but not the same).
All of these are works in progress...
I'm a full-stack developer for SKED. We use NixOps, NixOS, and Nix for everything. The backend is written in Haskell, frontend written with JS/TS, and iOS/Android app written in ClojureScript.
I maintain a few packages in pkgsrc. You can find the list
here.
I also maintain games/minetest and have done some updates for other
programs you can see it in the pkgsrc-${year}.txt
files in this
repo.