Category: web.

Back to the Future.

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...

Duplicating a Database Record in Laravel.

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...

Making Better Use of the `Accept` Header.

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...

Over-Engineering a #100DaysToOffload Counter in Jekyll.

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…...

Will It Render?

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...

RSS Club.

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:

I Don't (Care Enough To) Track You.

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.

Magento on Vagrant: Lessons Learned.

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...

Messing with the GitHub Contribution Graph.

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...

MIME Type Validation Sucks.

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...

Anonymize Your cURL Requests Using Tor.

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...

Custom CodeIgniter Model Class.

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...