Automating DNS Adblocking



Introduction A few months ago I setup a private DNS resolver with ad blocking. At that time I decided to manually update the block file whenever I installed server updates. This works, but it very quickly became tedious. I’m not sure why I initially thought it wouldn’t. I’ve... Continue reading

Linode vs DigitalOcean



Introduction For about the past 14 years I’ve been using Linode as my preferred personal VPS provider. I started using them at the beginning of November 2008 when I first setup my blog. Other than a short and painful mistake of hosting my blog elsewhere, it has... Continue reading

Vaultwarden a Self Hosted Password Vault



Introduction When Lastpass first came on the scene I jumped on it because of how easy it makes syncing passwords between devices. Previously, I was using a local password manager that was only on my computer. Thankfully, mobile logins weren’t nearly as necessary for daily life back then. However,... Continue reading

Setting up a Private DNS with adblocking



Introduction Recently I setup a VPN to so I could get around geo-restrictions for for a specific streaming service I’m using. So far it’s been working well. Now that I have the server, I started thinking about what else I could do with it. One thing that jumped... Continue reading

My VPN Experience



Introduction I was recommended some videos and I’ve been very interested to watch them. However they’re not available outside of a specific country due to geographic restrictions. This is a common problem and pretty much every commercial VPN service advertises this as a major reason to use their VPN.... Continue reading

Restic Backup



Introduction Since 2017 I was using SpiderOak for backups of my laptop. While the service has gotten better since I first tried them, they still have some issues which kept me looking for alternative . I was using SpiderOak because they are one of the only all in... Continue reading

CSO Compression and Decompression Tool



Introduction I have a number of backed up ISO files that were taking up quite a bit of space. I wanted to save some space and I decided to compress them. Instead of putting them into something like a ZIP archive, I decided that compressing into CSO would be... Continue reading

Lua Template Engine Yet Again



Introduction After writing a template engine in Lua, I found some deficiencies and wrote a few more iterations. After having used the template engine for quite a while, I’ve made a few enhancements and some fixes. This is hopefully the final version of the template engine. <h1... Continue reading

macOS USB Enumeration in C



Introduction Apple provides documentation for using IOKit, but it’s not very clear how to do a number of things. Descriptions and relationships of functions often isn’t clear. While there are examples, they tend to be lacking. The generic types IOKit uses doesn’t help either because you could have multiple... Continue reading

macOS IOHIDManager Permission Issue



Introduction The other day I was working with a USB-HID device and I thought my machine was starting to act funny. I could use the device no problem in a Windows VM but whenever my application tried to use the device, it was unable to open it. At this... Continue reading

C if Statement Evaluation



Introduction One of the bad things that the C language allows is setting variables and calling functions directly in an if statement. This should be avoided due to how the statement can exit early stopping some of the logic from happening. That said, this can also be... Continue reading

Full Text Search with Jekyll



Introduction When I switched from WordPress to Jekyll I gave up searching posts. I knew this was a limitation of running a static site and I didn’t think it would be too big a deal. After a year I’ve found I actually look up some old reference posts... Continue reading

Making and Using C plugins



Introduction No app is ever complete and you’ll never get to the point where users stop asking for new features. Sometimes those feature are low priorities so you’ll never get to them or they’re inane and you’ll never touch the idea with a 10 foot pole. This happened to... Continue reading

String List in C



Introduction Currently we have a generic list container which uses void pointers to allow anything to be stored. Previously, we created a type safe string hashtable wrapping the generic hashtable. We want to do the same thing for our list and so now we’re going to... Continue reading

Generic List in C



Introduction Lists (dynamic arrays) are yet another super useful data structure that C just doesn’t have. C arrays are great for when you can get away with a fixed size but not so fun if you need to dynamically expand because you don’t know quite how many elements you’ll... Continue reading

ARC ActiveX Apple B&N Base64 C lang COM DLL DNS Device Docker FLAC FT GUI GeR2 JNI Javascript Linux Lua Lua C API Mac N770 OS X Off Road OpenSSL REST API STR Shocks Sigil Suspension TLS TOC TRD TRD Pro TRD Sport Tacoma Toyota Vaultwarden Windows WireGuard about ad blocking algorithm amazon analysis android apnx app arch linux automotive backup bash batteries bitwarden book bookeen bookview bug bzr c++ calibre car cats certbot compression configuration container conversion copyright copyright infringement cover cso cybook data structure decoding decompression development device interfaces direction distros dmca donations downloader drm dropbox duplicity eReader ebook ebooks editor electronics encoding epub fb2 files focus st formats formatting future gadgets generic type get books git github gnome google gpl guide hardening headless heuristic hex hg htmlz iOS ideas image intel internationalization interop java jekyll json kernel kindle kwin language law lebookread legal library linode maintenance maintenance programming malware blocking markdown memory mobi mp3 music nginx nook objective-c opds openid opensearch opf packages palmdoc password manager pcre pdb pdf pgm plans play store plucker plugin pml pmlz pocket pro podcast podman ppa print project management prs prs300 prs505 prs700 prs900 pyqt python qt rb regex release restic reveiw reverse engineer reverse proxy review rtf s2n scm screen saver screenshot script search security server sort sorting source code specification spell check spideroak ssl store sync t2b t4b tcr textile thanks thread threading thumbnail tips translations truck txt txtz ubuntu unbound usb vault video vpn vps widget wordpress wpmu x11 xlib xorg xxd yubikey zip zsh ztxt