Blog

Setting up all kinds of full-domain redirects in S3 and CloudFront

When removing an entire domain/subdomain and redirecting it, I’ve found Amazon Web Services S3 and CloudFront to be a nice toolset. For most use cases, AWS is cheap, easy, and reliable. Let’s look over how to do the most common redirection scenarios.

Read the rest of this entry ›


Website privacy practices: lessons learned from a GDPR project

Now that the mass hysteria over GDPR is long over, I thought I would take some time to record the lessons that I’ve learned after meeting with several attorneys and reading quite a few articles.

Read the rest of this entry ›


Clear calls to action

After redesigning a couple websites recently, I’ve run across a common mistake that I see frequently: missing calls to action on key pages.

Read the rest of this entry ›


Alchemy CMS: great for managing websites integrated with Ruby on Rails

After learning Ruby on Rails, I played around a little with a few of the open source content management system options available, and one in particular stood out for what I typically need: Alchemy CMS.

Read the rest of this entry ›


Progressively enhancing your CFWheels form with nested properties and jQuery

We all find ourselves in this situation from time to time: we want to code a form that contains a “main” record and a collection of “nested” records. We want some JavaScript-powered form controls to add to and remove from that collection of nested records. Clicking the submit button then saves the whole thing.

This post will cover a fairly standard CFWheels solution using nested properties and a sprinkling of jQuery.

Read the rest of this entry ›


Never output anything to a browser without using a formatting filter

Cross-site scripting (XSS) vulnerabilities can be quite a serious problem if you’re not careful. And if you’re using a framework like CFWheels, you need to be extra careful to protect your output from rendering malicious content.

In this post, I suggest that you must always use a formatting function like EncodeForHtml, DateFormat, or NumberFormat when outputting any dynamic value.

Read the rest of this entry ›


Clobber Windows Ruby HTTPS connectivity issues with the new Net::HTTP SSL Fix gem

I recently released a little Ruby gem with a fix for HTTP connectivity via the Net::HTTP library.

From the Net::HTTP SSL Fix Ruby gem’s README:

No more / (╯°□°)╯︵ ┻━┻!

But you probably want a more detailed description of the gem’s purpose, so here it is:

A Community-updated Net::HTTP certificate authority file hack. Very useful for authoring Ruby-based HTTP clients that must run on Windows.

Read the rest of this entry ›


Building search forms with tableless models in CFWheels

In this post, I hope to persuade you that you will rarely ever need the Tag-based form helpers (textFieldTag, selectTag, etc.) in your CFWheels apps ever again.

“How?” you ask.

The answer: through the use of a wonderful feature that we affectionately call tableless models.

Read the rest of this entry ›


Forgiveness and creativity

It’s been my goal to publish a new blog post approximately every 10 days. Sounds fairly reasonable and realistic, right? Professionals meet their deadlines, so it’s important for me to keep my promise to myself.

10 days ago, I missed my deadline. No post.

Read on to find out how I’m dealing with this issue.

Read the rest of this entry ›


Designing for change, keeping customers uncomfortable

The degree to which you keep your customers uncomfortable is a choice, whether you’ve made the choice intentionally or not. If you’re building or running a software product, figure out where you want to be on this spectrum.

This is my take on the pros and cons of frequent vs. infrequent change and how to best serve your customers based on your chosen strategy.

Read the rest of this entry ›