RSS Amplifier

Blog

(untitled)

My personal website built in Jekyll, Liquid, and good old HTML5.

zach.bloomqu.istSource feed ↗10 posts

Dormant Last read · last published · next check
Read 4 days ago and current, but nothing has been published for 5 years.

Latest posts

Reliable, Deliverable, Self-Hosted Email

I have been on an ongoing quest to free myself from cloud services for years now. During this time, I have hosted my personal email ( @bloomqu.ist ) on a Google Apps G Suite Google Workspace account, which, while convenient, also means that my personal emails are at the whims of one of the world’s most privacy-hostile companies . Google’s famous slogan. Obviously, this cannot stand forever. I…

Replacing my phone's battery with a cheap AliExpress knock-off

This is a story of one man’s quest for power. I purchased my current phone, a OnePlus 5T, in 2017. This summer, after about two and a half years of ownership, I noticed that it was no longer holding a charge all day. Frequently, the phone would reach 0% and shut off, right in the middle of tracking an evening bike ride or watching Netflix while cooking dinner. Although cell phone battery wear is a…

Pilo: Raspberry Pi-Powered Lights-Out Remote Server Management for $60 or less

The completed Pilo controller, before final installation. The USB capture card and Arduino Nano USB serial are soldered to the underside of the 3B+. Like many geeks, I have a “home server” made from off-the-shelf, consumer-grade PC parts, from which I run my weekend programming projects, game servers for friends, this website, and so on. Recently, I had a power event at the house that caused the…

Creating a Site-to-Site WireGuard VPN for a home server

This guy is looking at pictures of my wife, probably. photo source For the last decade or so, I’ve been steadily increasing the amount of data I send to the cloud. I sync photos of my friends and family to Amazon Photos, blast my private data off to Microsoft OneDrive, give my passwords to 1password, and trust my web hosting provider not to run away with my data. I’ve been growing less satisfied…

Dockerizing a Python 3 Flask App Line-by-Line

If you’re like me, you end up writing a lot of Flask apps for random web applications and APIs. When you’re done building these Flask apps, typically, you need to deploy them to production somehow. Unless you’re using a container service like Heroku, deployment is synonymous with SSHing to a live server, installing your dependencies, and starting your application from source. Docker makes the…

Moving From React to Preact: A Developer’s Story

For the past few months, I’ve been working on a single-page application built using Facebook’s React framework. Those who know me know that I’m obsessed with performance. Getting me on the React bandwagon took years simply because I didn’t like the bloat it introduces. Even though I’ve grown to love React for the deftness it affords when designing front-ends, I still have an issue with all the…

A survey of crossdomain.xml vulnerabilities

Vulnerable crossdomain.xml files can be used by malicious people to run CSRF attacks if the victim has Flash installed on their computer. In response to a post by chs on crossdomain.xml proofs of concept and Seth Art’s real-world exploit of Bing using crossdomain.xml , I created an application in Ruby which parses the Alexa top million site list (CSV, 10MB) and scans for vulnerable crossdomain.xml…

spoofident: A fake identd written in Python

Many protocols such as IRC require or strongly suggest the use of an ident daemon to prove that you are who you say you are, or to hold you accountable for your actions. An identd is supposed to respond to queries as to which user is using which port; however, this information can be potentially dangerous. A real identd allows attackers to gain information about your system - usernames, active…

Defeating Comcast BitTorrent Throttling: The Easy Way

If you torrent a lot, eventually Comcast/xfinity will throttle your torrent speeds to 20kbps or below . Luckily, there is a simple fix which works without installing any external applications. Simply configure the listening port in your BitTorrent client to be 443, and ensure that the port is open on your router. This works because Comcast’s deep-packet inspection ignores packets on common…

Fixing a corrupted TrueCrypt volume for Windows rescue

Like an idiot, I held down the power button to reboot my machine. It booted back up, and once I entered my TrueCrypt full-disk encryption password, I was greeted with a Windows rescue and repair boot screen. I managed to create a system volume which was both encrypted and corrupted, meaning that Windows rescue could not read the volume. Instead, it asked me to insert a driver disk for my hard…