As a computer scientist, I've written lots of code, managed lots of systems, and overall done a lot with computers and servers. This blog is where I write about some of my projects and opinions with regards to computing. I post here most frequently.

If you're new here, you may wish to start with these posts, which are some of my best and most technical:

A few months ago, I was introduced to what many people call "second brain" software—software that allows you to take notes on anything and everything and then easily search those notes in the future without having to think too much about the organization. More specifically, I was introduced to the m...

Recently, as I have been in the process of moving, I came across a number of items in my electronics recycle bin that looked like they could be salvageable. My family has always given me their old tech, and sometimes they just tell me it doesn't work and throw it in my bin so I can recycle it proper...

A lot has changed in the past year with how my website operates. It used to be just hand-crafted HTML and text files for blog posts, and then I moved to a preprocessor that would generate HTML, and I, for the most part, wrote my blog posts in HTML. Now, I don't do any of that. I was going to write a...

I have self-hosted my email for a few years now with somewhat decent success. My current software stack is Dovecot for IMAP, OpenSMTPD for SMTP, and then OpenDKIM for DKIM verification. All of these have been running on my home server, at a residential IP address1. Lately, I've been spending a bit...

Even though my Framework Laptop 13" is relatively new (it's over a year old now), my fiancee is in the market for a new computer, since hers is a circa-2016 Lenovo Thinkpad X1 Carbon, which has a disgusting touch bar that has been severely discolored over the years. The fans run at full-speed during...

You may or may not have seen my quite recent post titled Why I Switched From OpenBSD To FreeBSD, and if so, you may be wondering, why switch off of FreeBSD so quickly after switching to it? That is a part of what I am going to address in this post.

I had very high hopes for FreeBSD. While I wa...

I frequently have the password manager discussion with friends and family—so frequently, that I think it is about time that I write a blog post about it so I can just throw this link at people instead of having to reiterate all of the reasoning over and over again.

The truth is, everyone should...

Last week, I had to migrate my server setup to new hardware because the network chip failed in my last server, and of course it was soldered on to the motherboard so I couldn't simply replace it. Instead of re-installing OpenBSD and just copying everything over to the new disks, I switched over to F...

For my software engineering class this semester, I was put into a group and instructed to develop a piece of software.The goal is to go through the process of software engineering, not necessarily to create the best project. So, our focus is more on documentation, the development process, testing, a...

Earlier this week I received absolutely no credit for an assignment in one of my courses at university. Occasionally I have been known to skip low-stakes assignments when I know that doing so won't negatively impact my grade, but that was not the case this time. I did the assignment up to my own sta...

For the last few years, my life has been managed entirely by a single text file in my home directory called .plan. This file has held all of my to-do tasks for quite some time, and was even available over the Finger protocol at one point 1, which is why it's called .plan instead of todo.txt....

As much as I love the C programming language and writing programs with it, the C89 standard sometimes requires clever workarounds to maintain portable code. I choose to write C89 because I can think of multiple compilers that do not fully support anything newer 1, and I want my code to run any c...

It is a most unfortunate truth that to do business in modern society, one requires a sufficiently modern web browser. There is, simply, no escaping it. Every machine I set up, whether for myself or for my family or friends, with either have a browser built into it, or require one to be installed to...

In my previous blog post 1, I gave an overview of the Matrix protocol and provided some helpful tips for actually implementing the core functionality that homeservers adhering to the spec are expected to provide. I left off on State Resolution, which I felt deserved its own series of posts because...

As you may or may not already be aware, I am currently working on developing a new Matrix 1 homeserver implementation 2. In this post, I want to sketch out my implementation of the Matrix specificiation 3 that I plan on using, both to clarify my own thoughts, and because I am struggling to fi...

I wrote back in September a blog post titled The Advantages Of Tor 1. While that post was a prospective look at Tor, this one is a retrospective look. In the months between that post and now, I have tried to go all in on Tor. Over Christmas break, when I read Snowden's memoir, I decided that I wou...

The PinePhone is not a particularly impressive phone. It has a display that has the quality of the original iPhone, a battery that can barely get it through the day with the screen off, and a camera that is so bad, you can hardly recognize what you intended to take a picture of. The CPU is not much...

I ordered a Framework laptop back in August because I had heard it would work well with OpenBSD, plus it's a very modular and repairable laptop. As I'm sure you know if you've read any of my previous posts, I like to tinker with things, and I like to dig into my computers and swap components. Someti...

I started Telodendria 1 because I wasn't happy with any of the other Matrix homeserver implementations. Simply put, the state of Matrix homeserver implementations is kind of sad, and maybe that speaks to a flaw with the Matrix specification—though that's a topic for another discussion.

