This past weekend, I decided to take a trip down memory lane and take a look at the evolution of this blog’s design over the years (with a little help from the Wayback Machine). While I’ve really enjoyed the challenge of making an obsessively backwards compatible blog these last few...
As I prepare to take my terrifying leap into hackademia, I’ve been freelancing a lot more lately—both as a way to freshen up some of my more rusty skills (Directing leaves little room for slinging code or technical writing), and as a way to offset some of the lost income...
A while back, I wrote about a Jekyll plugin I created that cross-compiles all of my blog posts in plaintext (you can see it for yourself, just click the txt link at the bottom of this or any other post). It was a fun experiment, and allowed me to not...
I did it.
Alright, so I’ve re-kicked off this #100DaysToOffload challenge, and despite the fact that it’s only been like 2 days, I’ve remembered just how tedious counting the posts can be. I mean, I’ve gotta open my last post, copy the challenge footer, paste it in the new post, increment the counter…...
I’m a little obsessive about backwards compatibility on the web, and one thing that can be particularly sticky are image formats. While I know that GIF is the most widely supported format across both space and time, I wanted to better understand what is actually available across the wide-spectrum of...
About a month back, I subscribed to Dave Rupert’s RSS feed and noticed that there were a handful of posts that didn’t exist on his website. Turns out, Dave has created something called RSS Club that provides RSS-only content. In his words:
This site doesn’t have a favicon, and it likely never will.
When I was a kid, I loved exploring the World Wide Web. There was just so much to discover, and I was on a mission to find it all. Unlike the homogeneity of the modern web, back then everything was unique.
Let’s face it: the internet is broken. It feels like so much of the web is composed of clickbait, ads, popups, and a toxic amount of JavaScript that you need a modern computer just to get any value out of it. Remember when low-power computers were created for people who...
A common post I’ve seen floating around the interwebs lately is the “I Don’t Track You” statement, wherein the author assures the reader that they don’t employ any privacy-invasive analytics methods.
This webbed site now supports dark mode!
A couple years ago, I was working on a monolithic Ruby on Rails codebase that was fast approaching unmaintainability. In a month-long sprint of desperation, we hit the books and decided to come up with a plan. The solution to our problem arrived in the form of ActiveInteraction, a Ruby...
Let’s get this out of the way first: Magento is by far the single-most inefficient framework I have ever had the displeasure of working with. While I’ve made a similar statement about Craft CMS in the past, after a week working with Magento 2 I happily rescind my earlier Craft...
I am not a fan of Craft CMS. Despite its relative popularity, it leaves a lot to be desired by way of resource management, requiring at least 2GB of available memory in order to function efficiently. While there are a lot of reasons for this inefficiency, one of the biggest...
You know the contributions calendar grid on GitHub profiles? The one with all the pretty green squares? What if you could write a message within that box? That’s exactly what a friend of mine asked me a few months ago. At first, it seemed like a silly question, because even...
An uncomfortable majority of companies that offer high storage limits for specific file types have a major problem: MIME type validation isn’t good enough. If you’ve ever had to implement file validation for user uploads, you’ve probably relied heavily on MIME type validation to ensure that the files you are...
Running CodeIgniter controllers in the command line is a surprisingly easy thing to do, but for the novice, it can seem a bit confusing at first. If you want to skip the tutorial, here is how you run any CodeIgniter controller in the command line (run the following from the...
Note: This post assumes that you already have Tor installed and configured on your server. If not, visit the Tor Project Homepage for instructions on how to set it up. I love writing web crawlers and data aggregators in PHP. They say knowledge is power, and I find it exciting...
For the past year, I have been an adamant CodeIgniter developer. The one thing that I have found lacking, however, is CodeIgniter’s model class. I am a big fan of the simplicity of CakePHP’s ORM structure, and wrote this model class to (slightly) mimic it. Some of the functionality in...