• Mastodon: Social Media Made Social

    March 23, 2008 was the day my friend Sean introduced me to Twitter. It was a foreign concept to me. A website that would forward text messages from you to a group of friends – and forward any messages they sent back to you. I was hooked. Sean had called the system “crack” and, honestly, it was addictive. I didn’t have a smart phone (or a reliable laptop), so getting content via text message was brilliant! I started following more and more people and, eventually, exhausted my limited capacity to pay attention to anything. Early Twitter was revolutionary. It helped…

  • System76 Oryx Pro – First Impressions

    The past few weeks have been exciting! I recently purchased the new Oryx Pro by System76 and have been absolutely loving the new machine. Here are some photos and first thoughts from my setup experience. Unboxing First and foremost, it took a bit longer for my machine to arrive than I’d expected. I was one of the early pre-orders for the new machine, so the build took a while and shipping added a few days after that. This all being said, I am ecstatic about the build quality and the level of support I received even before my laptop arrived! Several people had…

  • Configuring Yubikeys, GPG, and Keybase

    Rather than use GPG and SSH keys housed on individual machines, I embed my GPG private keys on Yubikeys by default. This allows me to keep my keys somewhat portable (i.e. I can use them on multiple devices) while preventing my keys from leaking if anyone accesses my machine without my permission. This is the same workflow I use with my team to enforce various cryptographic controls with our projects. A specific encryption key manages email encryption and access to git-crypt-protected credentials. A signing key manages email and Git commit signing. A separate authentication key manages SSH access. It’s a strong way to…

  • Disclosure: SQL Injection in Cart66 Pro

    Last month I discovered a critical SQL injection vulnerability in the no-longer-developed yet still actively used Cart66 Pro plugin for WordPress. Here are the details …

  • Introducing Secure Updates for WordPress

    Today I introduce the a new plugin that provides secure updates for WordPress: DGXPCO.

  • Open Letter to the Democratic Party of Washington County

    I hereby resign my position as a precinct committee person of the Democratic Party of Washington County.

  • The Value of Repetition

    Repetition is the key to memorizing and becoming an expert in almost anything.

  • The Value of Fiction

    There’s inherent value in stories that are entirely made up. Part of the magic is that they can be subtle wrappers around tricky issues – it’s easier to discuss a sensitive topic when done within the context of an alien civilization.

  • Software Vulnerabilities, Disclosure, and Marketing

    Consumers have a certain amount of upgrade fatigue. It’s not uncommon for end users to ignore an update notification for months to avoid the frustration that comes with trying to fix something that worked before the update.

  • Private Variables in JavaScript

    ES6 gave us classes and object inheritance in JavaScript. However, it’s still missing any concept of “privacy” in OO terms. Here’s a hacky workaround to, maybe, make things work.