I say the...

I think Tor has a bad reputation because a lot of bad people use it for a lot of bad things. Technically, it's true; from money laundering schemes to child pornography, illegal and morally wrong content is readily available for those that know where to look.

But just because that kind of content i...

I've always dreamed of having a Linux phone for as long as I've been running Linux on my computers, but Android has always been the closest I've been able to get, although I haven't run stock Android in a long time. When I buy Android phones, I buy them specifically so I can flash LineageOS on them....

My goal for this year as I study computer science and music is to use minimal software whenever possible. That means vi(1) for my notes, calendar, and to-do lists, and a basic set of packages for typesetting documents. With the exception of a browser that doubles as a PDF viewer, which is require...

On this independence day, I'm declaring independence from my email! This might be a shocking announcement if you've been keeping up with my other blog posts, in which I've continually taken the view that simplicity and minimalism are preferable to complex solutions. I've also always said that I pref...

I just finished up a project for my dad. He's been doing a lot of writing, and he wanted to put some links to videos hosted on my server into his documents. Given that he likes to print out his documents, I suggested that he use QR codes, since those work on paper. So for the last week, I've spent a...

Anyone that knows me, or has been keeping up on my blog, or has taken a single look at my website knows that I am an advocate for plain text over any other format if at all possible. That alone is enough for me to demand that people send me emails in plain text, and that alone should be enough for p...

I have finally gotten around to configuring my rsync(1) daemon to serve some public modules. This is in an effort to make my publically-accessible files easier to mirror, because the more copies we have of something, the better off we'll be, especially in an age of censorship and the domination of...

In case you don't know who Theo is, he is in charge of the OpenBSD project. I think OpenBSD is a great project, and I like a lot of what's happening with OpenBSD itself, but we can't hide the fact that the OpenBSD community is less than helpful sometimes, and I think that's mostly Theo's fault, beca...

Over the years, I've slowly descended into the depths of typesetting on computers. First, it was Microsoft Office 2010, running on Windows Vista, no less. As a child, I would spend hours reading the Office manuals, and playing around with Word and Publisher. Then, when I discovered Linux, the natura...

It's true. My entire website can be browsed without any JavaScript whatsoever. You can verify this for yourself too. Not a single piece of JS is ever loaded when you hit my domain 1. It never was, either. This is not some new development. But it is great news. Why, you ask? What's so bad about J...

It has come to my attention that people really don't like the fact that Elon Musk now owns Twitter. They complain about how it's oppressive and will end up censoring liberals 1 among other things. Of course, this is nothing new; people have been complaining about social media for as long as social...

I just recently swapped out my old tower with an Intel Core i7 and 12GB of RAM for a Raspberry Pi 4, the 4GB model. This is a pretty drastic change, and I'm sacrificing a lot of computing power in the process. Of course, this is a pain for building OpenBSD ports, because they take forever, but other...

The Finger protocol was first written in 1971, making it a whopping 51 years old at the time of my writing this. It is a simple network protocol for the exchange of status information. A finger daemon runs on TCP port 79, and responds in an unspecified manner to simple requests. Back in the day, it...

After reading an article documenting the use case for RSS, I've decided that my own blog should have an RSS feed. I've wanted to offer an RSS feed for a while now, because I think RSS is useful for staying up to date on things, and it really is perfect for blogs. But this post is not to explain the...

Anyone that has stable access to the internet has undoubtedly become dependent on it. I know for certain that I have. But at the same time, I'm always thinking about how I can eliminate my need for it, and reduce my dependency on it. I don't want to be dependent on the internet—I don't know that an...

My home network is rather unconventional. It is somewhat complicated, because I run my server as a firewall and my family has lots of devices to connect to it. I've chosen to make it much more complicated than most home networks, because I want to provide a level of security that protects my devices...

I've always pointed out to people that there tends to be a correlation between knowledge of how computers work, and trust of them. That correlation is this: the more you know about how computers work, the less you trust them. And I think it can be said that the correlation is indeed a causation in t...

I use OpenBSD for everything. It runs on my server, my desktop, and my laptop. But it isn't just that; I try to use OpenBSD base software for everything I possibly can, and will often refrain from using a technology if OpenBSD doesn't provide it in the base system. I don't install many 3rd-party pac...

Edit 2023-11-16: This post is severely outdated. My blog is no longer plain text, but it is maintained in Markdown. This post is preserved for completeness. See my later post on my current website situation.

I think this is my third attempt to start a blog. Every one of my previous attempts h...